Subversion Repositories FlightCtrl

Compare Revisions

Ignore whitespace Rev 1824 → Rev 1825

/branches/metro/v0.82a metro_Akku+/Flight-Ctrl_MEGA644_V0_82a_SVN_akku001.elf
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/branches/metro/v0.82a metro_Akku+/Flight-Ctrl_MEGA644_V0_82a_SVN_akku001.hex
0,0 → 1,3860
:100000000C94BB060C94FF060C94FF060C94FF06A0
:100010000C94FF060C94FF060C94FF060C94FF064C
:100020000C94FF060C944A190C94FF060C94FF06DE
:100030000C9493330C94FF060C94FF060C94FF066B
:100040000C94FF060C94FF060C941A160C94FF06F1
:100050000C94350C0C94FF060C94FF0B0C94FF06CB
:100060000C94061C0C94FF060C94262F0C94FF068F
:100070000C94FC750C94FF060C94F870311C361C23
:100080003B1C441C5B1C721C821C921CAF1C9B1EE4
:10009000721C5D1D6E1D9D1DBB1DD81D321E8D1E4B
:1000A0006B20FD20BA213A22A32253235A25B725DB
:1000B00024266E26B92606275727B9271828B228DE
:1000C0004D29472A452F792FBC2F2C3044308530BD
:1000D0003C31033203320332033203320332033240
:1000E0000332033203320332B831BA31BF31D73170
:1000F000D9310A0D426174743A00202564204365A9
:100100006C6C732000204C6F77207761726E696E83
:1001100067206C6576656C3A2025642E2564000A9C
:100120000D466F756E6420424C2D4374726C3A20FC
:10013000002564000A0D0A0D2121204D4953534921
:100140004E4720424C2D4354524C3A2025642021E6
:1001500021000A0D3D3D3D3D3D3D3D3D3D3D3D3D8B
:100160003D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3DBF
:100170003D3D3D3D3D3D3D000A0D43616C69627270
:100180006174696E67207072657373757265207330
:10019000656E736F722E2E004F4B0A0D000A0D46CE
:1001A0006C696768742D74696D65202575206D69AB
:1001B0006E2020546F74616C3A2575206D696E0055
:1001C0000A0D436F6E74726F6C3A2000486561646B
:1001D000696E67486F6C64004E6F726D616C2028A9
:1001E0004143432D4D6F646529000A0D3D3D3D3D62
:1001F0003D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D2F
:100200003D3D3D3D3D3D3D3D3D3D3D3D3D3D3D0A51
:100210000D00416E676C654E69636B2020202020C5
:100220002020416E676C65526F6C6C20202020206E
:1002300020204163634E69636B2020202020202012
:100240002020416363526F6C6C20202020202020EE
:1002500020205961774779726F20202020202020AC
:1002600020204865696768742056616C7565202098
:1002700020204163635A202020202020202020209D
:1002800020204761732020202020202020202020B3
:100290002020436F6D706173732056616C7565200B
:1002A0002020566F6C74616765205B302E31565D7F
:1002B00020205265636569766572204C6576656CB1
:1002C00020204779726F20436F6D70617373202017
:1002D00020204D6F746F722031202020202020209C
:1002E00020204D6F746F722032202020202020208B
:1002F00020204D6F746F722033202020202020207A
:1003000020204D6F746F7220342020202020202068
:1003100020203136202020202020202020202020B6
:1003200020203137202020202020202020202020A5
:100330002020313820202020202020202020202094
:100340002020313920202020202020202020202083
:100350002020536572766F2020202020202020202E
:100360002020486F7665726761732020202020204E
:10037000202043757272656E74205B302E31415DB2
:1003800020204361706163697479205B6D41685D11
:100390002020323420202020202020202020202037
:1003A0002020323520202020202020202020202026
:1003B0002020323620202020202020202020202015
:1003C0002020323720202020202020202020202004
:1003D00020204932432D4572726F72202020202048
:1003E0002020424C204C696D697420202020202060
:1003F00020204750535F4E69636B2020202020202F
:1004000020204750535F526F6C6C2020202020200A
:10041000202021212120494E434F4D504154494233
:100420004C4520212121002E000A0D20444143206B
:100430006F7220493243204552524F522120436867
:1004400065636B204932432C2033567265662C203D
:1004500044414320616E6420424C2D4374726C0011
:100460005B25695D005B25695D002B204D696B7222
:100470006F4B6F70746572202B0048573A56256495
:100480002E25642053573A25642E25642563005396
:10049000657474696E673A2564202573004861723B
:1004A0006477617265204572726F7220313A2564FB
:1004B000202121004D697373696E6720424C2D43E2
:1004C00074726C3A25642121004D6978657220456B
:1004D00072726F722100493243204552524F5221AD
:1004E0002121004865696768743A20202535690034
:1004F000536574706F696E743A2535690050726582
:1005000073737572653A253569004F666673657455
:100510003A20202535690048656967687420636F53
:100520006E74726F6C0044495341424C454400481C
:10053000656967687420636F6E74726F6C004449FC
:100540005341424C4544006163742E2062656172E0
:10055000696E67004E69636B3A20202020202025B9
:10056000356900526F6C6C3A202020202020253500
:100570006900436F6D706173733A202020253569DF
:10058000004B313A25346920204B323A253469201A
:10059000004B333A25346920204B343A2534692006
:1005A000004B353A25346920204B363A25346920F2
:1005B000004B373A25346920204B383A25346920DE
:1005C000004E693A2534692020526F3A253469205B
:1005D0000047733A253469202047693A2534692059
:1005E0000050313A253469202050323A25346920B0
:1005F0000050333A253469202050343A253469209C
:10060000004779726F202D2053656E736F72004E14
:1006100069636B25346920282533692E25692900F3
:10062000526F6C6C25346920282533692E25692981
:100630000047696572253469202825336929004EF1
:1006400069636B2025346920282533692E25782994
:1006500000526F6C6C2025346920282533692E25C3
:1006600078290059617720202534692028253369AD
:1006700029004E69636B20253469202825336929B8
:10068000282533692900526F6C6C20253469202895
:1006900025336929282533692900596177202025C8
:1006A00034692028253369292825336929004143E5
:1006B00043202D2053656E736F72004E69636B206B
:1006C00025346920282533692900526F6C6C202558
:1006D0003469202825336929005A20202020253418
:1006E0006920282533692900566F6C746167653A63
:1006F0002020202533692E253169560043757272FA
:10070000656E743A2020202533692E253169410019
:10071000506F7765723A20202020202534695700D9
:100720004469736368617267653A202535696D4174
:10073000680052656365697665720052432D5253B5
:1007400053493A202020202534690052432D517509
:10075000616C6974793A202534690052432D4368ED
:10076000616E6E656C733A25346900436F6D70611C
:1007700073730048656164696E673A2020253569A6
:100780000056616C75653A2020202025356900539C
:10079000746172743A2020202025356900506F74EE
:1007A00069313A202025336900506F7469323A204C
:1007B0002025336900506F7469333A20202533694E
:1007C00000506F7469343A202025336900506F74EB
:1007D00069353A202025336900506F7469363A2014
:1007E0002025336900506F7469373A20202533691A
:1007F00000506F7469383A202025336900536572C0
:10080000766F202000536574706F696E7420202508
:10081000336900506F736974696F6E3A20253369CC
:100820000052616E67653A2533692D2533690045AD
:10083000787465726E436F6E74726F6C2020004E18
:10084000693A2534692020526F3A253469200047DF
:10085000733A253469202047693A253469200048D5
:10086000693A253469202043663A253469200042DC
:100870004C2D4374726C204572726F727320002588
:10088000336420253364202533642025336420001D
:1008900025336420253364202533642025336420E8
:1008A00000253364202533642025336420253364F8
:1008B0002000424C2054656D7065726174757265DC
:1008C00000253369202533692025336920253369C4
:1008D00020002533692025336920253369202533FD
:1008E00069200025336920253369202533692025B7
:1008F00033692000424C2D4374726C20666F756E14
:1009000064200020256320202025632020202563EB
:10091000202020256320002025632020202563201F
:10092000202025632020202563200020256320200F
:10093000202D2020202D2020202D2000313000319E
:100940003100313200466C696768742D54696D65F9
:10095000202000546F74616C3A2535756D696E0006
:100960004163743A20202535756D696E00287265E3
:1009700073657429000A0D47656E65726174696E4E
:10098000672064656661756C7420506172616D6585
:1009900074657220536574202564000A0D557369CF
:1009A0006E6720506172616D657465722053657465
:1009B000202564000A0D47656E65726174696E6773
:1009C0002064656661756C74204D69786572205489
:1009D00061626C65000A0D4D697865722D436F6E1A
:1009E0006669673A202725732720282575204D6FD3
:1009F000746F727329000A0D3D3D3D3D3D3D3D3D07
:100A00003D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D16
:100A10003D3D3D3D3D3D000A0D414343206E6F7419
:100A20002063616C69627261746564210D0A000063
:100A3000008F001E01AD013B02CA025803E6037499
:100A40000402058F051B06A7063307BE074808D218
:100A5000085B09E3096B0AF20A780BFD0B810C04B1
:100A60000D860D070E870E060F840F00107B10F504
:100A7000106E11E5115B12CF124213B313231492BF
:100A800014FE146A15D3153B16A11605176717C86F
:100A90001727188318DE1837198E19E319361A87A5
:100AA0001AD61A231B6E1BB61BFD1B411C831CC3CD
:100AB0001C001D3C1D751DAB1DE01D121E421E6F4E
:100AC0001E9A1EC31EE91E0D1F2E1F4D1F691F8477
:100AD0001F9B1FB01FC31FD31FE11FEC1FF51FFB80
:100AE0001FFF1F002003010000256A0002010118FA
:100AF0006B01030202AC6B02000303096C2532692F
:100B00002E25316956002533642563202530336452
:100B10006D00537461747573004552524F523A2000
:100B200025326400253469202532693A253032693E
:100B3000002534696D25630025336920253369203C
:100B40002533692025336900253369202533692041
:100B5000253369202533690054656D7065726174B1
:100B600075726573202020200025634320202020FB
:100B700020002532692E2531695620202533692E23
:100B8000253169410025346957202536696D416852
:100B9000002532756D2F73205361743A256420004F
:100BA00020203344004E6F4678004447505300489D
:100BB0006F6D653A2533646D202533642563004EDF
:100BC0006F204E6176694374726C21000A0D77774D
:100BD000772E4D696B726F4B6F707465722E646502
:100BE0002028632920486953797374656D73204701
:100BF0006D6248000A0D74686520757365206F6624
:100C0000207468697320736F6674776172652069F8
:100C100073206F6E6C79207065726D697474656491
:100C2000200A0D6F6E206F726967696E616C204DCE
:100C3000696B726F4B6F707465722D486172647767
:100C4000617265004143542044534C004A65746905
:100C500020736174656C6C6974005370656B747299
:100C6000756D20736174656C6C697420284C6F77A6
:100C7000207265736F6C7574696F6E2900537065AF
:100C80006B7472756D20736174656C6C6974202867
:100C90003230343829005370656B7472756D20736F
:100CA0006174656C6C6974004D756C746973696707
:100CB0006E616C2050504D000A0D52656365697677
:100CC00065723A2000756E6B6E6F776E2E205573CD
:100CD000696E672050504D2E2E2E006E6F7420735B
:100CE0007570706F727465642062792068617264D7
:100CF0007761726521000A0D3D3D3D3D3D3D3D3D25
:100D00003D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D13
:100D10003D3D3D3D3D3D3D3D3D3D3D000A0D466C6B
:100D200069676874436F6E74726F6C0A0D48617204
:100D300064776172653A25642E25640A0D536F66E7
:100D400074776172653A5625642E25642563200008
:100D50000A0D3D3D3D3D3D3D3D3D3D3D3D3D3D3D26
:100D60003D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3DB3
:100D70003D3D3D3D3D0011241FBECFEFD0E1DEBF24
:100D8000CDBF11E0A0E0B1E0EAE2F0EF02C00590D3
:100D90000D92A63FB107D9F718E0A6EFB1E001C068
:100DA0001D92A53DB107E1F76AEAE2E0F0E081E2D9
:100DB000809357007491AE014F5F5F4F20EF37EF84
:100DC000DA019FE0F9012F5F3F4F84918D9391509D
:100DD00097FFF8CF773911F40000FECFFA019EE0BB
:100DE000819168276095915097FFFACF888968179D
:100DF00021F0773911F40000FECF0C94C0070C9459
:100E0000000080912006E82FFF27EE0FFF1FE65B12
:100E1000F84F808191818D5E9F4F14F010920301F5
:100E2000808191818A5B9F4FCCF48091030188235C
:100E3000A9F481E080930301809163048F5F809324
:100E40006304853038F088EE93E090932902809314
:100E5000280204C066E970E00E94FD3680916304B8
:100E600099279093F1058093F00508951F93CF93F0
:100E7000DF93182F882389F082EF90E09F938F9360
:100E80008FEF92E19F938F93E0912F04F0913004C4
:100E900009950F900F900F900F9080914306823329
:100EA00008F044C084EF91E00E942517EC01112363
:100EB00029F0CE010E942E178823D9F3C2E0D0E09A
:100EC00026E530E080911E0190911F018217930763
:100ED00030F02196255D3F4FC730D10598F38091C2
:100EE00043069927C89F9001C99F300DD89F300DA8
:100EF0001124209300011123D9F068EC70E08C2FAD
:100F00000E94FD36DF93CF938AEF90E09F938F93FB
:100F10008FEF92E19F938F93E0912F04F091300433
:100F200009958DB79EB706968DBF02C080930001CC
:100F3000112311F1809100016AE00E944077892F0E
:100F400099279F938F93809100010E944077992762
:100F50009F938F9385E091E09F938F938FEF92E122
:100F60009F938F93E0912F04F091300409952DB752
:100F70003EB7285F3F4F2DBFDF91CF911F9108955E
:100F8000CFEFD0E1DEBFCDBF8824992414B815B8C7
:100F900007EE13E00253104017FFFCCF189B06C06A
:100FA000199B02C08DE007C08BE005C0199B02C0F1
:100FB00084E101C08AE08093020181E887B93E9A0A
:100FC0008FEF88B98BE184B981E085B98EE38AB966
:100FD00087E48BB9469A84B7877F84BF809160008D
:100FE0008861809360001092600084EC99E0909397
:100FF00029028093280210921C0310921B03109266
:101000004F0710924E0710921E0310921D0310926C
:10101000200310921F0320910201243128F084EC58
:1010200094E0A0E0B0E004C08BE095E0A0E0B0E088
:101030008093960190939701A0939801B0939901A2
:101040002A3011F0243110F0289801C0289A0E940B
:101050008E170E945F170E9407130E9477330E9429
:10106000BE1A81E00E94DA2E0E94CD620E942F7586
:10107000809102018C3010F4299A01C0299878944B
:101080000E94F92D0E94F86C80917002826080931A
:101090007002109273020E941F4284EF91E00E943E
:1010A00025178C018091700280FD05C0C8010E9447
:1010B0002E178823B9F38FE191E09F938F93BFEFB1
:1010C000AB2EB2E1BB2EBF92AF92E0912F04F09114
:1010D0003004099580EA9FE00E9425178C01C0E04A
:1010E000D0E00F900F900F900F90ACEEEA2EA6E09C
:1010F000FA2EF0EACF2EF6E0DF2E0E941F428091FA
:10110000700280FD05C0C8010E942E178823B9F324
:10111000F60180811816ACF40BC00E941F4280912A
:10112000700280FD05C0C8010E942E178823B9F304
:10113000C8010E942E17882321F4F701808188239B
:1011400064F7F701808187FF18C02196DF93CF9362
:10115000219781E391E09F938F93BF92AF92E091AB
:101160002F04F091300409958091F6018F5F8093F0
:10117000F6018DB79EB706968DBF2196E4E0F0E0AC
:10118000CE0EDF1E88E090E0E80EF91ECC30D105CF
:1011900008F4B3CFC0E0D0E009EE16E0E0EAEE2EAE
:1011A000E6E0FE2EF801838187FD1CC0F7018081F7
:1011B0001816C4F42196DF93CF93219784E391E02E
:1011C0009F938F938FEF92E19F938F93E0912F04E2
:1011D000F0913004099582E0809326028DB79EB786
:1011E00006968DBFF801838180788383219684E001
:1011F00090E0E80EF91E085F1F4FCC30D10590F249
:1012000082E591E09F938F93CFEFD2E1DF93CF936D
:10121000E0912F04F0913004099590911E06809181
:10122000F6010F900F900F900F90981728F480916F
:10123000490480618093490488E791E09F938F93EC
:10124000DF93CF93E0912F04F0913004099588EE5D
:1012500093E00E9425178C010E94C41A0F900F90F2
:101260000F900F90C8010E942E178823D9F388E9A8
:1012700091E09F938F93DF93CF93E0912F04F091B0
:101280003004099580E00E94BF37809102010F90E1
:101290000F900F900F908A3011F0843110F0289841
:1012A00001C0289A80ED97E090932902809328024C
:1012B00085E5809365048EE090E00E948B2C992751
:1012C000182F00278FE090E00E948B2C080F111D33
:1012D0001093FC010093FB018AE090E00E948B2CAC
:1012E0009927182F00278BE090E00E948B2C080F85
:1012F000111D1093FA010093F9010F5F1F4F39F090
:101300008091FB019091FC018F5F9F4F41F41092FF
:10131000FC011092FB011092FA011092F9018091E8
:10132000F9019091FA019F938F938091FB01909125
:10133000FC019F938F938DE991E09F938F93DF93AF
:10134000CF93E0912F04F091300409958DB79EB7AB
:1013500008968DBF80EC91E09F938F93DF93CF939E
:10136000E0912F04F0913004099580912C060F90A4
:101370000F900F900F90E0912F04F091300482FFB6
:1013800007C08CEC91E09F938F93DF93CF9308C0BD
:1013900088ED91E09F938F938FEF92E19F938F93CE
:1013A00009950F900F900F900F900E94E21F88E810
:1013B00093E1909393018093920181E08093640480
:1013C0000E943607809146060E9495748AEE91E04D
:1013D0009F938F93DF93CF93E0912F04F09130048C
:1013E000099580ED97E00E9425178C018AEF90E027
:1013F0000E942517EC0183E08093C8050F900F90A1
:101400000F900F908091FE018111FFCFCE010E94BD
:101410002E17882339F084E690E00E942517EC010E
:101420000E94EB7580912C02882309F4E0C1809121
:101430001001882309F4DBC110922C02809163040F
:10144000882319F00E94010702C00E94F9440E94FB
:101450001F42209102012A3011F0243110F0289807
:1014600001C0289A8091210390914904882339F082
:1014700080912103815080932103977F0AC080913E
:101480006F00806280936F0010924B0710924A07A2
:1014900098609093490480919201909193010197F3
:1014A0009093930180939201809192019091930186
:1014B000892B21F0809171028823C9F180919201DA
:1014C00090919301892BD9F40E94042F85E090E03C
:1014D000909393018093920180910206909103066C
:1014E00001969093030680930206809149048160DF
:1014F000809349048091C90582608093C9058091D9
:101500000801909109018F5F9F4F19F58091180391
:101510008823F9F080E197E29093290280932802D2
:1015200080E890E0909309018093080112C02A306E
:1015300011F0243110F0289801C0289A80912802D7
:1015400090912902892B29F4809149048E7F809300
:10155000490480912C02882309F049C180910E0131
:10156000882311F00E94A5170E944A130E94850E3D
:10157000C8010E942E17882309F435C10C5E1F4F45
:101580008091710290914904882339F09260909380
:1015900049048091C90582600CC09D7F90934904E5
:1015A0008091920190919301079728F08091C9054D
:1015B0008D7F8093C9058091920190919301079747
:1015C00028F0809149048E7F809349048091050121
:1015D000882321F081508093050125C080936F04FA
:1015E0001092F9021092F8021092F7021092F6028D
:1015F0001092F5021092F402809108019091090175
:101600008F5F9F4F81F480912103882361F488E9E3
:101610009AE3909329028093280280E09CE09093C3
:101620000901809308018091ED01893C48F08150C7
:101630008093ED01809149048B7F8093490430C0F1
:10164000809140088823E1F0809149048460809370
:10165000490480910801909109018F5F9F4F81F4A7
:1016600080911803882361F088E99AE39093290216
:101670008093280280E098EA909309018093080102
:1016800010920104109200041092FF031092FE03C6
:101690008FEF9FEF90936E0880936D081092ED018D
:1016A00080910001282F332780911E0190911F0106
:1016B000821793075CF08091A5089091A6081816F0
:1016C0001906ECF0809148068823C9F08091ED025C
:1016D00080628093ED0280910801909109018F5FF3
:1016E0009F4FC1F480E797E19093290280932802ED
:1016F00080E093E090930901809308010BC08091F2
:10170000280290912902892B29F48091ED028F7D86
:101710008093ED020E94D96684E080932702809135
:101720001803882329F45AEA852E55E0952E12C015
:101730008091FD018F5F8093FD01813359F41092F8
:10174000FD018091F7019091F80101969093F801C5
:101750008093F7010894811C911CF2E78F16FBE03F
:101760009F0609F040C0882499242091FB01309104
:10177000FC012F5F3F4F3093FC012093FB018091D0
:10178000F9019091FA0101969093FA018093F90181
:10179000832F9927682F8EE090E00E94912C8091F2
:1017A000FB019091FC019070682F8FE090E00E9407
:1017B000912C8091F9019091FA01892F9927682F36
:1017C0008AE090E00E94912C8091F9019091FA01B9
:1017D0009070682F8BE090E00E94912C84E190E063
:1017E0000E9425178C010E9429670E94196D809123
:1017F0002702882309F006CE0E94EE6203CE1F92D4
:101800000F920FB60F9211248F939F93EF93FF9334
:10181000809107018823E1F48091180290911902C8
:1018200001969093190280931802FC01E25EFA4F30
:10183000E081ED3019F08A3A910539F410921902DD
:101840001092180281E080930701E093C60004C063
:101850001092190210921802FF91EF919F918F91AF
:101860000F900FBE0F901F9018951F920F920FB6FA
:101870000F9211242F933F934F935F936F937F9316
:101880008F939F93AF93BF93CF93EF93FF9390E08A
:101890008091FE01813029F48091C6008093CE00B2
:1018A000CCC08091FE01823029F48091C6008093E3
:1018B0007204C3C08091C6008093100250911E0232
:1018C0005A3A10F090931F02809110028D3009F067
:1018D00065C080911F02823009F060C090931F02A2
:1018E000852F99278E589B4FFC013297408120917C
:1018F0001A0230911B02241B3109DC0111978C91D3
:10190000281B3109C9019F7090931B0280931A0212
:1019100046E0969587954A95E1F7982F935C9093CA
:101920001C022F733070235C20931D028081981756
:1019300029F48C91281711F491E006C090E0809171
:101940000D028F5F80930D02C0910F02CC2309F02E
:1019500074C0992309F471C081E080930F02580F7D
:1019600050930C025150E52FFF27EE58FB4F8DE0AE
:10197000808380917404823509F05FC00E94E21F69
:1019800088E190E02CE00FB6F894A8958093600071
:101990000FBE20936000C09326024FC020911F020B
:1019A000822F992781309105F9F0823091051CF43E
:1019B000892B21F040C0029711F13DC080911002A7
:1019C000833239F480910F02882319F481E08093E7
:1019D0001F02809110028093720481E080931E02A6
:1019E00080911002992722C02F5F20931F02E52FBC
:1019F000FF27EE58FB4F80911002808309C0E52F2E
:101A0000FF27EE58FB4F8091100280835A3A20F452
:101A10005F5F50931E0202C010921F0220911002BD
:101A200080911A0290911B02820F911D90931B02CC
:101A300080931A0202C010921F02FF91EF91CF9182
:101A4000BF91AF919F918F917F916F915F914F91D6
:101A50003F912F910F900FBE0F901F901895AC01E2
:101A6000A0E0B0E09D01A817B90748F4EEE1F5E069
:101A70008191280F311D1196A417B507C8F33F7047
:101A8000FD01E25EFA4FC90156E0969587955A9599
:101A9000E1F7835C80831196FD01E25EFA4F2F73BC
:101AA0003070822F835C8083A15EBA4F8DE08C936F
:101AB0001092070180911E058093C6000895A0E052
:101AC000B0E0E5E6FDE00C94B9772C859D850E85A8
:101AD000BB2483E280931E059F5990931F0520939A
:101AE000200533E0E32EF12C002309F49EC0CF84BF
:101AF000D888BE016D5E7F4FA989BA8901501097C1
:101B000009F493C01097B9F0F601EB0DF11DB394F1
:101B10009081119791F4002349F1FB016E5F7F4F93
:101B2000DB01C080D1806E5F7F4F0D90BC91A02DF6
:101B3000BB24015002C090E019C01097B9F0F60123
:101B4000EB0DF11DB3944081119791F4002341F105
:101B5000FB016E5F7F4FDB01C080D1806E5F7F4FE6
:101B60000D90BC91A02DBB24015002C040E018C0D4
:101B70001097B1F0F601EB0DF11DB39410811197A0
:101B800081F4002371F0FB013296DB01CD90DC90F3
:101B9000BF016E5F7F4FA081B181BB24015001C0A6
:101BA00010E0F701E25EFA4F892F86958695835CF7
:101BB00080830894E11CF11CF701E25EFA4F892F43
:101BC00099278370907024E0880F991F2A95E1F778
:101BD00055279A0194E0369527959A95E1F7822B3F
:101BE000835C80830894E11CF11CF701E25EFA4FEC
:101BF0004F705070440F551F440F551F812F992768
:101C000026E0969587952A95E1F7842B835C80835F
:101C10000894E11CF11CF701E25EFA4F1F73135C9C
:101C200010830894E11CF11C6ACFC7010E942F0D9C
:101C3000E9E00C94D577A3E07A2F40910C0246504E
:101C4000442309F458C0E72FFF27EE58FB4F80814B
:101C50008D537F5FE72FFF27EE58FB4F20812D53D9
:101C60007F5FE72FFF27EE58FB4F30813D537F5FAB
:101C7000E72FFF27EE58FB4F60816D537F5F992759
:101C8000880F991F880F991F522F52955F70582BFC
:101C9000822F99278F709070F4E0880F991FFA9522
:101CA000E1F7232F26952695282B832F99278370DC
:101CB0009070E6E0880F991FEA95E1F7682B415094
:101CC0004F3FC9F0EA2FFF27EE58FB4F5083AF5F1D
:101CD00041504F3F81F0EA2FFF27EE58FB4F208302
:101CE000AF5F41504F3F39F0EA2FFF27EE58FB4FCF
:101CF0006083AF5FA5CF85E794E090930B0280935C
:101D00000A02A350A09309020895A2E0B0E0EBE814
:101D1000FEE00C94BF7780910F02882309F46BC416
:101D20000E941B0E80917304823609F025C38091B6
:101D3000740499278037910509F4C1C08137910552
:101D4000C4F48A36910509F48DC28B36910544F4AA
:101D50008B34910571F18636910509F46CC10CC381
:101D60008D36910509F47BC08E36910509F45FC06C
:101D700003C384379105D1F1853791054CF4813740
:101D8000910509F4A3C08337910509F4F1C0F4C2A9
:101D90008737910509F428C2883791052CF48537D7
:101DA000910509F4E4C1E8C28937910509F47AC1C3
:101DB000E3C2E0910A02F0910B028081918190933D
:101DC0003403809333032091310330913203821B1B
:101DD000930B845E9D4F68E671E00E946077845BA0
:101DE00090409093300380932F03C6C280910C02E1
:101DF000A0910A02B0910B02853140F080E1EDE440
:101E0000F4E00D9001928A95E1F70DC08D919D91BE
:101E10000D90BC91A02D80934D0490934E04A093FF
:101E20004F04B093500480EF809307024BC0809121
:101E300007018823E1F38DE490E09F938F9383E97A
:101E400096E09F938F9381E08F938F938EE48F938F
:101E50000E945F0D8DB79EB707968DBF8DC2A09172
:101E60000A02B0910B021C91113081F48DE4E3E978
:101E7000F6E00D9001928A95E1F70E94482D1983B2
:101E8000809149048F7E8093490401C0198280911A
:101E900007018823E1F381E090E09F938F93CE01C7
:101EA00001969F938F9381E08F938F938DE48F930F
:101EB0000E945F0DADB7BEB71796ADBF5DC281E0A2
:101EC000809312028FEF8093050156C2E0910A02BF
:101ED000F0910B02E0818E2F8A508A3058F489836A
:101EE000882311F481E003C0863010F085E08983F7
:101EF00061E00EC08E2F84518A3070F4898388236C
:101F000011F481E003C0863010F085E0898360E041
:101F100089810E94BC2D12C0E983EF3F19F40E9411
:101F2000AD2D89838981882311F481E003C0863037
:101F300010F085E0898389810E94A02C809107019F
:101F40008823E1F383E790E09F938F938FE196E0FE
:101F50009F938F9381E090E09F938F93CE010196A2
:101F60009F938F9382E08F9381E08F9381E572C17D
:101F700020910A0230910B02D9018C918150853059
:101F800008F040C0F90181818535E1F52F5F3F4FB1
:101F900083E7EFE1F6E0D9010D9001928A95E1F730
:101FA000F90182910E94E42C809160069927AA276A
:101FB000BB27BC01CD0124EC39E040E050E00E9499
:101FC0002177DC01CB018093D5019093D601A093BA
:101FD000D701B093D801809161069927AA27BB2722
:101FE000BC01CD010E942177DC01CB018093D1019E
:101FF0009093D201A093D301B093D4010E94AD2D50
:10200000898301C01982809107018823E1F381E06F
:1020100090E09F938F93CE0101969F938F9381E0E1
:102020008F938F9383E58F930E945F0D8DB79EB73B
:1020300007968DBF26C0E0910A02F0910B02E08165
:102040008E2F8150853018F48E2F0E94A02C0E9474
:10205000AD2D8983809107018823E1F381E090E031
:102060009F938F93CE0101969F938F9381E08F93DF
:102070008F9386E48F930E945F0DADB7BEB717961E
:10208000ADBF80911803882329F46EE670E0898142
:102090000E94FD3680E00E943607809146060E942D
:1020A00095746AC1E0910A02F0910B028081992730
:1020B00087FD9095909365078093640781819927A8
:1020C00087FD909590936707809366078281992793
:1020D00087FD90959093690780936807838199277E
:1020E00087FD909590936B0780936A078481992769
:1020F00087FD909590936D0780936C078581992754
:1021000087FD909590936F0780936E07868199273E
:1021100087FD909590937107809370078781992729
:1021200087FD909590937307809372078085992718
:1021300087FD909590937507809374078185992703
:1021400087FD9095909377078093760782859927EE
:1021500087FD9095909379078093780783859927D9
:1021600087FD909590937B0780937A0705C1E09156
:102170000A02F0910B0280810E94D0328A83882368
:1021800019F481E0898301C01982809107018823B5
:10219000E1F388E090E09F938F9381EE96E09F9328
:1021A0008F9321E030E03F932F9380910A0290912A
:1021B0000B029F938F933F932F93CE0102969F9391
:1021C0008F933F932F93CE01820F931F9F938F93F3
:1021D00084E08F9381E08F9385E58F930E945F0D5C
:1021E000EDB7FEB773963CC080910902893008F4C0
:1021F000C3C020910A0230910B022F5F3F4F88E04D
:10220000A1EEB6E0F90101900D928A95E1F7D901AE
:102210008E910E9426328A83882319F481E0898373
:1022200001C01982809107018823E1F321E030E0A9
:102230003F932F93CE0102969F938F933F932F93BB
:10224000CE01820F931F9F938F9382E08F9381E043
:102250008F9387E58F930E945F0DEDB7FEB73B9696
:10226000EDBF8AC00E9448748983823019F084309F
:1022700009F082C0F8948091C1008F738093C100EF
:102280008091C9008F738093C9008091C100877EBF
:102290008093C1008091C900877E8093C90080919E
:1022A000C80087FF03C08091CE00F9CF8091C000A5
:1022B00087FF03C08091C600F9CFE0910A02F09138
:1022C0000B028081882359F581E08093FE011092F2
:1022D000CD0080E490E08093CC008091CD0080938D
:1022E000C5008091CC008093C4008091CA008F7D8E
:1022F0008093CA008091CA008F7E8093CA0080912B
:10230000C9008B7F8093C9008091CA00846080934C
:10231000CA008091CA0082608093CA0003C082E034
:102320008093FE018091CA00877F8093CA008091CC
:10233000C200877F8093C2008091C9008E7F809306
:10234000C9008091C10088618093C1008091C9005B
:1023500088618093C9008091C10080688093C1002A
:102360008091C90080688093C90010926E0010921D
:102370006F001092700078948091740499278436CD
:10238000910509F4CDC085369105ACF481369105EF
:1023900009F481C0823691052CF48B34910509F43F
:1023A0005DC021C18236910509F482C08336910552
:1023B00009F491C018C18C36910509F4FFC08D361F
:1023C00091054CF48736910509F40AC188369105C8
:1023D00009F4C4C008C18437910529F086379105F6
:1023E00009F4FAC000C180910C02A0910A02B091D8
:1023F0000B02803140F080E1EDE4F4E00D900192B9
:102400008A95E1F70DC08D919D910D90BC91A02D05
:1024100080934D0490934E04A0934F04B0935004C6
:10242000809107018823E1F31F92809104018F932B
:1024300084E58F930E945F0D8AEF809307028FEFF0
:102440008093050180EA9FE00E9425179093000287
:102450008093FF010F900F900F90C5C0E0910A028A
:10246000F0910B0280819181909334038093330328
:102470002091310330913203821B930B845E9D4F78
:1024800068E671E00E946077845B9040909330032F
:1024900080932F03A8C0E0910A02F0910B02808183
:1024A00080930601803298F08FE1809306010FC07F
:1024B000A0910A02B0910B028BE0E5E6F4E00D90EA
:1024C00001928A95E1F780916E0480930A068FEF5E
:1024D0008093050188C08091030290910402892BAA
:1024E00089F4E0910A02F0910B02E081EE2351F0B1
:1024F0008AE0E89FC00111240E94251790934004B0
:1025000080933F04E0910A02F0910B0290818AE0EF
:10251000989FC0011124909304028093030215C078
:102520008FEF80930501E0910A02F0910B029081F8
:102530008AE0989FC00111249093060280930502BF
:10254000892B19F081E08093140280EA9FE00E94B9
:102550002517909300028093FF0145C08FEF809371
:102560000501E0910A02F0910B02908197FD08C0ED
:1025700082E08093110210920202109201021AC0AE
:10258000909580916902892B8093690291818AE0FC
:10259000989FC0011124909302028093010284E06D
:1025A0008093110280EA9FE00E9425179093000219
:1025B0008093FF0181E08093150215C08FEF809317
:1025C0000501E0910A02F0910B02808180936A027A
:1025D00081E08093160207C081E08093130203C05C
:1025E00081E08093170210920F0210920B0210925A
:1025F0000A0210920902E3E0CE5F0C94DB77982F79
:102600008091C00085FFFCCF9093C60008950F9382
:102610001F9388E18093C1008091C0008260809305
:10262000C0008091C10080688093C1008091C1008A
:1026300080648093C10000E010E00093C5008AE24E
:1026400090E08093C40080910502909106020E9460
:10265000251790934204809341048CED90E00E94F2
:10266000251790937104809370041092430482E5BF
:1026700080934404109247048BE0809345041092A9
:10268000460410930B0200930A02109209021F9154
:102690000F910895A0E1B0E0E0E5F3E10C94BC7780
:1026A00080910701882309F4C1C28091FF019091B4
:1026B00000020E942E17882361F0109202021092ED
:1026C000010210920602109205021092040210926A
:1026D00003028091010290910202892B41F08091C6
:1026E0001C0590911D050E942E17882329F48091C6
:1026F0001502882309F460C080910701882309F43A
:102700005BC08091110201E211E08430A8F00E94C8
:10271000F61F80E590E09F938F931F930F9381E0C6
:102720008F938F9388E48F930E945F0D2DB73EB7F0
:10273000295F3F4F2DBF34C010926B0282E194E0BD
:102740009F938F938BEE9FE19F938F93E0912F0444
:10275000F0913004099584E190E09F938F931F934B
:102760000F9381E090E09F938F9381E192E09F939C
:102770008F9382E08F9381E08F9388E48F930E9400
:102780005F0D80911102982F8F5F809311022DB7FA
:102790003EB7215F3F4F2DBF943010F010921102D1
:1027A00080910102909102020E94251790931D05CD
:1027B00080931C051092150280911602882351F116
:1027C00080910701882331F10E94F61F80E590E097
:1027D0009F938F9381E291E09F938F9321E030E06C
:1027E0003F932F9380E291E09F938F933F932F939A
:1027F0008AE692E09F938F9383E08F9381E08F939B
:102800008CE48F930E945F0D109216028DB79EB7D5
:102810000F968DBF809113028823D1F0809107011C
:102820008823B1F08AE090E09F938F9383E494E053
:102830009F938F9381E08F938F9386E58F930E9470
:102840005F0D109213022DB73EB7295F3F4F2DBF8A
:10285000809117028823D9F0809107018823B9F06D
:102860008BE090E09F938F9385E694E09F938F9306
:1028700081E08F93809104018F9387E48F930E946E
:102880005F0D109217028DB79EB707968DBF80918E
:102890007004909171040E942E17882309F461C07E
:1028A00080910701882309F45CC080913B06992739
:1028B000880F991F880F991F7C010027F7FC00954E
:1028C000102F8091750390917603A0917703B091BA
:1028D0007803BC01CD01A80197010E949577309340
:1028E0005E0420935D0480916D0390916E03A0912E
:1028F0006F03B0917003BC01CD01A80197010E9444
:1029000095773093600420935F0480910203809355
:102910006104809101038093620488E090E09F93BA
:102920008F938DE594E09F938F9381E08F9383E065
:102930008F938BE68F930E945F0D809163042DB778
:102940003EB7295F3F4F2DBF853018F086E080935A
:10295000630483E690E00E942517909371048093AE
:1029600070048091050290910602892B41F08091BC
:102970004104909142040E942E17882321F48091F3
:102980001402882339F180910701882319F10E94EC
:10299000F33582E490E09F938F9388EC95E09F93CA
:1029A0008F9381E08F938F9384E48F930E945F0DC8
:1029B000109214028DB79EB707968DBF80910502C5
:1029C00090910602009731F00E94251790934204DF
:1029D000809341048091030290910402892B09F4B1
:1029E000B8C080913F04909140040E942E17882324
:1029F00009F4AFC080910701882309F4AAC080912F
:102A00003B069927880F991F880F991F7C01002783
:102A1000F7FC0095102F8091750390917603A0919B
:102A20007703B0917803BC01CD01A80197010E9402
:102A30009577309332042093310480916D03909107
:102A40006E03A0916F03B0917003BC01CD01A8018A
:102A500097010E949577309334042093330420919A
:102A60002608309127084091280850912908DA015A
:102A7000C90163E0880F991FAA1FBB1F6A95D1F790
:102A8000820F931FA41FB51F820F931FA41FB51F92
:102A900020919601309197014091980150919901B0
:102AA000BC01CD010E949577309336042093350404
:102AB00080913D0390913E03A0913F03B09140036C
:102AC00039E0B595A795979587953A95D1F7809375
:102AD00037048091390390913A03A0913B03B09160
:102AE0003C0329E0B595A795979587952A95D1F749
:102AF000809338048091450390914603A091470349
:102B0000B091480309E0B595A795979587950A95E3
:102B1000D1F7809339048EE090E09F938F9381E307
:102B200094E09F938F9381E08F938F9383E48F93AF
:102B30000E945F0D80910302909104020E9425176C
:102B40009093400480933F042DB73EB7295F3F4FD9
:102B50002DBF809106018F3F71F1992714E0880FF6
:102B6000991F1A95E1F78E5E9D4F40E150E0BC0140
:102B7000CE0101960E944F7680E190E09F938F9363
:102B8000CE0101969F938F9381E090E09F938F9366
:102B900086E091E09F938F9382E08F9381E08F9303
:102BA00081E48F930E945F0D8FEF809306018DB7B4
:102BB0009EB70B968DBF80910A068823D1F0809135
:102BC00007018823B1F081E090E09F938F938AE022
:102BD00096E09F938F9381E08F938F9382E48F93FE
:102BE0000E945F0D10920A062DB73EB7295F3F4F36
:102BF0002DBF809112028823C9F08091070188239C
:102C0000A9F084E390E09F938F938AE497E09F93E9
:102C10008F9381E08F938F9380E58F930E945F0D58
:102C2000109212028DB79EB707968DBFE6E0C05F87
:102C30000C94D8771F920F920FB60F9211242F93F6
:102C40003F935F936F937F938F939F93AF93BF93C4
:102C5000EF93FF9320E080912702882329F0809151
:102C6000270281508093270280911204882319F053
:102C700081508093120480912F02815080932F0203
:102C80008F3F09F05BC089E080932F0280912D0275
:102C900090912E02019690932E0280932D028091A6
:102CA0000F018F5F817080930F01882319F481E0F9
:102CB00080932C02349903C081E08093300280918C
:102CC000280290912902892B21F18091280290916C
:102CD00029020B9750F080912802909129020A97BF
:102CE000909329028093280204C010922902109226
:102CF00028028091280290912902209108013091A8
:102D0000090182239323892B11F021E008C020E0E0
:102D100006C08FEF9FEF9093090180930801809187
:102D20000201222331F08A3011F45A9A07C0479ADF
:102D300005C08A3011F45A9801C04798809130023A
:102D4000882309F472C02091ED01222309F06DC09F
:102D500080912C0683FF69C086B19927FC01E07140
:102D6000F07084FF14C080912A0290912B0201968A
:102D700090932B0280932A0280912A0290912B0239
:102D8000895E934008F451C0209330024EC0809178
:102D90002A0290912B02892B09F443C080912A02C8
:102DA00090912B028A569140E0F580912A029091F1
:102DB0002B0269E270E00E944C7780912A02909188
:102DC0002B02860F971F90932B0280932A028091EB
:102DD0002A0290912B020B9750F080912A02909139
:102DE0002B020A97909334038093330304C0F0932B
:102DF0003403E093330380913303909134032091A3
:102E0000310330913203821B930B845E9D4F68E641
:102E100071E00E946077845B9040909330038093D0
:102E20002F0310922B0210922A02FF91EF91BF9173
:102E3000AF919F918F917F916F915F913F912F9172
:102E40000F900FBE0F901F90189520912D0230917A
:102E50002E02280F391FC9010196089520912D02D5
:102E600030912E02821B930B892F992786958074AF
:102E700090700895CF93DF930E942517EC01CE0147
:102E80000E942E178823D9F3DF91CF910895CF9315
:102E9000DF930E942517EC0109C08091100188235F
:102EA00029F0909310018FEC80937A00CE010E945C
:102EB0002E17982F882389F3DF91CF9108959FB71C
:102EC000F8945F983E9A469A8091B0008F708093F4
:102ED000B0008091B00083608093B0008091B10019
:102EE0008B738093B1008091B1008B608093B100AF
:102EF0001092B2008FEF8093B3008091B000806891
:102F00008093B000809170008A7F809370008091E0
:102F100070008260809370009FBF08958AE090E007
:102F20000E942517909336028093350282E085BD7A
:102F300083EA84BD17BC84EB88BD86E086BD8091A2
:102F40006E00816080936E000895A0E0B0E0EBEA2F
:102F5000F7E10C94BB7780915606E82FFF27E456E3
:102F6000FE4F9681D08080910E01A92FBB27A7FD2F
:102F7000B095CB2FDB2F813009F0C9C020917503AC
:102F8000309176034091770350917803BD01CE01D3
:102F90000E94217797FF04C061587F4F8F4F9F4F4A
:102FA0007B018C0167E015950795F794E7946A9586
:102FB000D1F78D2D992787FD9095A92FB92F2091B5
:102FC0006D0330916E0340916F0350917003BC010B
:102FD000CD010E94217797FF04C061587F4F8F4F2A
:102FE0009F4F57E095958795779567955A95D1F7B7
:102FF000F801E701C61BD70BE80BF90B80914D06D2
:103000009927AA27BB27BC01CD019E01AF010E94D1
:10301000217797FF04C061507E4F8F4F9F4FFC0177
:10302000EB0149E0F595E795D795C7954A95D1F716
:103030008091C101992736E0880F991F3A95E1F7F1
:1030400040910C0150910D01209155063327841BAE
:10305000950BB9010E94607780910C0190910D0150
:10306000860F971F90930D0180930C0180910C01A6
:1030700090910D0197FD0F9624E0959587952A95DF
:10308000E1F790932302809322028091840680FFCF
:1030900007C080912202909123028C0F9D1F06C0D1
:1030A00080912202909123028C1B9D0B909323020E
:1030B0008093220280914E06282F3327220F331F40
:1030C000220F331F809122029091230282179307CF
:1030D0007CF080914F06282F3327220F331F220FB9
:1030E000331F80912202909123022817390724F47C
:1030F000309323022093220280910201843108F44C
:10310000C2C080910E018F5F80930E01BEC02091DE
:103110006D0330916E0340916F0350917003BD01B8
:10312000CE010E94217797FF04C061587F4F8F4FD7
:103130009F4F7B018C01C7E015950795F794E794A5
:10314000CA95D1F78D2D992787FD9095A92FB92F75
:103150002091750330917603409177035091780365
:10316000BC01CD010E9421779B01AC0197FF04C0F7
:1031700021583F4F4F4F5F4FB7E0559547953795D3
:103180002795BA95D1F72E0D3F1D401F511F8091F5
:1031900051069927AA27BB27BC01CD010E942177A0
:1031A00097FF04C061507E4F8F4F9F4FFC01EB0192
:1031B000A9E0F595E795D795C795AA95D1F78091A0
:1031C000C001992776E0880F991F7A95E1F7409121
:1031D0000A0150910B01209155063327841B950B52
:1031E000B9010E94607780910A0190910B01860FCE
:1031F000971F90930B0180930A0180910A0190918F
:103200000B0197FD0F9664E0959587956A95E1F718
:1032100090932102809320028091840681FF07C051
:1032200080912002909121028C0F9D1F06C08091F9
:103230002002909121028C1B9D0B90932102809380
:10324000200280915206282F3327220F331F220F8E
:10325000331F8091200290912102821793077CF006
:1032600080915306282F3327220F331F220F331F3D
:1032700080912002909121022817390724F430937D
:1032800021022093200210920E01E7E0CDB7DEB7B5
:103290000C94D7771F920F920FB60F9211242F9391
:1032A0003F934F935F938F939F93EF93FF938091FF
:1032B000020190913102843108F04CC0992309F049
:1032C0001CC18091B00086FF24C08091B0008F7B2C
:1032D0008093B000809122029091230287559E4FE7
:1032E000909325028093240225E08D3D920718F0EB
:1032F0008CED95E005C08757914030F487E791E069
:1033000090932502809324028091240290912502BB
:10331000BAC08091B00080648093B0008091540660
:10332000282F33278DED96E0289FA001299F500D6F
:10333000389F500D1124CA0120913202309133027E
:10334000821B930B909325028093240281E080934B
:103350000E01D0C0992309F0D0C08091B00086FF43
:1033600097C08091B0008F7B8093B000E0913402D1
:10337000EE23F1F480915406282F33278DED96E04B
:10338000289FA001299F500D389F500D1124CA017C
:103390002091320230913302821B930B90932502CD
:1033A000809324021092330210923202469AA2C0F5
:1033B00089EA93E090932502809324028E2F992727
:1033C00083309105D9F08430910534F48130910532
:1033D00049F0029761F020C08430910591F0059783
:1033E00099F01AC0809122029091230204C080912A
:1033F00020029091210287559E4F1DC08091E507C4
:1034000005C08091BB0702C08091F0079927880F03
:10341000991F880F991FEFCFFF27EE0FFF1FE65B65
:10342000F84F20813181220F331F80912402909127
:103430002502820F931F909325028093240280918E
:1034400024029091250255E08D3D950718F08CEDF2
:1034500095E005C08757914030F487E791E090935D
:1034600025028093240220912402309125022C5BB6
:1034700030403093250220932402809132029091B3
:103480003302820F931F909333028093320232C033
:103490008091B00080648093B0008CEB90E09093BA
:1034A0002502809324028091320290913302845449
:1034B0009F4F90933302809332028091260288239B
:1034C00021F080912103833320F480912602823001
:1034D00011F4469801C0469A809134028F5F809320
:1034E000340290915406981728F481E080930E01DD
:1034F0001092340281E080933102209124023091B5
:10350000250241E02F37340730F08FEF8093B3006E
:103510002F5F30400FC02F3F3105C9F0C0F0A90127
:103520004F5F50404F37510550F480E88093B3000F
:1035300020583040309325022093240212C08FEF90
:103540008093B30050932502409324020AC08091D7
:1035500024028093B300109225021092240210924C
:103560003102FF91EF919F918F915F914F913F9128
:103570002F910F900FBE0F901F90189510927C0006
:103580008FEC80937A000895CF93DF9310923B02E3
:1035900083E090E00E948B2CC82FDD27C531D10538
:1035A00008F02A97C7BD84E690E00E9447178091F3
:1035B0001401909115018052934010F4C0E0D0E0C6
:1035C000CA3FD105F8F4C7BD82E390E00E944717D7
:1035D00087E294E09F938F938FEF92E19F938F9375
:1035E000E0912F04F091300409958091140190919D
:1035F00015010F900F900F900F908052934010F094
:103600002196DECFC0931B066C2F83E090E00E94D2
:10361000912C80912C0680FF0AC080911B068A5055
:103620008B3E28F080914804806480934804C7BD95
:103630008CE291E00E944717DF91CF910895EF92BD
:10364000FF921F93CF9310E080ED97E00E94251723
:103650007C01CCE8133019F4CB3008F0C9E010E05D
:1036600080914B0290914C028C5F934024F48091A6
:10367000130181500AC080914B0290914C028750F7
:10368000944034F0809113018F5F8093130101C047
:1036900011E08091490290914A028C5F934024F49A
:1036A0008091120181500AC08091490290914A0292
:1036B0008750944034F0809112018F5F8093120103
:1036C00001C01F5F80914702909148028C5F934038
:1036D00024F48091110181500AC080914702909199
:1036E000480287509440C4F0809111018F5F80930D
:1036F000110113C089E294E09F938F938FEF92E1C1
:103700009F938F93E0912F04F091300409950F90CF
:103710000F900F900F905FC01F5F82E18093760241
:10372000809170028E7F8093700285EA8093BC0046
:10373000809113018A3040F4809148048160809325
:1037400048048AE08093130180911301863F40F082
:103750008091480481608093480485EF8093130131
:10376000809112018A3040F48091480482608093F5
:1037700048048AE08093120180911201863F40F054
:103780008091480482608093480485EF8093120101
:10379000809111018A3040F48091480484608093C4
:1037A00048048AE08093110180911101863F40F026
:1037B0008091480484608093480485EF80931101D0
:1037C00080917602882339F0C7010E942E17882342
:1037D00009F090CFF5CF109210018FEC80937A0012
:1037E000809110018823E1F3CA3020F48AE090E050
:1037F0000E944717C15009F02DCF86E490E00E9447
:103800004717CF911F91FF90EF9008951F920F924D
:103810000FB60F921124AF92BF92CF92DF92EF9228
:10382000FF920F931F932F933F934F935F936F9349
:103830007F938F939F93AF93BF93EF93FF93809169
:103840005402282F3327442755278F5F8093540233
:10385000F9012231310508F08CC3E25CFF4F0C9472
:10386000E777809178009091790046C08091780048
:10387000909179002CC1809178009091790090937B
:1038800057028093560257C180917E0390917F0327
:103890002091780030917900821B930B90930C0655
:1038A00080930B0680910B0690910C069093610219
:1038B000809360025EC180917800909179002091A0
:1038C000800330918103821B930B90931A0680939F
:1038D00019068091190690911A06909363028093BD
:1038E000620249C380915A0290915B022091780054
:1038F00030917900820F931F90935B0280935A025C
:1039000081E03AC380915802909159022091780049
:1039100030917900820F931F90935902809358023F
:1039200084E02AC380911E0190911F019C01220F07
:10393000331F280F391F809178009091790063E040
:1039400070E00E944C77260F371F369527953695E5
:10395000279530931F0120931E0185E00DC38091B0
:1039600078009091790040917A0350917B03841BF9
:10397000950B909342028093410280914102909175
:103980004202029704F122E04E3E520784F4209155
:1039900055022B5F2093550225508091EE029091A5
:1039A000EF02845F914018F4215F209355028091CB
:1039B0005502853684F14F5F5F4F50937B034093F0
:1039C0007A03845626C080914102909142028F5F13
:1039D0009F4F0CF532E047325307ECF0209155022F
:1039E0002550209355022B5F8091EE029091EF02BB
:1039F000845F914018F42F50209355028091550216
:103A00008C394CF44150504050937B0340937A03DF
:103A10008C598093550281E0809340028091780018
:103A20009091790090931206809311068091410243
:103A3000909142029C01442737FD4095542F80917C
:103A4000350390913603A0913703B0913803820F6C
:103A5000931FA41FB51F8093350390933603A09343
:103A60003703B093380320913503309136034091EA
:103A700037035091380357FF04C021503C4F4F4F3C
:103A80005F4F0AE055954795379527950A95D1F7E9
:103A90008091350390913603A0913703B09138039C
:103AA000821B930BA40BB50B8093350390933603C5
:103AB000A0933703B09338032EC1809158029091A0
:103AC00059022091780030917900820F931F9093D2
:103AD0005902809358021092530250C28091020101
:103AE0008A3071F48091780090917900209156028B
:103AF00030915702820F931F01969695879517C0B4
:103B00004091560250915702843158F0209178002C
:103B100030917900240F351F8FEF97E0821B930BB4
:103B200006C08091780090917900840F951F909342
:103B300048028093470286E01FC280917E039091E5
:103B40007F032091780030917900821B930B909332
:103B50000C0680930B0680910B0690910C06209129
:103B6000600230916102820F931F9093460280930E
:103B7000450287E001C28091780090917900209100
:103B8000800330918103821B930B90931A068093DC
:103B900019068091190690911A06209162023091BF
:103BA0006302820F931F9093440280934302E3C108
:103BB00020915A0230915B028091780090917900B7
:103BC000280F391F30935B0220935A028091020123
:103BD0008A3019F4220F331F04C0220F331F220F23
:103BE000331F30935B0220935A0220915A02309186
:103BF0005B02C90137FD0796A3E095958795AA95C5
:103C0000E1F790934C0280934B0280915C0290917B
:103C10005D02820F931F97FD01969595879590936E
:103C20005D0280935C0220918A0330918B03821B9A
:103C3000930B90931D0180931C01209151023091B0
:103C4000520280911C0190911D01280F391F37FFEE
:103C500002C02F5F3F4F3595279530935202209336
:103C600051024ECE20915802309159028091780035
:103C700090917900280F391F3093590220935802F0
:103C8000809102018A3019F4220F331F04C0220FE1
:103C9000331F220F331F3093590220935802209173
:103CA000580230915902C90137FD079663E0959596
:103CB00087956A95E1F790934A0280934902809133
:103CC0005E0290915F02820F931F97FD019695957A
:103CD000879590935F0280935E02209188033091D4
:103CE0008903821B930B90931B0180931A012091EF
:103CF0004F023091500280911A0190911B01280FC0
:103D0000391F37FF02C02F5F3F4F359527953093FE
:103D1000500220934F0283E02FC11092540281E0A1
:103D20008093100180913702909138020196909310
:103D300038028093370280917800909179009093B7
:103D40001501809314018091140190911501AA2707
:103D5000BB27A0906402B0906502C0906602D0902C
:103D60006702A80EB91ECA1EDB1EA0926402B092A2
:103D70006502C0926602D0926702809168028F5FEE
:103D800080936802823108F4F6C080911601909108
:103D90001701A0911801B09119017C018D0123E058
:103DA000EE0CFF1C001F111F2A95D1F7E81AF90A23
:103DB0000A0B1B0BEA0CFB1C0C1D1D1D80913B020A
:103DC000992787FD9095A92FB92FBC01CD0126EC2D
:103DD00034E240E050E00E942177DC01CB01E81A98
:103DE000F90A0A0B1B0BD801C7010496A11DB11DCE
:103DF000B7FF05C0D801C7010B96A11DB11D13E087
:103E0000B595A795979587951A95D1F78093160143
:103E100090931701A0931801B09319018091130694
:103E2000909114067C010027F7FC0095102F8091DB
:103E3000160190911701A0911801B0911901E81A8B
:103E4000F90A0A0B1B0BE0921303F0921403009380
:103E500015031093160320913C0230913D024091CE
:103E60003E0250913F0257FF04C0215F3F4F4F4F2A
:103E70005F4FF4E05595479537952795FA95D1F71B
:103E800080913C0290913D02A0913E02B0913F0290
:103E9000821B930BA40BB50B80933C0290933D02C5
:103EA000A0933E02B0933F0280913C0290913D026C
:103EB000A0913E02B0913F028E0D9F1DA01FB11F29
:103EC00080933C0290933D02A0933E02B0933F0248
:103ED0008091390290913A02AC01E5E0440F551F00
:103EE000EA95E1F7481B590B80913C0290913D0205
:103EF000A0913E02B0913F02B7FF03C00F96A11DF3
:103F0000B11D74E0B595A795979587957A95D1F7EA
:103F10002091130330911403281B390B63E0220F07
:103F2000331F6A95E1F7240F351F37FF02C0215E6A
:103F30003F4F45E0359527954A95E1F730933A0292
:103F400020933902D601C501D7FE03C00196A11DF9
:103F5000B11DB595A7959795879580936402909329
:103F60006502A0936602B093670289E080936802BD
:103F700002C01092540282E0809353028091530257
:103F800080937C0080915402882319F08FEC8093F9
:103F90007A00FF91EF91BF91AF919F918F917F91A7
:103FA0006F915F914F913F912F911F910F91FF90D2
:103FB000EF90DF90CF90BF90AF900F900FBE0F901B
:103FC0001F90189590E2E1E2F1E08FE49193815027
:103FD00087FFFCCF089590916B02E1E2F1E0E90FD9
:103FE000F11D80839F5F90936B020895EF92FF9283
:103FF0000F931F93CF93DF932091690220FF0AC094
:1040000080916A02882311F0815002C080912001C2
:1040100080936A0221FF0CC090916A028091200176
:10402000981719F410926A0203C09F5F90936A0276
:10403000822F992780FF04C081FF02C010926A027C
:104040000E94E21F80916A02282F33275BEEE52E43
:104050005FE1F52EC0912F04D09130048A3098F49E
:1040600081E180936B023F932F9380E694E09F93CE
:104070008F93FF92EF92FE0109952DB73EB72A5F0D
:104080003F4F2DBF11C080E180936B023F932F9370
:1040900085E694E09F938F93FF92EF92FE0109953E
:1040A0008DB79EB706968DBF20916A02822F992701
:1040B000AA27BB27FC01429710F00C94A72AE05BCB
:1040C000FF4F4BEEE42E4FE1F42EC0912F04D09120
:1040D00030040C94E77710926B028AE694E09F9389
:1040E0008F930BEE1FE1FF92EF92FE01099584E1A1
:1040F00080936B020F900F900F900F9081E690E0ED
:104100009F938F9382E590E09F938F931F921F92CE
:10411000809102016AE00E944077892F99279F933E
:104120008F93809102010E94407799279F938F93EC
:104130008AE794E09F938F93FF92EF92E0912F0490
:10414000F0913004099588E280936B022DB73EB759
:10415000225F3F4F2DBF84E996E09F938F930E948B
:10416000AD2D99279F938F938FE894E09F938F9322
:10417000FF92EF92E0912F04F091300409958DB7F2
:104180009EB708968DBF90914804992351F08CE317
:1041900080936B02892F99279F938F938DE994E0E9
:1041A00081C690917102992371F08CE380936B0228
:1041B000892F99279F938F9384EB94E09F938F93FC
:1041C0001F930F9391C08091490484FF07C08CE333
:1041D00080936B0289EC94E00C94392A80919201CF
:1041E00090919301069710F00C94B02A8CE3809381
:1041F0006B0286ED94E00C94392A80912C063BEEFC
:10420000E32E3FE1F32EC0912F04D091300480FFC4
:1042100074C010926B028091130390911403A091CB
:104220001503B0911603BC01CD0125E030E040E05C
:1042300050E00E9495773F932F9383EE94E09F93F5
:104240008F93FF92EF92FE01099584E180936B02B8
:104250002DB73EB72A5F3F4F2DBF80910F0390913E
:104260001003A0911103B0911203BC01CD0125E010
:1042700030E040E050E00E9495773F932F9380EF2D
:1042800094E09F938F93FF92EF92E0912F04F0912F
:104290003004099588E280936B028DB79EB706962D
:1042A0008DBF80911401909115019F938F938DEF95
:1042B00094E09F938F93FF92EF92E0912F04F091FF
:1042C000300409958CE380936B022DB73EB72A5FCB
:1042D0003F4F2DBF87B599279F938F938AE095E035
:1042E0009F938F93FF92EF92E0912F04F09130040F
:1042F00009958DB79EB7069633C710926B0287E17A
:1043000095E09F938F93FF92EF92FE01099584E1D0
:1043100080936B020F900F900F900F9086E295E0C4
:104320009F938F93FF92EF92E0912F04F0913004CE
:10433000099588E280936B020F900F900F900F9079
:104340008FE295E09F938F93FF92EF92E0912F047D
:10435000F091300409958CE380936B020F900F90DD
:104360000F900F908EE395E09F938F93FF92EF92C3
:104370000C943D2A10926B0287E495E09F938F93F3
:104380000BEE1FE1FF92EF92FE01099584E180930D
:104390006B020F900F900F900F908091750390918A
:1043A0007603A0917703B0917803B7FF04C08150E2
:1043B0009C4FAF4FBF4F2AE0B595A795979587952E
:1043C0002A95D1F7BF93AF939F938F9384E595E0A0
:1043D0009F938F931F930F93E0912F04F0913004DC
:1043E000099588E280936B022DB73EB7285F3F4F57
:1043F0002DBF80916D0390916E03A0916F03B091DA
:104400007003B7FF04C081509C4FAF4FBF4FCAE04D
:10441000B595A79597958795CA95D1F7BF93AF9313
:104420009F938F9383E695E09F938F931F930F93B2
:10443000E0912F04F091300409958CE380936B0296
:104440008DB79EB708968DBF80913303909134034A
:104450009F938F9382E795E09F938F931F930F9382
:10446000E0912F04F091300409952DB73EB72A5FF3
:104470003F4F11C710926B0280914E0790914F07EA
:104480009F938F9380914C0790914D079F938F93AB
:1044900081E895E09F938F93FF92EF92FE0109953B
:1044A00084E180936B028DB79EB708968DBF809193
:1044B0005207909153079F938F938091500790914B
:1044C00051079F938F9381E995E09F938F93FF927C
:1044D000EF92E0912F04F0913004099588E28093E7
:1044E0006B022DB73EB7285F3F4F2DBF8091560717
:1044F000909157079F938F93809154079091550700
:104500009F938F9381EA95E09F938F93FF92EF9211
:10451000E0912F04F091300409958CE380936B02B5
:104520008DB79EB708968DBF80915A0790915B0713
:104530009F938F9380915807909159079F938F93E2
:1045400081EB95E0A2C010926B0280912106E82FCA
:10455000FF27EE0FFF1FE65BF84F808191819F934D
:104560008F9380912006E82FFF27EE0FFF1FE65B59
:10457000F84F808191819F938F9381EC95E09F9379
:104580008F93FF92EF92FE01099584E180936B0275
:104590008DB79EB708968DBF80912306E82FFF2721
:1045A000EE0FFF1FE65BF84F808191819F938F9301
:1045B00080912206E82FFF27EE0FFF1FE65BF84FE2
:1045C0008081918188589F4F9F938F9381ED95E0D3
:1045D0009F938F93FF92EF92E0912F04F09130041C
:1045E000099588E280936B022DB73EB7285F3F4F55
:1045F0002DBF80912506E82FFF27EE0FFF1FE65BFA
:10460000F84F8081918182599F4F9F938F93809122
:104610002406E82FFF27EE0FFF1FE65BF84F80818F
:10462000918182599F4F9F938F9381EE95E09F9345
:104630008F93FF92EF92E0912F04F091300409954F
:104640008CE380936B028DB79EB708968DBF8091E7
:104650002706E82FFF27EE0FFF1FE65BF84F80814C
:10466000918182599F4F9F938F9380912606E82FC7
:10467000FF27EE0FFF1FE65BF84F80819181825983
:104680009F4F9F938F9381EF95E09F938F93FF921E
:10469000EF92E0912F04F091300409952DB73EB7C9
:1046A000285F3F4FF8C510926B0281E096E09F9320
:1046B0008F930BEE1FE1FF92EF92FE01099580911F
:1046C00002010F900F900F900F908A3009F09DC05B
:1046D00084E180936B0280918A0390918B039C010B
:1046E00097FF02C0295F3F4F287F821B930B9F9348
:1046F0008F9380918A0390918B0397FD0796A3E097
:1047000095958795AA95E1F79F938F9320918A03BA
:1047100030918B0337FF02C0295F3F4FF3E035959F
:104720002795FA95E1F780914B0290914C02821BFC
:10473000930B9F938F938FE096E09F938F931F939C
:104740000F93E0912F04F0913004099588E2809353
:104750006B028DB79EB70A968DBF809188039091AA
:1047600089039C0197FF02C0295F3F4F287F821B6E
:10477000930B9F938F93809188039091890397FD6A
:104780000796E3E095958795EA95E1F79F938F93D8
:10479000209188033091890337FF02C0295F3F4F82
:1047A00073E0359527957A95E1F7809149029091CC
:1047B0004A02821B930B9F938F9380E296E09F9314
:1047C0008F931F930F93E0912F04F091300409957C
:1047D0008CE380936B022DB73EB7265F3F4F2DBF12
:1047E00080918603909187039F938F938091860396
:1047F000909187032091470230914802821B930BCE
:104800009F938F9381E396E0A7C38B3019F0843197
:1048100008F4ADC084E180936B0280918A0390918B
:104820008B039C0197FF02C0215F3F4F207F821BBB
:10483000930B97FD0196959587959F938F93809104
:104840008A0390918B0397FD0F9654E09595879579
:104850005A95E1F79F938F9320918A0330918B03B0
:1048600037FF02C0295F3F4F43E0359527954A95B2
:10487000E1F780914B0290914C02821B930B9F9326
:104880008F938FE396E09F938F931F930F93E09105
:104890002F04F0913004099588E280936B022DB7C4
:1048A0003EB7265F3F4F2DBF8091880390918903CB
:1048B0009C0197FF02C0215F3F4F207F821B930B1B
:1048C00097FD0196959587959F938F938091880387
:1048D0009091890397FD0F96C4E095958795CA95A9
:1048E000E1F79F938F93209188033091890337FFDD
:1048F00002C0295F3F4FB3E035952795BA95E1F7A0
:104900008091490290914A02821B930B9F938F934F
:1049100081E596E09F938F931F930F93E0912F046F
:10492000F091300409958CE380936B028DB79EB7AC
:104930000A968DBF809186039091870397FD01961B
:10494000959587959F938F93809186039091870388
:104950002091470230914802821B930B9F938F93C3
:1049600083E696E09F938F931F930F9392CE8D30A3
:1049700009F0F6C584E180936B02809113019927B9
:104980009F938F9380918A0390918B0397FD0F964D
:10499000F4E095958795FA95E1F79F938F93209191
:1049A0008A0330918B0337FF02C0295F3F4FE3E05A
:1049B00035952795EA95E1F780914B0290914C024D
:1049C000821B930B9F938F9382E796E09F938F9325
:1049D0001F930F93E0912F04F0913004099588E222
:1049E00080936B028DB79EB70A968DBF809112019E
:1049F00099279F938F93809188039091890397FDC6
:104A00000F9674E0959587957A95E1F79F938F932C
:104A1000209188033091890337FF02C0295F3F4FFF
:104A200063E0359527956A95E1F780914902909169
:104A30004A02821B930B9F938F9386E896E09F9385
:104A40008F931F930F93E0912F04F09130040995F9
:104A50008CE380936B022DB73EB7265F3F4F2DBF8F
:104A60008091110199279F938F9380918603909154
:104A7000870397FD0196959587959F938F938091D6
:104A80008603909187032091470230914802821B50
:104A9000930B9F938F938AE996E09F938F931F9335
:104AA0000F93E0912F04F091300409958DB79EB7D4
:104AB0000A9656C310926B028EEA96E09F938F93EC
:104AC000FF92EF92FE01099584E180936B020F90B3
:104AD0000F900F900F9080918003909181039F938E
:104AE0008F9380914302909144029F938F938BEB1D
:104AF00096E09F938F93FF92EF92E0912F04F091B5
:104B00003004099588E280936B022DB73EB7285F89
:104B10003F4F2DBF80917E0390917F039F938F9392
:104B200080914502909146029F938F938AEC96E084
:104B30009F938F93FF92EF92E0912F04F0913004B6
:104B400009958CE380936B028DB79EB708968DBF55
:104B500080917A0390917B039F938F938091410280
:104B6000909142029F938F9389ED96E08ECD1092A3
:104B70006B0280911E0190911F016AE070E00E941B
:104B800060779F938F9380911E0190911F016AE03F
:104B900070E00E9460777F936F9388EE96E09F931A
:104BA0008F93FF92EF92FE01099584E180936B024F
:104BB0008DB79EB708968DBF80919F089091A008F1
:104BC0006AE070E00E944C779F938F9380919F08DA
:104BD0009091A0086AE070E00E944C777F936F93F9
:104BE0008CEF96E09F938F93FF92EF92E0912F04CA
:104BF000F0913004099588E280936B022DB73EB79F
:104C0000285F3F4F2DBF8091A1089091A2089F93EC
:104C10008F9380E197E09F938F93FF92EF92E091C3
:104C20002F04F091300409958CE380936B028DB7CB
:104C30009EB706968DBF8091A3089091A4089F937C
:104C40008F9380E297E02EC110926B0282E397E08F
:104C50009F938F93FF92EF92FE01099584E18093D9
:104C60006B020F900F900F900F9080914A079091D8
:104C70004B079F938F938BE397E09F938F93FF92C4
:104C8000EF92E0912F04F0913004099588E280932F
:104C90006B028DB79EB706968DBF80912103992731
:104CA0009F938F938BE497E09F938F93FF92EF9264
:104CB000E0912F04F091300409958CE380936B020E
:104CC0002DB73EB72A5F3F4F2DBF809149079927E7
:104CD00001979F938F938BE597E002CB10926B0225
:104CE0008BE697E09F938F93FF92EF92FE010995D9
:104CF00084E180936B020F900F900F900F90809142
:104D00002F03909130039F938F9383E797E09F93B6
:104D10008F93FF92EF92E0912F04F0913004099568
:104D200088E280936B022DB73EB72A5F3F4F2DBFBD
:104D300080913303909134039F938F9381E897E0A0
:104D40009F938F93FF92EF92E0912F04F0913004A4
:104D500009958CE380936B028DB79EB706968DBF45
:104D600080913103909132039F938F938FE897E066
:104D700099C010926B028091220399279F938F9381
:104D80008DE997E09F938F93FF92EF92FE01099533
:104D900084E180936B028DB79EB706968DBF80919C
:104DA000230399279F938F9389EA97E09F938F938B
:104DB000FF92EF92E0912F04F0913004099588E280
:104DC00080936B022DB73EB72A5F3F4F2DBF809176
:104DD000240399279F938F9385EB97E09F938F935D
:104DE000FF92EF92E0912F04F091300409958CE34B
:104DF00080936B028DB79EB706968DBF8091250379
:104E000099279F938F9381EC97E04CC010926B028F
:104E10008091260399279F938F938DEC97E09F9322
:104E20008F93FF92EF92FE01099584E180936B02CC
:104E30008DB79EB706968DBF8091270399279F93C4
:104E40008F9389ED97E09F938F93FF92EF92E0917C
:104E50002F04F0913004099588E280936B022DB7FE
:104E60003EB72A5F3F4F2DBF8091280399279F931C
:104E70008F9385EE97E09F938F93FF92EF92E0914F
:104E80002F04F091300409958CE380936B028DB769
:104E90009EB706968DBF8091290399279F938F9384
:104EA00081EF97E09F938F93FF92EF92D9CA109270
:104EB0006B028DEF97E09F938F930BEE1FE1FF92B4
:104EC000EF92FE01099584E180936B020F900F90A1
:104ED0000F900F908091C10199279F938F9385E048
:104EE00098E09F938F93FF92EF92E0912F04F091BF
:104EF0003004099588E280936B028DB79EB70696C1
:104F00008DBF809122029091230297FD0396959583
:104F10008795959587959F938F9383E198E09F93CD
:104F20008F931F930F93E0912F04F0913004099514
:104F30008CE380936B022DB73EB72A5F3F4F2DBFA6
:104F400080914F0699279F938F9380914E069927C2
:104F50009F938F9381E298E09F938F931F930F937A
:104F6000E0912F04F091300409958DB79EB7089613
:104F7000F7C010926B028FE298E09F938F93FF929D
:104F8000EF92FE01099584E180936B020F900F90E0
:104F90000F900F9080916904992787FD90959F93BA
:104FA0008F9380916804992787FD90959F938F93A5
:104FB0008FE398E09F938F93FF92EF92E0912F04FD
:104FC000F0913004099588E280936B022DB73EB7CB
:104FD000285F3F4F2DBF80916A04992787FD9095E8
:104FE0009F938F9380916B0499279F938F938FE466
:104FF00098E09F938F93FF92EF92E0912F04F091AE
:10500000300409958CE380936B028DB79EB70896A8
:105010008DBF80916F0499279F938F9380916C042B
:10502000992787FD90959F938F938FE598E02DCBDF
:1050300010926B028FE698E09F938F93FF92EF920E
:10504000FE01099584E180936B020F900F900F9001
:105050000F908091040799278F7790709F938F937B
:105060008091FC0699278F7790709F938F93809102
:10507000F40699278F7790709F938F938091EC0619
:1050800099278F7790709F938F938FE798E09F93E6
:105090008F93FF92EF92E0912F04F09130040995E5
:1050A00088E280936B028DB79EB70C968DBF80917E
:1050B000240799278F7790709F938F9380911C0777
:1050C00099278F7790709F938F93809114079927DA
:1050D0008F7790709F938F9380910C0799278F778C
:1050E00090709F938F9380E998E09F938F93FF92A6
:1050F000EF92E0912F04F091300409958CE38093B6
:105100006B022DB73EB7245F3F4F2DBF8091440700
:1051100099278F7790709F938F9380913C07992761
:105120008F7790709F938F938091340799278F7713
:1051300090709F938F9380912C0799278F77907011
:105140009F938F9381EA98E09F938F93FF92EF92C2
:10515000E0912F04F091300409958DB79EB70C961D
:105160008DBFFEC110926B0282EB98E09F938F93EC
:10517000FF92EF92FE01099584E180936B020F90FC
:105180000F900F900F9080910807992787FD9095B9
:105190009F938F9380910007992787FD90959F9308
:1051A0008F938091F806992787FD90959F938F9311
:1051B0008091F006992787FD90959F938F9381ECBE
:1051C00098E09F938F93FF92EF92E0912F04F091DC
:1051D0003004099588E280936B022DB73EB7245FB7
:1051E0003F4F2DBF80912807992787FD90959F936A
:1051F0008F9380912007992787FD90959F938F9398
:1052000080911807992787FD90959F938F938091A0
:105210001007992787FD90959F938F9382ED98E0D3
:105220009F938F93FF92EF92E0912F04F0913004BF
:1052300009958CE380936B028DB79EB70C968DBF5A
:1052400080914807992787FD90959F938F93809130
:105250004007992787FD90959F938F9380913807FA
:10526000992787FD90959F938F9380913007992779
:1052700087FD90959F938F9383EE98E09F938F93F4
:10528000FF92EF92E0912F04F091300409952DB731
:105290003EB7245F3F4F2DBF63C110926B0284EF76
:1052A00098E09F938F930BEE1FE1FF92EF92FE0128
:1052B000099584E180936B020F900F900F900F90EF
:1052C00080910407881F8827881F97E0899FC00165
:1052D00011248D969F938F938091FC06881F8827B9
:1052E000881F96E0899FC00111248D969F938F930C
:1052F0008091F406881F8827881F95E0899FC00148
:1053000011248D969F938F938091EC06881F882798
:10531000881F9927880F991F880F991F8D969F9333
:105320008F9383E099E09F938F93FF92EF92E091A8
:105330002F04F0913004099588E280936B028DB7B9
:105340009EB70C968DBF80912407881F8827881FE1
:105350009BE0899FC00111248D969F938F9380912C
:105360001C07881F8827881F9AE0899FC001112485
:105370008D969F938F9380911407881F8827881F8D
:1053800099E0899FC00111248D969F938F938091FE
:105390000C07881F8827881F992723E0880F991FEB
:1053A0002A95E1F78D969F938F9387E199E09F93DC
:1053B0008F93FF92EF92E0912F04F09130040995C2
:1053C0008CE380936B022DB73EB7245F3F4F2DBF18
:1053D00080912C07881F8827881F9CE0899FC00127
:1053E00011248D969F938F938BE299E09F938F93D7
:1053F000FF92EF92E0912F04F09130040995809193
:1054000034072DB73EB72A5F3F4F2DBF87FF12C02D
:1054100080E480936B028CE399E09F938F93FF92DB
:10542000EF92E0912F04F091300409950F900F90C6
:105430000F900F9080913C0787FF12C084E4809307
:105440006B028FE399E09F938F931F930F93E091EB
:105450002F04F091300409950F900F900F900F904A
:105460008091440787FF7CC088E480936B0282E4CC
:1054700099E09F938F931F930F93E0912F04F091E6
:10548000300409950F900F900F900F9069C0109203
:105490006B0285E499E09F938F93FF92EF92FE0158
:1054A000099584E180936B020F900F900F900F90FD
:1054B0008091F9019091FA019F938F9383E599E090
:1054C0009F938F93FF92EF92E0912F04F09130041D
:1054D000099588E280936B028DB79EB706968DBFC3
:1054E0008091FB019091FC019F938F9380E699E05E
:1054F0009F938F93FF92EF92E0912F04F0913004ED
:10550000099589E480936B022DB73EB72A5F3F4F20
:105510002DBF8DE699E09F938F93FF92EF92E091DC
:105520002F04F09130040995809169020F900F903B
:105530000F900F9083FF14C01092FC011092FB019A
:1055400060E070E08EE090E00E949B2C09C08091AA
:105550002001281719F421502093200110926A028B
:1055600010926902E6E0CDB7DEB70C94D8774AEA2C
:1055700020E030E02617370740F4FC018191480F06
:105580002F5F3F4F26173707C8F3842F99270895B9
:10559000AC019AEA20E030E02617370750F4DA0130
:1055A000A20FB31F0E94ED77802D980F2F5F3F4F02
:1055B000F3CF892F9927089581E08093220682E016
:1055C0008093210683E08093200684E08093230665
:1055D00085E08093240686E08093250687E080930B
:1055E000260688E08093270689E0809328068AE0D3
:1055F000809329068BE080932A068CE080932B060B
:10560000089595E590931F0680910201843170F012
:105610008AE080933F06109263068BE180933B06FD
:105620008EE480936006809361060DC083E08093D2
:105630003F0680E2809363068EE180933B06909361
:105640006006909361068AE680932C0683E080933F
:10565000850681E0809346061092820610927F06AE
:1056600068E06093390686EE80933A0680E880937E
:105670003C065EE150932D068FEF80932F069FE04E
:105680009093300650932E061092320660933306A4
:1056900080E4809334061092350690933106109280
:1056A00048061092490610924A0610924B06109234
:1056B000650610926606109267061092680638E733
:1056C00030934C0648E240934D0672E07093840696
:1056D00090934E0627EF20934F0685E08093540663
:1056E0008DE7809357068093580680935906309330
:1056F00050069AE590935106109252062093530655
:1057000040935506109256068FE58093690683EF05
:1057100080936B068AEA80936D0680936E0684E11F
:1057200080936A0680936C0682E380935A06909376
:105730005B0680935C06109283068EEF80936F0663
:1057400024E62093700690937106909372069093CE
:1057500073068BE4809374068093750680937606B7
:105760001092770686E0809378066093790690938E
:105770007A0650937B0620937C0620937D067093D7
:105780007E06109280061092810681E28093430685
:105790008DE280934406909345060895CF93DF935E
:1057A0000E94012B8EE08093360620E1209337067D
:1057B0003CE03093380690E590933D0686E980936F
:1057C0003E06909340068093410686E08093420611
:1057D00080E2809347068AE580935D0690935E069B
:1057E00081E080935F062093620684E680936406DE
:1057F000A6E8B6E0E1E7F1E0ED01019009923A9503
:10580000E1F763E770E0CD01875690400E94B72A28
:1058100080939206DF91CF910895CF93DF930E94FA
:10582000012B8AE08093360680E18093370626E0DC
:10583000209338069AE590933D0688E780933E06CC
:1058400090934006809341062093420620E22093E5
:10585000470690935D0680E580935E068CE3809317
:105860005F06209362068BE480936406A6E8B6E0A8
:105870008CE0E8E7F1E0ED01019009928A95E1F70B
:1058800063E770E0CD01875690400E94B72A80936D
:105890009206DF91CF910895CF93DF930E94012B61
:1058A00088E08093360630E13093370626E0209377
:1058B000380694E690933D0688E780933E069093E1
:1058C00040068093410620934206309347068AE5BE
:1058D00080935D0680E580935E0696E490935F0674
:1058E00080E28093620690936406A6E8B6E08CE0BE
:1058F000E0E8F1E0ED01019009928A95E1F763E7B4
:1059000070E0CD01875690400E94B72A809392069E
:10591000DF91CF910895DC010E94ED77802D9927CA
:105920000895DC01062E0E94FF770895DC010E9495
:10593000FA77CF010895DC010B010E940B780895DE
:10594000FF920F931F93CF93DF93982F8150853051
:1059500008F093E084E7F82E9F9D80011124E80170
:10596000609763E770E0CE010E94C82A982FD801A3
:10597000AD59BF4F0E94ED77802D891731F4DE01BC
:105980000E94ED77802D853519F080E090E00AC007
:10599000EFE1F6E0DE011F2C0E94F5770E941A6706
:1059A00081E090E0E5E0CDB7DEB70C94D9778630A2
:1059B00010F085E003C0882309F481E0A2E0B0E0A4
:1059C000082E0E94FF7708951F93CF93DF93182F1F
:1059D000CFE1D6E080911F06853591F5163010F0A5
:1059E00015E002C0112361F163E770E08FE196E0FA
:1059F0000E94B72A8093920684E7189FD001112451
:105A00005097FE01182E0E941078E0E2F6E0A0E523
:105A1000B0E02CE030E0122E0E941078B90180E254
:105A200096E00E94B72AACE5B0E0082E0E94FF770E
:105A3000812F0E94D72C0E941A6781E090E002C05B
:105A400080E090E0DF91CF911F9108956DE470E0C8
:105A500088EE93E00E94C82AA5E3B4E00E94ED77A7
:105A6000902D981739F4A8EEB3E00E94ED77802DC1
:105A7000813019F080E090E00895E3E9F6E0A8EEC7
:105A8000B3E08EE4182E0E94F57781E090E008954F
:105A9000CF93DF93C3E9D6E080919306813089F4F8
:105AA0006DE470E0CE010E94B72A8093E006A8EE74
:105AB000B3E08EE4FE01182E0E94107881E090E0A1
:105AC00002C080E090E0DF91CF910895CF93DF9303
:105AD00081E080939306E3E9F6E08FE01586168671
:105AE0001786108A8150349687FFF8CF80E4809320
:105AF000A0068093A1061092A2068093A30680932D
:105B0000A40690EC9093A5061092A6068093A70693
:105B10008093A8061092A9069093AA069093AB06CC
:105B20008093AC061092AD068093AE069093AF06BC
:105B3000A4E9B6E087E0EAE8F1E0ED01019009921E
:105B40008A95E1F76DE470E0CD0101970E94B72AD4
:105B50008093E006DF91CF910895A2E0B0E00E942B
:105B6000ED77802D863030F083E0A2E0B0E0082EA3
:105B70000E94FF77992708951F93CF93C82F162F60
:105B8000863010F0C5E003C0882309F4C1E08C2FF3
:105B900099278230910541F08330910544F40197B3
:105BA00031F40E94CE2B05C00E940D2C02C00E9431
:105BB0004C2C1123B1F06CE070E080E590E00E9485
:105BC000C82AACE5B0E00E94ED77902D981749F413
:105BD000E0E2F6E0A0E5B0E08CE0182E0E94F57758
:105BE00002C00E94DC2A8C2F0E94E42CCF911F91CE
:105BF0000895DF92EF92FF920F931F93CF93FF24AC
:105C0000DF2CEF2C81E090E00E948B2C853539F061
:105C100031E0E32E65E581E090E00E94912C6CE09C
:105C200070E080E590E00E94C82AC82FACE5B0E0A3
:105C30000E94ED77802D8C1711F421E0D22EC1E067
:105C400001E010E0EE2029F48C2F0E94A02C882384
:105C5000B1F591E0F92E1F930F9385E799E09F939B
:105C60008F938FEF92E19F938F93E0912F04F091A8
:105C7000300409958DB79EB706968DBF0230110589
:105C800049F0033011054CF40130110531F40E9444
:105C9000CE2B05C00E940D2C02C00E944C2CDD2092
:105CA00049F0E0E2F6E0A0E5B0E08CE0182E0E94BA
:105CB000F57702C00E94DC2A8C2F0E94E42CCF5F73
:105CC0000F5F1F4FC63008F4BDCFFF2019F083E0EF
:105CD0000E94D72C0E94AD2DC82F0E94A02C8C2F83
:105CE00099279F938F938BE999E09F938F930FEF61
:105CF00012E11F930F93E0912F04F0913004099566
:105D00008DB79EB706968DBFEE2021F40E94262DFA
:105D1000882399F484EB99E09F938F931F930F93BB
:105D2000E0912F04F091300409950E94662D0E94A5
:105D3000482D0F900F900F900F9010921E0690E03C
:105D4000E0EAF6E0CFE08081349618160CF49F5F0D
:105D5000C150C7FFF8CF90931E06892F99279F93B4
:105D60008F9384E996E09F938F9385ED99E09F93BD
:105D70008F931F930F93E0912F04F09130040995B6
:105D80008DB79EB708968DBF86EF99E09F938F934E
:105D90001F930F93E0912F04F091300409950F9019
:105DA0000F900F900F90CF911F910F91FF90EF9058
:105DB000DF900895982F2FB7F8943998389A88B1C2
:105DC000836088B98091B9008C7F8093B9008AE2A2
:105DD0008093B800109276021092740210927302AF
:105DE000992379F0E9EEF6E08BE0108211821282BD
:105DF000138214821582168217828150389687FF8B
:105E0000F4CF78942FBF08951092760284E980939E
:105E1000BC0080E88093BC001092BD001092BA00D4
:105E20001092BB001092B9001092B800109272024A
:105E300080E00E94DA2E1092BB0085E88093BC00BF
:105E40008091700282608093700208951F920F9279
:105E50000FB60F9211242F933F934F935F938F931D
:105E60009F93EF93FF9380917602282F3327442747
:105E700055278F5F80937602F9012731310508F0AD
:105E8000C2C2EE59FF4F0C94E77781E08093720213
:105E900009C0809174028C3090F4809174028F5FFD
:105EA0008093740280917402E82FFF27EE0FFF1F8A
:105EB000EE0FFF1FED56F94F8585181654F78091A8
:105EC00074028C3070F010926F0210926E02109279
:105ED000740285E08093760280917302880F8D5A58
:105EE00004C080917402880F8E5A8093BB0085E8AD
:105EF0007FC280917402E82FFF2783E0EE0FFF1F1F
:105F00008A95E1F7E751F94F81818093BB0085E8DD
:105F10008093BC0080917402E82FFF27EE0FFF1FD3
:105F2000EE0FFF1FEE0FFF1FE751F94F808180FF3B
:105F300091C080917402E82FFF27EE0FFF1FEE0F34
:105F4000FF1FEE0FFF1FE751F94F8281882329F0D1
:105F500080911E06873008F46CC280916E02909189
:105F60006F02892B09F065C280916C0290916D02DD
:105F7000892B09F05EC26EC08091740221E030E08E
:105F800002C0220F331F8A95E2F780916C02909134
:105F90006D0228233923232B79F080917402E82F96
:105FA000FF27EE0FFF1FEE0FFF1FEE0FFF1FE75142
:105FB000F94F80E184830DC080917402E82FFF27A0
:105FC000EE0FFF1FEE0FFF1FEE0FFF1FE751F94F00
:105FD000148280917402E82FFF2753E0EE0FFF1F19
:105FE0005A95E1F7E751F94F8481282F332743E091
:105FF000220F331F4A95E1F780917402E82FFF27A3
:1060000093E0EE0FFF1F9A95E1F7E751F94F828178
:106010008770822B8093BB0085E88093BC00209121
:10602000740281E090E002C0880F991F2A95E2F780
:1060300020916E0230916F0282239323892B51F0BD
:1060400081EE96E090937A028093790288E08093C3
:106050007B02EFC184E089C1E0917902F0917A027C
:1060600081918093BB0085E88093BC00F0937A0215
:10607000E093790280917B02815080937B02882398
:1060800009F4D7C183E071C18091B900803351F523
:1060900080917702882329F4809174028F5F809326
:1060A000770280917402E82FFF2783E0EE0FFF1F35
:1060B0008A95E1F7E751F94F838199278F7790709F
:1060C0008F3791057CF480917402E82FFF27EE0F43
:1060D000FF1FEE0FFF1FEE0FFF1FE751F94F8381E8
:1060E0008F5F83831092760284E98093BC008AE0FC
:1060F00090E09093930180939201809174028F5F5E
:1061000080937402109276026DC18091B900803440
:10611000C9F180917302E82FFF27EE0FFF1FEE0FEA
:10612000FF1FEE0FFF1FE751F94F83818F778383A6
:10613000809173028F5F80937302809173028C3021
:10614000A0F01092730210926D0210926C02809176
:1061500078028F5F809378028C3038F0109278024A
:10616000809170028D7F80937002809170028160B7
:10617000809370021092760284E98093BC001092A2
:10618000720273C080917302E82FFF27EE0FFF1F8A
:10619000EE0FFF1FEE0FFF1FE751F94F838180685D
:1061A000838380917302E82FFF27EE0FFF1FEE0F0E
:1061B000FF1FEE0FFF1FE751F94F808180FF2FC0B7
:1061C00080917302E82FFF2753E0EE0FFF1F5A95CF
:1061D000E1F7E751F94F84819927009751F04097F3
:1061E000D9F581EE96E090937A028093790288E067
:1061F00031C080917302992743E0880F991F4A9517
:10620000E1F78251994F90937A02809379029091AD
:106210007302809178029817E1F483E01BC08091AB
:106220007302992733E0880F991F3A95E1F782515D
:10623000994F90937A02809379028091700281FD48
:1062400006C09091730280917802981711F482E051
:1062500001C081E080937B0280917B02813011F448
:1062600085E801C085EC8093BC0080917702809323
:10627000710210927702DDC0E0917902F0917A020A
:106280008091BB0080838091790290917A0201967F
:1062900090937A028093790280917B02815080935F
:1062A0007B02823010F085EC5DC0813011F485E80E
:1062B00059C08091700281FF2DC08091ED0280FD58
:1062C0001DC080917302E82FFF2723E0EE0FFF1F10
:1062D0002A95E1F7E751F94F86818A3F79F4809159
:1062E0007302E82FFF2793E0EE0FFF1F9A95E1F767
:1062F000E751F94F8081816080830CC080917302E7
:10630000E82FFF2783E0EE0FFF1F8A95E1F7E751A3
:10631000F94F1082809173028F5F80937302809196
:1063200073028C30A0F01092730210926D021092E2
:106330006C02809178028F5F809378028C3038F005
:1063400010927802809170028D7F8093700210927B
:10635000760284E98093BC00809170028160809312
:10636000700265C08093BC0086E08093760261C0B5
:1063700088E9BBCD80917502880F805FB6CD809192
:10638000750299278130910561F0823091051CF4E6
:10639000892B21F04EC0029739F04BC08091130138
:1063A000A4CD80911201A1CD809111019ECD80E8F4
:1063B0009CCD1092760284E98093BC001092720208
:1063C0008AE090E09093930180939201809175020E
:1063D000823088F4809175028F5F8093750282E12C
:1063E00080937602809170028E7F8093700285EA9E
:1063F0008093BC001EC01092750280917002816073
:106400008093700216C01092760284E98093BC00DB
:10641000809170028160809370028AE090E0909396
:106420009301809392011092740210927302109261
:106430007202FF91EF919F918F915F914F913F91E8
:106440002F910F900FBE0F901F9018951F93CF9311
:10645000DF93182F80911803882321F4809107027D
:10646000882319F081E090E097C01D3008F092C0B9
:106470001123B1F0E12FFF2723E0EE0FFF1F2A9534
:10648000E1F7E751F94F35978081359688230CF075
:1064900081C03897808180FD03C083E090E07CC09C
:1064A0008091E106823019F084E090E075C067E0E9
:1064B00070E081EE96E00E94B72A9091E806891775
:1064C00019F085E090E068C080ED97E00E94251704
:1064D000EC018091700280FD05C0CE010E942E1754
:1064E0008823B9F3112319F48FEF90E00BC0212F0B
:1064F00033272150304081E090E002C0880F991F7F
:106500002A95E2F790936F0280936E02A1E0B0E0CB
:10651000E9EEF6E040E050E06BE0CD01042E02C071
:10652000880F991F0A94E2F720916E0230916F0252
:1065300082239323892B11F01182128261504F5FC5
:106540005F4F389667FFE9CF10927402109276027F
:10655000809170028E7F8093700285EA8093BC00E8
:106560008091700280FD05C0CE010E942E17882305
:10657000B9F380916E0290916F02892B29F0CE01C0
:106580000E942E17882311F380916E0290916F0262
:10659000009711F082E090E0DF91CF911F91089574
:1065A0000F931F93CF93DF93982F80911803882325
:1065B00021F480910702882319F081E090E092C0D5
:1065C0009D30A0F4992319F486E090E08BC0C92F88
:1065D000DD27FE0133E0EE0FFF1F3A95E1F7E751AB
:1065E000F94F35978081359687FD03C082E090E0B2
:1065F00079C03897808180FD03C083E090E072C04D
:1066000080ED97E00E9425178C018091700280FD3B
:1066100005C0C8010E942E178823B9F3219721E0F5
:1066200030E0C90102C0880F991FCA95E2F7909324
:106630006D0280936C02D901E9EEF6E040E050E093
:106640006BE0CD01042E02C0880F991F0A94E2F777
:1066500020916C0230916D0282239323892B11F0DB
:106660001182128261504F5F5F4F389667FFE9CF0A
:10667000109273021092E1061092E80610927602D0
:10668000809170028E7F8093700285EA8093BC00B7
:106690008091700280FD05C0C8010E942E178823DA
:1066A000B9F380916C0290916D02892B29F0C80199
:1066B0000E942E17882311F38091E106823019F091
:1066C00084E090E00FC067E070E081EE96E00E9409
:1066D000B72A9091E806891719F085E090E002C08A
:1066E00080E090E0DF91CF911F910F91089589E1B3
:1066F000AEE7B7E0EAE4F7E0118210823296119635
:106700001C921E921296815087FFF6CF109287033B
:1067100010928603109289031092880310928B03C3
:1067200010928A0308951F920F920FB60F921124B0
:106730000F931F932F933F934F935F936F937F9389
:106740008F939F93AF93BF93CF93DF93EF93FF9379
:106750008091850682FDCFC04091860050918700D0
:1067600080917D0290917E02481B590B809186009A
:106770009091870090937E0280937D02CA018D5490
:106780009440A0917F02B0918002835F9A4178F497
:1067900080917F0280934907149714F0109294011E
:1067A00081E090E09093800280937F0207C2AD3039
:1067B000B1050CF003C2CA018B5F9040845B91402D
:1067C00008F074C0425D5140FD01EA0FFB1FE65B1B
:1067D000F84F80819181FA01E81BF90BCF01F7FF97
:1067E00003C0909581959F4F06975CF4809121039B
:1067F000883C20F480912103865F01C088EC80935F
:106800002103FD01EA0FFB1FE65BF84F80819181B8
:106810009C01220F331F280F391F240F351F37FF0C
:1068200002C02D5F3F4FE901D595C795D595C79516
:10683000CA0101968C179D0714F4219706C0415098
:106840005040C417D5070CF4219680912103833C56
:10685000E0F08D010A0F1B1FF801E65BF84F808105
:1068600091819E01281B390BC90163E070E00E94F1
:106870006077CB01880F991F860F971F0258184F1A
:10688000D80111969C938E9307C0AA0FBB1FA258E4
:10689000B84F11961C921E92E0917F02F0918002F7
:1068A000EE0FFF1FE65BF84FD183C08320917F027C
:1068B000309180022F5F3F4F3093800220937F0200
:1068C00080910201843108F079C12530310511F43D
:1068D0005D9A01C05D9880917F0290918002863020
:1068E000910511F45C9A01C05C98079711F45B9ACA
:1068F00065C15B9863C1409186005091870080918B
:10690000810290918202481B590B809186009091E0
:1069100087009093820280938102CA018D54944033
:106920006091EB02835F9A4108F07AC060937C0229
:1069300080917C02843008F453C090914907809183
:106940007C02981709F04CC05091EC025B3008F4BF
:106950003FC0109294011092EB0240E05F31C0F012
:10696000E42FFF27EE0FFF1F9F0129543D4FDF014A
:10697000A65BB84F8D919C91D9018D939C93DF01BB
:10698000A258B84F8D919C91EF52FD4F9183808317
:10699000E42FFF27EE0FFF1F9F01265B384FDF011B
:1069A000AD57BD4F8D919C91D90111969C938E93BB
:1069B000DF01A356BD4F8D919C91E258F84F918312
:1069C0008083842F8F5F482F8D3040F28093EB02BD
:1069D0008091EC028F3FB9F08F5F8093EC0213C07F
:1069E0008091EC02853620F08AE08093EC0202C0B0
:1069F0001092EC02809102018A3011F0843110F083
:106A0000289A01C0289881E08093EB0280911803B6
:106A1000882309F0D3C080917C0280934907CEC0BF
:106A20006D3008F0A3C0CA018B5F9040845B914039
:106A300008F07EC0425D5140E62FFF27EE0FFF1F9A
:106A4000ED57FD4F80819181FA01E81BF90BCF01D1
:106A500005960B97B0F48091EC028A3120F080917A
:106A60002103865F05C08B3028F0809121038E5F63
:106A70008093210380912103893C18F088EC809356
:106A80002103E62FFF27EE0FFF1FED57FD4F8081FB
:106A900091819C01220F331F280F391F240F351FAE
:106AA00037FF02C02D5F3F4FE901D595C795D595BA
:106AB000C795CA0101968C179D0714F4219706C04B
:106AC00041505040C417D5070CF421968091210302
:106AD0008E3BD8F0E62FFF27EE0FFF1FDF01AD57EB
:106AE000BD4F8D919C919E01281B390BC90163E01C
:106AF00070E00E946077CB01880F991F860F971F67
:106B0000E356FD4F9183808308C0E62FFF27EE0FE9
:106B1000FF1FE356FD4F118210828091EB02E82F98
:106B2000FF27EE0FFF1FED57FD4FD183C08309C034
:106B3000809102018A3011F0843110F0289A01C04E
:106B4000289880910201843188F48091EB0285308D
:106B500011F45D9A05C05D98863011F45C9A05C009
:106B60005C98873011F45B9A01C05B988091EB02CE
:106B7000843120F48F5F8093EB0220C08431F1F4E4
:106B8000809102018A3011F0843110F0289A01C0FE
:106B900028988EE18093EB022CE0CEE7D7E0A7EBBC
:106BA000B2E0EAE4F7E08D919D9191838083329683
:106BB000198218822296215027FFF5CFFF91EF917D
:106BC000DF91CF91BF91AF919F918F917F916F9105
:106BD0005F914F913F912F911F910F910F900FBE99
:106BE0000F901F901895EF92FF920F931F93809133
:106BF0003B069927880F991F880F991F7C01002752
:106C0000F7FC0095102F8091750390917603A09169
:106C10007703B0917803BC01CD01A80197010E94D0
:106C200095773093CB052093CA0580916D039091A1
:106C30006E03A0916F03B0917003BC01CD01A80158
:106C400097010E9495773093CD052093CC058091D4
:106C500017089091180897FD039695958795959537
:106C600087959093CF058093CE0580912A089091C7
:106C70002B0897FD03969595879595958795909305
:106C8000D1058093D0058091860390918703209150
:106C9000470230914802821B930B9093D305809357
:106CA000D2058091130390911403A0911503B09124
:106CB0001603BC01CD0125E030E040E050E00E9429
:106CC00095773093D5052093D4058091410290911A
:106CD00042029093D7058093D6058091330390911B
:106CE00034039093DB058093DA0580911E01909127
:106CF0001F019093DD058093DC0580912103992786
:106D00009093DF058093DE058091260890912708F7
:106D1000A0912808B09129082091960130919701FF
:106D20004091980150919901BC01CD010E94957745
:106D30003093E1052093E0058091EA06992790932E
:106D4000E3058093E2058091F20699279093E5058B
:106D50008093E4058091FA0699279093E705809344
:106D6000E6058091020799279093E9058093E8054D
:106D700080912202909123029093F3058093F20573
:106D800080919F089091A0089093F7058093F60555
:106D90008091A5089091A6089093F9058093F80535
:106DA0008091A70899279093050680930406809107
:106DB0000004909101049093070680930606809149
:106DC000FE039091FF03909309068093080680913B
:106DD0004804882321F480914904882321F080917C
:106DE000C905816003C08091C9058E7F8093C90564
:106DF0001F910F91FF90EF9008951F93CF93DF9312
:106E0000182FEB01809118038823A1F411501F3F24
:106E100089F0D0932902C093280280912802909192
:106E20002902892BD1F7CE018C0F9D1F0E943A17A2
:106E3000115078F7DF91CF911F910895CF93DF9391
:106E4000809102018D3011F40E941F1B10927A0074
:106E500080914B0290914C029093D1078093D00780
:106E60008091490290914A029093BF078093BE0798
:106E700080914702909148029093200880931F08C8
:106E80002091430230914402C901880F991F880F55
:106E9000991F820F931F820F931F9093180880935E
:106EA00017082091450230914602C901880F991FA9
:106EB000880F991F820F931F820F931F90932B08A7
:106EC00080932A088FEC80937A00A2E2B3E0C4E2B8
:106ED000D6E097E08991E82FFF27EE0FFF1FE65BD2
:106EE000F84F0190F081E02DE259FF4F1E161F066A
:106EF0001CF0E0E0F0E005C0EF3FF10514F0EFEF2B
:106F0000F0E08C91282F3327E217F30714F4815017
:106F100004C02E173F0714F48F5F8C939150119685
:106F200097FFD8CF809160069927AA27BB27BC017D
:106F3000CD0124EC39E040E050E00E942177DC01F3
:106F4000CB018093D5019093D601A093D701B09344
:106F5000D801809161069927AA27BB27BC01CD01E2
:106F60000E942177DC01CB018093D1019093D20163
:106F7000A093D301B093D401DF91CF910895A0E005
:106F8000B0E0E5ECF7E30C94B677882EC0E0D0E0F3
:106F90007E016E0110924804469AD0938103C093FB
:106FA0008003D0937F03C0937E03D0937B03C09371
:106FB0007A03D0938B03C0938A03D0938903C09341
:106FC0008803D0938703C09386031092BE0110926A
:106FD000BD0110923B020E941E3784E690E00E94A1
:106FE00047170E941E3780912C0680FF10C08091A9
:106FF000140190911501875B934038F4809114013E
:10700000909115018E5E924010F40E94C41A0FE117
:107010008AE090E00E9447178091470290914802D1
:10702000C80FD91F80914B0290914C02E80EF91EB7
:107030008091490290914A02C80ED91E015007FF63
:10704000E7CF9701205F3F4F3695279536952795D7
:1070500030938B0320938A03C601409696958795BB
:107060009695879590938903809388036096F5E0C1
:10707000D695C795FA95E1F7D0938703C093860319
:10708000909385038093840330938303209382033A
:10709000882009F441C0809117089091180897FF43
:1070A00003C0909581959F4F6CE070E00E946077DF
:1070B0009B01709381036093800380912A089091D3
:1070C0002B0897FF03C0909581959F4F6CE070E06F
:1070D0000E94607770937F0360937E038091110616
:1070E0009091120690937B0380937A03B90184E018
:1070F00090E00E949B2C60917E0370917F0386E05C
:1071000090E00E949B2C60917A0370917B0388E051
:1071100090E00E949B2C65C084E090E00E94962C39
:10712000909381038093800386E090E00E94962CE8
:1071300090937F0380937E0388E090E00E94962CDA
:107140009C0190937B0380937A03809180039091BC
:1071500081038150984050F480917E0390917F0389
:107160008150984018F421503440D8F187E19AE0DA
:107170009F938F938FEF92E19F938F93E0912F04D2
:10718000F09130040995809117089091180897FFA5
:1071900003C0909581959F4F6CE070E00E946077EE
:1071A000709381036093800380912A0890912B084B
:1071B00097FF03C0909581959F4F6CE070E00E940F
:1071C000607770937F0360937E03809111069091A6
:1071D000120690937B0380937A030F900F900F9089
:1071E0000F901092D1071092D0071092BF07109203
:1071F000BE071092200810921F0884E690E00E94BB
:10720000471780914302909144029C01220F331F43
:10721000220F331F280F391F280F391F30931808EA
:107220002093170880914502909146028C01000F2F
:10723000111F000F111F080F191F080F191F10939E
:107240002B0800932A0880913B06C82EDD24EE24EB
:10725000FF24442737FD4095542FC701B6010E94F3
:1072600021774B015C0160937503709376038093E3
:107270007703909378039801442737FD4095542F66
:10728000C701B6010E942177DC01CB0180936D0319
:1072900090936E03A0936F03B09370038092510399
:1072A00090925203A0925303B092540380934903E7
:1072B00090934A03A0934B03B0934C031092450361
:1072C00010924603109247031092480380911601D2
:1072D00090911701A0911801B09119019093140693
:1072E0008093130610923A021092390210923503DD
:1072F00010923603109237031092380380913303B3
:107300009091340390933203809331030E94A362DF
:1073100082E390E090932902809328028091600696
:107320009927AA27BB27BC01CD0124EC39E040E016
:1073300050E00E942177DC01CB018856954CAF4F7D
:10734000BF4F8093D5019093D601A093D701B093FE
:10735000D801809161069927AA27BB27BC01CD01DE
:107360000E942177DC01CB018856954CAF4FBF4F6F
:107370008093D1019093D201A093D301B093D40113
:1073800010929B0110929A018091330390913403E3
:10739000AA2797FDA095BA2F2091960130919701C9
:1073A0004091980150919901BC01CD010E94217733
:1073B000DC01CB018093260890932708A09328082E
:1073C000B093290810922C0310922B0381E0809334
:1073D00001010E941A678091ED0284608093ED02A2
:1073E0008FEF80939A0810929B0880E280939C080C
:1073F000C2E2D3E0A4E2B6E007E08D91E82FFF27D8
:10740000EE0FFF1FE65BF84F8081918182598993CF
:10741000015007FFF2CF84E680932103809126027A
:10742000882311F0469A579A80918A0390918B0392
:1074300080569940815C9B4228F08091480481608D
:1074400080934804809188039091890380569940E5
:10745000815C9B4228F080914804826080934804BC
:1074600080918603909187038C5291408957954073
:1074700028F08091480484608093480480918003C0
:10748000909181038C529140835C914028F08091CF
:10749000480488608093480480917E0390917F0324
:1074A0008C529140835C914028F080914804806127
:1074B0008093480480917A0390917B03805092409E
:1074C0008355914028F0809148048062809348045D
:1074D000ECE0CDB7DEB70C94D277A3E1B0E0E3E700
:1074E000FAE30C94B0778091860390918703209102
:1074F000470230914802821B930B9093200880939F
:107500001F08809151029091520297FD07969C01AD
:1075100013E0359527951A95E1F73093D10720931D
:10752000D00780914F029091500297FD0796B3E0EB
:1075300095958795BA95E1F79093BF078093BE071D
:107540003093DD072093DC079093D5078093D40711
:107550008091170890911808AC01440F551F480FEF
:10756000591F2091430230914402C901880F991F8D
:10757000880F991F820F931F820F931F480F591F67
:1075800057FF02C04D5F5F4F5595479555954795FD
:10759000509318084093170880912A0890912B085F
:1075A000AC01440F551F480F591F209145023091DF
:1075B0004602C901880F991F880F991F820F931FD8
:1075C000820F931F480F591F57FF02C04D5F5F4F37
:1075D000559547955595479550932B0840932A0804
:1075E0002091430230914402C901880F991F880FEE
:1075F000991F820F931F820F931F9C01442737FD11
:107600004095542F8091650390916603A091670384
:10761000B0916803820F931FA41FB51F8093650369
:1076200090936603A0936703B0936803209145028B
:1076300030914602C901880F991F880F991F820F48
:10764000931F820F931F9C01442737FD4095542FB1
:107650008091610390916203A0916303B0916403F0
:10766000820F931FA41FB51F809361039093620341
:10767000A0936303B09364038091E8079091E907B6
:107680002091430230914402820F931F9093E907A7
:107690008093E80780912208909123082091450269
:1076A00030914602820F931F909323088093220803
:1076B00080917C0390917D03019690937D0380934C
:1076C0007C03809111069091120620917A033091EB
:1076D0007B03821B930B9C01442737FD4095542F5D
:1076E00080915D0390915E03A0915F03B091600370
:1076F000820F931FA41FB51F80935D0390935E03B9
:10770000A0935F03B09360038FEC80937A00109294
:10771000100120914D0330914E0340914F03509141
:10772000500329873A874B875C8729543B46414061
:1077300050402CF028E43BE641E050E00DC0898544
:107740009A85AB85BC85885B9449AE4FBF4F4CF49E
:1077500028EB34E94EEF5FEF2D833E834F8358874C
:1077600008C089859A85AB85BC858D839E83AF8350
:10777000B88720915503309156034091570350919B
:1077800058032D873E874F87588B29543B464140ED
:1077900050402CF028E43BE641E050E00DC08D85E0
:1077A0009E85AF85B889885B9449AE4FBF4F4CF436
:1077B00028EB34E94EEF5FEF29833A834B835C83F8
:1077C00008C08D859E85AF85B88989839A83AB83F0
:1077D000BC83A0911F08B0912008BB8BAA8BFD0130
:1077E000CF01AA2797FDA095BA2FA0904503B0908E
:1077F0004603C0904703D0904803A80EB91ECA1E86
:10780000DB1EA0924503B0924603C0924703D0927C
:107810004803E0902608F09027080091280810916E
:107820002908E80EF91E0A1F1B1FE0922608F09295
:1078300027080093280810932908F0910803F98B72
:10784000FF2309F098C180910703882309F093C1B1
:1078500080912C0686FF8FC18091BE079091BF0753
:10786000AA2797FDA095BA2FBC01CD0129813A81A5
:107870004B815C810E9421779B01AC0197FF04C082
:107880002150384F4F4F5F4FBBE055954795379587
:107890002795BA95D1F78091BD01682E7724882469
:1078A0009924CA01B901A40193010E942177DC0146
:1078B000CB018093990390939A03A0939B03B09379
:1078C0009C03B7FF04C08150904FAF4FBF4F1C01C6
:1078D0002D01ACE05594479437942794AA95D1F79D
:1078E0002092990330929A0340929B0350929C03FA
:1078F0008091D0079091D107AA2797FDA095BA2F24
:10790000BC01CD012D813E814F8158850E94217798
:1079100097FF04C06150784F8F4F9F4FFBE09595C4
:10792000879577956795FA95D1F7A40193010E9401
:107930002177DC01CB0180939D0390939E03A0935C
:107940009F03B093A003B7FF04C08150904FAF4F87
:10795000BF4F9C01AD01ECE05595479537952795B4
:10796000EA95D1F720939D0330939E0340939F03A4
:107970005093A0038091990390919A039093B40738
:107980008093B30780919D0390919E039093B807D5
:107990008093B707221933094409550920939D03A1
:1079A00030939E0340939F035093A003E20EF31E77
:1079B000041F151FE0922608F0922708009328085C
:1079C000109329088091BC018823B1F457FF04C0AB
:1079D0002F5F3F4F4F4F5F4F5595479537952795F1
:1079E000A21AB30AC40AD50AA0924503B09246036C
:1079F000C0924703D09248032A893B897901002726
:107A0000F7FC0095102F80919D0390919E03A0910B
:107A10009F03B091A003E80EF91E0A1F1B1FC801A7
:107A2000B70129813A814B815C810E9421779B01BA
:107A3000AC0197FF04C02150384F4F4F5F4F6BE0B0
:107A400055954795379527956A95D1F78091BE0151
:107A5000A82EBB24CC24DD24CA01B901A6019501BE
:107A60000E942177DC01CB018093910390939203D4
:107A7000A0939303B0939403B7FF04C08150904F39
:107A8000AF4FBF4F3C014D013CE0959487947794F4
:107A900067943A95D1F76092910370929203809225
:107AA000930390929403C801B7012D813E814F81C9
:107AB00058850E94217797FF04C06150784F8F4FFF
:107AC0009F4F2BE095958795779567952A95D1F7E8
:107AD000A60195010E942177DC01CB0180939503DB
:107AE00090939603A0939703B0939803B7FF04C0B5
:107AF0008150904FAF4FBF4FAC01BD018CE07595E9
:107B00006795579547958A95D1F74093950350937C
:107B1000960360939703709398032A893B8937FFF4
:107B200003C0309521953F4F21343105E4F1D40154
:107B3000C30197FE07C0B095A095909581959F4F82
:107B4000AF4FBF4F81389105A105B10584F4DB012A
:107B5000CA0177FF07C0B095A095909581959F4F7A
:107B6000AF4FBF4F81389105A105B105E4F081E029
:107B700080932D0318C01092B8071092B707109287
:107B8000B4071092B30710929503109296031092C7
:107B900097031092980310929103109292031092FF
:107BA0009303109294038091950390919603A09172
:107BB0009703B0919803BC01CD0124E630E040E08A
:107BC00050E00E949577E0909103F0909203E21AC2
:107BD000F30AF092CE07E092CD0780919103909145
:107BE0009203A0919303B0919403BC01CD0124E6CC
:107BF00030E040E050E00E949577DA01C901209121
:107C00009503309196038C01021B130B1093C2074E
:107C10000093C1078091960190919701A0919801DE
:107C2000B0919901BC01CD0128E631E040E050E07F
:107C30000E9421772091260830912708409128083A
:107C400050912908261737074807590764F0261B63
:107C5000370B480B590B2093260830932708409385
:107C60002808509329082091260830912708409130
:107C700028085091290857FF0CC0260F371F481FAE
:107C8000591F2093260830932708409328085093C3
:107C900029086091BE077091BF076E0D7F1D9B0183
:107CA000442737FD4095542F8091490390914A0312
:107CB000A0914B03B0914C03820F931FA41FB51FDB
:107CC0008093490390934A03A0934B03B0934C03D2
:107CD00080910D0390910E03681B790BCB01AA27AD
:107CE00097FDA095BA2F29853A854B855C85820F33
:107CF000931FA41FB51F80934D0390934E03A09331
:107D00004F03B0935003C090D101D090D201E090C6
:107D1000D301F090D401C816D906EA06FB06C4F4D4
:107D200088EA91E6A0E0B0E08C199D09AE09BF0990
:107D300080934D0390934E03A0934F03B093500351
:107D40008093490390934A03A0934B03B0934C0351
:107D500022273327A9012C193D094E095F0980917B
:107D60004D0390914E03A0914F03B09150038217A1
:107D70009307A407B507B4F4D701C601885A914602
:107D8000A040B04080934D0390934E03A0934F03C7
:107D9000B09350038093490390934A03A0934B03FD
:107DA000B0934C036091D0077091D107600F711FA1
:107DB0009B01442737FD4095542F809151039091AA
:107DC0005203A0915303B0915403820F931FA41F39
:107DD000B51F8093510390935203A0935303B09324
:107DE000540380910B0390910C03681B790BCB011A
:107DF000AA2797FDA095BA2F2D853E854F855889D6
:107E0000820F931FA41FB51F8093550390935603B1
:107E1000A0935703B0935803E090D501F090D6019A
:107E20000091D7011091D801E816F9060A071B073F
:107E3000C4F488EA91E6A0E0B0E08E199F09A00B97
:107E4000B10B8093550390935603A0935703B093BF
:107E500058038093510390935203A0935303B0931C
:107E6000540322273327A9012E193F09400B510B38
:107E70008091550390915603A0915703B0915803F8
:107E800082179307A407B507B4F4D801C701885A2D
:107E90009146A040B0408093550390935603A09321
:107EA0005703B09358038093510390935203A093C8
:107EB0005303B09354038091450390914603A091DE
:107EC0004703B09148038093590390935A03A093BA
:107ED0005B03B0935C038091550390915603A0918E
:107EE0005703B09158038093750390937603A09342
:107EF0007703B093780380914D0390914E03A09146
:107F00004F03B091500380936D0390936E03A09341
:107F10006F03B09370038091510390915203A0912D
:107F20005303B09154038093710390937203A09311
:107F30007303B09374038091490390914A03A09115
:107F40004B03B0914C038093690390936A03A09311
:107F50006B03B0936C0380911C0190911D0197FD00
:107F6000079603E0959587950A95E1F79093D107D9
:107F70008093D00780911A0190911B0197FD07967D
:107F800013E0959587951A95E1F79093BF07809335
:107F9000BE0780914B0290914C020F9734F488E118
:107FA0009CEF9093D1078093D00780914B029091E2
:107FB0004C02079734F480E398EF9093D1078093B5
:107FC000D007209102012A30A9F480914B029091B0
:107FD0004C02835F934034F088EE93E09093D10796
:107FE0008093D00780914B0290914C028A5F93401E
:107FF000DCF014C080914B0290914C02815D97405F
:1080000034F088EE93E09093D1078093D00780916D
:108010004B0290914C02805E974034F080ED97E0E7
:108020009093D1078093D0078091490290914A02A2
:108030000F9734F488E19CEF9093BF078093BE07BD
:108040008091490290914A02079734F480E398EFB7
:108050009093BF078093BE072A30A9F4809149020C
:1080600090914A02835F934034F088EE93E09093BE
:10807000BF078093BE078091490290914A028A5FB0
:108080009340DCF014C08091490290914A02815DD6
:10809000974034F088EE93E09093BF078093BE073B
:1080A0008091490290914A02805E974034F080EDC1
:1080B00097E09093BF078093BE076091C801662345
:1080C00009F4AFC040911C0150911D018091A103A2
:1080D0009091A203481B590B5093A8034093A70308
:1080E00020911C0130911D01280F391F37FF02C05C
:1080F0002F5F3F4F359527953093A2032093A1031F
:10810000413851051CF080E890E005C040585F4FB1
:1081100034F480E89FEF9093A8038093A7034091E5
:108120001A0150911B018091A3039091A403481B55
:10813000590B5093A6034093A50320911A01309147
:108140001B01280F391F37FF02C02F5F3F4F3595A6
:1081500027953093A4032093A303413851051CF0C5
:1081600080E890E005C040585F4F34F480E89FEF0E
:108170009093A6038093A503462F55278091A703CC
:108180009091A803849FB001859F700D949F700DFE
:1081900011249B0177FF02C0215F3F4FF4E035952A
:1081A0002795FA95E1F78091D0079091D107820F3A
:1081B000931F9093D1078093D0078091A50390914E
:1081C000A603849FD001859FB00D949FB00D11240C
:1081D000AD019D01B7FF02C0215F3F4FE4E035953F
:1081E0002795EA95E1F78091BE079091BF07820F2E
:1081F000931F9093BF078093BE0780911C019091BD
:108200001D01860F971F90931D0180931C01809183
:108210001A0190911B01840F951F90931B0180936D
:108220001A010091D4071091D5078091B30790915E
:10823000B407101611065CF59C0197FF04C02227B5
:108240003327281B390BC901AA2797FDA095BA2F00
:108250002091BC01332744275527BC01CD010E9442
:1082600021779B01AC0197FF04C0215C3F4F4F4F2A
:108270005F4F76E055954795379527957A95D1F7D5
:108280008091CD079091CE07820F931F27C097FF53
:1082900003C0909581959F4FAA2797FDA095BA2F6F
:1082A0002091BC01332744275527BC01CD010E94F2
:1082B00021779B01AC0197FF04C0215C3F4F4F4FDA
:1082C0005F4F66E055954795379527956A95D1F7A5
:1082D0008091CD079091CE07821B930B9093CE0790
:1082E0008093CD07E090DC07F090DD078091B70721
:1082F0009091B8071E141F045CF59C0197FF04C001
:1083000022273327281B390BC901AA2797FDA095DF
:10831000BA2F2091BC01332744275527BC01CD013A
:108320000E9421779B01AC0197FF04C0215C3F4F65
:108330004F4F5F4F96E055954795379527959A95FE
:10834000D1F78091C1079091C207820F931F27C078
:1083500097FF03C0909581959F4FAA2797FDA09501
:10836000BA2F2091BC01332744275527BC01CD01EA
:108370000E9421779B01AC0197FF04C0215C3F4F15
:108380004F4F5F4F86E055954795379527958A95CE
:10839000D1F78091C1079091C207821B930B9093F4
:1083A000C2078093C10780912C0687FF44C0B9891A
:1083B000BB2309F040C0809107038823E1F5E1E089
:1083C000EE16E1E0FE064CF08091D0079091D107C7
:1083D0008E0D9F1D805091400DC0F0E0EF16FFEF15
:1083E000FF0664F48091D0079091D1078E0D9F1DF8
:1083F00080509F4F9093D1078093D00721E00130A8
:1084000012074CF08091BE079091BF07800F911F1B
:10841000805091400CC03FEF0030130764F480910E
:10842000BE079091BF07800F911F80509F4F909380
:10843000BF078093BE07E2E1CD5E0C94CC778091BC
:108440001803882301F58091ED028C7F8093ED0263
:10845000ADE4B4E0E9EEF6E09BE08091070288230A
:1084600009F48C938D91818312829150389697FFF5
:10847000F4CF80910702882359F080910702815040
:108480008093070205C08091ED0281608093ED0228
:1084900080917202882319F01092720208958093DD
:1084A000740280937602809170028E7F80937002B6
:1084B00085EA8093BC000895CF93DF93A2E2B3E0F6
:1084C000C4E2D6E057E08991E82FFF27EE0FFF1FA7
:1084D000E65BF84F0190F081E02DE259FF4FEF3F4E
:1084E000F10521F01CF0EFEFF0E004C0F7FF02C04F
:1084F000E0E0F0E04C91242F3327E217F307A9F0D6
:10850000CF01821B930B97FD0396959587959595C3
:108510008795242F280F2C93822F9927E817F90786
:1085200014F4215001C02F5F2C935150119657FF26
:10853000CACF80912E06883F38F0EFEFF0E0E81BBD
:10854000F109EE5DFC4F80818093CE018091CE01D8
:10855000882329F0843618F084E68093CE01809138
:108560003006883F38F0EFEFF0E0E81BF109EE5DF0
:10857000FC4F80818093CC018091CC01882329F02D
:10858000843618F084E68093CC0180913D06883FC4
:1085900038F0EFEFF0E0E81BF109EE5DFC4F808171
:1085A0008093C7018091C7018B3010F48AE002C02C
:1085B0008F3F11F48093C70180916A06883F38F09D
:1085C000EFEFF0E0E81BF109EE5DFC4F8081809356
:1085D000EA078091EA07823010F481E002C08F3F01
:1085E00011F48093EA0780916C06883F38F0EFEF32
:1085F000F0E0E81BF109EE5DFC4F808180931A08E2
:1086000080911A08823010F481E002C08F3F11F48B
:1086100080931A0880915706883F38F0EFEFF0E01A
:10862000E81BF109EE5DFC4F80818093E5078091A6
:108630005806883F38F0EFEFF0E0E81BF109EE5DF7
:10864000FC4F80818093BB0780915906883F38F0AA
:10865000EFEFF0E0E81BF109EE5DFC4F80818093C5
:10866000F00790912F06983F18F49093CD0109C020
:10867000EFEFF0E0E91BF109EE5DFC4F80818093A4
:10868000CD01983F18F49093CD0109C0EFEFF0E0D1
:10869000E91BF109EE5DFC4F80818093CD01809153
:1086A0003206883F38F0EFEFF0E0E81BF109EE5DAD
:1086B000FC4F80818093CB0180913406883F38F055
:1086C000EFEFF0E0E81BF109EE5DFC4F8081809355
:1086D000C90180913C06883F38F0EFEFF0E0E81BDD
:1086E000F109EE5DFC4F80818093CA0180913E06C6
:1086F000883F38F0EFEFF0E0E81BF109EE5DFC4F4A
:1087000080818093C60180913F06883F38F0EFEF6B
:10871000F0E0E81BF109EE5DFC4F80818093C80119
:1087200080914006883F38F0EFEFF0E0E81BF10958
:10873000EE5DFC4F80818093C50180914106883FAA
:1087400038F0EFEFF0E0E81BF109EE5DFC4F8081BF
:108750008093C40180914706883F38F0EFEFF0E046
:10876000E81BF109EE5DFC4F80818093C20180918E
:108770004806883F38F0EFEFF0E0E81BF109EE5DC6
:10878000FC4F80818093020380914906883F38F036
:10879000EFEFF0E0E81BF109EE5DFC4F8081809384
:1087A000010380914A06883F38F0EFEFF0E0E81BC4
:1087B000F109EE5DFC4F80818093000380914B06B0
:1087C000883F38F0EFEFF0E0E81BF109EE5DFC4F79
:1087D00080818093FF0280916506883F38F0EFEF3B
:1087E000F0E0E81BF109EE5DFC4F80818093FE0212
:1087F00080916606883F38F0EFEFF0E0E81BF10962
:10880000EE5DFC4F80818093FD0280916706883F7A
:1088100038F0EFEFF0E0E81BF109EE5DFC4F8081EE
:108820008093FC0280916806883F38F0EFEFF0E01B
:10883000E81BF109EE5DFC4F80818093FB02809183
:108840004C06883F38F0EFEFF0E0E81BF109EE5DF1
:10885000FC4F80818093C10180915006883F38F0A1
:10886000EFEFF0E0E81BF109EE5DFC4F80818093B3
:10887000C00180915A06883F38F0EFEFF0E0E81B26
:10888000F109EE5DFC4F80818093BF0180915D0610
:10889000883F38F0EFEFF0E0E81BF109EE5DFC4FA8
:1088A00080818093BE0180915E06883F38F0EFEFB3
:1088B000F0E0E81BF109EE5DFC4F80818093BD0183
:1088C00080915F06883F38F0EFEFF0E0E81BF10998
:1088D000EE5DFC4F80818093BC0180916406883FEF
:1088E00038F0EFEFF0E0E81BF109EE5DFC4F80811E
:1088F0008093BB0180917F06883F38F0EFEFF0E076
:10890000E81BF109EE5DFC4F808180932D0880917A
:10891000C201282F33272F5F3F4F8CE398E2B90124
:108920000E9460777093D0016093CF0180913A06E6
:1089300080931B08809139068093D6079091810619
:10894000933320F181E08093FA02983F58F0EFEFE3
:10895000F0E0E91BF109EE5DFC4F8081823310F4F9
:108960001092FA0280916D0890916E0897FF08C0EE
:108970008091FA02882321F080914804806803C026
:10898000809148048F778093480402C01092FA02C5
:1089900080916D0890916E0897FF1DC0809118031B
:1089A0008823C9F08091FA028823A9F080910801F8
:1089B000909109018F5F9F4F71F488E99AE390933A
:1089C00029028093280280E094EA90930901809321
:1089D00008011092FA028091FA02882339F08091FE
:1089E000BE01823D18F4825E8093BE01DF91CF917B
:1089F0000895A8E1B0E0EFEFF4E40C94B0770E94A2
:108A00006D3A309102013C3010F4299A01C0299846
:108A1000E0901903F0901A03FA82E9828091D60758
:108A200099270A96E816F90614F49A8389838091A7
:108A30002103843608F05CC08091BD039091BE0391
:108A4000009731F001979093BE038093BD0307C058
:108A5000109218038091ED028F7E8093ED023A30E0
:108A600011F0343110F0289A01C028988091EE025C
:108A70009091EF02895E9340C0F180914406282FC7
:108A800033273A8329838091ED0280618093ED0240
:108A900080912006A82FBB27AA0FBB1FFD01E2581B
:108AA000F84F1182108280912106282F3327220F40
:108AB000331FC9018258984FFC0111821082A65BB6
:108AC000B84F11961C921E92265B384FD901119611
:108AD0001C921E9280912306E82FFF27EE0FFF1FA6
:108AE000E65BF84F11821082C9C210921803C6C209
:108AF000809121038D3808F4C1C28091ED028F7EF0
:108B00008093ED029091450682E3989FC001112465
:108B10009093BE038093BD03E981FA81B9978CF0ED
:108B200080911803882369F08091EE029091EF0202
:108B3000FFEF8F3F9F0729F001969093EF028093FC
:108B4000EE028091EE029091EF028F3F910509F0C5
:108B500038F510923D0310923E0310923F0310929D
:108B600040031092390310923A0310923B03109283
:108B70003C031092A9031092AA031092AB03109227
:108B8000AC031092450310924603109247031092D3
:108B900048038A3F910549F481E08093C30305C0EF
:108BA0008091ED0282608093ED0280912206E82F91
:108BB000FF27EE0FFF1FE65BF84F80819181813523
:108BC00091050CF441C120911803222309F03CC106
:108BD00080912306E82FFF27EE0FFF1FE65BF84F7B
:108BE000808191818C3491050CF406C18091BF0382
:108BF0008F5F8093BF03893C08F426C13C3010F49A
:108C0000299801C0299A109218031092BF0310925C
:108C1000EF021092EE0230912006E32FFF27EE0FB5
:108C2000FF1FE65BF84F8081918187349105B4F492
:108C300080912106E82FFF27EE0FFF1FE65BF84F1C
:108C4000808191810190F081E02DF7FF03C0F095C4
:108C5000E195FF4FE734F1050CF478C041E0209135
:108C60002106A22FBB27AA0FBB1FA65BB84F8D9171
:108C70009C9111978734910544F0E32FFF27EE0F65
:108C8000FF1FE65BF84F808191818D919C91873425
:108C9000910574F080912006E82FFF27EE0FFF1F4B
:108CA000E65BF84F80819181873491050CF042E0BA
:108CB000E22FFF27EE0FFF1FE65BF84F80819181C7
:108CC0008634910574F480912006E82FFF27EE0F7B
:108CD000FF1FE65BF84F80819181873491050CF08E
:108CE00043E0E22FFF27EE0FFF1FE65BF84F808186
:108CF00091818A5B9F4F74F480912006E82FFF27B3
:108D0000EE0FFF1FE65BF84F80819181873491055C
:108D10000CF044E0E22FFF27EE0FFF1FE65BF84F59
:108D2000808191818A5B9F4F74F480912006E82FA7
:108D3000FF27EE0FFF1FE65BF84F8081918186349D
:108D400091050CF445E0842F0E94D72C80912106D8
:108D5000E82FFF27EE0FFF1FE65BF84F8081918120
:108D60000190F081E02DF7FF03C0F095E195FF4FF2
:108D70007E97BCF480912006E82FFF27EE0FFF1F9F
:108D8000E65BF84F808191818A5B9F4F54F481E0CC
:108D90008093630488EE93E09093290280932802E5
:108DA00053C00E94AD2D0E94A02C80E00E94360787
:108DB000809146060E94957480912C0680FF10C019
:108DC0008091140190911501875B934038F4809154
:108DD0001401909115018E5E924010F40E94C41A05
:108DE0001092260280E00E94BF3781E08093C20388
:108DF00080932602579A1FC080819181855B9F4F87
:108E00000CF58091BF038F5F8093BF03893CE0F036
:108E10003C3010F4299801C0299A1092180310923E
:108E2000BF031092EF021092EE0281E00E94BF3762
:108E300081E08093C2030E94AD2D68E770E00E943C
:108E4000FD3602C02093BF0380912206E82FFF2742
:108E5000EE0FFF1FE65BF84F808191818B5A9F4F89
:108E60000CF00CC130911803E0912306332309F074
:108E7000DAC0FF27EE0FFF1FE65BF84F808191817C
:108E8000855B9F4F0CF0CCC020918206E22FFF271C
:108E9000EE0FFF1FE65BF84F80819181855B9F4F4E
:108EA0001CF0222309F0BCC08091C0038F5F809327
:108EB000C003893C08F4E2C03093C00380914804A9
:108EC000882309F0A6C08091C203882309F4A1C0B9
:108ED00081E090E09093EF028093EE0281E0809336
:108EE00018031092A9031092AA031092AB031092D8
:108EF000AC03109245031092460310924703109260
:108F000048031092410310924203109243031092BF
:108F1000440380913B06E82EFF240027112780910F
:108F20001708909118089C01442737FD4095542F4D
:108F3000C801B7010E942177DC01CB018093550362
:108F400090935603A0935703B093580380912A0837
:108F500090912B089C01442737FD4095542FC80160
:108F6000B7010E942177DC01CB0180934D039093E0
:108F70004E03A0934F03B0935003809175039091DB
:108F80007603A0917703B091780380935103909377
:108F90005203A0935303B093540380916D039091B7
:108FA0006E03A0916F03B091700380934903909377
:108FB0004A03A0934B03B0934C0310923D031092CD
:108FC0003E0310923F031092400310923903109217
:108FD0003A0310923B0310923C038091ED028860AB
:108FE0008093ED02909180068FE0989F900111246C
:108FF0008091330390913403820F931F68E671E0F0
:109000000E94607797FD01969595879580937903E7
:1090100035C08CED95E090932902809328022EC0F4
:109020001092C0032BC0FF27EE0FFF1FE65BF84F27
:10903000808191818C349105FCF020918206E22F91
:10904000FF27EE0FFF1FE65BF84F80819181855B64
:109050009F4F14F0222381F48091C1038F5F80938E
:10906000C103893C58F0109218031092C10310926A
:10907000EF021092EE0202C01092C103809194019F
:10908000815080939401809194018F3F21F08091D1
:10909000ED0284FF72C30E945C428091CC039091E8
:1090A000CD039C01220F331F280F391FC0902006CB
:1090B000AC2DBB27AA0FBB1FFD01E65BF84FB0909C
:1090C00036064B2D552780819181849FF001859F25
:1090D000F00D949FF00D11242E0F3F1F37FF02C09B
:1090E0002D5F3F4FB9017595679575956795A258A6
:1090F000B84F80913706082F11278D919C91809F42
:109100007001819FF00C909FF00C11246E0D7F1D5B
:109110007093CD036093CC038091CE039091CF03E5
:109120009C01220F331F280F391FD0902106AD2D2F
:10913000BB27AA0FBB1FFD01E65BF84F8081918121
:10914000849FF001859FF00D949FF00D11242E0F48
:109150003F1F37FF02C02D5F3F4FA901559547952F
:1091600055954795A258B84F8D919C91809F70015D
:10917000819FF00C909FF00C11244E0D5F1D5093B9
:10918000CF034093CE038091FA02882309F448C0AC
:10919000CB0177FD0396DC01B595A795B595A7950D
:1091A000CA0157FD0396FC01F595E795F595E795FE
:1091B0008091EE01682F772767FD70956A9F900177
:1091C0006B9F300D7A9F300D112480910404482F3D
:1091D000552747FD50954E9FC0014F9F900D5E9FB4
:1091E000900D1124280F391F37FF02C0295F3F4F10
:1091F00003E0359527950A95E1F7309320032093F6
:109200001F036E9F90016F9F300D7E9F300D1124C4
:109210004A9FC0014B9F900D5A9F900D11243FC053
:1092200080918006E82FFF27E456FE4F86818093C9
:10923000EE01908190930404A82FBB27A7FDB09561
:10924000A69F9001A79F300DB69F300D1124E92FE6
:10925000FF27E7FDF095E49FC001E59F900DF49F87
:10926000900D1124280F391F37FF02C0295F3F4F8F
:1092700013E0359527951A95E1F730932003209355
:109280001F03A49F9001A59F300DB49F300D1124A2
:10929000E69FC001E79F900DF69F900D1124281BBB
:1092A000390B37FF02C0295F3F4FF3E03595279513
:1092B000FA95E1F730931E0320931D038091230656
:1092C000E82FFF27EE0FFF1FE65BF84F80819181AB
:1092D000909581959F4F90931C0380931B0383303F
:1092E000910514F0029705C00FEF8E3F900734F4FC
:1092F000029690931C0380931B0304C010921C03DE
:1093000010921B0380910004909101042091FC03B2
:109310003091FD03820F931F00911F0310912003D2
:10932000081B190B1093200300931F038091FE0369
:109330009091FF032091FA033091FB03820F931F5A
:1093400080901D0390901E03881A990A90921E0324
:1093500080921D0380912206E82FFF27EE0FFF1F4A
:10936000E65BF84FE080F18028E730E0E20EF31E84
:10937000F0921A03E09219038091C7019927AA2756
:1093800097FDA095BA2FBC01CD010E94C976DC01E2
:10939000CB0120E030E040E251E4BC01CD010E946D
:1093A0006A76DC01CB01BC01CD010E94AC76DC0108
:1093B000CB01809324088091C6018093F3078091AC
:1093C000C5019927AA2797FDA095BA2FBC01CD0109
:1093D0000E94C976DC01CB0120E030E040E251E49C
:1093E000BC01CD010E946A76DC01CB01BC01CD013C
:1093F0000E94AC76DC01CB018093C7078091C40149
:109400008093DE0780916F0480FF59C080912D0802
:10941000813808F454C080916804992787FD90959D
:109420002B2D3327829FA001839F500D929F500DBB
:109430001124040F151F1093200300931F03809124
:109440006904992787FD9095829FB001839F700DD5
:10945000929F700D1124860E971E90921E0380928B
:109460001D0380916A04282F332727FD30958091B2
:109470001B0390911C03820F931F90931C038093F6
:109480001B0380916C04282F332727FD3095809192
:1094900031069927289FD001299FB00D389FB00D24
:1094A0001124B0939B01A0939A0180916B0499279A
:1094B0008E159F0524F490931A03809319038091CD
:1094C000190390911A0397FF04C010921A03109287
:1094D000190380912C0682FF02C01092F30740917D
:1094E0001F0350912003CA0157FD03969C01359537
:1094F00027953595279537FF03C0309521953F4F28
:109500008091F2029091F30282179307B4F4CA019A
:1095100057FF03C0909581959F4F97FD03969595B2
:109520008795959587959093F3028093F2028536FF
:10953000910544F084E690E001C001979093F30216
:109540008093F20240911D0350911E03CA0157FD02
:1095500003969C01359527953595279537FF03C0D0
:10956000309521953F4F8091F0029091F102821742
:109570009307B4F4CA0157FF03C0909581959F4F9C
:1095800097FD039695958795959587959093F1020C
:109590008093F0028536910544F084E690E001C0A6
:1095A00001979093F1028093F0028091ED0284FF85
:1095B00008C01092F3021092F2021092F10210927F
:1095C000F002ED2DFF27EE0FFF1FE65BF84F4091F5
:1095D0005B06242F3327808191812817390744F4B3
:1095E0008091830682FF04C081E08093060313C04C
:1095F000ED2DFF27EE0FFF1FE65BF84F842F992715
:1096000020915C06821B910920813181281739073E
:1096100014F41092060340912106E42FFF27EE0F69
:10962000FF1FE65BF84F50915B06852F9927222795
:109630003327281B390B808191818217930744F4CB
:109640008091830683FF04C081E08093050316C0E8
:1096500080910503882391F0E42FFF27EE0FFF1F71
:10966000E65BF84F80915C069927851B9109208164
:1096700031818217930714F410920503EC2DFF2714
:10968000EE0FFF1FE65BF84F40915B06242F332758
:10969000808191812817390744F48091830680FFE7
:1096A00004C081E08093030317C0809103038823E3
:1096B00099F0EC2DFF27EE0FFF1FE65BF84F842F8C
:1096C000992720915C06821B9109208131812817FE
:1096D000390714F41092030340912006E42FFF276A
:1096E000EE0FFF1FE65BF84F50915B06852F992721
:1096F00022273327281B390B8081918182179307FA
:1097000044F48091830681FF04C081E080930403C8
:1097100016C080910403882391F0E42FFF27EE0FF9
:10972000FF1FE65BF84F80915C069927851B910926
:10973000208131818217930714F4109204038091E1
:109740000603882319F480910503811181E0809339
:10975000070380910303882321F480910403882365
:1097600051F081E0809308031092070310920603E2
:109770001092050302C08093080380910703882399
:1097800021F480910803882369F080915A06992773
:10979000E981FA818E179F0714F49A83898381E007
:1097A00080932D038091ED0284FF1AC010921C0358
:1097B00010921B031092200310921F0310921E039D
:1097C00010921D039AE59093240888E78093F3078D
:1097D0009093C7078093DE07109207031092080347
:1097E0008091E1079091E207A091E307B091E4072F
:1097F000209175033091760340917703509178035F
:10980000820F931FA41FB51F8093E1079093E20777
:10981000A093E307B093E4078091EB079091EC07E6
:10982000A091ED07B091EE0720906D0330906E038C
:1098300040906F0350907003820D931DA41DB51DC1
:109840008093EB079093EC07A093ED07B093EE079E
:109850008091D8079091D907A091DA07B091DB07E2
:10986000E0907103F0907203009173031091740300
:10987000EB82FC820D831E838E0D9F1DA01FB11FE6
:109880008093D8079093D907A093DA07B093DB07AA
:109890008091C8079091C907A091CA07B091CB07E2
:1098A000E0906903F0906A0300916B0310916C03E0
:1098B000EF82F88609871A878E0D9F1DA01FB11FA2
:1098C0008093C8079093C907A093CA07B093CB07AA
:1098D000F0900803FB86FF2029F48091070388237A
:1098E00009F460C01092650310926603109267033A
:1098F0001092680310926103109262031092630346
:10990000109264031092E1071092E2071092E307AD
:109910001092E4071092EB071092EC071092ED07FB
:109920001092EE071092D8071092D9071092DA071A
:109930001092DB071092C8071092C9071092CA074D
:109940001092CB078091550390915603A091570335
:10995000B09158038093510390935203A093530303
:10996000B093540380914D0390914E03A0914F0307
:10997000B09150038093490390934A03A0934B0303
:10998000B0934C03109238021092370210920C03DD
:1099900010920B0310920E0310920D030B850023FF
:1099A00009F0F2C180910703882309F0EDC180918D
:1099B000110690911206815092402CF48091180368
:1099C000882309F4E1C190909A08A0903B06609129
:1099D000170870911808788F6F8B80912A089091E2
:1099E0002B089A8B898B9FEF991609F4D9C0BB2459
:1099F000CC24DD24CA01B901A60195010E94957706
:109A000079018A01EF89F88DCF01AA2797FDA095EA
:109A1000BA2FE81AF90A0A0B1B0BC201B101A60101
:109A200095010E94957759016A0129893A89C901EE
:109A3000AA2797FDA095BA2FA81AB90ACA0ADB0A65
:109A4000292C332427FC3094432C532CC801B70114
:109A5000A20191010E94217797FF04C061507E4FBF
:109A60008F4F9F4F3B014C0109E095948794779469
:109A700067940A95D1F7C601B501A20191010E9430
:109A8000217797FF04C061507E4F8F4F9F4F5B013E
:109A90006C0119E0D594C794B794A7941A95D1F79F
:109AA0008091F2029091F302813491053CF480910F
:109AB000F0029091F10281349105D4F0D401C301F8
:109AC00097FE03C00196A11DB11D3C014D01959467
:109AD000879477946794D601C501D7FE03C0019699
:109AE000A11DB11D5C016D01D594C794B794A794D5
:109AF00080912306E82FFF27EE0FFF1FE65BF84F4C
:109B0000808191810190F081E02DF7FF03C0F095F5
:109B1000E195FF4F7A97A4F0C401B30123E030E050
:109B200040E050E00E94957739014A01C601B50135
:109B300023E030E040E050E00E94957759016A014F
:109B400080919C08282F332727FD3095432F532FD2
:109B5000261537054805590514F439014A01992796
:109B600087FD9095909581959F4FAA2797FDA09589
:109B7000BA2F681679068A069B0614F43C014D013B
:109B80002A153B054C055D0514F459016A01A81618
:109B9000B906CA06DB060CF0CFC05C016D01CCC073
:109BA000EA2CFF2400271127CA01B901A801970157
:109BB0000E94957739014A014F89588DCA01AA2719
:109BC00097FDA095BA2F681A790A8A0A9B0AC201E2
:109BD000B101A80197010E94957759016A0169892D
:109BE0007A89CB01AA2797FDA095BA2FA81AB90A9E
:109BF000CA0ADB0AD401C30197FE03C00F96A11D58
:109C0000B11D3C014D01F4E09594879477946794DD
:109C1000FA95D1F7D601C501D7FE03C00F96A11D55
:109C2000B11D5C016D01E4E0D594C794B794A7948D
:109C3000EA95D1F78091F2029091F3028134910577
:109C40003CF48091F0029091F10281349105A4F0EE
:109C5000C401B30123E030E040E050E00E9495777A
:109C600039014A01C601B50123E030E040E050E08F
:109C70000E94957759016A0180912306E82FFF27FA
:109C8000EE0FFF1FE65BF84F808191810190F0811C
:109C9000E02DF7FF03C0F095E195FF4F7A97A4F010
:109CA000C401B30123E030E040E050E00E9495772A
:109CB00039014A01C601B50123E030E040E050E03F
:109CC0000E94957759016A0171E267167104810457
:109CD00091042CF070E2672E712C812C912C80EE77
:109CE00068168FEF78068FEF88068FEF980644F49A
:109CF00060EE662E6FEF762E6FEF862E6FEF962E4C
:109D000091E2A916B104C104D1042CF050E2A52EB1
:109D1000B12CC12CD12CA0EEAA16AFEFBA06AFEF32
:109D2000CA06AFEFDA0644F440EEA42E4FEFB42E8D
:109D30004FEFC42E4FEFD42E8091550390915603D0
:109D4000A0915703B091580386199709A809B9093A
:109D50008093550390935603A0935703B0935803F1
:109D600080914D0390914E03A0914F03B091500309
:109D70008A199B09AC09BD0980934D0390934E034A
:109D8000A0934F03B0935003809137029091380213
:109D90008F3F910509F008F4C4C5BB85BB2309F0CA
:109DA0004EC580910703882309F049C580912D0392
:109DB000882309F044C5E0916306EC87EE2309F49B
:109DC0003EC58091E1079091E207A091E307B09131
:109DD000E407B7FF04C081509F4FAF4FBF4FE92E3C
:109DE000FA2E0B2F112707FD1A95E092E107F0924A
:109DF000E2070093E3071093E4078091EB0790914B
:109E0000EC07A091ED07B091EE07B7FF04C08150B9
:109E10009F4FAF4FBF4F892F9A2FAB2FBB27A7FD67
:109E2000BA958D879E87AF87B88B8093EB07909309
:109E3000EC07A093ED07B093EE0780913B06A82EA8
:109E4000BB24CC24DD24209165033091660340912E
:109E5000670350916803C601B5010E94217797FFFF
:109E600004C061507F4F8F4F9F4F672E782E892EF1
:109E7000992487FC9A94609265037092660380929D
:109E800067039092680320916103309162034091CF
:109E9000630350916403C601B5010E94217797FFC7
:109EA00004C061507F4F8F4F9F4F272E382E492E71
:109EB000552447FC5A9420926103309262034092E9
:109EC00063035092640380915D0390915E03A091BF
:109ED0005F03B0916003B7FF04C081509F4FAF4F45
:109EE000BF4F892F9A2FAB2FBB27A7FDBA95809321
:109EF0005D0390935E03A0935F03B0936003D8016A
:109F0000C70186199709A809B9098093B5039093E9
:109F1000B603A093B703B093B80320916206E22E74
:109F2000FF2400271127BC01CD01A80197010E9441
:109F3000957759016A012093C4033093C503409378
:109F4000C6035093C7038D859E85AF85B889821956
:109F50009309A409B5098093B9039093BA03A09318
:109F6000BB03B093BC03BC01CD01A80197010E94C3
:109F700095772093C8033093C9034093CA03509345
:109F8000CB03D601C501D7FE04C081509F4FAF4F10
:109F9000BF4F892F9A2FAB2FBB27A7FDBA95909360
:109FA0000C0380930B0357FF04C021503F4F4F4FCA
:109FB0005F4FBB2757FDBA95A52F942F832F909302
:109FC0000E0380930D038091F2029091F30281348D
:109FD0009105DCF48091F0029091F10281349105B9
:109FE000A4F480912306E82FFF27EE0FFF1FE65B06
:109FF000F84F808191810190F081E02DF7FF03C03F
:10A00000F095E195FF4F7A97E4F080919A088F3FA1
:10A01000C1F480910B0390910C0397FD01969595E7
:10A02000879590930C0380930B0380910D0390917F
:10A030000E0397FD01969595879590930E03809357
:10A040000D038091D8079091D907A091DA07B091BC
:10A05000DB07B7FF04C081509F4FAF4FBF4F892F21
:10A060009A2FAB2FBB27A7FDBA958093D807909363
:10A07000D907A093DA07B093DB078091C8079091C6
:10A08000C907A091CA07B091CB07B7FF04C08150A0
:10A090009F4FAF4FBF4F892F9A2FAB2FBB27A7FDE5
:10A0A000BA958093C8079093C907A093CA07B09345
:10A0B000CB078091750390917603A0917703B091BF
:10A0C00078032B813C814D815E81281B390B4A0B23
:10A0D0005B0B2093AD033093AE034093AF035093DB
:10A0E000B00380916D0390916E03A0916F03B091C6
:10A0F0007003EF80F88409851A85E81AF90A0A0BBB
:10A100001B0BE092B103F092B2030093B3031093E0
:10A11000B4032093B5033093B6034093B703509331
:10A12000B803E092B903F092BA030093BB03109313
:10A13000BC038091510390915203A0915303B091BD
:10A140005403821B930BA40BB50B80935103909384
:10A150005203A0935303B093540380914903909109
:10A160004A03A0914B03B0914C038E199F09A00B99
:10A17000B10B8093490390934A03A0934B03B09390
:10A180004C03FC85FF23E1F020912B0330912C033D
:10A19000213831054CF08091860390918703019618
:10A1A000909387038093860320583F4F4CF480910F
:10A1B000860390918703019790938703809386038A
:10A1C00010922C0310922B0381E090E09093D10326
:10A1D0008093D003E090B503F090B6030091B703ED
:10A1E0001091B803D801C70117FF07C08827992726
:10A1F000DC018E199F09A00BB10B81509240A04049
:10A20000B04034F084E090E09093D1038093D00389
:10A210008091D6039091D703A091D803B091D90330
:10A220002091E1073091E2074091E3075091E40764
:10A23000821B930BA40BB50B815E914BAF4FBF4FAD
:10A240008F539C49A040B04028F080919B088931F1
:10A250000CF4FFC041E0E41640E1F40640E00407DE
:10A2600040E014070CF473C08091D203882309F4F2
:10A270006AC0D801C70117FF07C088279927DC01EA
:10A280008E199F09A00BB10B9C01AD01B7FF04C053
:10A2900021503E4F4F4F5F4FF9E055954795379509
:10A2A0002795FA95D1F78091D0039091D103820F31
:10A2B000931F9093D1038093D003D801C70117FF58
:10A2C00003C00796A11DB11DE3E0B595A79597952D
:10A2D0008795EA95D1F78093C4039093C503A09323
:10A2E000C603B093C70389589341A040B04064F0BF
:10A2F00088E893E1A0E0B0E08093C4039093C503A5
:10A30000A093C603B093C7032091C4033091C50343
:10A310004091C6035091C70357FF04C021503F4FDF
:10A320004F4F5F4F232F342F452F552747FD5A9509
:10A3300080910B0390910C03820F931F90930C0359
:10A3400080930B0306C081E08093D20302C0109279
:10A35000D20360E0E61660EFF6066FEF06076FEFD8
:10A3600016070CF073C08091D303882309F46AC0E8
:10A37000D801C70117FF07C088279927DC018E196C
:10A380009F09A00BB10B9C01AD01B7FF04C0215088
:10A390003E4F4F4F5F4F69E055954795379527954D
:10A3A0006A95D1F78091D0039091D103820F931FCA
:10A3B0009093D1038093D003D801C70117FF03C046
:10A3C0000796A11DB11D23E0B595A7959795879593
:10A3D0002A95D1F78093C4039093C503A093C60335
:10A3E000B093C70388579C4EAF4FBF4F64F488E7C4
:10A3F0009CEEAFEFBFEF8093C4039093C503A0938F
:10A40000C603B093C7032091C4033091C5034091A4
:10A41000C6035091C70357FF04C021503F4F4F4F11
:10A420005F4F232F342F452F552747FD5A95809195
:10A430000B0390910C03820F931F90930C03809356
:10A440000B0311C081E08093D3030DC01092D3039E
:10A450000AC01092D1031092D00388EE93E090933B
:10A46000DA018093D9018C85282F33278091D0037E
:10A470009091D1032817390724F43093D103209306
:10A48000D00310919B08112379F0212F332727FD4A
:10A4900030958091D0039091D1032817390724F487
:10A4A0003093D1032093D0034091B5035091B6036C
:10A4B0006091B7037091B80341385105610571058A
:10A4C00074F080918A0390918B032091D003309196
:10A4D000D103820F931F90938B0380938A0340587C
:10A4E0005F4F6F4F7F4F74F480918A0390918B037D
:10A4F0002091D0033091D103821B930B90938B0357
:10A5000080938A0381E090E09093D1038093D003FD
:10A51000C090B903D090BA03E090BB03F090BC03A5
:10A52000D701C601F7FE07C088279927DC018C19DF
:10A530009D09AE09BF0981509240A040B04034F05F
:10A5400084E090E09093D1038093D0038091DA036C
:10A550009091DB03A091DC03B091DD032091EB0728
:10A560003091EC074091ED075091EE07821B930B61
:10A57000A40BB50B815E914BAF4FBF4F8F539C49DE
:10A58000A040B04018F019310CF4FFC001E0C01633
:10A5900000E1D00600E0E00600E0F0060CF473C035
:10A5A0008091D403882309F46AC0D701C601F7FE5D
:10A5B00007C088279927DC018C199D09AE09BF09BE
:10A5C0009C01AD01B7FF04C021503E4F4F4F5F4F7C
:10A5D00009E055954795379527950A95D1F78091CC
:10A5E000D0039091D103820F931F9093D103809356
:10A5F000D003D701C601F7FE03C00796A11DB11D08
:10A6000013E0B595A795979587951A95D1F78093FF
:10A61000C8039093C903A093CA03B093CB0389588E
:10A620009341A040B04064F088E893E1A0E0B0E03E
:10A630008093C8039093C903A093CA03B093CB033C
:10A640002091C8033091C9034091CA035091CB03B4
:10A6500057FF04C021503F4F4F4F5F4F232F342FE0
:10A66000452F552747FD5A9580910D0390910E0374
:10A67000820F931F90930E0380930D0306C081E019
:10A680008093D40302C01092D40320E0C21620EFBE
:10A69000D2062FEFE2062FEFF2060CF073C0809186
:10A6A000D503882309F46AC0D701C601F7FE07C0A5
:10A6B00088279927DC018C199D09AE09BF099C01E7
:10A6C000AD01B7FF04C021503E4F4F4F5F4FE9E04F
:10A6D0005595479537952795EA95D1F78091D00301
:10A6E0009091D103820F931F9093D1038093D00355
:10A6F000D701C601F7FE03C00796A11DB11D73E087
:10A70000B595A795979587957A95D1F78093C803C6
:10A710009093C903A093CA03B093CB0388579C4E70
:10A72000AF4FBF4F64F488E79CEEAFEFBFEF80936D
:10A73000C8039093C903A093CA03B093CB0320919D
:10A74000C8033091C9034091CA035091CB0357FF0E
:10A7500004C021503F4F4F4F5F4F232F342F452FC1
:10A76000552747FD5A9580910D0390910E03820F56
:10A77000931F90930E0380930D0311C081E080938B
:10A78000D5030DC01092D5030AC01092D1031092C8
:10A79000D00388EE93E09093DA018093D9014C8541
:10A7A000242F33278091D0039091D10328173907A4
:10A7B00024F43093D1032093D00380919B08882305
:10A7C00079F0282F332727FD30958091D003909181
:10A7D000D1032817390724F43093D1032093D003F1
:10A7E0004091B9035091BA036091BB037091BC03CF
:10A7F000413851056105710574F08091880390918D
:10A8000089032091D0033091D103820F931F90933D
:10A8100089038093880340585F4F6F4F7F4FCCF47C
:10A8200080918803909189032091D0033091D103C6
:10A83000821B930B90938903809388030AC0109224
:10A840000E0310920D0310920C0310920B03109242
:10A850002D038091F307882341F410920E03109288
:10A860000D0310920C0310920B038091E10790915D
:10A87000E207A091E307B091E4078093D603909399
:10A88000D703A093D803B093D9038091EB0790919D
:10A89000EC07A091ED07B091EE078093DA03909357
:10A8A000DB03A093DC03B093DD03109265031092E9
:10A8B000660310926703109268031092610310926E
:10A8C0006203109263031092640310925D0310926E
:10A8D0005E0310925F03109260031092E1071092E2
:10A8E000E2071092E3071092E4071092EB07109230
:10A8F000EC071092ED071092EE071092D807109215
:10A90000D9071092DA071092DB071092C80710924D
:10A91000C9071092CA071092CB0710923802109202
:10A920003702E0901B03F0901C03C701F7FE04C040
:10A93000882799278E199F0940976CF088EE93E03D
:10A940009093DA018093D90180912C0684FD03C095
:10A9500081E08093C30310913806A12EBB24CC2440
:10A96000DD24B701882777FD8095982F9701F7FEA2
:10A9700004C0222733272E193F09442737FD40956D
:10A98000542F0E9421779B01AC01C601B5010E94A2
:10A99000217797FF04C061507E4F8F4F9F4F59E042
:10A9A00095958795779567955A95D1F79B01812F56
:10A9B00099278E9DD0018F9DB00D9E9DB00D1124C5
:10A9C000CD01B7FD03969595879595958795280FA9
:10A9D000391F442737FD4095542F2093A903309306
:10A9E000AA034093AB035093AC038091450390912D
:10A9F0004603A0914703B0914803821B930BA40B1D
:10AA0000B50B8093450390934603A0934703B093FF
:10AA100048038155934CA040B04064F080E593EC2E
:10AA2000A0E0B0E08093450390934603A0934703D2
:10AA3000B09348038091450390914603A09147034A
:10AA4000B0914803805B9C43AF4FBF4F64F480EBF1
:10AA50009CE3AFEFBFEF8093450390934603A09331
:10AA60004703B0934803409033035090340341149C
:10AA7000510409F478C180912C0683FF74C1809140
:10AA8000750390917603A0917703B0917803B7FF97
:10AA900004C081509E4FAF4FBF4F39E0B595A79589
:10AAA000979587953A95D1F76C0197FF04C0D0949C
:10AAB000C194D108D39480916D0390916E03A091BD
:10AAC0006F03B0917003B7FF04C081509E4FAF4F2A
:10AAD000BF4F29E0B595A795979587952A95D1F70A
:10AAE000BC0197FF03C0709561957F4FC616D706CE
:10AAF0000CF46B01B601D7FE02C0695F7F4F3B01CA
:10AB000083E0759467948A95E1F702E0E02EF12CDA
:10AB10006E0C7F1C0CE112E0400E511E72010027EA
:10AB2000F7FC0095102F24EE3DEF420E531E80914E
:10AB3000260890912708A0912808B09129088090B4
:10AB4000960190909701A0909801B0909901BC0156
:10AB5000CD01A50194010E949577E21AF30A040B36
:10AB6000150BC801B70128E631E040E050E00E9433
:10AB70009577DC01CB011CE4E12E1FEFF12EE80EEE
:10AB8000F91E0091D9011091DA010115110589F51D
:10AB900039E1C316D1046CF580912B0390912C03FD
:10ABA0008E0D9F1D90932C0380932B038091C303E4
:10ABB0008823F9F0C201AA2797FDA095BA2FBC01FE
:10ABC000CD01A50194010E942177DC01CB01809386
:10ABD000260890932708A0932808B0932908BC0161
:10ABE000CD010E9495773093320320933103109268
:10ABF000C303C701B4E0880F991FBA95E1F7B30109
:10AC00000E946077CB01AA2797FDA095BA2F2091CB
:10AC10002608309127084091280850912908280FCC
:10AC2000391F4A1F5B1F2093260830932708409343
:10AC3000280850932908F090CA016F2D7727C69EE7
:10AC4000C001C79E900DD69E900D112497FD4F9682
:10AC50006C01A5E0D594C794AA95E1F76C197D091C
:10AC60006B0177FD7AC00115110509F06FC00091E5
:10AC7000F2021091F3028091F0029091F102080F1C
:10AC8000191F17FF02C0095F1F4FF3E015950795C5
:10AC9000FA95E1F7005C1F4FCA01B901A5019401C3
:10ACA0000E949577DA01C901209131033091320376
:10ACB000442737FD4095542F821B930BA40BB50BF3
:10ACC000845E9D4FAF4FBF4FBC01CD0128E631E000
:10ACD00040E050E00E949577DC01CB01845B90401E
:10ACE0008C9DA0018D9D500D9C9D500D1124CA017D
:10ACF000B8010E94607783E0F89E60011124C616B7
:10AD0000D70614F4B60108C0882799278C199D0925
:10AD1000681779070CF4BC019B01442737FD409567
:10AD2000542F8091450390914603A0914703B09121
:10AD30004803820F931FA41FB51F80934503909370
:10AD40004603A0934703B09348030DC00150104041
:10AD50001093DA010093D90106C084EF91E090933B
:10AD6000DA018093D90180912D03882381F010921C
:10AD7000390310923A0310923B0310923C03109255
:10AD80003D0310923E0310923F0310924003F09057
:10AD90000803FF20F1F48091F307282F332744277D
:10ADA00055278091750390917603A0917703B09118
:10ADB0007803BC01CD010E942177DC01CB01BC01ED
:10ADC000CD0128EF3AE240E050E00E94957739014A
:10ADD00002C066247724E0900703EE20F1F480910E
:10ADE000F307282F33274427552780916D0390912F
:10ADF0006E03A0916F03B0917003BC01CD010E945E
:10AE00002177DC01CB01BC01CD0128EF3AE240E023
:10AE100050E00E949577290102C044245524809176
:10AE2000C1079091C207893C91051CF088EC90E025
:10AE300005C088539F4F34F488E39FEF9093C20777
:10AE40008093C1078091CD079091CE07893C9105F1
:10AE50001CF088EC90E005C088539F4F34F488E3E1
:10AE60009FEF9093CE078093CD078091D00790916C
:10AE7000D107AA2797FDA095BA2F20912408A22ECA
:10AE8000BB24CC24DD24BC01CD01A60195010E9488
:10AE900021779B01AC018091C1079091C207AA273D
:10AEA00097FDA095BA2FE7E0880F991FAA1FBB1F37
:10AEB000EA95D1F7280F391F4A1F5B1F57FF04C0BF
:10AEC000215C3F4F4F4F5F4F76E055954795379543
:10AED00027957A95D1F78301020F131F1093D1079D
:10AEE0000093D0078091BE079091BF07AA2797FDD6
:10AEF000A095BA2FBC01CD01A60195010E94217732
:10AF00009B01AC018091CD079091CE07AA2797FDB8
:10AF1000A095BA2F67E0880F991FAA1FBB1F6A95DB
:10AF2000D1F7280F391F4A1F5B1F57FF04C0215C50
:10AF30003F4F4F4F5F4F96E0559547953795279573
:10AF40009A95D1F74201820E931E9092BF0780928C
:10AF5000BE0780911F0890912008880F991FAA278B
:10AF600097FDA095BA2F2091C7073327442755276F
:10AF7000BC01CD010E9421775B016C0197FF08C0E5
:10AF80008FE390E0A0E0B0E0A80EB91ECA1EDB1E61
:10AF900086E0D594C794B794A7948A95D1F7809109
:10AFA000DE07282F33274427552780915903909196
:10AFB0005A03A0915B03B0915C03BC01CD010E94D8
:10AFC0002177DC01CB01BC01CD0120EF35E540E06C
:10AFD00050E00E949577B501620F731F70932008AF
:10AFE00060931F080150104134F080E090E190938D
:10AFF000D1078093D0078091D0079091D1078050DE
:10B00000904F34F480E090EF9093D1078093D00775
:10B01000B1E08B16B0E19B0634F080E090E19093B4
:10B02000BF078093BE078091BE079091BF078050F5
:10B03000904F34F480E090EF9093BF078093BE0769
:10B040006150704134F080E090E19093200880934B
:10B050001F0880911F08909120088050904F34F471
:10B0600080E090EF9093200880931F08809100016A
:10B07000482F552780911E0190911F0148175907AD
:10B0800094F420911E0130911F0169817A81649F9F
:10B09000C001659F900D749F900D1124B9010E940D
:10B0A0004C777A83698389819A81880F991F880FE9
:10B0B000991F9A83898340912C0640FFBDC6EE20DC
:10B0C00009F0BAC6FF2009F0B7C6AA24BB2445017F
:10B0D0008091090390910A039093F5058093F405FC
:10B0E00020918C0330918D032115310509F03FC06B
:10B0F00080911401909115018959934058F087B5BA
:10B10000853F20F480913B02815011C081E0809303
:10B11000E9034EC080911401909115018436910588
:10B1200008F587B58B30D0F080913B028F5F80931C
:10B130003B029AE089029001112480911B06821B38
:10B1400087BD8CE291E090932902809328028EE5DE
:10B1500091E090938D0380938C032AC081E08093CB
:10B16000E80326C0F092E803F092E90321C0809141
:10B17000130390911403A0911503B091160314E0EA
:10B18000880F991FAA1FBB1F1A95D1F780933C0205
:10B1900090933D02A0933E02B0933F02B0923A02D8
:10B1A000A09239022150304030938D0320938C03BC
:10B1B0002091CD0141FF24C02233D8F48091E301D6
:10B1C00081508093E3018F3FD9F510922E03809137
:10B1D000130390911403A0911503B091160380936B
:10B1E0000F0390931003A0931103B093120381E017
:10B1F00004C081E080932E0388EC8093E30120C09B
:10B2000080919A0190919B01820F911D20913106AE
:10B210003327829FF001839FF00D929FF00D112440
:10B22000CF01AA2797FDA095BA2F80930F03909383
:10B230001003A0931103B093120381E080932E03B7
:10B240008091750390917603A0917703B091780374
:10B25000E0909601F090970100919801109199016A
:10B26000BC01CD01A80197010E94957759016A019F
:10B2700080916D0390916E03A0916F03B091700364
:10B28000BC01CD01A80197010E949577B901C501C4
:10B290000E944B6E8C01CC9714F00CE310E0C801B7
:10B2A0000E941D6A8C0180E28093950180912E039B
:10B2B000882309F447C48091ED0299279C012071ED
:10B2C000307084FD3FC46091850660FD04C08091AC
:10B2D0002C0681FD0CC0C980DA803093DF032093F7
:10B2E000DE038091ED02806C8093ED0299C1809124
:10B2F000ED0281FF6BC14091DF015091E001CA0175
:10B300000F962091190330911A0382179307BCF509
:10B310008091E803882399F58091ED0287FF15C09D
:10B320008091ED028F778093ED02809113039091CD
:10B330001403A0911503B091160380930F0390930B
:10B340001003A0931103B09312038091ED02806467
:10B350008093ED02241B350B2F50304037FF03C084
:10B36000309521953F4F8091DE039091DF03820F4E
:10B37000931F9093DF038093DE038BE26EC0CA01BC
:10B380000F9728173907BCF58091E903882399F5B1
:10B390008091ED0286FF15C08091ED028F7B809336
:10B3A000ED028091130390911403A0911503B091C5
:10B3B000160380930F0390931003A0931103B0938F
:10B3C00012038091ED0280688093ED02241B350BFF
:10B3D000215F3F4F37FF03C0309521953F4F80914C
:10B3E000DE039091DF03821B930B9093DF03809326
:10B3F000DE038DE232C08091ED02807C69F18091A4
:10B40000ED028F738093ED021092DF031092DE0342
:10B4100020911303309114034091150350911603AA
:10B4200020930F03309310034093110350931203A2
:10B4300061FF06C084EF91E0909329028093280277
:10B4400080911703882341F42333310541055105C9
:10B450001CF081E0809317038DE380939501209188
:10B46000DE033091DF03C90137FF04C08827992725
:10B47000821B930B815092400CF491C08091310655
:10B480009927289F7001299FF00C389FF00C1124F8
:10B49000C70160E075E00E946077CB01AA2797FDA5
:10B4A000A095BA2F20910F03309110034091110302
:10B4B00050911203280F391F4A1F5B1F20930F035F
:10B4C0003093100340931103509312031092DF0343
:10B4D0001092DE03C0901303D0901403E090150384
:10B4E000F0901603D701C60180509440A040B040B0
:10B4F00082179307A407B5075CF4D701C6018050F3
:10B500009C4FAF4FBF4F281739074A075B0744F0DE
:10B5100080930F0390931003A0931103B093120331
:10B520008091850681FF06C084E690E09093290211
:10B530008093280280913506882389F5409109037C
:10B5400050910A0357FF02C04D5F5F4F55954795D5
:10B550005595479580911E0190911F012091000102
:10B560003327489FB001499F700D589F700D1124DB
:10B57000CB01B9010E9460777093E0016093DF0115
:10B58000663471051CF486E490E005C067397105E6
:10B5900034F086E990E09093E0018093DF018091A0
:10B5A0008C0390918D03892BB9F1809113039091B5
:10B5B0001403A0911503B091160380930F03909389
:10B5C0001003A0931103B093120326C080911303BC
:10B5D00090911403A0911503B091160380599140E6
:10B5E000A040B04080930F0390931003A0931103E9
:10B5F000B093120380913506882311F0992702C079
:10B6000088E790E09093E0018093DF0189819A813F
:10B6100090930A0380930903C0900903D0900A0312
:10B620002091130330911403409115035091160398
:10B630002B8B3C8B4D8B5E8B20910F033091100335
:10B6400040911103509112036B897C898D899E89E9
:10B65000261737074807590724F08091850680FD93
:10B66000B8C280918C0390918D03892B39F0C090E2
:10B670000903D0900A03AA24BB24D9C08B899C89D2
:10B68000AD89BE89821B930BA40BB50B8093AD03D0
:10B690009093AE03A093AF03B093B003823070E8F1
:10B6A00097077FEFA7077FEFB7072CF481E090E8BB
:10B6B000AFEFBFEF09C08F5F9F47A040B04064F07D
:10B6C0008FEF9FE7A0E0B0E08093AD039093AE03CF
:10B6D000A093AF03B093B003A090AD03B090AE03BE
:10B6E0008091CC01282F3327442755278091AD0323
:10B6F0009091AE03A091AF03B091B003BC01CD0116
:10B700000E94217797FF04C0615E7F4F8F4F9F4F4C
:10B71000A5E09595879577956795AA95D1F760935C
:10B72000AD037093AE038093AF039093B003653085
:10B73000FEEF7F07FFEF8F07FFEF9F072CF484E0FA
:10B740009EEFAFEFBFEF09C0605074408040904063
:10B7500064F080E094E0A0E0B0E08093AD039093CB
:10B76000AE03A093AF03B093B0038090AD0390906D
:10B77000AE032091390230913A0237FF02C0295FAF
:10B780003F4FF3E035952795FA95E1F74FEF2238D3
:10B7900034071CF421E83FEF05C02038310514F0D0
:10B7A00020E830E0C901AA2797FDA095BA2F209183
:10B7B000CE01332744275527BC01CD010E942177B4
:10B7C00097FF04C06D5F7F4F8F4F9F4FE2E09595CD
:10B7D000879577956795EA95D1F79B015FEF613083
:10B7E00075071CF420E03FEF06C06F3F710519F0AC
:10B7F00014F020E031E08091ED02807C49F0C90135
:10B8000037FD03969C0135952795359527950DC0F5
:10B810008091850680FF09C0C90137FD07969C010C
:10B8200043E0359527954A95E1F7820E931E2091C6
:10B83000CB01222309F454C0609135037091360383
:10B84000809137039091380397FF04C061587F4F70
:10B850008F4F9F4F37E095958795779567953A95E8
:10B86000D1F73327442755270E94217797FF04C03B
:10B87000615E7F4F8F4F9F4FB5E095958795779588
:10B880006795BA95D1F76093AD037093AE0380933B
:10B89000AF039093B0036138AFEF7A07AFEF8A0739
:10B8A000AFEF9A072CF480E89FEFAFEFBFEF0AC02D
:10B8B0006F3F71058105910569F064F080E091E0CA
:10B8C000A0E0B0E08093AD039093AE03A093AF03EC
:10B8D000B093B0038091AD039091AE03880E991E92
:10B8E0008091C901282F332780919E08992787FDD1
:10B8F0009095289FF001299FF00D389FF00D11249D
:10B900009F01F7FF02C021583F4F220F232F221F14
:10B91000330BFFEF21383F071CF420E83FEF06C050
:10B920002F3F310519F014F020E031E0820E931E14
:10B93000C401AA2797FDA095BA2FE0900903F090C3
:10B940000A039701442737FD4095542FBC01CD01D0
:10B950000E94217797FF04C061507E4F8F4F9F4F09
:10B96000F9E09595879577956795FA95D1F7C61A79
:10B97000D70A8091DE039091DF03892B09F060C024
:10B980001E141F040CF05CC09501B7FE03C0309577
:10B9900021953F4F2D33310540F48091E203909182
:10B9A000E3038C159D0574F526C02C533040E5E06B
:10B9B00036952795EA95E1F72031310510F02FE013
:10B9C00030E04091E2035091E3031A141B04E4F4C5
:10B9D00080E190E0821B930B489F9001499F300DBE
:10B9E000589F300D112474E0369527957A95E1F72C
:10B9F0002C153D0520F58091E1019091E201C816DA
:10BA0000D906F4F06C011CC0205F3F4F8091E1012A
:10BA10009091E201829FB001839F700D929F700D03
:10BA200011249B0164E0369527956A95E1F74C1542
:10BA30005D0514F06A0104C0C216D30608F069015E
:10BA4000C601AA2797FDA095BA2F2DE0880F991F50
:10BA5000AA1FBB1F2A95D1F79801442737FD4095AF
:10BA6000542FBC01CD010E9495772093B1033093F0
:10BA7000B2034093B3035093B403C090B103D0908A
:10BA8000B2038091E0039091E1039C01220F331FE8
:10BA9000280F391F2C0D3D1D37FF02C02D5F3F4F72
:10BAA000A90155954795559547955093E1034093C6
:10BAB000E00380912D06282F3327220F331F220FFA
:10BAC000331F241735076CF480911B08282F332768
:10BAD000220F331F220F331F2055304042175307C8
:10BAE00024F03093E1032093E0038091850680FFEA
:10BAF00014C08091E0039091E103A981BA818A1773
:10BB00009B0724F0B093E103A093E003E091E003EE
:10BB1000F091E103FA83E9835CC029813A812E190F
:10BB20003F0937FF02C02D5F3F4F3595279535956B
:10BB30002795E090E003F090E103E20EF31EFA8215
:10BB4000E98247C080913506882301F56091090399
:10BB500070910A0377FF02C06D5F7F4F75956795FF
:10BB60007595679540911E0150911F0180910001CC
:10BB7000282F3327649FC001659F900D749F900DFF
:10BB80001124B9010E946077CB0101C099279093DD
:10BB9000E0018093DF018091DF019091E001873423
:10BBA00091051CF486E490E005C08639910534F0D7
:10BBB00086E990E09093E0018093DF0129813A814A
:10BBC0003093E1032093E0038091ED02806C809339
:10BBD000ED028091ED0299279C012270307081FF67
:10BBE0001CC18091E4039091E503A091E603B0911C
:10BBF000E7030097A105B10521F08091170381307B
:10BC0000B1F449815A81CA01AA2797FDA095BA2F9C
:10BC10002EE0880F991FAA1FBB1F2A95D1F780938A
:10BC2000E4039093E503A093E603B093E7038091C8
:10BC30001703813019F482E08093170369817A81B8
:10BC4000CB01AA2797FDA095BA2F9801442737FD6D
:10BC50004095542FBC01CD010E942177DC01CB011E
:10BC60008093B1039093B203A093B303B093B40352
:10BC7000B7FF04C08150904EAF4FBF4F7C018D0184
:10BC8000FDE015950795F794E794FA95D1F7E092C2
:10BC9000B103F092B2030093B3031093B403609125
:10BCA000EE027091EF028FE0603A780750F58091D4
:10BCB000E4039091E503A091E603B091E7039C01B2
:10BCC000AD01EAE05695479537952795EA95D1F766
:10BCD000821B930BA40BB50BA8019701F4E0220F74
:10BCE000331F441F551FFA95D1F7820F931FA41FCE
:10BCF000B51F8093E4039093E503A093E603B0930C
:10BD0000E70360547F4118F58091E4039091E503C7
:10BD1000A091E603B091E7039C01AD01ECE05695DC
:10BD2000479537952795EA95D1F7821B930BA40B7E
:10BD3000B50BA801970172E0220F331F441F551F56
:10BD40007A95D1F7820F931FA41FB51F29C0809148
:10BD5000390290913A028091390290913A0297FF0C
:10BD600003C0909581959F4F843691050CF5809185
:10BD7000E4039091E503A091E603B091E7039C01F1
:10BD8000AD016EE056954795379527956A95D1F7A1
:10BD9000821B930BA40BB50B8E0D9F1DA01FB11F13
:10BDA0008093E4039093E503A093E603B093E70345
:10BDB0008091E4039091E503A091E603B091E7033D
:10BDC0001EE0B695A795979587951A95D1F790930C
:10BDD0000A038093090340913306442399F05527C1
:10BDE0009C01BA010E946077C901861B970B909352
:10BDF000E3038093E203260F371F3093E201209381
:10BE0000E1011FC01092E3031092E2038FEF93E071
:10BE10009093E2018093E10114C0109217031092F5
:10BE2000E4031092E5031092E6031092E7033093C7
:10BE30000A032093090305C08091ED02806C809372
:10BE4000ED022090D607222D3327220F331F220F19
:10BE5000331F285D3F4FA981BA812A173B0714F091
:10BE60003A83298330901B08832D9927880F991FC7
:10BE7000880F991F80559040E981FA818E179F079E
:10BE800014F49A83898380917102882321F480912C
:10BE9000A7088F3FA1F08091EE029091EF020297E8
:10BEA000C09768F4E980FA801E141F0444F481E00E
:10BEB00090E09093EF028093EE023A832983098108
:10BEC0001A811093D9050093D8058091A903909108
:10BED000AA03A091AB03B091AC03F2E0880F991FC5
:10BEE000AA1FBB1FFA95D1F700911F0810912008D7
:10BEF000081B190B29813A81213A31058CF0C901BF
:10BF000037FD019695958795801791070CF48C0164
:10BF1000909581959F4F081719076CF48C010BC001
:10BF20000135110514F000E510E03FEF003B130769
:10BF300014F400EB1FEF232D3327220F331F220FA2
:10BF4000331FC90149815A81841B950B80179107C2
:10BF50000CF48C0169817A81621B730B0617170739
:10BF60000CF48B018091D0079091D10760911F0351
:10BF700070912003861B970B9093E0078093DF0757
:10BF8000D090F30720913D0330913E0340913F0351
:10BF900050914003DD2041F0661A770AC301AA27B9
:10BFA00097FDA095BA2F04C0AA2797FDA095BA2F98
:10BFB000280F391F4A1F5B1F20933D0330933E0318
:10BFC00040933F035093400380913D0390913E0383
:10BFD000A0913F03B091400381509A4FA040B040E0
:10BFE00064F080E09AEFA0E0B0E080933D0390938E
:10BFF0003E03A0933F03B093400380913D03909193
:10C000003E03A0913F03B091400380509640AF4F54
:10C01000BF4F64F480E096E0AFEFBFEF80933D0345
:10C0200090933E03A0933F03B0934003C090420619
:10C030002091DF073091E007F8E0FC1598F08C2D97
:10C040009927829F7001839FF00C929FF00C11241E
:10C05000C701F7FC07967C0163E0F594E7946A95C5
:10C06000E1F712C08C2D86959927829FA001839FAE
:10C07000500D929F500D1124CA0157FD03967C016B
:10C08000F594E794F594E794A090CF01B090D00197
:10C090009501442737FD4095542F80913D039091A1
:10C0A0003E03A0913F03B0914003BC01CD010E942B
:10C0B0009577E20EF31E9090BB01692D77278827B4
:10C0C0009927980117FF04C022273327201B310B23
:10C0D00037FF02C02F5F3F4F35952795A981BA8161
:10C0E0002A0F3B1F442737FD4095542F0E9421778C
:10C0F00097FF04C0615C7F4F8F4F9F4F26E095955F
:10C100008795779567952A95D1F79B016E157F05E1
:10C110000CF47B01309521953F4FE216F3060CF4A9
:10C1200079018091BE079091BF0760911D037091C6
:10C130001E03861B970B9093BD078093BC0720912D
:10C14000390330913A0340913B0350913C03DD2089
:10C1500041F0461A570AC201AA2797FDA095BA2FA7
:10C1600004C0AA2797FDA095BA2F280F391F4A1F90
:10C170005B1F2093390330933A0340933B03509362
:10C180003C038091390390913A03A0913B03B09115
:10C190003C0381509A4FA040B04064F080E09AEF99
:10C1A000A0E0B0E08093390390933A03A0933B035F
:10C1B000B0933C038091390390913A03A0913B03E3
:10C1C000B0913C0380509640AF4FBF4F64F480E085
:10C1D00096E0AFEFBFEF8093390390933A03A093BB
:10C1E0003B03B0933C032091BC073091BD0748E06E
:10C1F0004C1598F08C2D9927829FB001839F700D6C
:10C20000929F700D1124CB0177FD07966C01B3E06E
:10C21000D594C794BA95E1F712C0C6948C2D99278E
:10C22000829FD001839FB00D929FB00D1124CD014C
:10C23000B7FD03966C01D594C794D594C794950126
:10C24000442737FD4095542F8091390390913A034C
:10C25000A0913B03B0913C03BC01CD010E949577B6
:10C26000C20ED31E692D772788279927980117FFBB
:10C2700004C022273327201B310B37FF02C02F5F5A
:10C280003F4F35952795E981FA812E0F3F1F4427AF
:10C2900037FD4095542F0E94217797FF04C0615CC1
:10C2A0007F4F8F4F9F4FE6E09595879577956795E0
:10C2B000EA95D1F79B016C157D050CF46B01309567
:10C2C00021953F4FC216D3060CF4690169EE862E04
:10C2D00066E0962E50EAA52E56E0B52E4BE0542E81
:10C2E00038EF632E37E0732ED5012C9112160CF027
:10C2F00014C1203429F4E981FA81F88FEF8B1FC033
:10C3000049815A81CA01AA2797FDA095BA2F3327E0
:10C3100027FD3095432F532FBC01CD010E9421777B
:10C3200097FF04C0615C7F4F8F4F9F4F26E095952C
:10C330008795779567952A95D1F7788F6F8BF5015B
:10C340002181203439F42F89388D2E0D3F1D388FEF
:10C350002F8B2AC0203C39F44F89588D4E195F0924
:10C36000588F4F8B21C0C701AA2797FDA095BA2FE0
:10C37000332727FD3095432F532FBC01CD010E9459
:10C38000217797FF04C0615C7F4F8F4F9F4FB6E0CE
:10C390009595879577956795BA95D1F7AF89B88DBB
:10C3A000A60FB71FB88FAF8BF5012281203439F467
:10C3B0002F89388D2C0D3D1D388F2F8B2AC0203CA6
:10C3C00039F44F89588D4C195D09588F4F8B21C016
:10C3D000C601AA2797FDA095BA2F332727FD3095D0
:10C3E000432F532FBC01CD010E94217797FF04C03A
:10C3F000615C7F4F8F4F9F4FA6E09595879577950E
:10C400006795AA95D1F7AF89B88DA60FB71FB88FDA
:10C41000AF8BF5012381203439F42F89388D200F1B
:10C42000311F388F2F8B2AC0203C39F44F89588D0B
:10C43000401B510B588F4F8B21C0C801AA2797FD75
:10C44000A095BA2F332727FD3095432F532FBC01DA
:10C45000CD010E94217797FF04C0615C7F4F8F4F11
:10C460009F4FF6E09595879577956795FA95D1F763
:10C47000AF89B88DA60FB71FB88FAF8BF30180813E
:10C4800091812F89388D8217930764F4B901680F61
:10C49000791F77FF02C06F5F7F4F75956795788F23
:10C4A0006F8B08C04F89588D440F551F481B590B7F
:10C4B000588F4F8B822D9927880F991F880F991FAE
:10C4C0006F89788D861797075CF4832D9927880FDD
:10C4D000991F880F991FAF89B88DA817B90714F055
:10C4E000988F8F8B8F89988D97FD0396959587955B
:10C4F00095958795F4018183880F991F880F991F5F
:10C500002F89388D281B390BC901880F8283EF8949
:10C51000F88DD301ED93FC9303C0F40111821282D4
:10C520005A9422E030E0620E731E44E050E0A40E04
:10C53000B51E68E070E0860E971E57FED5CEE2E18C
:10C54000C85E0C94CC778091F6039091F703A0918C
:10C55000F803B091F9038093EE039093EF03A09357
:10C56000F003B093F1038091F2039091F303A09153
:10C57000F403B091F5038093EA039093EB03A09347
:10C58000EC03B093ED03089510920104109200049F
:10C590001092FF031092FE03089584B1806A84B95B
:10C5A0003D9A82E58CBD1DBC459A81E0809332089E
:10C5B0008AEA8093430883E8809344088AE0809362
:10C5C00045081092470810924608109249081092A8
:10C5D000480810929D08109265080895309132081D
:10C5E000332309F085C00DB407FE82C084E0809338
:10C5F0002702459A2EB5809105049927813091052F
:10C6000089F0823091051CF4892B21F03EC00297FD
:10C61000B9F03BC030936408209306042138A9F593
:10C6200081E008C0253549F480910604820F80938B
:10C63000060482E08093050428C03093050425C0D9
:10C6400080916408E82FFF27E058F74F20838F5F21
:10C6500080936408909106048A31A0F0291769F448
:10C660008AE1A0E8B8E0E6E6F8E00D9001928A954C
:10C67000E1F781E08093650802C03093650810926D
:10C68000050403C0920F90930604209142082032C3
:10C6900008F028C0459800000000000000000000DD
:10C6A000000000000000000000000000000000008A
:10C6B000000000000000000000000000000000007A
:10C6C000000000000000E0913B08F0913C08E20F00
:10C6D000F11D80818EBD809162089081890F8093C9
:10C6E000620803C081E0809332082F5F20934208E4
:10C6F0000895EF92FF920F931F9380913B06992725
:10C70000880F991F880F991F7C010027F7FC00955F
:10C71000102F8091750390917603A0917703B091CB
:10C720007803BC01CD01A80197010E949577309351
:10C7300047082093460880916D0390916E03A09165
:10C740006F03B0917003BC01CD01A80197010E9455
:10C750009577309349082093480820912608309116
:10C7600027084091280850912908DA01C901E3E01F
:10C77000880F991FAA1FBB1FEA95D1F7820F931F3D
:10C78000A41FB51F820F931FA41FB51F20919601F0
:10C79000309197014091980150919901BC01CD01D0
:10C7A0000E94957730934F0820934E08809186031E
:10C7B000909187032091470230914802821B930B8E
:10C7C0009093550880935408E0917C03F0917D0389
:10C7D0008091E8079091E907BF010E946077CB0143
:10C7E0009B01220F331F220F331F280F391F280FE1
:10C7F000391F37FF02C02D5F3F4F3595279535957F
:10C80000279530934B0820934A08809122089091F5
:10C810002308BF010E9460779B01220F331F220F64
:10C82000331F260F371F260F371F37FF02C02D5F1C
:10C830003F4F359527953595279530934D08209393
:10C840004C0810927D0310927C031092E90710921D
:10C85000E807109223081092220880914508992732
:10C860008D30910509F466C08E3091055CF48B30F3
:10C87000910509F48EC08C3091050CF00FC10A9718
:10C8800061F0ADC18F30910509F481C18F30910500
:10C890000CF45CC1409799F1A2C18091020380938E
:10C8A000560880910103809357088091000380937C
:10C8B00058088091FF02809359088091FE0280936E
:10C8C0005A088091FD0280935B088091FC0280935E
:10C8D0005C088091FB0280935D088091ED0280935B
:10C8E0005E088091ED02837F8093ED020E94AD2D62
:10C8F00080935F08809179038093600870C1809174
:10C900009F089091A00890935708809356088091B3
:10C91000A3089091A4089093590880935808809197
:10C920001E0190911F0180935A088091000180930D
:10C930005B0855C180916F06809356088091700600
:10C9400080935708809171068093580880917206F1
:10C95000809359088091730680935A0880917706D6
:10C9600080935B088091780680935C0880917906BB
:10C9700080935D0880917C0680935E0880917A06A2
:10C9800080935F0880917B068093600880917D068C
:10C99000DAC0F89480912206E82FFF27EE0FFF1FE0
:10C9A000E65BF84F0190F081E02DE038F1051CF0D6
:10C9B000EFE7F0E006C02FEFE138F20714F4E1E80A
:10C9C000FFEFE093560880912306E82FFF27EE0F34
:10C9D000FF1FE65BF84F0190F081E02DE038F10594
:10C9E0001CF0EFE7F0E006C06FEFE138F60714F453
:10C9F000E1E8FFEFE093570880912106E82FFF2739
:10CA0000EE0FFF1FE65BF84F0190F081E02DE0385C
:10CA1000F1051CF0EFE7F0E006C08FEFE138F80712
:10CA200014F4E1E8FFEFE093580880912006E82F26
:10CA3000FF27EE0FFF1FE65BF84F0190F081E02D1E
:10CA4000E038F1051CF0EFE7F0E006C02FEFE13829
:10CA5000F20714F4E1E8FFEF7894E093590880912D
:10CA6000220380935A088091230380935B0880916E
:10CA7000240380935C088091250380935D08809156
:10CA8000260380935E088091270380935F0880913E
:10CA90002803809360088091290355C08091630426
:10CAA000863018F01092630485E0809356088091D8
:10CAB0007E06809357088091130390911403A091F0
:10CAC0001503B0911603BC01CD0125E030E040E034
:10CAD00050E00E9495773093590820935808809130
:10CAE0000F0390911003A0911103B0911203BC01A8
:10CAF000CD0125E030E040E050E00E949577309392
:10CB00005B0820935A088091740680935C0880919A
:10CB1000750680935D088091760680935E0880910B
:10CB2000210380935F0880914A0790914B0780937F
:10CB300060088091D8059091D90597FD0396959549
:10CB40008795959587958093610849C010925608FE
:10CB500082E5809357081092580880E18093590825
:10CB60008091020180935A088091480480935B0869
:10CB70008091490480935C0880914A0480935D0809
:10CB800080914B0480935E0880914C0426C0809174
:10CB900054068093560880918406809357088091AC
:10CBA000C1018093580880914D0680935908809167
:10CBB0004E0680935A0880914F0680935B088091BF
:10CBC000C00180935C088091510680935D0880913C
:10CBD000520680935E088091530680935F0880918F
:10CBE0006508882309F4D8C08AEF8093ED0140914D
:10CBF000670850916808CA0181509E4F8F5F93402B
:10CC0000B0F42091690830916A08C90181509E4FA3
:10CC10008F5F934060F480912C0685FF08C050938D
:10CC20000104409300043093FF032093FE0380919E
:10CC30006D0890916E0821E08936920724F4909354
:10CC40003403809333038091330390913403209114
:10CC5000310330913203821B930B845E9D4F68E653
:10CC600071E00E946077845B9040909330038093E2
:10CC70002F032091710830917208809128029091C1
:10CC800029028217930740F480916304882321F4DA
:10CC900030932902209328028091660899278836CC
:10CCA000910549F18936910524F48736910531F0D3
:10CCB0007BC08936910509F445C076C08091730820
:10CCC00080939A088091740880939C0880917508DD
:10CCD00080939B088091760880939D0880917708C7
:10CCE00080939E08809178088093EE018091790866
:10CCF0008093040459C08091730880933D0880910B
:10CD0000740880933E088091750880933F08809155
:10CD1000760880934008809177088093410880913D
:10CD2000C80590917808892B8093C805909179085F
:10CD3000909302048091C90583709C70892B809325
:10CD4000C90532C0809173088093330880917408BC
:10CD50008093340880917508809335088091760817
:10CD600080933608809177089091780890933808DE
:10CD7000809337088091790890917A0890933A08C7
:10CD80008093390880917B08992787FD909590932F
:10CD90007D0780937C0708C0109201041092000464
:10CDA0001092FF031092FE031F910F91FF90EF90DE
:10CDB000089580913208882309F43BC0459883E4A4
:10CDC00098E090933C0880933B0890910304E92FEE
:10CDD000FF27EC51FE4F9F5F909303048081809367
:10CDE0004508993010F010920304109232080E9406
:10CDF000796381E080934208000000000000000099
:10CE00000000000000000000000000000000000022
:10CE10000000000000000000000000000000000012
:10CE20000000000000000000809143088093620829
:10CE30008EBD089587B18C6087B94298439810924F
:10CE4000080480E88093F001109207048093EF01BA
:10CE5000089580910D04815080930D048F3F09F057
:10CE6000FBC024E020930D048091ED02992780738C
:10CE70009070892B21F48091490480FF1CC080911F
:10CE80006D06882349F080911004882311F42093C3
:10CE9000080481E08093100480916E068823B9F025
:10CEA00080911104882319F484E08093070481E0C1
:10CEB000809311040CC01092100410921104809100
:10CEC000690680930E0480916B0680930F04809115
:10CED0001004882309F040C080918306282F33274F
:10CEE00024FF07C080911803882319F425FD4DC045
:10CEF0004EC090916A06983F50F08091EA078D3DB0
:10CF000030F080910E0488230CF43FC040C0983F5D
:10CF100048F08091EA078A3028F480910E04882333
:10CF2000B4F133C0809108048150809308048F3F8E
:10CF300079F58091EA078150809308048091F0018F
:10CF4000813011F480E801C086958093F0018091D2
:10CF5000F00190910E0417C08091080481508093D5
:10CF600008048F3FA9F489E0809308048091F001C0
:10CF7000813011F480E801C086958093F0018091A2
:10CF8000F00190916D06892311F0429A01C04298F8
:10CF900080911104882309F043C080918306282FD3
:10CFA000332724FF07C080911803882319F426FD36
:10CFB00050C034C090916C06983F50F080911A0890
:10CFC0008D3D30F080910F0488230CF442C026C0C0
:10CFD000983F48F080911A088A3028F480910F0415
:10CFE0008823E4F036C080910704815080930704C1
:10CFF0008F3F91F580911A088150809307048091AA
:10D00000EF01813011F480E801C086958093EF0133
:10D010008091EF0190910F048923D9F443980895EA
:10D02000809107048150809307048F3FA9F489E021
:10D03000809307048091EF01813011F480E801C0F2
:10D0400086958093EF018091EF0190916E06892380
:10D0500011F0439A0895439808954FB724E130E0C2
:10D06000F8948091C9008F778093C9008091C9009E
:10D070008F7B8093C9008091C9008F7D8093C90008
:10D080005A9A52985B9A539A832F99278093CD008E
:10D090002093CC008091C80082608093C80080E11A
:10D0A0008093C9008091CA008F778093CA008091D5
:10D0B000CA008F7B8093CA008091CA008F7D8093C5
:10D0C000CA008091CA008F7E8093CA008091CA00F6
:10D0D000877F8093CA008091C9008B7F8093C900AD
:10D0E0008091CA0084608093CA008091CA008260E7
:10D0F0008093CA008091C80087FF03C08091CE0052
:10D10000F9CF8091C90080688093C9004FBF08950E
:10D11000EF92FF920F931F93CF93DF93482F00E07E
:10D1200010E08091F101813061F41092F10184E40A
:10D130008093120410921404109213041092150498
:10D140002BC180911204882319F421E030E001C042
:10D15000980190911304992371F4232B11F081E02D
:10D1600010C084E4809312049093140490931304E9
:10D1700090931504FAC0913069F4232B09F0EBC0A9
:10D1800082E080931304809114048F5F80931404D1
:10D1900083E0E9C09230D1F4232B09F0DCC083E0B6
:10D1A000809312044093150490911404923039F442
:10D1B0001092160447FF03C081E08093160483E0B9
:10D1C000809313049F5F90931404CFC0933009F0B1
:10D1D000C2C0232B09F0BFC09093120482E0809359
:10D1E0001304809114048F5F80931404209115041C
:10D1F000822F9927782F6627842F9927682B792BE0
:10D2000080914606813049F47370CB018050924082
:10D2100063E070E00E94607717C0823061F477703D
:10D22000CB018050944066E070E00E9460772695C4
:10D23000269526950BC0737068567140CB0177FD1B
:10D240000196BC017595679526952695022F1127A5
:10D250000F7010700F5F1F4F0D30110508F074C074
:10D260007801E00EF11EF701E65BF84F80819181B5
:10D270009B01281B390BC90137FF03C0909581958D
:10D280009F4F069794F480912103883C30F480915D
:10D290002103865F8093210308C088EC80932103DB
:10D2A00080916F008F7D80936F00F701E65BF84FF0
:10D2B000808191819C01220F331F280F391F260F77
:10D2C000371F37FF02C02D5F3F4FE901D595C79546
:10D2D000D595C795CB0101968C179D0714F421971E
:10D2E00006C061507040C617D7070CF42196809194
:10D2F0002103843BD0F0F701E65BF84F80819181F8
:10D30000FE01E81BF90BCF0163E070E00E9460773B
:10D31000CB01880F991F860F971F2EE737E0E20E8B
:10D32000F31EF7019183808307C02EE737E0E20EFA
:10D33000F31EF70111821082000F111F065B184FB8
:10D34000F801D183C08311C00231110570F081E072
:10D350008093F1010AC081E08093F10110921404DE
:10D360001092160484E48093120480911404803196
:10D3700098F080911604882331F48091F10188237C
:10D3800011F48093940110921404109216041092D8
:10D39000130484E480931204E6E0CDB7DEB70C9466
:10D3A000D877CF93FC0197FF05C0CFEFF095E195BB
:10D3B000FF4F01C0C1E028E631E0CF01B9010E9472
:10D3C0006077FC018B35910554F08B5590408A3580
:10D3D000910538F484EB90E08E1B9F0BFC0141E03B
:10D3E0000DC0CF01855B90408A35910518F4E45B50
:10D3F000F04003C02E1B3F0BF9014FEFEE0FFF1F54
:10D40000E15DF54F259134918C2F992787FD9095FB
:10D41000289FB001299F700D389F700D1124842F13
:10D42000992787FD9095689FA001699F500D789F6F
:10D43000500D1124CA01CF9108952AE530E0281B30
:10D44000390BC9010E94D1690895CF93DF9380E021
:10D450000E94317080911E0190911F016AE070E07E
:10D460000E9460779F938F9380911E0190911F017E
:10D470006AE070E00E9460777F936F938DEF9AE08F
:10D480009F938F93C4E2D0E7DF93CF93E0912F0473
:10D49000F091300409952DB73EB7285F3F4F2DBF5F
:10D4A0008091ED018823B9F186E00E94317080916E
:10D4B0003708909138086AE070E00E944C777F93BB
:10D4C0006F938FED90E09F938F93809126089091BA
:10D4D0002708A0912808B091290820919601309141
:10D4E00097014091980150919901BC01CD010E9492
:10D4F00095773F932F9386E09BE09F938F93DF93E5
:10D50000CF93E0912F04F091300409958DB79EB729
:10D510000A968DBF12C086E00E94317082E19BE0C6
:10D520009F938F93DF93CF93E0912F04F09130047A
:10D5300009950F900F900F900F908091020488230F
:10D54000C1F086E00E9431708091020499279F9378
:10D550008F9389E19BE09F938F93DF93CF93E0912B
:10D560002F04F091300409952DB73EB72A5F3F4F45
:10D570002DBF80E10E9431708091F7019091F801F8
:10D580006CE370E00E944C779F938F938091F7013A
:10D590009091F8016CE370E00E944C777F936F9359
:10D5A0008091A5089091A6089F938F9384E29BE0B9
:10D5B0009F938F93C4E2D0E7DF93CF93E0912F0442
:10D5C000F0913004099580912C062DB73EB7265F67
:10D5D0003F4F2DBF80FF29C08AE10E9431708091AA
:10D5E000950199279F938F93809113039091140332
:10D5F000A0911503B0911603BC01CD0124E630E0E3
:10D6000040E050E00E9495773F932F9381E39BE0A9
:10D610009F938F93DF93CF93E0912F04F091300489
:10D6200009958DB79EB708968DBFDF91CF9108956C
:10D63000CF93DF9380E00E94317080910807992793
:10D6400087FD90959F938F9380910007992787FD81
:10D6500090959F938F938091F806992787FD9095D9
:10D660009F938F938091F006992787FD90959F93C4
:10D670008F9388E39BE09F938F93C4E2D0E7DF937F
:10D68000CF93E0912F04F0913004099580E10E943E
:10D6900031702DB73EB7245F3F4F2DBF80912807D3
:10D6A000992787FD90959F938F93809120079927C5
:10D6B00087FD90959F938F9380911807992787FDF9
:10D6C00090959F938F9380911007992787FD909550
:10D6D0009F938F9388E49BE09F938F93DF93CF93E7
:10D6E000E0912F04F0913004099580911E062DB72A
:10D6F0003EB7245F3F4F2DBF853098F480E10E94F4
:10D70000317088E59BE09F938F93DF93CF93E091F7
:10D710002F04F091300409950F900F900F900F9007
:10D7200018C08730B0F488E10E9431708FED90E02E
:10D730009F938F9389E69BE09F938F93DF93CF9383
:10D74000E0912F04F091300409958DB79EB70696AD
:10D750008DBFDF91CF9108950F931F9380E00E94BA
:10D7600031702AE030E080919F089091A008B901C3
:10D770000E944C779F938F9380919F089091A0086F
:10D78000B9010E944C777F936F9380911E01909115
:10D790001F01B9010E9460779F938F9380911E01B2
:10D7A00090911F01B9010E9460777F936F9382E788
:10D7B0009BE09F938F9304E210E71F930F93E091F8
:10D7C0002F04F0913004099580E10E9431708DB7EB
:10D7D0009EB70C968DBF8091A5089091A6089F9347
:10D7E0008F938091A1089091A2089F938F9385E8D1
:10D7F0009BE09F938F931F930F93E0912F04F091E1
:10D80000300409958DB79EB708968DBF1F910F9173
:10D8100008950F931F93CF93DF938091ED01C4E29E
:10D82000D0E7882309F478C080E00E9431708091AD
:10D83000340899279F938F938091360899279F9357
:10D840008F9381E99BE09F938F938E01DF93CF931A
:10D85000E0912F04F091300409958DB79EB708969A
:10D860008DBF80913508833031F48CE00E94317097
:10D8700080EA9BE005C08CE00E94317085EA9BE065
:10D880009F938F93DF93CF93E0912F04F091300417
:10D8900009950F900F900F900F908091330881FFA2
:10D8A00012C08CE00E9431708AEA9BE09F938F93B4
:10D8B0001F930F93E0912F04F091300409950F907E
:10D8C0000F900F900F9080E10E9431708FED90E0EB
:10D8D0009F938F938091390890913A089F938F93EB
:10D8E00080913708909138086AE070E00E944C7788
:10D8F0007F936F938FEA9BE09F938F9384E290E7EF
:10D900009F938F93E0912F04F091300409958DB788
:10D910009EB70A968DBF12C082E00E9431708FEBD5
:10D920009BE09F938F93DF93CF93E0912F04F0912F
:10D93000300409950F900F900F900F90DF91CF91C9
:10D940001F910F910895CF93C82F20911704209312
:10D95000180499278F32910509F1803391051CF441
:10D960004F97A1F02CC08F34910501F18F389105AC
:10D9700031F5222319F481E090E038C086E0289F39
:10D98000F0011124EB51F54F849117C086E0289FD8
:10D99000F0011124EA51F54F84910FC086E0289FD1
:10D9A000F0011124E951F54F849107C086E0289FCA
:10D9B000F0011124E851F54F849180931704909160
:10D9C0001704809118049813C0E00E94377090915A
:10D9D000170486E0989FF0011124E751F54F259137
:10D9E00034918C2FF901099580E090E0CF91089552
:10D9F0001092A00810929F081092A4081092A308F9
:10DA00001092A2081092A1081092A70890914806BF
:10DA100084E6989FC00111249093A6088093A508DE
:10DA20008AE090E00E94251790931A0480931904CD
:10DA30000895CF93DF938091190490911A040E9466
:10DA40002E17882309F4CEC08091190490911A04EE
:10DA50000A9690931A0480931904E0E0F0E09F0185
:10DA600090E05FEFA9EEB6E04BE0ED018B8187FF20
:10DA70000BC09F5F8D81E80FF11D8981280F311D3B
:10DA80008E81851708F4582F4150189647FFEDCF27
:10DA90005093A708232B41F520911F0430912004B7
:10DAA0004091210450912204BB27A52F942F832F4E
:10DAB00090931E0480931D04AA27BB27281B390BB3
:10DAC0004A0B5B0BCF01AA27BB27280F391F4A1F20
:10DAD0005B1F20931F043093200440932104509334
:10DAE0002204E5E0F0E013C020911D0430911E04F3
:10DAF0002E173F0718F4E21BF30B02C0E0E0F0E042
:10DB0000892F9927880F991FE80FF91F3596F093F1
:10DB1000A008E0939F08EF3FF10578F480911E0183
:10DB200090911F018E9F90018F9F300D9E9F300D11
:10DB30001124C90164E670E013C0CF019695879562
:10DB40009695879520911E0130911F01289FA00175
:10DB5000299F500D389F500D1124CA0169E170E0D2
:10DB60000E944C777093A2086093A10820911B0437
:10DB700030911C042E0F3F1F30931C0420931B0474
:10DB80005EE02131350770F18091A3089091A408DF
:10DB900001969093A4088093A30820513E403093AF
:10DBA0001C0420931B044091480624E6429F9001E8
:10DBB0001124281B390B3093A6082093A50881E077
:10DBC000253F38077CF4C90164E670E00E94607765
:10DBD000892B41F4442331F080E197E290932902AC
:10DBE00080932802DF91CF910895002422273327C4
:10DBF000442751E0BB27EE27FF27A0E1660F771FE0
:10DC0000881F991F001C221F331F441F660F771F98
:10DC1000881F991F001C221F331F441F2AF4050E62
:10DC20002B1F3E1F4F1F04C0051A2B0B3E0B4F0B23
:10DC3000550FBB1FEE1F587F556047FD5250AA95E8
:10DC4000E9F6E695B7955795E695B7955795852FDB
:10DC50009B2F08952227332741E0552768E0880F3E
:10DC6000991F221F331F880F991F221F331F1AF479
:10DC7000240F351F02C0241B350B440F551F487F4E
:10DC8000456037FD42506A9551F756954795569530
:10DC90004795842F0895AA2797FF04C080959095F3
:10DCA0008A1F9A1F77FF04C0609570956A1F7A1FBC
:10DCB000669F9001779FA001679F300D411D5A1FFD
:10DCC000300D411D5A1F889FF001999F2E0F3F1F55
:10DCD000401D511D899F300D411D5A1F300D411DA2
:10DCE0005A1FCA01B901112480CF4FB720E430E098
:10DCF000F8948091C9008F778093C9008091C90002
:10DD00008F7B8093C9008091C9008F7D8093C9006B
:10DD10005A9A52985B9A539A832F99278093CD00F1
:10DD20002093CC008091C80082608093C80088E175
:10DD30008093C9008091CA008F778093CA00809138
:10DD4000CA008F7B8093CA008091CA008F7D809328
:10DD5000CA008091CA008F7E8093CA008091CA0059
:10DD6000877F8093CA008091C9008B7F8093C90010
:10DD70008091CA0084608093CA008091CA0082604A
:10DD80008093CA008091C80087FF03C08091CE00B5
:10DD9000F9CF8091C90080688093C9004FBF089572
:10DDA0000F931F93CF93DF93482F4F5F893108F074
:10DDB0008BC080914907841720F44F5F4093490737
:10DDC0004150CB0183539B4268E170E00E94607731
:10DDD000A42FBB27FD01EA0FFB1FE65BF84F8081F4
:10DDE00091819B01281B390BC90137FF03C0909516
:10DDF00081959F4F069794F480912103883C30F4DD
:10DE000080912103865F8093210308C088EC809372
:10DE1000210380916F008F7D80936F00FD01EA0FD9
:10DE2000FB1FE65BF84F808191819C01220F331F1D
:10DE3000280F391F260F371F37FF02C02D5F3F4FB6
:10DE4000E901D595C795D595C795CB0101968C1756
:10DE50009D0714F4219706C061507040C617D7077C
:10DE60000CF4219680912103843BD8F08D010A0F98
:10DE70001B1FF801E65BF84F80819181FE01E81BD2
:10DE8000F90BCF0163E070E00E946077CB01880F4F
:10DE9000991F860F971F0258184FF80191838083AE
:10DEA00007C0AA0FBB1FA258B84F11961C921E9212
:10DEB000E42FFF27EE0FFF1FE65BF84FD183C083EF
:10DEC000443011F410929401DF91CF911F910F9182
:10DED0000895CF93DF932091A808822F9927807F00
:10DEE0009070409709F06CC02F3109F046C08091C6
:10DEF000A908809327042091AB08209329048091DE
:10DF0000AC0880932804822F992790934B07809325
:10DF10004A07222309F054C080912006282F332776
:10DF2000220F331FF901E258F84F118210828091BD
:10DF30002106A82FBB27AA0FBB1FFD01E258F84FEF
:10DF40001182108280912306E82FFF27EE0FFF1F1A
:10DF5000CF018258984FEC0119821882265B384F06
:10DF6000E90119821882A65BB84F11961C921E9285
:10DF7000E65BF84F1182108223C0C22FCF70CA30E7
:10DF8000F8F48091A9088093D2088091AA08809320
:10DF9000D1088091AB088093D4088091AC0880931D
:10DFA000D3086091D1087091D2088C2F0E94D06E56
:10DFB0006091D3087091D4088C2F8F5F0E94D06E2F
:10DFC000DF91CF910895CF93C82F8F3F49F480916F
:10DFD0002A048F3F29F410922C0410922B0432C093
:10DFE00020912C04222339F4CF3111F485E001C0B3
:10DFF00084E080932D0480912D0490912B0482174E
:10E00000A0F4892F809580932B048F3F19F48EEF15
:10E0100080932B0480912B04C81711F40E94696F20
:10E0200010922C0410922B040BC0E22FFF27E8550E
:10E03000F74FC0832F5F20932C049C0F90932B04E9
:10E04000C0932A04CF91089590912604933240F40E
:10E05000E92FFF27E255F74F80839F5F90932604B7
:10E060000895833218F48D5F80932604089590E21A
:10E07000E1EBF8E08FE19193815087FFFCCF0895A9
:10E08000CF93CFB723E031E0F8948091C9008F7728
:10E090008093C9008091C9008F7B8093C9008091D3
:10E0A000C9008F7D8093C9005A9A52985B9A539AFF
:10E0B000832F99278093CD002093CC008091C800B6
:10E0C00082608093C80088E18093C9008091CA0073
:10E0D0008F778093CA008091CA008F7B8093CA009B
:10E0E0008091CA0080628093CA008091CA008061DA
:10E0F0008093CA008091CA0088608093CA00809192
:10E10000C90084608093C9008091CA0084608093B4
:10E11000CA008091CA0082608093CA008091C800C2
:10E1200087FF03C08091CE00F9CF8091C90080683D
:10E130008093C9008091C90080648093C9000E94C7
:10E140003770CFBFCF910895282F99278F70907087
:10E15000892B31F4209580912504822B809325040E
:10E1600008958091F401882309F441C08091ED0263
:10E1700085FF0AC082E98093AE0883E28093AF08EE
:10E1800085E58093B00802C01092AE088091F50139
:10E190008F3071F4809125040E94A36C882341F094
:10E1A00081E98093AE088093AF0881E38093B00843
:10E1B0001092F4018091C80085FFFCCF8091C900C6
:10E1C0008F7E8093C9008091C9008E7F8093C900A3
:10E1D0008091AE08882311F48EEF01C08EE7809302
:10E1E000CE00809125048093F501109225040895B6
:10E1F0001F920F920FB60F9211248F939F93EF935C
:10E20000FF939091F401992309F040C080912E046E
:10E21000882361F48091AE08882311F483E003C061
:10E22000813999F481E080932E040FC0833099F4F2
:10E230008091AE08882349F09093AE088091C90080
:10E240008E7F8093C9008EEF1EC08091C9008160CF
:10E250008093C9000EC0833261F48091C9008E7F23
:10E260008093C9008FEF8093CE0081E08093F4010A
:10E2700014C080912E04E82FFF27E255F74F8F5FDF
:10E2800080932E0480818093CE0007C010922E04CC
:10E290008091C90080618093C900FF91EF919F91A7
:10E2A0008F910F900FBE0F901F901895EF92FF92D5
:10E2B0000F931F93CF93DF937C018B01EA01452BD2
:10E2C00039F0F80181918F01F70109952197C9F77C
:10E2D000E6E0CDB7DEB70C94D877EF92FF920F93BC
:10E2E0001F93CF93DF937C018B01EA01452B41F013
:10E2F000F8010F5F1F4F8491F70109952197C1F72E
:10E30000E6E0CDB7DEB70C94D8770F931F93CF9389
:10E310008C01C62F161634F480E2F8010995C1501D
:10E320001C16D4F3CF911F910F9108950F931F9353
:10E33000CF938C01C62F161634F480E3F8010995AB
:10E34000C1501C16D4F3CF911F910F910895A5E3EE
:10E35000B0E0EDEAF1E70C94B0772E96EEADFFADAC
:10E360002E9788249924540180912404882321F431
:10E370002C961FAE1EAE2C975EE4452E512C4C0EF3
:10E380005D1E6F01B60105C0153239F00894C11C3D
:10E39000D11CF60114911123B9F7A601461B570BA6
:10E3A00031F02C968EAD9FAD2C970E946D7111238C
:10E3B00009F46AC20894C11CD11CFF24FDA6FCA666
:10E3C0004FEFE42EF9A6F6010894C11CD11C14915C
:10E3D000153721F0812F80628837B1F4F0FE0AC032
:10E3E000F20124E030E0420E531E80809180A28032
:10E3F000B3800AC0F20142E050E0440E551E808115
:10E4000091814C01AA24BB24103221F489A58823D0
:10E41000D1F61DC0133219F458E0F52AD4CF1A32C0
:10E4200011F01D3291F41A3259F4F20182E090E0B9
:10E43000480E591EE081ECA7EE232CF6E195ECA7DF
:10E4400090E1F92AAFEDFA22BECF1B3211F419A7E1
:10E45000BACF1E32C1F5F6010894C11CD11C14912B
:10E460001A3279F4F20122E030E0420E531E40816C
:10E4700051813FEF4F3F530714F44FEF5FEFE42E0E
:10E48000A2CF40E050E0812F80538A30A0F4CA012F
:10E4900033E0880F991F3A95E1F7840F951F480FD5
:10E4A000591F410F511D40535040F6010894C11CA3
:10E4B000D11C1491E8CF8FEF4F3F580714F44FEF62
:10E4C0005FEFE42E85CF103329F4F4FC7CCF90E28B
:10E4D000F92A79CF812F81538930D8F440E050E078
:10E4E000CA0123E0880F991F2A95E1F7840F951F31
:10E4F000480F591F410F511D40535040F6010894D9
:10E50000C11CD11C1491812F80538A3048F34CA731
:10E510005FCF183619F4A4E0FA2A55CF1C3619F447
:10E52000B1E0FB2A50CF133661F43E010894611C20
:10E53000711CF20122E030E0420E531E808189837B
:10E540003CC1143421F0143611F0193651F514344D
:10E5500011F431E0F32AF0FE0AC0F20144E050E089
:10E56000440E551E80809180A280B3800CC0F201C1
:10E5700082E090E0480E591E808191814C01AA24CE
:10E5800097FCA094BA2CB7FE0AC0B094A0949094C3
:10E590008094811C911CA11CB11C8DE289A70AE00A
:10E5A0006FC01F3411F01F3631F41F3411F491E0A5
:10E5B000F92A08E064C0103779F4F201A2E0B0E073
:10E5C0004A0E5B1E808191814C01AA24BB2400E18C
:10E5D000B0E4FB2A18E753C01337C1F5F20122E07B
:10E5E00030E0420E531E608071806114710489F422
:10E5F0003E010894611C711C88E289838EE6F30158
:10E60000818385E78B838CE68C838D8389E28E837F
:10E610001F82E7FC13C08E2D992787FD9095AC01D2
:10E6200060E070E0C3010E945C76009729F0382E0C
:10E630003618E3140CF0C3C03E2CC1C0F3010190A6
:10E640000020E9F731973E2E3618B9C0153511F084
:10E65000153731F4153511F4F1E0FF2A0AE00FC047
:10E66000183519F0183709F0A0C000E1F3FE07C013
:10E6700081149104A104B10411F020E4F22A19A636
:10E68000EDA6E7FC02C03FEDF32289E2682E712C73
:10E690006C0E7D1E81149104A104B10421F44DA5DA
:10E6A000442309F47BC0802F9927AA27BB278EA774
:10E6B0009FA7A8ABB9AB202E332490E0891690E039
:10E6C000990691E0A90690E0B90648F0C501B401A9
:10E6D0002EA53FA548A959A90E94737717C0AFEF8F
:10E6E0008A169104A104B10449F040F0C401B101BB
:10E6F0000E944C779B014427552708C0882D602F26
:10E700000E944077282F3327442755272AAB3BAB5D
:10E710004CAB5DAB0A3059F48AA9880F880F880F7B
:10E720009AA9990F890F382D381B832F10C00031FB
:10E7300039F48AA98295807F482D481B842F07C011
:10E740008AA9880F880F880F582D581B852F90E0B5
:10E750002EA53FA548A959A982169306A406B50679
:10E7600008F091E08AA89BA8ACA8BDA88A3010F454
:10E77000805D04C0895A183509F48F7DD3018E93CA
:10E780003D01992309F099CF083041F4F3FE06C00A
:10E79000803321F080E3FD0182933F01CE01019699
:10E7A000382E3618F8E23F0E0BC0112309F46CC066
:10E7B0003E010894611C711C1983B1E03B2E19A61F
:10E7C000032D2DA4231827FC222489A5882311F0CA
:10E7D0000F5F02C0F6FC0E5F020DEF2CFF24C70195
:10E7E00080739070892B49F48CA5801B682F2C9620
:10E7F0008EAD9FAD2C970E94857189A5882331F03D
:10E8000041E050E0BE01675D7F4F0AC0E6FE0EC0EA
:10E8100080E38AA71BA742E050E0BE01665D7F4F00
:10E820002C968EAD9FAD2C970E945671C7018073B8
:10E830009070809749F48CA5801B682F2C968EAD24
:10E840009FAD2C970E949671622D2C968EAD9FAD38
:10E850002C970E949671832D992787FD9095AC0186
:10E86000B3012C968EAD9FAD2C970E945671E4FE9D
:10E8700089CD2CA5201B2CA7622F2C968EAD9FAD89
:10E880002C970E9485717ECDE2E1CB5C0C94CC7715
:10E890002FB740E0F894E0E0F0E081E28093570089
:10E8A0009491E2E0F0E0809357003491E4E0F0E0EE
:10E8B0008093570084912FBF9E3199F4363941F4EB
:10E8C000893011F441E00DC08A3059F442E009C0AA
:10E8D000373939F4863011F443E003C0853009F448
:10E8E00044E0842F992708959FB7F8948091C90038
:10E8F000877F8093C9008091C9008F7E8093C90073
:10E900008091C9008F778093C9008091C9008F7B67
:10E910008093C9008091C9008F7D8093C90052986F
:10E920005A9A53985B9A9FBF08951F93CF93DF9392
:10E93000182F80912404882309F48DC08091F3015D
:10E94000181709F488C080912304882321F40E94B9
:10E9500048748093230488EB9CE09F938F93CFEFC0
:10E96000D2E1DF93CF93E0912F04F0913004099529
:10E970000F900F900F900F90812F99278230910563
:10E9800001F1833091052CF4009761F0019769F053
:10E9900024C084309105D9F084309105ACF00597FE
:10E9A000C9F01BC088EA9CE002C086E99CE09F9306
:10E9B0008F93DF93CF93E0912F04F091300409956A
:10E9C00018C08DE79CE0F3CF8AE59CE0F0CF8CE4A3
:10E9D0009CE0EDCF84E49CE0EACF85EC9CE09F9343
:10E9E0008F93DF93CF93E0912F04F091300409953A
:10E9F00010E00F900F900F900F90809123048430BF
:10EA000011F0823099F40E947474812F8150833008
:10EA100018F40E942D681DC0143019F40E94407033
:10EA200018C01530B1F40E94756E13C0112389F01F
:10EA30008BED9CE09F938F938FEF92E19F938F9349
:10EA4000E0912F04F091300409950F900F900F90F2
:10EA50000F901093F301DF91CF911F9108950F93C1
:10EA60001F9381E0809324044091F201E4EFFBE0E6
:10EA700020E030E05FE4849199272F5F3F4F829F31
:10EA8000B001839F700D929F700D11244627515045
:10EA9000319657FFF0CF4093F201ECECFBE020E021
:10EAA00030E057E2849199272F5F3F4F829FB0015A
:10EAB000839F700D929F700D1124462751503196FF
:10EAC00057FFF0CF4093F20180912304882321F473
:10EAD0000E944874809323048091F201833459F09A
:10EAE00088E190E029E20FB6F894A8958093600041
:10EAF0000FBE2093600087EA91E7909330048093E3
:10EB00002F0486EF9CE09F938F930FEF12E11F93EA
:10EB10000F93E0912F04F091300409950F900F901E
:10EB20000F900F9081E690E09F938F9382E590E0A5
:10EB30009F938F931F921F92809102016AE00E941F
:10EB40004077892F99279F938F93809102010E948C
:10EB5000407799279F938F938CE19DE09F938F93AC
:10EB60001F930F93E0912F04F0913004099584EFE7
:10EB70009BE09F938F931F930F93E0912F04F0914D
:10EB8000300409958CEC9BE09F938F931F930F9318
:10EB9000E0912F04F091300409958DB79EB7469609
:10EBA0008DBF80E59DE09F938F931F930F93E0911E
:10EBB0002F04F0913004099583EC809381008091BB
:10EBC0006F00806280936F000F900F900F900F90F6
:10EBD0001F910F91089580912404882361F0809102
:10EBE000F301843011F40E94B1708091F2018334FA
:10EBF00011F01092240408951F920F920FB60F92F5
:10EC000011242F933F934F935F936F937F938F9331
:10EC10009F93AF93BF93EF93FF932091CE0080918A
:10EC2000FE018823B1F02093C6008091FE0182305E
:10EC300029F52F3F19F58FEF94E3ACE0B0E0C297D0
:10EC4000A109B109B7FFFBCF809172048093CE0078
:10EC500015C09091F301892F8150833020F4822FC9
:10EC60000E9488680BC0943021F4822F0E94A47007
:10EC700005C0953019F4822F0E94E36FFF91EF9148
:10EC8000BF91AF919F918F917F916F915F914F91C4
:10EC90003F912F910F900FBE0F901F901895FB0181
:10ECA000DC0140FF05C002C005900D9205900D9259
:10ECB00042505040C8F70895FC014150504030F098
:10ECC00001900616D1F73197CF010895882799272B
:10ECD00008955058192E84D001D06AC0BA1762071F
:10ECE000730784079507B1F188F40EF410940B2E86
:10ECF000BA2FA02D062E622F202D072E732F302D18
:10ED0000082E842F402D092E952F502DFF27552397
:10ED1000B9F0591B49F0573E98F04695379527951D
:10ED2000A795F0405395C9F776F0BA0F621F731F8D
:10ED3000841F30F4879577956795B795F040939544
:10ED400017FA0F2E0895BF1BBB27BA0B620B730B6C
:10ED5000840BF6CFDEF670C097FB4ED09F3738F0AD
:10ED6000FEE9F91B982F872F762F6B2F05C061C006
:10ED70009695879577956795F150D0F73EF49095E5
:10ED80008095709561957F4F8F4F9F4F0895E894C0
:10ED900003C097FB0EF4F3DFB62F672F782F892F70
:10EDA0009EE9002405C09A95BB0F661F771F881F38
:10EDB00011249923A1F08823B2F79F3F59F0BB0F8C
:10EDC00048F421F4002011F460FF04C06F5F7F4F0E
:10EDD0008F4F9F4F881F9795879597F9089529C062
:10EDE000052E092607FA440F551F5F3F79F0AA2721
:10EDF000A51708F051E04795880F991F9F3F31F004
:10EE0000BB27B91708F091E0879508959F919F91CE
:10EE1000112414C097FB880F991F9F3F31F0BB2727
:10EE2000B91708F091E0879508959F919F9111245B
:10EE300005C0662777278827992708959FEF80ECDC
:10EE40000895629FD001739FF001829FE00DF11D34
:10EE5000649FE00DF11D929FF00D839FF00D749F54
:10EE6000F00D659FF00D9927729FB00DE11DF91F00
:10EE7000639FB00DE11DF91FBD01CF01112408955D
:10EE8000991B79E004C0991F961708F0961B881FFC
:10EE90007A95C9F780950895AA1BBB1B51E107C05D
:10EEA000AA1FBB1FA617B70710F0A61BB70B881F1A
:10EEB000991F5A95A9F780959095BC01CD010895A9
:10EEC00097FB092E07260AD077FD04D0E5DF06D090
:10EED00000201AF4709561957F4F0895F6F790958C
:10EEE00081959F4F0895A1E21A2EAA1BBB1BFD011D
:10EEF0000DC0AA1FBB1FEE1FFF1FA217B307E40719
:10EF0000F50720F0A21BB30BE40BF50B661F771F70
:10EF1000881F991F1A9469F7609570958095909550
:10EF20009B01AC01BD01CF01089597FB092E052679
:10EF30000ED057FD04D0D7DF0AD0001C38F450950E
:10EF40004095309521953F4F4F4F5F4F0895F6F70D
:10EF500090958095709561957F4F8F4F9F4F089545
:10EF60002F923F924F925F926F927F928F929F92D9
:10EF7000AF92BF92CF92DF92EF92FF920F931F93C7
:10EF8000CF93DF93CDB7DEB7CA1BDB0B0FB6F89478
:10EF9000DEBF0FBECDBF09942A88398848885F84B8
:10EFA0006E847D848C849B84AA84B984C884DF8029
:10EFB000EE80FD800C811B81AA81B981CE0FD11D0D
:10EFC0000FB6F894DEBF0FBECDBFED010895EE0F72
:10EFD000FF1F0590F491E02D0994F999FECFB2BD81
:10EFE000A1BDF89A119600B40895F7DF01921A9422
:10EFF000E1F70895F2DFE02DF0DFF02D0895F999A3
:10F00000FECFB2BDA1BD00BC11960FB6F894FA9A1E
:10F01000F99A0FBE0895F3DF012CF1DF1124089552
:0AF020000190EDDF1A94E1F7089566
:10F02A005E010A010164FF01FFFFC01FC01F010149
:10F03A0001737373FF03007D0000C409C4096400EF
:10F04A001148656C6C6F20576F726C640000000089
:10F05A0000000000000000000000000000000000A6
:10F06A000000000000000000000000000000000096
:10F07A000000000000000000000000000000000086
:10F08A000000000000000000000000000000000076
:10F09A000053706F727400004E6F726D616C0000E5
:10F0AA00426567696E6E6572000051756164726FC0
:10F0BA000000640001200B050000ECFF00020406BA
:10F0CA00070808080706040200FEFCFAF9F8F8F82F
:10F0DA00F9FAFCFE000204060708086440415A4691
:10F0EA0064640A02969696960840403A10FB3038B5
:10F0FA000190D0030090D00300F40105F9FF0578D0
:10F10A0000FF03640B0A0D0B0C0E0B0F10FA200103
:06F11A00010170FF010F6E
:00000001FF
/branches/metro/v0.82a metro_Akku+/Flight-Ctrl_MEGA644_V0_82a_SVN_akku001.map
0,0 → 1,2111
Archive member included because of file (symbol)
 
C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libm.a(addsf3.o)
fc.o (__addsf3)
C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libm.a(addsf3x.o)
C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libm.a(addsf3.o) (__addsf3x)
C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libm.a(fixsfsi.o)
fc.o (__fixunssfsi)
C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libm.a(floatsisf.o)
fc.o (__floatsisf)
C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libm.a(fp_merge.o)
C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libm.a(addsf3.o) (__fp_merge)
C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libm.a(fp_split.o)
C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libm.a(addsf3.o) (__fp_split3)
C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libm.a(fp_zero.o)
C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libm.a(fixsfsi.o) (__fp_zero)
C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libm.a(fp_nan.o)
C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libm.a(fp_split.o) (__fp_nan)
libfc644.a(libfc.o) jetimenu.o (LIBFC_JetiBox_Putchar)
C:/WinAVR/lib/gcc/avr/3.4.6/avr5\libgcc.a(_mulsi3.o)
uart.o (__mulsi3)
C:/WinAVR/lib/gcc/avr/3.4.6/avr5\libgcc.a(_udivmodqi4.o)
main.o (__udivmodqi4)
C:/WinAVR/lib/gcc/avr/3.4.6/avr5\libgcc.a(_udivmodhi4.o)
timer0.o (__udivmodhi4)
C:/WinAVR/lib/gcc/avr/3.4.6/avr5\libgcc.a(_divmodhi4.o)
uart.o (__divmodhi4)
C:/WinAVR/lib/gcc/avr/3.4.6/avr5\libgcc.a(_udivmodsi4.o)
libfc644.a(libfc.o) (__udivmodsi4)
C:/WinAVR/lib/gcc/avr/3.4.6/avr5\libgcc.a(_divmodsi4.o)
uart.o (__divmodsi4)
C:/WinAVR/lib/gcc/avr/3.4.6/avr5\libgcc.a(_prologue.o)
uart.o (__prologue_saves__)
C:/WinAVR/lib/gcc/avr/3.4.6/avr5\libgcc.a(_epilogue.o)
uart.o (__epilogue_restores__)
C:/WinAVR/lib/gcc/avr/3.4.6/avr5\libgcc.a(_tablejump.o)
analog.o (__tablejump2__)
C:/WinAVR/lib/gcc/avr/3.4.6/avr5\libgcc.a(_copy_data.o)
main.o (__do_copy_data)
C:/WinAVR/lib/gcc/avr/3.4.6/avr5\libgcc.a(_clear_bss.o)
main.o (__do_clear_bss)
C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libc.a(memcpy_P.o)
uart.o (memcpy_P)
C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libc.a(memchr.o)
libfc644.a(libfc.o) (memchr)
C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libc.a(ee_rb.1F2021.o)
eeprom.o (__eeprom_read_byte_1F2021)
C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libc.a(ee_rblk.1F2021.o)
eeprom.o (__eeprom_read_block_1F2021)
C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libc.a(ee_rw.1F2021.o)
eeprom.o (__eeprom_read_word_1F2021)
C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libc.a(ee_wb.1F2021.o)
eeprom.o (__eeprom_write_byte_1F2021)
C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libc.a(ee_ww.1F2021.o)
eeprom.o (__eeprom_write_word_1F2021)
C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libc.a(ee_wblk.1F2021.o)
eeprom.o (__eeprom_write_block_1F2021)
 
Allocating common symbols
Common symbol size file
 
Motors5max 0x1 fc.o
KopplungsteilNickRoll
0x2 fc.o
MesswertGierBias 0x2 fc.o
SPITransferCompleted
0x1 spi.o
KopplungsteilRollNick
0x2 fc.o
RequiredMotors 0x1 eeprom.o
MotorsTmax 0x2 fc.o
Parameter_Servo4 0x1 fc.o
GPSInfo 0x8 spi.o
EE_Parameter 0x74 eeprom.o
DiffRoll 0x2 fc.o
MesswertRoll 0x2 fc.o
pos2 0x1 fc.o
TrimNick 0x2 fc.o
Parameter_NaviGpsP 0x1 fc.o
loop2 0x1 fc.o
ErsatzKompassInGrad
0x2 fc.o
GyroFaktorGier 0x1 fc.o
MittelIntegralRoll2
0x4 fc.o
Parameter_NaviGpsModeControl
0x1 fc.o
TrimRoll 0x2 fc.o
SPI_TX_Buffer 0x2 spi.o
Motors2max 0x1 fc.o
MesswertNick 0x2 fc.o
NC_Version 0x5 spi.o
SPI_BufferIndex 0x1 spi.o
Aktuell_ay 0x2 analog.o
Motors5 0x1 fc.o
ToNaviCtrl 0x20 spi.o
Data3D 0xe uart.o
Parameter_NaviGpsI 0x1 fc.o
Capacity 0x9 capacity.o
Timer3D 0x2 uart.o
SPI_ChkSum 0x1 spi.o
RohMesswertRoll 0x2 fc.o
MIN_GAS 0x1 fc.o
Parameter_NaviGpsACC
0x1 fc.o
MittelIntegralNick2
0x4 fc.o
Channels 0x1 rc.o
Debug_Timer 0x2 uart.o
RohMesswertNick 0x2 fc.o
IntegralFaktorGier 0x1 fc.o
fdknerTjg5i83th589v44
0x6 libfc644.a(libfc.o)
DiffNick 0x2 fc.o
MittelIntegralNick 0x4 fc.o
Parameter_Servo3 0x1 fc.o
VersionInfo 0xa uart.o
Motors2 0x1 fc.o
Motors0 0x1 fc.o
MotorTest 0x10 uart.o
SPI_RxBufferIndex 0x1 spi.o
NaviAccNick 0x2 fc.o
Parameter_J16Timing
0x1 fc.o
MittelIntegralRoll 0x4 fc.o
NeutralAccZ_float 0x4 analog.o
Motors6 0x1 fc.o
Parameter_Servo5 0x1 fc.o
SPI_RxDataValid 0x1 spi.o
Motors3max 0x1 fc.o
PPM_in 0x34 rc.o
pos1 0x1 fc.o
WinkelOut 0x8 uart.o
ExternControl 0xb uart.o
IntegralFaktor 0x1 fc.o
Motors7 0x1 fc.o
Motors0max 0x1 fc.o
Aktuell_az 0x2 analog.o
Motors4max 0x1 fc.o
Motors3 0x1 fc.o
FromNaviCtrl 0x1a spi.o
StartLuftdruck 0x2 analog.o
_printf_P 0x2 main.o
tmp_motorwert 0x18 fc.o
Kompass_Timer 0x2 uart.o
RxdBuffer 0xaa uart.o
Mixer 0x4e eeprom.o
Motors1max 0x1 fc.o
Display_Timer 0x2 uart.o
Parameter_NaviOperatingRadius
0x1 fc.o
TxdBuffer 0xaa uart.o
SPI_Buffer 0x1a spi.o
Aktuell_Nick 0x2 analog.o
Aktuell_Roll 0x2 analog.o
IlIlIlIIIIIIIlIllllll
0x23 libfc644.a(libfc.o)
pos3 0x1 fc.o
Aktuell_ax 0x2 analog.o
Parameter_NaviWindCorrection
0x1 fc.o
s 0x1 fc.o
h 0x1 fc.o
Motors4 0x1 fc.o
Mittelwert_AccNick 0x2 fc.o
Parameter_NaviSpeedCompensation
0x1 fc.o
DebugOut 0x42 uart.o
DruckOffsetSetting 0x1 analog.o
FromNaviCtrl_Value 0x5 spi.o
BLConfig 0x8 twimaster.o
Motor 0x60 twimaster.o
Aktuell_Gier 0x2 analog.o
Parameter_J17Timing
0x1 fc.o
MAX_GAS 0x1 fc.o
Motors1 0x1 fc.o
loop1 0x1 fc.o
Motors6max 0x1 fc.o
MesswertGier 0x2 fc.o
Parameter_J16Bitmask
0x1 fc.o
ConfirmFrame 0x1 uart.o
NaviAccRoll 0x2 fc.o
GyroFaktor 0x1 fc.o
m 0x1 fc.o
ErsatzKompass 0x4 fc.o
Mittelwert_AccRoll 0x2 fc.o
Parameter_NaviGpsGain
0x1 fc.o
fgfdogjWEti45e9tjh394
0x4 libfc644.a(libfc.o)
PPM_diff 0x34 rc.o
Parameter_ExternalControl
0x1 fc.o
Motors7max 0x1 fc.o
loop3 0x1 fc.o
Parameter_J17Bitmask
0x1 fc.o
Parameter_NaviGpsD 0x1 fc.o
 
Memory Configuration
 
Name Origin Length Attributes
text 0x00000000 0x00020000 xr
data 0x00800060 0x0000ffa0 rw !x
eeprom 0x00810000 0x00010000 rw !x
*default* 0x00000000 0xffffffff
 
Linker script and memory map
 
Address of section .data set to 0x800100
LOAD C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5/crtm644p.o
LOAD main.o
LOAD uart.o
LOAD timer0.o
LOAD analog.o
LOAD menu.o
LOAD eeprom.o
LOAD twimaster.o
LOAD rc.o
LOAD fc.o
LOAD GPS.o
LOAD spi.o
LOAD led.o
LOAD Spektrum.o
LOAD mymath.o
LOAD jetimenu.o
LOAD capacity.o
LOAD debug.o
LOAD isqrt.o
LOAD C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libm.a
LOAD libfc644.a
LOAD C:/WinAVR/lib/gcc/avr/3.4.6/avr5\libgcc.a
LOAD C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libc.a
LOAD C:/WinAVR/lib/gcc/avr/3.4.6/avr5\libgcc.a
 
.hash
*(.hash)
 
.dynsym
*(.dynsym)
 
.dynstr
*(.dynstr)
 
.gnu.version
*(.gnu.version)
 
.gnu.version_d
*(.gnu.version_d)
 
.gnu.version_r
*(.gnu.version_r)
 
.rel.init
*(.rel.init)
 
.rela.init
*(.rela.init)
 
.rel.text
*(.rel.text)
*(.rel.text.*)
*(.rel.gnu.linkonce.t*)
 
.rela.text
*(.rela.text)
*(.rela.text.*)
*(.rela.gnu.linkonce.t*)
 
.rel.fini
*(.rel.fini)
 
.rela.fini
*(.rela.fini)
 
.rel.rodata
*(.rel.rodata)
*(.rel.rodata.*)
*(.rel.gnu.linkonce.r*)
 
.rela.rodata
*(.rela.rodata)
*(.rela.rodata.*)
*(.rela.gnu.linkonce.r*)
 
.rel.data
*(.rel.data)
*(.rel.data.*)
*(.rel.gnu.linkonce.d*)
 
.rela.data
*(.rela.data)
*(.rela.data.*)
*(.rela.gnu.linkonce.d*)
 
.rel.ctors
*(.rel.ctors)
 
.rela.ctors
*(.rela.ctors)
 
.rel.dtors
*(.rel.dtors)
 
.rela.dtors
*(.rela.dtors)
 
.rel.got
*(.rel.got)
 
.rela.got
*(.rela.got)
 
.rel.bss
*(.rel.bss)
 
.rela.bss
*(.rela.bss)
 
.rel.plt
*(.rel.plt)
 
.rela.plt
*(.rela.plt)
 
.text 0x00000000 0xf02a
*(.vectors)
.vectors 0x00000000 0x7c C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5/crtm644p.o
0x00000000 __vectors
0x00000000 __vector_default
0x0000007c __ctors_start = .
*(.ctors)
0x0000007c __ctors_end = .
0x0000007c __dtors_start = .
*(.dtors)
0x0000007c __dtors_end = .
*(.progmem.gcc*)
.progmem.gcc_sw_table
0x0000007c 0x24 analog.o
.progmem.gcc_sw_table
0x000000a0 0x24 menu.o
.progmem.gcc_sw_table
0x000000c4 0x2e twimaster.o
*(.progmem*)
.progmem.data 0x000000f2 0x120 main.o
.progmem.data 0x00000212 0x215 uart.o
0x00000212 ANALOG_TEXT
.progmem.data 0x00000427 0x39 analog.o
.progmem.data 0x00000460 0x515 menu.o
.progmem.data 0x00000975 0xa2 eeprom.o
.progmem.data 0x00000a17 0x18 fc.o
.progmem.data 0x00000a2f 0xb6 mymath.o
0x00000a2f pgm_sinlookup
.progmem.data 0x00000ae5 0xe7 jetimenu.o
0x00000ae5 JetiBox_Menu
.progmem.data 0x00000bcc 0x1aa libfc644.a(libfc.o)
0x00000bf4 Msg1
0x00000c5a Rec_Spektrum_LOW_RES
0x00000bcc Msg2
0x00000c4c Rec_Jeti
0x00000ca8 Rec_PPM
0x00000c44 Rec_ACT_DSL
0x00000c96 Rec_Spektrum
0x00000c7d Rec_Spektrum_HI_RES
0x00000d76 . = ALIGN (0x2)
*(.init0)
*(.init1)
*(.init2)
.init2 0x00000d76 0xc C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5/crtm644p.o
*(.init3)
*(.init4)
.init4 0x00000d82 0x16 C:/WinAVR/lib/gcc/avr/3.4.6/avr5\libgcc.a(_copy_data.o)
0x00000d82 __do_copy_data
.init4 0x00000d98 0x10 C:/WinAVR/lib/gcc/avr/3.4.6/avr5\libgcc.a(_clear_bss.o)
0x00000d98 __do_clear_bss
*(.init5)
.init5 0x00000da8 0x52 libfc644.a(libfc.o)
0x00000da8 ndfcvbghs
*(.init6)
*(.init7)
*(.init8)
*(.init9)
.init9 0x00000dfa 0x4 C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5/crtm644p.o
*(.text)
.text 0x00000dfe 0x4 C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5/crtm644p.o
0x00000dfe __vector_1
0x00000dfe __bad_interrupt
0x00000dfe __vector_6
0x00000dfe __vector_3
0x00000dfe __vector_23
0x00000dfe __vector_25
0x00000dfe __vector_11
0x00000dfe __vector_13
0x00000dfe __vector_17
0x00000dfe __vector_19
0x00000dfe __vector_7
0x00000dfe __vector_27
0x00000dfe __vector_5
0x00000dfe __vector_4
0x00000dfe __vector_2
0x00000dfe __vector_21
0x00000dfe __vector_15
0x00000dfe __vector_29
0x00000dfe __vector_8
0x00000dfe __vector_14
0x00000dfe __vector_10
0x00000dfe __vector_16
.text 0x00000e02 0x9fc main.o
0x00000e6c LipoDetection
0x00000e02 CalMk3Mag
0x00000f80 main
.text 0x000017fe 0x1436 uart.o
0x000017fe __vector_22
0x0000260e UART_Init
0x00001d0a BearbeiteRxDaten
0x00001a5e AddCRC
0x00002694 DatenUebertragung
0x00001c36 Decode64
0x00001abe SendOutData
0x0000186a __vector_20
0x000025fe uart_putchar
.text 0x00002c34 0x948 timer0.o
0x00002e4a SetDelay
0x00002ebe TIMER2_Init
0x00002f1c Timer_Init
0x00002f4a CalculateServo
0x00002e5c CheckDelay
0x00002e74 Delay_ms
0x00002e8e Delay_ms_Mess
0x00003294 __vector_9
0x00002c34 __vector_18
.text 0x0000357c 0xa48 analog.o
0x0000380c __vector_24
0x0000363e SucheGyroOffset
0x0000357c ADC_Init
0x00003588 SucheLuftruckOffset
.text 0x00003fc4 0x15aa menu.o
0x00003fc4 LcdClear
0x00003fd6 Menu_Putchar
0x00003fec Menu
.text 0x0000556e 0x846 eeprom.o
0x000059ae SetActiveParamSet
0x00005590 EEProm_Checksum
0x00005916 GetParamByte
0x00005898 ParamSet_DefaultSet3
0x00005a4c MixerTable_ReadFromEEProm
0x0000556e RAM_Checksum
0x00005602 CommonDefaults
0x00005922 SetParamByte
0x0000592c GetParamWord
0x00005936 SetParamWord
0x00005acc MixerTable_Default
0x00005940 ParamSet_ReadFromEEProm
0x00005a90 MixerTable_WriteToEEProm
0x000059c8 ParamSet_WriteToEEProm
0x00005b78 SetDefaultParameter
0x00005bf2 ParamSet_Init
0x00005b5a GetActiveParamSet
0x0000581a ParamSet_DefaultSet2
0x0000579c ParamSet_DefaultSet1
0x000055b8 ParamSet_DefaultStickMapping
.text 0x00005db4 0x93a twimaster.o
0x00005e08 I2C_Reset
0x00005db4 I2C_Init
0x0000644c I2C_WriteBLConfig
0x000065a0 I2C_ReadBLConfig
0x00005e4c __vector_26
.text 0x000066ee 0x4f8 rc.o
0x00006726 __vector_12
0x000066ee rc_sum_init
.text 0x00006be6 0x5960 fc.o
0x00006be6 CopyDebugValues
0x0000843e SendMotorData
0x000074da Mittelwert
0x00006dfa Piep
0x00006e3c CalibrierMittelwert
0x00006f7e SetNeutral
0x000084b8 ParameterZuordnung
0x000089f2 MotorRegler
.text 0x0000c546 0x54 GPS.o
0x0000c546 GPS_Neutral
0x0000c588 GPS_BerechneZielrichtung
.text 0x0000c59a 0x89a spi.o
0x0000c6f2 UpdateSPI_Buffer
0x0000cdb2 SPI_StartTransmitPacket
0x0000c5dc SPI_TransmitByte
0x0000c59a SPI_MasterInit
.text 0x0000ce34 0x226 led.o
0x0000ce34 LED_Init
0x0000ce52 LED_Update
.text 0x0000d05a 0x348 Spektrum.o
0x0000d05a SpektrumUartInit
0x0000d110 SpektrumParser
.text 0x0000d3a2 0xa8 mymath.o
0x0000d43a c_cos_8192
0x0000d3a2 c_sin_8192
.text 0x0000d44a 0x5a6 jetimenu.o
0x0000d758 Menu_Battery
0x0000d44a Menu_Status
0x0000d812 Menu_PosInfo
0x0000d630 Menu_Temperature
0x0000d946 JetiBox_Update
.text 0x0000d9f0 0x1fa capacity.o
0x0000da32 Capacity_Update
0x0000d9f0 Capacity_Init
.text 0x0000dbea 0x100 isqrt.o
0x0000dbea isqrt32
0x0000dc96 ihypot
0x0000dc54 isqrt16
.text 0x0000dcea 0xfb4 libfc644.a(libfc.o)
0x0000ebf8 __vector_28
0x0000e92a LIBFC_ReceiverInit
0x0000dda0 FGRT0589rge90gj459gg4
0x0000ea5e LIBFC_Init
0x0000e06e LIBFC_JetiBox_Clear
0x0000dfc6 FGtj76uzh56z3grEg5t45
0x0000e1f0 __vector_30
0x0000e080 INiuzBtergGIBuB76T0G5
0x0000e048 LIBFC_JetiBox_Putchar
0x0000e34e IIllllIllIlllIIlllII
0x0000ebd6 LIBFC_Polling
0x0000e162 a48784362857632195659
0x0000e30a fgmjgnrtuth587th9rTrw
0x0000e890 LIBFC_GetCPUType
0x0000dcea fomklkdtn89SFGrsgt9rf
0x0000e2ac njkvnfuhgbuzrgezgf483
0x0000e148 KLNMIOHMUHG76GFGr43r3
0x0000ded2 DFGeefWEF43tgt5uGreg5
0x0000e32c wqqeRT45jth8g758735h4
0x0000e8e8 awokdjwqdjcjuhcuweih
0x0000e062 LIBFC_JetiBox_SetPos
0x0000e2da lkvgnfdgun57th38rgh84
.text 0x0000ec9e 0x1a C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libc.a(memcpy_P.o)
0x0000ec9e memcpy_P
.text 0x0000ecb8 0x1a C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libc.a(memchr.o)
0x0000ecb8 memchr
0x0000ecd2 . = ALIGN (0x2)
*(.text.*)
.text.fplib 0x0000ecd2 0xa C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libm.a(addsf3.o)
0x0000ecd2 __subsf3
0x0000ecd4 __addsf3
.text.fplib 0x0000ecdc 0x7c C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libm.a(addsf3x.o)
0x0000ecdc __addsf3x
.text.fplib 0x0000ed58 0x36 C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libm.a(fixsfsi.o)
0x0000ed58 __fixsfsi
0x0000ed7e __fp_lneg
0x0000ed58 __fixunssfsi
.text.fplib 0x0000ed8e 0x18 C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libm.a(floatsisf.o)
0x0000ed92 __floatsisf
0x0000ed8e __floatunssisf
.text.fplib 0x0000eda6 0x3a C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libm.a(fp_merge.o)
0x0000edb0 __fp_merge
.text.fplib 0x0000ede0 0x52 C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libm.a(fp_split.o)
0x0000ede0 __fp_split3
0x0000ede6 __fp_split2
0x0000edf8 __fp_split1
0x0000ee14 __fp_split_a
.text.fplib 0x0000ee32 0xa C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libm.a(fp_zero.o)
0x0000ee32 __fp_zero
0x0000ee38 __fp_zerox
.text.fplib 0x0000ee3c 0x6 C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libm.a(fp_nan.o)
0x0000ee3c __fp_nanERANGE
0x0000ee3c __fp_nan
0x0000ee3c __fp_nanEDOM
0x0000ee3c __fp_nanx
.text.libgcc 0x0000ee42 0x3e C:/WinAVR/lib/gcc/avr/3.4.6/avr5\libgcc.a(_mulsi3.o)
0x0000ee42 __mulsi3
.text.libgcc 0x0000ee80 0x18 C:/WinAVR/lib/gcc/avr/3.4.6/avr5\libgcc.a(_udivmodqi4.o)
0x0000ee80 __udivmodqi4
.text.libgcc 0x0000ee98 0x28 C:/WinAVR/lib/gcc/avr/3.4.6/avr5\libgcc.a(_udivmodhi4.o)
0x0000ee98 __udivmodhi4
.text.libgcc 0x0000eec0 0x26 C:/WinAVR/lib/gcc/avr/3.4.6/avr5\libgcc.a(_divmodhi4.o)
0x0000eec0 __divmodhi4
0x0000eec0 _div
.text.libgcc 0x0000eee6 0x44 C:/WinAVR/lib/gcc/avr/3.4.6/avr5\libgcc.a(_udivmodsi4.o)
0x0000eee6 __udivmodsi4
.text.libgcc 0x0000ef2a 0x36 C:/WinAVR/lib/gcc/avr/3.4.6/avr5\libgcc.a(_divmodsi4.o)
0x0000ef2a __divmodsi4
.text.libgcc 0x0000ef60 0x38 C:/WinAVR/lib/gcc/avr/3.4.6/avr5\libgcc.a(_prologue.o)
0x0000ef60 __prologue_saves__
.text.libgcc 0x0000ef98 0x36 C:/WinAVR/lib/gcc/avr/3.4.6/avr5\libgcc.a(_epilogue.o)
0x0000ef98 __epilogue_restores__
.text.libgcc 0x0000efce 0xc C:/WinAVR/lib/gcc/avr/3.4.6/avr5\libgcc.a(_tablejump.o)
0x0000efd2 __tablejump__
0x0000efce __tablejump2__
.text.eeprom 0x0000efda 0x10 C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libc.a(ee_rb.1F2021.o)
0x0000efda __eeprom_read_byte_1F2021
.text.eeprom 0x0000efea 0xa C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libc.a(ee_rblk.1F2021.o)
0x0000efea __eeprom_read_block_1F2021
.text.eeprom 0x0000eff4 0xa C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libc.a(ee_rw.1F2021.o)
0x0000eff4 __eeprom_read_word_1F2021
.text.eeprom 0x0000effe 0x18 C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libc.a(ee_wb.1F2021.o)
0x0000effe __eeprom_write_byte_1F2021
.text.eeprom 0x0000f016 0xa C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libc.a(ee_ww.1F2021.o)
0x0000f016 __eeprom_write_word_1F2021
.text.eeprom 0x0000f020 0xa C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libc.a(ee_wblk.1F2021.o)
0x0000f020 __eeprom_write_block_1F2021
0x0000f02a . = ALIGN (0x2)
*(.fini9)
*(.fini8)
*(.fini7)
*(.fini6)
*(.fini5)
*(.fini4)
*(.fini3)
*(.fini2)
*(.fini1)
*(.fini0)
0x0000f02a _etext = .
 
.data 0x00800100 0xf6 load address 0x0000f02a
0x00800100 PROVIDE (__data_start, .)
*(.data)
.data 0x00800100 0x4 main.o
0x00800102 PlatinenVersion
0x00800100 BattLowVoltageWarning
0x00800101 SendVersionToNavi
.data 0x00800104 0x4 uart.o
0x00800104 MeineSlaveAdresse
0x00800105 PcZugriff
0x00800107 UebertragungAbgeschlossen
0x00800106 DebugTextAnforderung
.data 0x00800108 0x8 timer0.o
0x0080010a ServoRollOffset
0x0080010e CalculateServoSignals
0x00800108 BeepMuster
0x0080010c ServoNickOffset
.data 0x00800110 0x10 analog.o
0x0080011e UBat
0x00800113 AnalogOffsetNick
0x00800111 AnalogOffsetGier
0x0080011a HiResRoll
0x00800110 AdReady
0x00800112 AnalogOffsetRoll
0x00800114 MessLuftdruck
0x00800116 Luftdruck
0x0080011c HiResNick
.data 0x00800120 0x51 menu.o
0x00800120 MaxMenue
0x00800121 DisplayBuff
.data 0x00800171 0x21 eeprom.o
.data 0x00800192 0x2 twimaster.o
0x00800192 I2CTimeout
.data 0x00800194 0x1 rc.o
0x00800194 NewPpmData
.data 0x00800195 0x4f fc.o
0x008001de settingdest
0x008001dc keynumber
0x008001bc Parameter_CouplingYawCorrection
0x008001d5 Umschlag180Nick
0x008001cf Ki
0x008001ce Parameter_Luftdruck_D
0x008001bb Parameter_DynamicStability
0x008001c5 Parameter_Gyro_Gier_P
0x008001ca Parameter_KompassWirkung
0x008001c1 Parameter_ServoNickControl
0x008001c7 Parameter_Gyro_P
0x008001c8 Parameter_Gyro_D
0x008001cc Parameter_Hoehe_P
0x008001bd Parameter_AchsKopplung2
0x0080019a ExternHoehenValue
0x008001cb Parameter_Hoehe_ACC_Wirkung
0x00800196 GIER_GRAD_FAKTOR
0x008001bf Parameter_LoopGasLimit
0x008001be Parameter_AchsKopplung1
0x0080019c sintab
0x008001db updatemotors
0x008001c6 Parameter_Gyro_I
0x008001c4 Parameter_Gyro_Gier_I
0x008001d1 Umschlag180Roll
0x008001cd Parameter_MaxHoehe
0x008001c2 Parameter_I_Faktor
0x008001c9 Parameter_Hoehe_GPS_Z
0x00800195 VarioCharacter
0x008001c0 Parameter_ServoRollControl
0x008001d9 KompassSignalSchlecht
0x008001c3 Parameter_Gier_P
.data 0x008001e4 0xb spi.o
0x008001e4 SPI_CommandSequence
0x008001ee FromNC_Rotate_C
0x008001ed NaviDataOkay
.data 0x008001ef 0x2 led.o
0x008001f0 J16Mask
0x008001ef J17Mask
.data 0x008001f1 0x1 Spektrum.o
.data 0x008001f2 0x4 libfc644.a(libfc.o)
0x008001f3 kf089uwjef89234hffhh
0x008001f2 md5
0x008001f4 f8jhreghreGerg45gE542
*(.gnu.linkonce.d*)
0x008001f6 . = ALIGN (0x2)
0x008001f6 _edata = .
0x008001f6 PROVIDE (__data_end, .)
 
.bss 0x008001f6 0x6df
0x008001f6 PROVIDE (__bss_start, .)
*(.bss)
.bss 0x008001f6 0x8 main.o
0x008001f7 FlugSekunden
0x008001fb FlugMinuten
0x008001f9 FlugMinutenGesamt
0x008001f6 FoundMotors
.bss 0x008001fe 0x22 uart.o
0x00800210 SioTmp
0x00800201 Display_Interval
0x00800208 PC_DebugTimeout
0x00800213 GetVersionAnforderung
0x0080020e NeueKoordinateEmpfangen
0x00800203 Intervall3D
0x00800214 DebugDataAnforderung
0x00800207 PC_MotortestActive
0x0080020f NeuerDatensatzEmpfangen
0x00800215 DebugDisplayAnforderung
0x00800205 DebugDataIntervall
0x0080020d CntCrcError
0x008001ff AboTimeOut
0x00800212 GetPPMChannelAnforderung
0x00800216 DebugDisplayAnforderung1
0x00800211 DisplayLine
0x00800217 GetExternalControl
0x0080020a pRxData
0x00800209 RxDataLen
0x0080020c AnzahlEmpfangsBytes
0x008001fe JetiUpdateModeActive
.bss 0x00800220 0x17 timer0.o
0x00800227 SendSPI
0x00800224 RemainingPulse
0x00800228 beeptime
0x00800222 ServoNickValue
0x0080022d CountMilliseconds
0x00800226 ServoActive
0x0080022a cntKompass
0x0080022c UpdateMotor
0x00800220 ServoRollValue
.bss 0x00800237 0x32 analog.o
0x00800240 messanzahl_AccHoch
0x00800237 ZaehlMessungen
0x00800239 VarioMeter
0x0080023b ExpandBaro
0x00800249 AdWertRoll
0x00800243 AdWertAccNick
0x0080024b AdWertNick
0x0080024d AdWertGierFilter
0x00800247 AdWertGier
0x00800251 AdWertNickFilter
0x00800245 AdWertAccRoll
0x0080023c SummenHoehe
0x0080024f AdWertRollFilter
0x00800241 AdWertAccHoch
.bss 0x00800269 0x3 menu.o
0x0080026b DispPtr
0x0080026a MenuePunkt
0x00800269 RemoteKeys
.bss 0x0080026c 0x10 twimaster.o
0x00800274 motor_write
0x00800270 BLFlags
0x00800276 twi_state
0x00800271 MissingMotor
0x00800273 motor_read
0x00800275 dac_channel
0x00800272 I2C_TransferActive
0x0080026e BLConfig_WriteMask
0x0080026c BLConfig_ReadMask
.bss 0x0080027c 0x71 rc.o
0x0080027c tmpChannels
.bss 0x008002ed 0xfd fc.o
0x00800341 Mess_Integral_Gier2
0x0080030d LageKorrekturRoll
0x0080031b StickGier
0x00800303 Looping_Oben
0x00800351 Mess_IntegralNick2
0x00800371 IntegralNick2
0x00800321 SenderOkay
0x008002fe Parameter_UserParam5
0x0080035d IntegralAccZ
0x00800359 Integral_Gier
0x0080031f StickNick
0x00800318 MotorenEin
0x00800379 ControlHeading
0x00800308 Looping_Nick
0x00800365 IntegralAccNick
0x00800313 HoehenWert
0x00800349 Mess_IntegralRoll2
0x008002f4 ExternStickGier
0x00800304 Looping_Unten
0x008002f0 MaxStickRoll
0x008002ee modell_fliegt
0x00800302 Parameter_UserParam1
0x00800388 AdNeutralRoll
0x00800309 HoverGas
0x00800306 Looping_Links
0x00800375 IntegralNick
0x00800335 Mess_Integral_Hoch
0x008002fc Parameter_UserParam7
0x0080038c BaroExpandActive
0x0080037c NaviCntAcc
0x0080032d TrichterFlug
0x00800380 NeutralAccX
0x00800339 SummeRoll
0x0080038f CurrentOffset
0x00800345 Mess_Integral_Gier
0x00800317 StartTrigger
0x0080030b LageKorrekturNick
0x008002ff Parameter_UserParam4
0x00800331 KompassStartwert
0x00800319 StickGas
0x00800307 Looping_Roll
0x008002fa CareFree
0x008002f8 ExternStickNick
0x00800301 Parameter_UserParam2
0x00800382 StartNeutralNick
0x00800333 KompassValue
0x00800361 IntegralAccRoll
0x0080032f KompassRichtung
0x0080034d Mess_IntegralRoll
0x0080038e pos4
0x0080031d StickRoll
0x0080038a AdNeutralNick
0x0080037e NeutralAccY
0x00800322 Poti
0x0080037a NeutralAccZ
0x008002fd Parameter_UserParam6
0x00800369 IntegralRoll2
0x008002f2 MaxStickNick
0x008002ed FC_StatusFlags
0x00800300 Parameter_UserParam3
0x00800386 AdNeutralGier
0x00800384 StartNeutralRoll
0x00800305 Looping_Rechts
0x008002f6 ExternStickRoll
0x0080032e HoehenReglerAktiv
0x0080030f SollHoehe
0x008002fb Parameter_UserParam8
0x0080032b GierGyroFehler
0x00800355 Mess_IntegralNick
0x0080033d SummeNick
0x0080036d IntegralRoll
.bss 0x008003ea 0x18 GPS.o
0x008003ee GpsZiel_X
0x008003fa GPS_Roll2
0x008003f2 GpsAktuell_Y
0x00800400 GPS_Nick
0x008003fc GPS_Nick2
0x008003f6 GpsAktuell_X
0x008003ea GpsZiel_Y
0x008003fe GPS_Roll
.bss 0x00800402 0x5 spi.o
0x00800404 FromNC_Rotate_S
0x00800402 NC_ErrorCode
0x00800403 SPI_CommandCounter
.bss 0x00800407 0xb led.o
0x00800409 LED2_Timing
0x0080040b LED1_Timing
0x00800407 J17Blinkcount
0x00800408 J16Blinkcount
.bss 0x00800412 0x5 Spektrum.o
0x00800412 SpektrumTimer
.bss 0x00800417 0x2 jetimenu.o
.bss 0x00800419 0xa capacity.o
0x00800419 update_timer
.bss 0x00800423 0xc libfc644.a(libfc.o)
0x00800424 IllIIllIlIlIlIllllII
0x00800427 DJFIORJHcvjr894hjhffj
0x00800426 IIIIIlIllllllIIllIIll
0x00800423 weiuncefcnsavsgvghjc
0x00800428 fij48zrhoih3498fhfo90
0x00800429 fojk48fj478fhw7fhw39
0x00800425 XSasC2389ufwejiCjuz32
*(COMMON)
COMMON 0x0080042f 0x2 main.o
0x0080042f _printf_P
COMMON 0x00800431 0x1da uart.o
0x00800431 Data3D
0x0080043f Timer3D
0x00800441 Debug_Timer
0x00800443 VersionInfo
0x0080044d MotorTest
0x0080045d WinkelOut
0x00800465 ExternControl
0x00800470 Kompass_Timer
0x00800472 RxdBuffer
0x0080051c Display_Timer
0x0080051e TxdBuffer
0x008005c8 DebugOut
0x0080060a ConfirmFrame
COMMON 0x0080060b 0x13 analog.o
0x0080060b Aktuell_ay
0x0080060d NeutralAccZ_float
0x00800611 Aktuell_az
0x00800613 StartLuftdruck
0x00800615 Aktuell_Nick
0x00800617 Aktuell_Roll
0x00800619 Aktuell_ax
0x0080061b DruckOffsetSetting
0x0080061c Aktuell_Gier
COMMON 0x0080061e 0xc3 eeprom.o
0x0080061e RequiredMotors
0x0080061f EE_Parameter
0x00800693 Mixer
COMMON 0x008006e1 0x68 twimaster.o
0x008006e1 BLConfig
0x008006e9 Motor
COMMON 0x00800749 0x69 rc.o
0x00800749 Channels
0x0080074a PPM_in
0x0080077e PPM_diff
COMMON 0x008007b2 0x80 fc.o
0x008007b2 Motors5max
0x008007b3 KopplungsteilNickRoll
0x008007b5 MesswertGierBias
0x008007b7 KopplungsteilRollNick
0x008007b9 MotorsTmax
0x008007bb Parameter_Servo4
0x008007bc DiffRoll
0x008007be MesswertRoll
0x008007c0 pos2
0x008007c1 TrimNick
0x008007c3 Parameter_NaviGpsP
0x008007c4 loop2
0x008007c5 ErsatzKompassInGrad
0x008007c7 GyroFaktorGier
0x008007c8 MittelIntegralRoll2
0x008007cc Parameter_NaviGpsModeControl
0x008007cd TrimRoll
0x008007cf Motors2max
0x008007d0 MesswertNick
0x008007d2 Motors5
0x008007d3 Parameter_NaviGpsI
0x008007d4 RohMesswertRoll
0x008007d6 MIN_GAS
0x008007d7 Parameter_NaviGpsACC
0x008007d8 MittelIntegralNick2
0x008007dc RohMesswertNick
0x008007de IntegralFaktorGier
0x008007df DiffNick
0x008007e1 MittelIntegralNick
0x008007e5 Parameter_Servo3
0x008007e6 Motors2
0x008007e7 Motors0
0x008007e8 NaviAccNick
0x008007ea Parameter_J16Timing
0x008007eb MittelIntegralRoll
0x008007ef Motors6
0x008007f0 Parameter_Servo5
0x008007f1 Motors3max
0x008007f2 pos1
0x008007f3 IntegralFaktor
0x008007f4 Motors7
0x008007f5 Motors0max
0x008007f6 Motors4max
0x008007f7 Motors3
0x008007f8 tmp_motorwert
0x00800810 Motors1max
0x00800811 Parameter_NaviOperatingRadius
0x00800812 pos3
0x00800813 Parameter_NaviWindCorrection
0x00800814 s
0x00800815 h
0x00800816 Motors4
0x00800817 Mittelwert_AccNick
0x00800819 Parameter_NaviSpeedCompensation
0x0080081a Parameter_J17Timing
0x0080081b MAX_GAS
0x0080081c Motors1
0x0080081d loop1
0x0080081e Motors6max
0x0080081f MesswertGier
0x00800821 Parameter_J16Bitmask
0x00800822 NaviAccRoll
0x00800824 GyroFaktor
0x00800825 m
0x00800826 ErsatzKompass
0x0080082a Mittelwert_AccRoll
0x0080082c Parameter_NaviGpsGain
0x0080082d Parameter_ExternalControl
0x0080082e Motors7max
0x0080082f loop3
0x00800830 Parameter_J17Bitmask
0x00800831 Parameter_NaviGpsD
COMMON 0x00800832 0x6d spi.o
0x00800832 SPITransferCompleted
0x00800833 GPSInfo
0x0080083b SPI_TX_Buffer
0x0080083d NC_Version
0x00800842 SPI_BufferIndex
0x00800843 ToNaviCtrl
0x00800863 SPI_ChkSum
0x00800864 SPI_RxBufferIndex
0x00800865 SPI_RxDataValid
0x00800866 FromNaviCtrl
0x00800880 SPI_Buffer
0x0080089a FromNaviCtrl_Value
COMMON 0x0080089f 0x9 capacity.o
0x0080089f Capacity
COMMON 0x008008a8 0x2d libfc644.a(libfc.o)
0x008008a8 fdknerTjg5i83th589v44
0x008008ae IlIlIlIIIIIIIlIllllll
0x008008d1 fgfdogjWEti45e9tjh394
0x008008d5 PROVIDE (__bss_end, .)
0x0000f02a __data_load_start = LOADADDR (.data)
0x0000f120 __data_load_end = (__data_load_start + SIZEOF (.data))
 
.noinit 0x008008d5 0x0
0x008008d5 PROVIDE (__noinit_start, .)
*(.noinit*)
0x008008d5 PROVIDE (__noinit_end, .)
0x008008d5 _end = .
0x008008d5 PROVIDE (__heap_start, .)
 
.eeprom 0x00810000 0x0
*(.eeprom*)
0x00810000 __eeprom_end = .
 
.stab 0x00000000 0x9d8
*(.stab)
.stab 0x00000000 0x36c C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5/crtm644p.o
.stab 0x0000036c 0x66c isqrt.o
0x678 (size before relaxing)
 
.stabstr 0x00000000 0xda
*(.stabstr)
.stabstr 0x00000000 0xda C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5/crtm644p.o
 
.stab.excl
*(.stab.excl)
 
.stab.exclstr
*(.stab.exclstr)
 
.stab.index
*(.stab.index)
 
.stab.indexstr
*(.stab.indexstr)
 
.comment
*(.comment)
 
.debug
*(.debug)
 
.line
*(.line)
 
.debug_srcinfo
*(.debug_srcinfo)
 
.debug_sfnames
*(.debug_sfnames)
 
.debug_aranges
*(.debug_aranges)
 
.debug_pubnames
*(.debug_pubnames)
 
.debug_info
*(.debug_info)
*(.gnu.linkonce.wi.*)
 
.debug_abbrev
*(.debug_abbrev)
 
.debug_line
*(.debug_line)
 
.debug_frame
*(.debug_frame)
 
.debug_str
*(.debug_str)
 
.debug_loc
*(.debug_loc)
 
.debug_macinfo
*(.debug_macinfo)
OUTPUT(Flight-Ctrl_MEGA644_V0_82a_SVN_akku001.elf elf32-avr)
 
Cross Reference Table
 
Symbol File
ADC_Init analog.o
main.o
ANALOG_TEXT uart.o
AboTimeOut uart.o
AdNeutralGier fc.o
spi.o
rc.o
menu.o
AdNeutralNick fc.o
rc.o
menu.o
analog.o
AdNeutralRoll fc.o
rc.o
menu.o
analog.o
AdReady analog.o
fc.o
timer0.o
main.o
AdWertAccHoch analog.o
fc.o
menu.o
AdWertAccNick analog.o
fc.o
menu.o
AdWertAccRoll analog.o
fc.o
menu.o
AdWertGier analog.o
spi.o
fc.o
menu.o
AdWertGierFilter analog.o
AdWertNick analog.o
fc.o
menu.o
AdWertNickFilter analog.o
fc.o
AdWertRoll analog.o
fc.o
menu.o
AdWertRollFilter analog.o
fc.o
AddCRC uart.o
Aktuell_Gier analog.o
Aktuell_Nick analog.o
Aktuell_Roll analog.o
Aktuell_ax analog.o
Aktuell_ay analog.o
Aktuell_az fc.o
analog.o
AnalogOffsetGier analog.o
twimaster.o
menu.o
AnalogOffsetNick analog.o
twimaster.o
menu.o
AnalogOffsetRoll analog.o
twimaster.o
menu.o
AnzahlEmpfangsBytes uart.o
BLConfig twimaster.o
uart.o
BLConfig_ReadMask twimaster.o
BLConfig_WriteMask twimaster.o
BLFlags twimaster.o
fc.o
analog.o
main.o
BaroExpandActive fc.o
BattLowVoltageWarning main.o
spi.o
fc.o
BearbeiteRxDaten uart.o
main.o
BeepMuster timer0.o
fc.o
main.o
CalMk3Mag main.o
CalculateServo timer0.o
main.o
CalculateServoSignals timer0.o
main.o
CalibrierMittelwert fc.o
Capacity capacity.o
jetimenu.o
spi.o
fc.o
menu.o
main.o
Capacity_Init capacity.o
main.o
Capacity_Update capacity.o
main.o
CareFree fc.o
Channels libfc644.a(libfc.o)
rc.o
menu.o
CheckDelay timer0.o
capacity.o
twimaster.o
analog.o
uart.o
main.o
CntCrcError uart.o
CommonDefaults eeprom.o
ConfirmFrame uart.o
ControlHeading fc.o
spi.o
CopyDebugValues fc.o
uart.o
CountMilliseconds timer0.o
CurrentOffset fc.o
DFGeefWEF43tgt5uGreg5 libfc644.a(libfc.o)
DJFIORJHcvjr894hjhffj libfc644.a(libfc.o)
Data3D uart.o
DatenUebertragung uart.o
main.o
DebugDataAnforderung uart.o
DebugDataIntervall uart.o
DebugDisplayAnforderung uart.o
DebugDisplayAnforderung1 uart.o
DebugOut spi.o
fc.o
uart.o
main.o
DebugTextAnforderung uart.o
Debug_Timer uart.o
Decode64 uart.o
Delay_ms timer0.o
fc.o
Delay_ms_Mess timer0.o
fc.o
analog.o
DiffNick fc.o
DiffRoll fc.o
DispPtr menu.o
uart.o
DisplayBuff menu.o
uart.o
DisplayLine uart.o
Display_Interval uart.o
Display_Timer uart.o
DruckOffsetSetting fc.o
analog.o
EEProm_Checksum eeprom.o
EE_Parameter libfc644.a(libfc.o)
capacity.o
jetimenu.o
Spektrum.o
led.o
spi.o
fc.o
rc.o
eeprom.o
menu.o
analog.o
timer0.o
uart.o
main.o
ErsatzKompass jetimenu.o
spi.o
fc.o
uart.o
ErsatzKompassInGrad fc.o
ExpandBaro analog.o
fc.o
ExternControl fc.o
menu.o
uart.o
main.o
ExternHoehenValue fc.o
ExternStickGier fc.o
main.o
ExternStickNick fc.o
main.o
ExternStickRoll fc.o
main.o
FC_StatusFlags fc.o
libfc644.a(libfc.o)
led.o
spi.o
twimaster.o
main.o
FGRT0589rge90gj459gg4 libfc644.a(libfc.o)
FGtj76uzh56z3grEg5t45 libfc644.a(libfc.o)
FlugMinuten main.o
menu.o
FlugMinutenGesamt main.o
menu.o
FlugSekunden main.o
jetimenu.o
FoundMotors main.o
FromNC_Rotate_C spi.o
fc.o
FromNC_Rotate_S spi.o
fc.o
FromNaviCtrl spi.o
fc.o
main.o
FromNaviCtrl_Value spi.o
fc.o
GIER_GRAD_FAKTOR fc.o
jetimenu.o
spi.o
uart.o
main.o
GPSInfo jetimenu.o
spi.o
GPS_BerechneZielrichtung GPS.o
GPS_Neutral GPS.o
fc.o
GPS_Nick GPS.o
spi.o
fc.o
main.o
GPS_Nick2 GPS.o
fc.o
GPS_Roll GPS.o
spi.o
fc.o
main.o
GPS_Roll2 GPS.o
fc.o
GetActiveParamSet eeprom.o
spi.o
fc.o
menu.o
uart.o
GetExternalControl uart.o
GetPPMChannelAnforderung uart.o
GetParamByte eeprom.o
analog.o
main.o
GetParamWord eeprom.o
fc.o
GetVersionAnforderung uart.o
GierGyroFehler fc.o
GpsAktuell_X GPS.o
GpsAktuell_Y GPS.o
GpsZiel_X GPS.o
GpsZiel_Y GPS.o
GyroFaktor fc.o
GyroFaktorGier fc.o
HiResNick analog.o
fc.o
HiResRoll analog.o
fc.o
HoehenReglerAktiv fc.o
HoehenWert fc.o
jetimenu.o
spi.o
menu.o
analog.o
HoverGas fc.o
I2CTimeout twimaster.o
menu.o
main.o
I2C_Init twimaster.o
main.o
I2C_ReadBLConfig twimaster.o
uart.o
I2C_Reset twimaster.o
main.o
I2C_TransferActive twimaster.o
fc.o
I2C_WriteBLConfig twimaster.o
uart.o
IIIIIlIllllllIIllIIll libfc644.a(libfc.o)
IIllllIllIlllIIlllII libfc644.a(libfc.o)
INiuzBtergGIBuB76T0G5 libfc644.a(libfc.o)
IlIlIlIIIIIIIlIllllll libfc644.a(libfc.o)
IllIIllIlIlIlIllllII libfc644.a(libfc.o)
IntegralAccNick fc.o
IntegralAccRoll fc.o
IntegralAccZ fc.o
IntegralFaktor fc.o
IntegralFaktorGier fc.o
IntegralNick fc.o
spi.o
menu.o
timer0.o
uart.o
IntegralNick2 fc.o
IntegralRoll fc.o
spi.o
menu.o
timer0.o
uart.o
IntegralRoll2 fc.o
Integral_Gier fc.o
Intervall3D uart.o
J16Blinkcount led.o
J16Mask led.o
J17Blinkcount led.o
J17Mask led.o
JetiBox_Menu jetimenu.o
JetiBox_Update jetimenu.o
libfc644.a(libfc.o)
JetiUpdateModeActive uart.o
libfc644.a(libfc.o)
main.o
KLNMIOHMUHG76GFGr43r3 libfc644.a(libfc.o)
Ki fc.o
KompassRichtung fc.o
spi.o
menu.o
timer0.o
uart.o
KompassSignalSchlecht fc.o
KompassStartwert fc.o
spi.o
menu.o
timer0.o
uart.o
KompassValue fc.o
spi.o
menu.o
timer0.o
uart.o
Kompass_Timer uart.o
KopplungsteilNickRoll fc.o
KopplungsteilRollNick fc.o
LED1_Timing led.o
LED2_Timing led.o
LED_Init led.o
fc.o
eeprom.o
LED_Update led.o
main.o
LIBFC_GetCPUType libfc644.a(libfc.o)
uart.o
LIBFC_Init libfc644.a(libfc.o)
main.o
LIBFC_JetiBox_Clear libfc644.a(libfc.o)
jetimenu.o
LIBFC_JetiBox_Putchar libfc644.a(libfc.o)
jetimenu.o
LIBFC_JetiBox_SetPos libfc644.a(libfc.o)
jetimenu.o
LIBFC_Polling libfc644.a(libfc.o)
main.o
LIBFC_ReceiverInit libfc644.a(libfc.o)
fc.o
uart.o
main.o
LageKorrekturNick fc.o
LageKorrekturRoll fc.o
LcdClear menu.o
uart.o
main.o
LipoDetection main.o
fc.o
uart.o
Looping_Links fc.o
Looping_Nick fc.o
Looping_Oben fc.o
Looping_Rechts fc.o
Looping_Roll fc.o
Looping_Unten fc.o
Luftdruck analog.o
fc.o
MAX_GAS fc.o
MIN_GAS fc.o
MaxMenue menu.o
uart.o
MaxStickNick fc.o
MaxStickRoll fc.o
MeineSlaveAdresse uart.o
Menu menu.o
uart.o
Menu_Battery jetimenu.o
Menu_PosInfo jetimenu.o
Menu_Putchar menu.o
uart.o
Menu_Status jetimenu.o
Menu_Temperature jetimenu.o
MenuePunkt menu.o
uart.o
MessLuftdruck analog.o
fc.o
menu.o
Mess_IntegralNick fc.o
Mess_IntegralNick2 fc.o
Mess_IntegralRoll fc.o
Mess_IntegralRoll2 fc.o
Mess_Integral_Gier fc.o
uart.o
Mess_Integral_Gier2 fc.o
Mess_Integral_Hoch fc.o
analog.o
MesswertGier fc.o
MesswertGierBias fc.o
MesswertNick fc.o
MesswertRoll fc.o
MissingMotor twimaster.o
fc.o
menu.o
main.o
MittelIntegralNick fc.o
MittelIntegralNick2 fc.o
MittelIntegralRoll fc.o
MittelIntegralRoll2 fc.o
Mittelwert fc.o
Mittelwert_AccNick fc.o
Mittelwert_AccRoll fc.o
Mixer fc.o
twimaster.o
eeprom.o
menu.o
uart.o
main.o
MixerTable_Default eeprom.o
MixerTable_ReadFromEEProm eeprom.o
MixerTable_WriteToEEProm eeprom.o
uart.o
Motor capacity.o
jetimenu.o
fc.o
twimaster.o
menu.o
main.o
MotorRegler fc.o
main.o
MotorTest fc.o
uart.o
MotorenEin fc.o
led.o
rc.o
twimaster.o
uart.o
main.o
Motors0 fc.o
Motors0max fc.o
Motors1 fc.o
Motors1max fc.o
Motors2 fc.o
Motors2max fc.o
Motors3 fc.o
Motors3max fc.o
Motors4 fc.o
Motors4max fc.o
Motors5 fc.o
Motors5max fc.o
Motors6 fc.o
Motors6max fc.o
Motors7 fc.o
Motors7max fc.o
MotorsTmax fc.o
Msg1 libfc644.a(libfc.o)
Msg2 libfc644.a(libfc.o)
NC_ErrorCode spi.o
jetimenu.o
NC_Version spi.o
main.o
NaviAccNick spi.o
fc.o
NaviAccRoll spi.o
fc.o
NaviCntAcc fc.o
spi.o
NaviDataOkay spi.o
jetimenu.o
timer0.o
main.o
NeueKoordinateEmpfangen uart.o
NeuerDatensatzEmpfangen uart.o
NeutralAccX fc.o
menu.o
analog.o
NeutralAccY fc.o
menu.o
analog.o
NeutralAccZ fc.o
menu.o
analog.o
NeutralAccZ_float analog.o
NewPpmData rc.o
libfc644.a(libfc.o)
Spektrum.o
fc.o
PC_DebugTimeout uart.o
PC_MotortestActive uart.o
fc.o
twimaster.o
PPM_diff libfc644.a(libfc.o)
Spektrum.o
fc.o
rc.o
PPM_in libfc644.a(libfc.o)
Spektrum.o
spi.o
fc.o
rc.o
menu.o
timer0.o
uart.o
main.o
ParamSet_DefaultSet1 eeprom.o
ParamSet_DefaultSet2 eeprom.o
ParamSet_DefaultSet3 eeprom.o
ParamSet_DefaultStickMapping eeprom.o
ParamSet_Init eeprom.o
main.o
ParamSet_ReadFromEEProm eeprom.o
fc.o
uart.o
ParamSet_WriteToEEProm eeprom.o
uart.o
ParameterZuordnung fc.o
Parameter_AchsKopplung1 fc.o
Parameter_AchsKopplung2 fc.o
Parameter_CouplingYawCorrection fc.o
Parameter_DynamicStability fc.o
Parameter_ExternalControl fc.o
Parameter_Gier_P fc.o
Parameter_Gyro_D fc.o
Parameter_Gyro_Gier_I fc.o
Parameter_Gyro_Gier_P fc.o
Parameter_Gyro_I fc.o
Parameter_Gyro_P fc.o
Parameter_Hoehe_ACC_Wirkung fc.o
Parameter_Hoehe_GPS_Z fc.o
Parameter_Hoehe_P fc.o
Parameter_I_Faktor fc.o
Parameter_J16Bitmask fc.o
Parameter_J16Timing led.o
fc.o
Parameter_J17Bitmask fc.o
Parameter_J17Timing led.o
fc.o
Parameter_KompassWirkung fc.o
Parameter_LoopGasLimit fc.o
Parameter_Luftdruck_D fc.o
Parameter_MaxHoehe fc.o
Parameter_NaviGpsACC fc.o
Parameter_NaviGpsD fc.o
Parameter_NaviGpsGain fc.o
Parameter_NaviGpsI fc.o
Parameter_NaviGpsModeControl fc.o
Parameter_NaviGpsP fc.o
Parameter_NaviOperatingRadius fc.o
Parameter_NaviSpeedCompensation fc.o
Parameter_NaviWindCorrection fc.o
Parameter_Servo3 fc.o
timer0.o
Parameter_Servo4 fc.o
timer0.o
Parameter_Servo5 fc.o
timer0.o
Parameter_ServoNickControl fc.o
spi.o
menu.o
timer0.o
Parameter_ServoRollControl fc.o
spi.o
timer0.o
Parameter_UserParam1 fc.o
spi.o
uart.o
Parameter_UserParam2 fc.o
spi.o
uart.o
Parameter_UserParam3 fc.o
spi.o
Parameter_UserParam4 fc.o
spi.o
Parameter_UserParam5 fc.o
spi.o
Parameter_UserParam6 fc.o
spi.o
Parameter_UserParam7 fc.o
spi.o
Parameter_UserParam8 fc.o
spi.o
PcZugriff uart.o
main.o
Piep fc.o
uart.o
main.o
PlatinenVersion main.o
libfc644.a(libfc.o)
spi.o
fc.o
rc.o
eeprom.o
menu.o
analog.o
timer0.o
Poti fc.o
spi.o
menu.o
RAM_Checksum eeprom.o
twimaster.o
Rec_ACT_DSL libfc644.a(libfc.o)
Rec_Jeti libfc644.a(libfc.o)
Rec_PPM libfc644.a(libfc.o)
Rec_Spektrum libfc644.a(libfc.o)
Rec_Spektrum_HI_RES libfc644.a(libfc.o)
Rec_Spektrum_LOW_RES libfc644.a(libfc.o)
RemainingPulse timer0.o
RemoteKeys menu.o
uart.o
RequiredMotors jetimenu.o
twimaster.o
eeprom.o
main.o
RohMesswertNick fc.o
RohMesswertRoll fc.o
RxDataLen uart.o
RxdBuffer libfc644.a(libfc.o)
uart.o
SPITransferCompleted spi.o
SPI_Buffer spi.o
SPI_BufferIndex spi.o
SPI_ChkSum spi.o
SPI_CommandCounter spi.o
SPI_CommandSequence spi.o
SPI_MasterInit spi.o
main.o
SPI_RxBufferIndex spi.o
SPI_RxDataValid spi.o
SPI_StartTransmitPacket spi.o
main.o
SPI_TX_Buffer spi.o
SPI_TransmitByte spi.o
main.o
SendMotorData fc.o
main.o
SendOutData uart.o
SendSPI timer0.o
spi.o
main.o
SendVersionToNavi main.o
fc.o
SenderOkay fc.o
libfc644.a(libfc.o)
Spektrum.o
spi.o
rc.o
menu.o
timer0.o
main.o
ServoActive timer0.o
fc.o
uart.o
main.o
ServoNickOffset timer0.o
ServoNickValue timer0.o
fc.o
menu.o
ServoRollOffset timer0.o
ServoRollValue timer0.o
SetActiveParamSet eeprom.o
fc.o
SetDefaultParameter eeprom.o
uart.o
SetDelay timer0.o
capacity.o
twimaster.o
analog.o
uart.o
main.o
SetNeutral fc.o
main.o
SetParamByte eeprom.o
analog.o
main.o
SetParamWord eeprom.o
fc.o
menu.o
SioTmp uart.o
SollHoehe fc.o
spi.o
menu.o
SpektrumParser Spektrum.o
libfc644.a(libfc.o)
SpektrumTimer Spektrum.o
timer0.o
SpektrumUartInit Spektrum.o
libfc644.a(libfc.o)
StartLuftdruck fc.o
analog.o
StartNeutralNick fc.o
StartNeutralRoll fc.o
StartTrigger fc.o
StickGas fc.o
StickGier fc.o
main.o
StickNick fc.o
main.o
StickRoll fc.o
main.o
SucheGyroOffset analog.o
fc.o
SucheLuftruckOffset analog.o
fc.o
main.o
SummeNick fc.o
uart.o
SummeRoll fc.o
uart.o
SummenHoehe analog.o
fc.o
TIMER2_Init timer0.o
main.o
Timer3D uart.o
Timer_Init timer0.o
main.o
ToNaviCtrl spi.o
TrichterFlug fc.o
TrimNick fc.o
TrimRoll fc.o
TxdBuffer uart.o
UART_Init uart.o
main.o
UBat analog.o
capacity.o
jetimenu.o
spi.o
fc.o
menu.o
main.o
UebertragungAbgeschlossen uart.o
Umschlag180Nick fc.o
uart.o
Umschlag180Roll fc.o
uart.o
UpdateMotor timer0.o
main.o
UpdateSPI_Buffer spi.o
VarioCharacter fc.o
jetimenu.o
VarioMeter analog.o
fc.o
VersionInfo led.o
spi.o
fc.o
menu.o
analog.o
uart.o
main.o
WinkelOut spi.o
fc.o
uart.o
main.o
XSasC2389ufwejiCjuz32 libfc644.a(libfc.o)
ZaehlMessungen analog.o
fc.o
__addsf3 C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libm.a(addsf3.o)
fc.o
__addsf3x C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libm.a(addsf3x.o)
C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libm.a(addsf3.o)
__bad_interrupt C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5/crtm644p.o
__bss_end C:/WinAVR/lib/gcc/avr/3.4.6/avr5\libgcc.a(_clear_bss.o)
__bss_start C:/WinAVR/lib/gcc/avr/3.4.6/avr5\libgcc.a(_clear_bss.o)
__data_end C:/WinAVR/lib/gcc/avr/3.4.6/avr5\libgcc.a(_copy_data.o)
__data_load_start C:/WinAVR/lib/gcc/avr/3.4.6/avr5\libgcc.a(_copy_data.o)
__data_start C:/WinAVR/lib/gcc/avr/3.4.6/avr5\libgcc.a(_copy_data.o)
__divmodhi4 C:/WinAVR/lib/gcc/avr/3.4.6/avr5\libgcc.a(_divmodhi4.o)
libfc644.a(libfc.o)
capacity.o
jetimenu.o
mymath.o
Spektrum.o
spi.o
fc.o
rc.o
menu.o
timer0.o
uart.o
__divmodsi4 C:/WinAVR/lib/gcc/avr/3.4.6/avr5\libgcc.a(_divmodsi4.o)
jetimenu.o
spi.o
fc.o
menu.o
uart.o
__do_clear_bss C:/WinAVR/lib/gcc/avr/3.4.6/avr5\libgcc.a(_clear_bss.o)
libfc644.a(libfc.o)
debug.o
capacity.o
jetimenu.o
mymath.o
Spektrum.o
led.o
spi.o
GPS.o
fc.o
rc.o
twimaster.o
eeprom.o
menu.o
analog.o
timer0.o
uart.o
main.o
__do_copy_data C:/WinAVR/lib/gcc/avr/3.4.6/avr5\libgcc.a(_copy_data.o)
libfc644.a(libfc.o)
debug.o
capacity.o
jetimenu.o
mymath.o
Spektrum.o
led.o
spi.o
GPS.o
fc.o
rc.o
twimaster.o
eeprom.o
menu.o
analog.o
timer0.o
uart.o
main.o
__eeprom_read_block_1F2021 C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libc.a(ee_rblk.1F2021.o)
eeprom.o
__eeprom_read_byte_1F2021 C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libc.a(ee_rb.1F2021.o)
C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libc.a(ee_rw.1F2021.o)
C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libc.a(ee_rblk.1F2021.o)
eeprom.o
__eeprom_read_word_1F2021 C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libc.a(ee_rw.1F2021.o)
eeprom.o
__eeprom_write_block_1F2021 C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libc.a(ee_wblk.1F2021.o)
eeprom.o
__eeprom_write_byte_1F2021 C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libc.a(ee_wb.1F2021.o)
C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libc.a(ee_wblk.1F2021.o)
C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libc.a(ee_ww.1F2021.o)
eeprom.o
__eeprom_write_word_1F2021 C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libc.a(ee_ww.1F2021.o)
eeprom.o
__epilogue_restores__ C:/WinAVR/lib/gcc/avr/3.4.6/avr5\libgcc.a(_epilogue.o)
libfc644.a(libfc.o)
Spektrum.o
fc.o
eeprom.o
menu.o
timer0.o
uart.o
__fixsfsi C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libm.a(fixsfsi.o)
__fixunssfsi C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libm.a(fixsfsi.o)
fc.o
__floatsisf C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libm.a(floatsisf.o)
fc.o
__floatunssisf C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libm.a(floatsisf.o)
__fp_lneg C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libm.a(fixsfsi.o)
C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libm.a(floatsisf.o)
__fp_merge C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libm.a(fp_merge.o)
C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libm.a(floatsisf.o)
C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libm.a(addsf3.o)
__fp_nan C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libm.a(fp_nan.o)
C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libm.a(fp_split.o)
__fp_nanEDOM C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libm.a(fp_nan.o)
__fp_nanERANGE C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libm.a(fp_nan.o)
__fp_nanx C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libm.a(fp_nan.o)
__fp_split1 C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libm.a(fp_split.o)
C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libm.a(fixsfsi.o)
__fp_split2 C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libm.a(fp_split.o)
__fp_split3 C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libm.a(fp_split.o)
C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libm.a(addsf3.o)
__fp_split_a C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libm.a(fp_split.o)
__fp_zero C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libm.a(fp_zero.o)
C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libm.a(fp_merge.o)
C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libm.a(fixsfsi.o)
__fp_zerox C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libm.a(fp_zero.o)
C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libm.a(addsf3x.o)
__heap_end C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5/crtm644p.o
__init C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5/crtm644p.o
__mulsi3 C:/WinAVR/lib/gcc/avr/3.4.6/avr5\libgcc.a(_mulsi3.o)
fc.o
analog.o
timer0.o
uart.o
__prologue_saves__ C:/WinAVR/lib/gcc/avr/3.4.6/avr5\libgcc.a(_prologue.o)
libfc644.a(libfc.o)
fc.o
timer0.o
uart.o
__stack C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5/crtm644p.o
main.o
__subsf3 C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libm.a(addsf3.o)
__tablejump2__ C:/WinAVR/lib/gcc/avr/3.4.6/avr5\libgcc.a(_tablejump.o)
twimaster.o
menu.o
analog.o
__tablejump__ C:/WinAVR/lib/gcc/avr/3.4.6/avr5\libgcc.a(_tablejump.o)
__udivmodhi4 C:/WinAVR/lib/gcc/avr/3.4.6/avr5\libgcc.a(_udivmodhi4.o)
C:/WinAVR/lib/gcc/avr/3.4.6/avr5\libgcc.a(_divmodhi4.o)
libfc644.a(libfc.o)
capacity.o
jetimenu.o
fc.o
menu.o
analog.o
timer0.o
__udivmodqi4 C:/WinAVR/lib/gcc/avr/3.4.6/avr5\libgcc.a(_udivmodqi4.o)
libfc644.a(libfc.o)
menu.o
main.o
__udivmodsi4 C:/WinAVR/lib/gcc/avr/3.4.6/avr5\libgcc.a(_udivmodsi4.o)
C:/WinAVR/lib/gcc/avr/3.4.6/avr5\libgcc.a(_divmodsi4.o)
libfc644.a(libfc.o)
__vector_1 C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5/crtm644p.o
__vector_10 C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5/crtm644p.o
__vector_11 C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5/crtm644p.o
__vector_12 rc.o
C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5/crtm644p.o
__vector_13 C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5/crtm644p.o
__vector_14 C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5/crtm644p.o
__vector_15 C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5/crtm644p.o
__vector_16 C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5/crtm644p.o
__vector_17 C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5/crtm644p.o
__vector_18 timer0.o
C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5/crtm644p.o
__vector_19 C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5/crtm644p.o
__vector_2 C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5/crtm644p.o
__vector_20 uart.o
C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5/crtm644p.o
__vector_21 C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5/crtm644p.o
__vector_22 uart.o
C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5/crtm644p.o
__vector_23 C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5/crtm644p.o
__vector_24 analog.o
C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5/crtm644p.o
__vector_25 C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5/crtm644p.o
__vector_26 twimaster.o
C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5/crtm644p.o
__vector_27 C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5/crtm644p.o
__vector_28 libfc644.a(libfc.o)
C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5/crtm644p.o
__vector_29 C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5/crtm644p.o
__vector_3 C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5/crtm644p.o
__vector_30 libfc644.a(libfc.o)
C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5/crtm644p.o
__vector_4 C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5/crtm644p.o
__vector_5 C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5/crtm644p.o
__vector_6 C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5/crtm644p.o
__vector_7 C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5/crtm644p.o
__vector_8 C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5/crtm644p.o
__vector_9 timer0.o
C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5/crtm644p.o
__vector_default C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5/crtm644p.o
__vectors C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5/crtm644p.o
_div C:/WinAVR/lib/gcc/avr/3.4.6/avr5\libgcc.a(_divmodhi4.o)
_printf_P libfc644.a(libfc.o)
jetimenu.o
fc.o
eeprom.o
menu.o
analog.o
uart.o
main.o
a48784362857632195659 libfc644.a(libfc.o)
awokdjwqdjcjuhcuweih libfc644.a(libfc.o)
beeptime timer0.o
capacity.o
spi.o
fc.o
main.o
c_cos_8192 mymath.o
fc.o
c_sin_8192 mymath.o
cntKompass timer0.o
dac_channel twimaster.o
f8jhreghreGerg45gE542 libfc644.a(libfc.o)
fdknerTjg5i83th589v44 libfc644.a(libfc.o)
fgfdogjWEti45e9tjh394 libfc644.a(libfc.o)
fgmjgnrtuth587th9rTrw libfc644.a(libfc.o)
fij48zrhoih3498fhfo90 libfc644.a(libfc.o)
fojk48fj478fhw7fhw39 libfc644.a(libfc.o)
fomklkdtn89SFGrsgt9rf libfc644.a(libfc.o)
h fc.o
ihypot isqrt.o
fc.o
isqrt16 isqrt.o
isqrt32 isqrt.o
keynumber fc.o
kf089uwjef89234hffhh libfc644.a(libfc.o)
lkvgnfdgun57th38rgh84 libfc644.a(libfc.o)
loop1 fc.o
loop2 fc.o
loop3 fc.o
m fc.o
main main.o
C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5/crtm644p.o
md5 libfc644.a(libfc.o)
memchr C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libc.a(memchr.o)
libfc644.a(libfc.o)
memcpy_P C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libc.a(memcpy_P.o)
uart.o
messanzahl_AccHoch analog.o
modell_fliegt fc.o
analog.o
motor_read twimaster.o
main.o
motor_write twimaster.o
fc.o
ndfcvbghs libfc644.a(libfc.o)
njkvnfuhgbuzrgezgf483 libfc644.a(libfc.o)
pRxData uart.o
pgm_sinlookup mymath.o
pos1 fc.o
pos2 fc.o
pos3 fc.o
pos4 fc.o
rc_sum_init rc.o
main.o
s fc.o
settingdest fc.o
sintab fc.o
timer0.o
tmpChannels rc.o
tmp_motorwert fc.o
twi_state twimaster.o
fc.o
analog.o
uart_putchar uart.o
libfc644.a(libfc.o)
fc.o
eeprom.o
analog.o
main.o
update_timer capacity.o
updatemotors fc.o
weiuncefcnsavsgvghjc libfc644.a(libfc.o)
wqqeRT45jth8g758735h4 libfc644.a(libfc.o)
/branches/metro/v0.82a metro_Akku+/FlightCtrl.aps
0,0 → 1,0
<AVRStudio><MANAGEMENT><ProjectName>FlightCtrl</ProjectName><Created>15-May-2007 11:20:41</Created><LastEdit>11-Oct-2007 22:58:54</LastEdit><ICON>241</ICON><ProjectType>0</ProjectType><Created>15-May-2007 11:20:41</Created><Version>4</Version><Build>4, 13, 0, 528</Build><ProjectTypeName>AVR GCC</ProjectTypeName></MANAGEMENT><CODE_CREATION><ObjectFile>default\Flight-Ctrl.elf</ObjectFile><EntryFile></EntryFile><SaveFolder>F:\SVN\MikroKopter\FlightCtrl\branches\V0.64_ZeroWarnings\</SaveFolder></CODE_CREATION><DEBUG_TARGET><CURRENT_TARGET>AVR Simulator</CURRENT_TARGET><CURRENT_PART>ATmega644.xml</CURRENT_PART><BREAKPOINTS></BREAKPOINTS><IO_EXPAND><HIDE>false</HIDE></IO_EXPAND><REGISTERNAMES><Register>R00</Register><Register>R01</Register><Register>R02</Register><Register>R03</Register><Register>R04</Register><Register>R05</Register><Register>R06</Register><Register>R07</Register><Register>R08</Register><Register>R09</Register><Register>R10</Register><Register>R11</Register><Register>R12</Register><Register>R13</Register><Register>R14</Register><Register>R15</Register><Register>R16</Register><Register>R17</Register><Register>R18</Register><Register>R19</Register><Register>R20</Register><Register>R21</Register><Register>R22</Register><Register>R23</Register><Register>R24</Register><Register>R25</Register><Register>R26</Register><Register>R27</Register><Register>R28</Register><Register>R29</Register><Register>R30</Register><Register>R31</Register></REGISTERNAMES><COM>Auto</COM><COMType>0</COMType><WATCHNUM>0</WATCHNUM><WATCHNAMES><Pane0></Pane0><Pane1></Pane1><Pane2></Pane2><Pane3></Pane3></WATCHNAMES><BreakOnTrcaeFull>0</BreakOnTrcaeFull></DEBUG_TARGET><Debugger><Triggers></Triggers></Debugger><AVRGCCPLUGIN><FILES><SOURCEFILE>uart.c</SOURCEFILE><SOURCEFILE>analog.c</SOURCEFILE><SOURCEFILE>eeprom.c</SOURCEFILE><SOURCEFILE>fc.c</SOURCEFILE><SOURCEFILE>GPS.c</SOURCEFILE><SOURCEFILE>main.c</SOURCEFILE><SOURCEFILE>menu.c</SOURCEFILE><SOURCEFILE>printf_P.c</SOURCEFILE><SOURCEFILE>rc.c</SOURCEFILE><SOURCEFILE>timer0.c</SOURCEFILE><SOURCEFILE>twimaster.c</SOURCEFILE><HEADERFILE>uart.h</HEADERFILE><HEADERFILE>_Settings.h</HEADERFILE><HEADERFILE>analog.h</HEADERFILE><HEADERFILE>fc.h</HEADERFILE><HEADERFILE>gps.h</HEADERFILE><HEADERFILE>main.h</HEADERFILE><HEADERFILE>menu.h</HEADERFILE><HEADERFILE>old_macros.h</HEADERFILE><HEADERFILE>printf_P.h</HEADERFILE><HEADERFILE>rc.h</HEADERFILE><HEADERFILE>Settings.h</HEADERFILE><HEADERFILE>timer0.h</HEADERFILE><HEADERFILE>twimaster.h</HEADERFILE></FILES><CONFIGS><CONFIG><NAME>default</NAME><USESEXTERNALMAKEFILE>NO</USESEXTERNALMAKEFILE><EXTERNALMAKEFILE></EXTERNALMAKEFILE><PART>atmega644</PART><HEX>1</HEX><LIST>1</LIST><MAP>1</MAP><OUTPUTFILENAME>Flight-Ctrl.elf</OUTPUTFILENAME><OUTPUTDIR>default\</OUTPUTDIR><ISDIRTY>1</ISDIRTY><OPTIONS><OPTION><FILE>GPS.c</FILE><OPTIONLIST></OPTIONLIST></OPTION><OPTION><FILE>analog.c</FILE><OPTIONLIST></OPTIONLIST></OPTION><OPTION><FILE>eeprom.c</FILE><OPTIONLIST></OPTIONLIST></OPTION><OPTION><FILE>fc.c</FILE><OPTIONLIST></OPTIONLIST></OPTION><OPTION><FILE>main.c</FILE><OPTIONLIST></OPTIONLIST></OPTION><OPTION><FILE>menu.c</FILE><OPTIONLIST></OPTIONLIST></OPTION><OPTION><FILE>printf_P.c</FILE><OPTIONLIST></OPTIONLIST></OPTION><OPTION><FILE>rc.c</FILE><OPTIONLIST></OPTIONLIST></OPTION><OPTION><FILE>timer0.c</FILE><OPTIONLIST></OPTIONLIST></OPTION><OPTION><FILE>twimaster.c</FILE><OPTIONLIST></OPTIONLIST></OPTION><OPTION><FILE>uart.c</FILE><OPTIONLIST></OPTIONLIST></OPTION></OPTIONS><INCDIRS/><LIBDIRS/><LIBS><LIB>libc.a</LIB><LIB>libm.a</LIB></LIBS><LINKOBJECTS/><OPTIONSFORALL>-Wall -gdwarf-2 -Wstrict-prototypes -std=gnu99 -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -DVERSION_HAUPTVERSION=0 -DVERSION_NEBENVERSION=64 -DVERSION_KOMPATIBEL=5</OPTIONSFORALL><LINKEROPTIONS></LINKEROPTIONS><SEGMENTS/></CONFIG></CONFIGS><LASTCONFIG>default</LASTCONFIG><USES_WINAVR>1</USES_WINAVR><GCC_LOC>C:\Program Files\WinAVR\bin\avr-gcc.exe</GCC_LOC><MAKE_LOC>C:\Program Files\WinAVR\utils\bin\make.exe</MAKE_LOC></AVRGCCPLUGIN><IOView><usergroups/></IOView><Files><File00000><FileId>00000</FileId><FileName>main.c</FileName><Status>1</Status></File00000><File00001><FileId>00001</FileId><FileName>uart.c</FileName><Status>1</Status></File00001><File00002><FileId>00002</FileId><FileName>menu.c</FileName><Status>1</Status></File00002><File00003><FileId>00003</FileId><FileName>timer0.c</FileName><Status>1</Status></File00003><File00004><FileId>00004</FileId><FileName>fc.c</FileName><Status>1</Status></File00004><File00005><FileId>00005</FileId><FileName>fc.h</FileName><Status>1</Status></File00005><File00006><FileId>00006</FileId><FileName>menu.h</FileName><Status>1</Status></File00006><File00007><FileId>00007</FileId><FileName>TWIMASTER.C</FileName><Status>1</Status></File00007><File00008><FileId>00008</FileId><FileName>twimaster.h</FileName><Status>1</Status></File00008><File00009><FileId>00009</FileId><FileName>uart.h</FileName><Status>1</Status></File00009><File00010><FileId>00010</FileId><FileName>_Settings.h</FileName><Status>1</Status></File00010><File00011><FileId>00011</FileId><FileName>analog.h</FileName><Status>1</Status></File00011><File00012><FileId>00012</FileId><FileName>gps.h</FileName><Status>1</Status></File00012><File00013><FileId>00013</FileId><FileName>main.h</FileName><Status>1</Status></File00013><File00014><FileId>00014</FileId><FileName>old_macros.h</FileName><Status>1</Status></File00014><File00015><FileId>00015</FileId><FileName>printf_P.h</FileName><Status>1</Status></File00015><File00016><FileId>00016</FileId><FileName>rc.h</FileName><Status>1</Status></File00016><File00017><FileId>00017</FileId><FileName>Settings.h</FileName><Status>1</Status></File00017><File00018><FileId>00018</FileId><FileName>timer0.h</FileName><Status>1</Status></File00018></Files><Events><Bookmarks></Bookmarks></Events><Trace><Filters></Filters></Trace></AVRStudio>
/branches/metro/v0.82a metro_Akku+/GPS.c
0,0 → 1,32
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// + Copyright (c) Holger Buss, Ingo Busker
// + only for non-profit use
// + www.MikroKopter.com
// + see the File "License.txt" for further Informations
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#include "main.h"
 
signed int GPS_Nick = 0;
signed int GPS_Roll = 0;
signed int GPS_Nick2 = 0;
signed int GPS_Roll2 = 0;
long GpsAktuell_X = 0;
long GpsAktuell_Y = 0;
long GpsZiel_X = 0;
long GpsZiel_Y = 0;
void GPS_Neutral(void)
{
GpsZiel_X = GpsAktuell_X;
GpsZiel_Y = GpsAktuell_Y;
}
 
void GPS_BerechneZielrichtung(void)
{
GPS_Nick = 0;
GPS_Roll = 0;
}
 
 
 
 
/branches/metro/v0.82a metro_Akku+/GPS.d
0,0 → 1,3
GPS.o GPS.d : GPS.c main.h old_macros.h printf_P.h timer0.h uart.h analog.h \
twimaster.h menu.h rc.h fc.h gps.h spi.h led.h spektrum.h capacity.h \
eeprom.h libfc.h debug.h
/branches/metro/v0.82a metro_Akku+/GPS.lst
0,0 → 1,101
1 .file "GPS.c"
2 .arch atmega644p
3 __SREG__ = 0x3f
4 __SP_H__ = 0x3e
5 __SP_L__ = 0x3d
6 __tmp_reg__ = 0
7 __zero_reg__ = 1
8 .global __do_copy_data
9 .global __do_clear_bss
10 .global GpsZiel_Y
11 .global GpsZiel_Y
12 .section .bss
15 GpsZiel_Y:
16 0000 0000 0000 .skip 4,0
17 .global GpsZiel_X
18 .global GpsZiel_X
21 GpsZiel_X:
22 0004 0000 0000 .skip 4,0
23 .global GpsAktuell_Y
24 .global GpsAktuell_Y
27 GpsAktuell_Y:
28 0008 0000 0000 .skip 4,0
29 .global GpsAktuell_X
30 .global GpsAktuell_X
33 GpsAktuell_X:
34 000c 0000 0000 .skip 4,0
35 .global GPS_Roll2
36 .global GPS_Roll2
39 GPS_Roll2:
40 0010 0000 .skip 2,0
41 .global GPS_Nick2
42 .global GPS_Nick2
45 GPS_Nick2:
46 0012 0000 .skip 2,0
47 .global GPS_Roll
48 .global GPS_Roll
51 GPS_Roll:
52 0014 0000 .skip 2,0
53 .global GPS_Nick
54 .global GPS_Nick
57 GPS_Nick:
58 0016 0000 .skip 2,0
59 .text
60 .global GPS_Neutral
62 GPS_Neutral:
63 /* prologue: frame size=0 */
64 /* prologue end (size=0) */
65 0000 8091 0000 lds r24,GpsAktuell_X
66 0004 9091 0000 lds r25,(GpsAktuell_X)+1
67 0008 A091 0000 lds r26,(GpsAktuell_X)+2
68 000c B091 0000 lds r27,(GpsAktuell_X)+3
69 0010 8093 0000 sts GpsZiel_X,r24
70 0014 9093 0000 sts (GpsZiel_X)+1,r25
71 0018 A093 0000 sts (GpsZiel_X)+2,r26
72 001c B093 0000 sts (GpsZiel_X)+3,r27
73 0020 8091 0000 lds r24,GpsAktuell_Y
74 0024 9091 0000 lds r25,(GpsAktuell_Y)+1
75 0028 A091 0000 lds r26,(GpsAktuell_Y)+2
76 002c B091 0000 lds r27,(GpsAktuell_Y)+3
77 0030 8093 0000 sts GpsZiel_Y,r24
78 0034 9093 0000 sts (GpsZiel_Y)+1,r25
79 0038 A093 0000 sts (GpsZiel_Y)+2,r26
80 003c B093 0000 sts (GpsZiel_Y)+3,r27
81 /* epilogue: frame size=0 */
82 0040 0895 ret
83 /* epilogue end (size=1) */
84 /* function GPS_Neutral size 33 (32) */
86 .global GPS_BerechneZielrichtung
88 GPS_BerechneZielrichtung:
89 /* prologue: frame size=0 */
90 /* prologue end (size=0) */
91 0042 1092 0000 sts (GPS_Nick)+1,__zero_reg__
92 0046 1092 0000 sts GPS_Nick,__zero_reg__
93 004a 1092 0000 sts (GPS_Roll)+1,__zero_reg__
94 004e 1092 0000 sts GPS_Roll,__zero_reg__
95 /* epilogue: frame size=0 */
96 0052 0895 ret
97 /* epilogue end (size=1) */
98 /* function GPS_BerechneZielrichtung size 9 (8) */
100 /* File "GPS.c": code 42 = 0x002a ( 40), prologues 0, epilogues 2 */
DEFINED SYMBOLS
*ABS*:00000000 GPS.c
C:\Users\Thomas\AppData\Local\Temp/ccy4aaaa.s:3 *ABS*:0000003f __SREG__
C:\Users\Thomas\AppData\Local\Temp/ccy4aaaa.s:4 *ABS*:0000003e __SP_H__
C:\Users\Thomas\AppData\Local\Temp/ccy4aaaa.s:5 *ABS*:0000003d __SP_L__
C:\Users\Thomas\AppData\Local\Temp/ccy4aaaa.s:6 *ABS*:00000000 __tmp_reg__
C:\Users\Thomas\AppData\Local\Temp/ccy4aaaa.s:7 *ABS*:00000001 __zero_reg__
C:\Users\Thomas\AppData\Local\Temp/ccy4aaaa.s:15 .bss:00000000 GpsZiel_Y
C:\Users\Thomas\AppData\Local\Temp/ccy4aaaa.s:21 .bss:00000004 GpsZiel_X
C:\Users\Thomas\AppData\Local\Temp/ccy4aaaa.s:27 .bss:00000008 GpsAktuell_Y
C:\Users\Thomas\AppData\Local\Temp/ccy4aaaa.s:33 .bss:0000000c GpsAktuell_X
C:\Users\Thomas\AppData\Local\Temp/ccy4aaaa.s:39 .bss:00000010 GPS_Roll2
C:\Users\Thomas\AppData\Local\Temp/ccy4aaaa.s:45 .bss:00000012 GPS_Nick2
C:\Users\Thomas\AppData\Local\Temp/ccy4aaaa.s:51 .bss:00000014 GPS_Roll
C:\Users\Thomas\AppData\Local\Temp/ccy4aaaa.s:57 .bss:00000016 GPS_Nick
C:\Users\Thomas\AppData\Local\Temp/ccy4aaaa.s:62 .text:00000000 GPS_Neutral
C:\Users\Thomas\AppData\Local\Temp/ccy4aaaa.s:88 .text:00000042 GPS_BerechneZielrichtung
 
UNDEFINED SYMBOLS
__do_copy_data
__do_clear_bss
/branches/metro/v0.82a metro_Akku+/Hex-Files/BootLoader_MEGA644P_20MHZ_V0_1.hex
0,0 → 1,64
:10F8000011241FBECFEFD0E1DEBFCDBF11E0A0E0DD
:10F81000B1E0E0EEFBEF02C005900D92A030B10721
:10F82000D9F712E0A0E0B1E001C01D92A230B1070B
:10F83000E1F70C943B7C0C941D7C0895982F8091EB
:10F84000C00085FFFCCF9093C60008958091C00052
:10F850008823E4F78091C600992708958DE40E94DB
:10F860001E7C8BE40E941E7C82E40E941E7C8CE441
:10F870000E941E7C0895CFEFD0E1DEBFCDBFE0E057
:10F88000F0E014915F01772474BE98E10FB6F8940C
:10F8900090936000109260000FBE7092C5008AE2E3
:10F8A0008093C4008091C00082608093C0009093D8
:10F8B000C10086E08093C200EF01072D8091C00057
:10F8C00087FF0DC0013031F48091C6008A3AB1F152
:10F8D00000E005C08091C6008B3109F401E0CE0143
:10F8E00021968436910528F11F3F41F0112331F014
:10F8F000E0910001F091010109951BC01092C50033
:10F900008AE28093C4008AE00E941E7C8DE00E94FF
:10F910001E7C86E50E941E7C80E30E941E7C8EE297
:10F920000E941E7C81E30E941E7C8AE30E941E7C52
:10F9300005C080E593EC0197F1F7C0CF0E942E7CC3
:10F940000E94267C813611F489E547C1813471F427
:10F950000E94267CA82EBB24BA2CAA240E94267CB6
:10F960009927A82AB92AB694A79406C1823629F401
:10F9700089E50E941E7C81E00BC1823409F083C0BE
:10F980000E94267C9927D82FCC270E94267C992775
:10F99000C82BD92B0E94267C082F12E0812E11E063
:10F9A000912EEE24FF2464010894811C911CEC1616
:10F9B000FD0618F40E94267C01C08FEFD6018C93BF
:10F9C0000894E11CF11CBFEFEB16F10461F358F34E
:10F9D000E4E77E1609F0DEC0063409F03DC0FFEF13
:10F9E000AF16F7EFBF0608F033C0DE01A5016627AA
:10F9F0007727440F551F661F771F6A017B01C2E0FE
:10FA0000D1E001E08991992729913327322F2227CC
:10FA1000822B932B0C01FA0100935700E8951124D7
:10FA20004E5F5F4F6F4F7F4F129761F785E0F60192
:10FA300080935700E89507B600FCFDCF81E18093E5
:10FA40005700E89576956795579547955A0194C064
:10FA500080E00E941E7C90C0053409F08DC0F50145
:10FA60009E01A2E0B1E0E1BD8F2F992782BD8D916B
:10FA700080BD3196FA9AF99AF999FECF215030401B
:10FA800091F75F0179C0873609F047C00E94267C54
:10FA90009927D82ECC240E94267C9927C82AD92AB7
:10FAA0000E94267C863411F5E6016501EE24FF24D0
:10FAB000CC0CDD1CEE1CFF1CF60105911491802F6F
:10FAC0000E941E7C812F99270E941E7C82E090E07C
:10FAD000A0E0B0E0C80ED91EEA1EFB1E229761F717
:10FAE000F694E794D794C79456012ACF853409F049
:10FAF00027CF7501E1BC8F2D992782BDF89A089414
:10FB0000E11CF11C80B50E941E7C0894C108D1083C
:10FB1000C114D10479F7570113CF853601F594E765
:10FB2000791651F580E090E0A0E0B0E023E0FC0120
:10FB300020935700E89507B600FCFDCF80509F4FFB
:10FB4000AF4FBF4F8F3FE7EF9E07E0E0AE07E0E02B
:10FB5000BE0768F381E180935700E8950DC08534B6
:10FB600069F488E190E02CE00FB6F894A8958093B2
:10FB700060000FBE209360008DE02FC08035E1F360
:10FB80008C34D1F3803711F483E527C0843721F416
:10FB90000E941E7C80E021C0843521F40E94267CD6
:10FBA000782EEACF8B3109F4C9CE8A3A09F4C6CE51
:10FBB000863529F480E30E941E7C81E30EC08337E2
:10FBC00041F489E00E941E7C86E90E941E7C8EE141
:10FBD00004C08B3109F4B4CE8FE30E941E7CB0CEFA
:040000030000F80001
:00000001FF
/branches/metro/v0.82a metro_Akku+/Hex-Files/BootLoader_MEGA644_20MHZ_V0_1.hex
0,0 → 1,64
:10F8000011241FBECFEFD0E1DEBFCDBF11E0A0E0DD
:10F81000B1E0E0EEFBEF02C005900D92A030B10721
:10F82000D9F712E0A0E0B1E001C01D92A230B1070B
:10F83000E1F70C943B7C0C941D7C0895982F8091EB
:10F84000C00085FFFCCF9093C60008958091C00052
:10F850008823E4F78091C600992708958DE40E94DB
:10F860001E7C8BE40E941E7C82E40E941E7C8CE441
:10F870000E941E7C0895CFEFD0E1DEBFCDBFE0E057
:10F88000F0E014915F01772474BE98E10FB6F8940C
:10F8900090936000109260000FBE7092C5008AE2E3
:10F8A0008093C4008091C00082608093C0009093D8
:10F8B000C10086E08093C200EF01072D8091C00057
:10F8C00087FF0DC0013031F48091C6008A3AB1F152
:10F8D00000E005C08091C6008B3109F401E0CE0143
:10F8E00021968436910528F11F3F41F0112331F014
:10F8F000E0910001F091010109951BC01092C50033
:10F900008AE28093C4008AE00E941E7C8DE00E94FF
:10F910001E7C86E50E941E7C80E30E941E7C8EE297
:10F920000E941E7C81E30E941E7C8AE30E941E7C52
:10F9300005C080E593EC0197F1F7C0CF0E942E7CC3
:10F940000E94267C813611F489E547C1813471F427
:10F950000E94267CA82EBB24BA2CAA240E94267CB6
:10F960009927A82AB92AB694A79406C1823629F401
:10F9700089E50E941E7C81E00BC1823409F083C0BE
:10F980000E94267C9927D82FCC270E94267C992775
:10F99000C82BD92B0E94267C082F12E0812E11E063
:10F9A000912EEE24FF2464010894811C911CEC1616
:10F9B000FD0618F40E94267C01C08FEFD6018C93BF
:10F9C0000894E11CF11CBFEFEB16F10461F358F34E
:10F9D000E4E77E1609F0DEC0063409F03DC0FFEF13
:10F9E000AF16F7EFBF0608F033C0DE01A5016627AA
:10F9F0007727440F551F661F771F6A017B01C2E0FE
:10FA0000D1E001E08991992729913327322F2227CC
:10FA1000822B932B0C01FA0100935700E8951124D7
:10FA20004E5F5F4F6F4F7F4F129761F785E0F60192
:10FA300080935700E89507B600FCFDCF81E18093E5
:10FA40005700E89576956795579547955A0194C064
:10FA500080E00E941E7C90C0053409F08DC0F50145
:10FA60009E01A2E0B1E0E1BD8F2F992782BD8D916B
:10FA700080BD3196FA9AF99AF999FECF215030401B
:10FA800091F75F0179C0873609F047C00E94267C54
:10FA90009927D82ECC240E94267C9927C82AD92AB7
:10FAA0000E94267C863411F5E6016501EE24FF24D0
:10FAB000CC0CDD1CEE1CFF1CF60105911491802F6F
:10FAC0000E941E7C812F99270E941E7C82E090E07C
:10FAD000A0E0B0E0C80ED91EEA1EFB1E229761F717
:10FAE000F694E794D794C79456012ACF853409F049
:10FAF00027CF7501E1BC8F2D992782BDF89A089414
:10FB0000E11CF11C80B50E941E7C0894C108D1083C
:10FB1000C114D10479F7570113CF853601F594E765
:10FB2000791651F580E090E0A0E0B0E023E0FC0120
:10FB300020935700E89507B600FCFDCF80509F4FFB
:10FB4000AF4FBF4F8F3FE7EF9E07E0E0AE07E0E02B
:10FB5000BE0768F381E180935700E8950DC08534B6
:10FB600069F488E190E02CE00FB6F894A8958093B2
:10FB700060000FBE209360008DE02FC08035E1F360
:10FB80008C34D1F3803711F483E527C0843721F416
:10FB90000E941E7C80E021C0843521F40E94267CD6
:10FBA000782EEACF8B3109F4C9CE8A3A09F4C6CE51
:10FBB000863529F480E30E941E7C81E30EC08337E2
:10FBC00041F489E00E941E7C86E90E941E7C8EE141
:10FBD00004C08B3109F4B4CE8FE30E941E7CB0CEFA
:040000030000F80001
:00000001FF
/branches/metro/v0.82a metro_Akku+/Hex-Files/Flight-Ctrl_MEGA1284p_V0_82a.hex
0,0 → 1,3896
:100000000C94C4060C9413070C9413070C94130758
:100010000C9413070C9413070C9413070C941307F8
:100020000C9413070C943B190C9413070C941307AE
:100030000C9425340C9413070C9413070C94130799
:100040000C9413070C9413070C940B160C941307C1
:100050000C94260C0C9413070C94F00B0C941307BF
:100060000C941E1C0C9413070C94B82F0C941307BB
:100070000C94E5750C9413070C94E1700C94130721
:100080000C9413070C9413070C941307491C4E1C73
:10009000531C5C1C731C8A1C9A1CAA1CC71CB31E14
:1000A0008A1C751D861DB51DD31DF01D4A1EA51E7B
:1000B00083201521D2215222BB226B237225CF250A
:1000C0003C268626D1261E276F27D1273028CA280E
:1000D00065295F2AD72F0B304E30BE30D63017310E
:1000E000CE319532953295329532953295329532A0
:1000F00095329532953295324A324C3251326932CC
:100100006B320A0D426174743A0020256420436505
:100110006C6C732000204C6F77207761726E696E73
:1001200067206C6576656C3A2025642E2564000A8C
:100130000D466F756E6420424C2D4374726C3A20EC
:10014000002564000A0D0A0D2121204D4953534911
:100150004E4720424C2D4354524C3A2025642021D6
:1001600021000A0D3D3D3D3D3D3D3D3D3D3D3D3D7B
:100170003D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3DAF
:100180003D3D3D3D3D3D3D000A0D43616C69627260
:100190006174696E67207072657373757265207320
:1001A000656E736F722E2E004F4B0A0D000A0D46BE
:1001B0006C696768742D74696D65202575206D699B
:1001C0006E2020546F74616C3A2575206D696E0045
:1001D0000A0D436F6E74726F6C3A2000486561645B
:1001E000696E67486F6C64004E6F726D616C202899
:1001F0004143432D4D6F646529000A0D3D3D3D3D52
:100200003D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D1E
:100210003D3D3D3D3D3D3D3D3D3D3D3D3D3D3D0A41
:100220000D00416E676C654E69636B2020202020B5
:100230002020416E676C65526F6C6C20202020205E
:1002400020204163634E69636B2020202020202002
:100250002020416363526F6C6C20202020202020DE
:1002600020205961774779726F202020202020209C
:1002700020204865696768742056616C7565202088
:1002800020204163635A202020202020202020208D
:1002900020204761732020202020202020202020A3
:1002A0002020436F6D706173732056616C756520FB
:1002B0002020566F6C74616765205B302E31565D6F
:1002C00020205265636569766572204C6576656CA1
:1002D00020204779726F20436F6D70617373202007
:1002E00020204D6F746F722031202020202020208C
:1002F00020204D6F746F722032202020202020207B
:1003000020204D6F746F7220332020202020202069
:1003100020204D6F746F7220342020202020202058
:1003200020203136202020202020202020202020A6
:100330002020313720202020202020202020202095
:100340002020313820202020202020202020202084
:100350002020313920202020202020202020202073
:100360002020536572766F2020202020202020201E
:100370002020486F7665726761732020202020203E
:10038000202043757272656E74205B302E31415DA2
:1003900020204361706163697479205B6D41685D01
:1003A0002020323420202020202020202020202027
:1003B0002020323520202020202020202020202016
:1003C0002020323620202020202020202020202005
:1003D00020203237202020202020202020202020F4
:1003E00020204932432D4572726F72202020202038
:1003F0002020424C204C696D697420202020202050
:1004000020204750535F4E69636B2020202020201E
:1004100020204750535F526F6C6C202020202020FA
:10042000202021212120494E434F4D504154494223
:100430004C4520212121002A002E000A0D20444194
:1004400043206F7220493243204552524F5221209F
:10045000436865636B204932432C203356726566CE
:100460002C2044414320616E6420424C2D43747221
:100470006C005B25695D005B25695D002B204D6983
:100480006B726F4B6F70746572202B0048573A5631
:1004900025642E25642053573A25642E2564256350
:1004A0000053657474696E673A25642025730048AB
:1004B00061726477617265204572726F7220313AA1
:1004C0002564202121004D697373696E6720424CB9
:1004D0002D4374726C3A25642121004D6978657250
:1004E000204572726F722100493243204552524FAB
:1004F00052212121004865696768743A202025351A
:100500006900536574706F696E743A2535690050DF
:10051000726573737572653A253569004F66667347
:1005200065743A202025356900486569676874203C
:10053000636F6E74726F6C0044495341424C454482
:100540000048656967687420636F6E74726F6C0031
:1005500044495341424C4544006163742E20626516
:100560006172696E67004E69636B3A20202020201B
:100570002025356900526F6C6C3A20202020202005
:1005800025356900436F6D706173733A2020202513
:100590003569004B313A25346920204B323A2534F5
:1005A0006920004B333A25346920204B343A2534F6
:1005B0006920004B353A25346920204B363A2534E2
:1005C0006920004B373A25346920204B383A2534CE
:1005D0006920004E693A2534692020526F3A25344B
:1005E00069200047733A253469202047693A253449
:1005F00069200050313A253469202050323A2534A0
:1006000069200050333A253469202050343A25348B
:100610006920004779726F202D2053656E736F72C9
:10062000004E69636B25346920282533692E2569BE
:100630002900526F6C6C25346920282533692E25DA
:10064000692900476965722534692028253369299D
:10065000004E69636B2025346920282533692E25D7
:10066000782900526F6C6C20253469202825336965
:100670002E257829005961772020253469202825E6
:10068000336929004E69636B20253469202825339E
:100690006929282533692900526F6C6C202534693B
:1006A00020282533692928253369290059617720B5
:1006B0002025346920282533692928253369290014
:1006C000414343202D2053656E736F72004E696362
:1006D0006B2025346920282533692900526F6C6C02
:1006E00020253469202825336929005A202020201C
:1006F00025346920282533692900566F6C74616799
:10070000653A2020202533692E253169560043752E
:100710007272656E743A2020202533692E25316966
:100720004100506F7765723A2020202020253469DF
:1007300057004469736368617267653A20253569BB
:100740006D41680052656365697665720052432D9C
:10075000525353493A202020202534690052432D1A
:100760005175616C6974793A202534690052432DC2
:100770004368616E6E656C733A25346900436F6D32
:10078000706173730048656164696E673A20202563
:1007900035690056616C75653A2020202025356941
:1007A0000053746172743A2020202025356900506E
:1007B0006F7469313A202025336900506F746932B3
:1007C0003A202025336900506F7469333A20202580
:1007D000336900506F7469343A2020253369005022
:1007E0006F7469353A202025336900506F7469367B
:1007F0003A202025336900506F7469373A2020254C
:10080000336900506F7469383A20202533690053EA
:100810006572766F202000536574706F696E742066
:100820002025336900506F736974696F6E3A202513
:1008300033690052616E67653A2533692D25336946
:100840000045787465726E436F6E74726F6C202011
:10085000004E693A2534692020526F3A25346920C8
:100860000047733A253469202047693A25346920C6
:100870000048693A253469202043663A25346920C6
:1008800000424C2D4374726C204572726F7273205B
:100890000025336420253364202533642025336408
:1008A000200025336420253364202533642025333C
:1008B00064200025336420253364202533642025FB
:1008C00033642000424C2054656D7065726174750C
:1008D0007265002533692025336920253369202579
:1008E00033692000253369202533692025336920A9
:1008F0002533692000253369202533692025336994
:10090000202533692000424C2D4374726C20666FA1
:10091000756E642000202563202020256320202080
:10092000256320202025632000202563202020250A
:1009300063202020256320202025632000202563BC
:100940002020202D2020202D2020202D200031307F
:1009500000313100313200466C696768742D54698A
:100960006D65202000546F74616C3A2535756D6992
:100970006E004163743A20202535756D696E00283C
:10098000726573657429000A0D47656E657261743E
:10099000696E672064656661756C74205061726170
:1009A0006D6574657220536574202564000A0D55C9
:1009B00073696E6720506172616D65746572205352
:1009C0006574202564000A0D47656E65726174695F
:1009D0006E672064656661756C74204D6978657218
:1009E000205461626C65000A0D4D697865722D4373
:1009F0006F6E6669673A20272573272028257520A2
:100A00004D6F746F727329000A0D3D3D3D3D3D3DB4
:100A10003D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D06
:100A20003D3D3D3D3D3D3D3D000A0D414343206E72
:100A30006F742063616C69627261746564210D0A70
:100A40000000008F001E01AD013B02CA025803E600
:100A500003740402058F051B06A7063307BE07486B
:100A600008D2085B09E3096B0AF20A780BFD0B81D7
:100A70000C040D860D070E870E060F840F00107BE9
:100A800010F5106E11E5115B12CF124213B3132350
:100A9000149214FE146A15D3153B16A11605176798
:100AA00017C81727188318DE1837198E19E3193657
:100AB0001A871AD61A231B6E1BB61BFD1B411C83FB
:100AC0001CC31C001D3C1D751DAB1DE01D121E42EC
:100AD0001E6F1E9A1EC31EE91E0D1F2E1F4D1F697D
:100AE0001F841F9B1FB01FC31FD31FE11FEC1FF5E7
:100AF0001FFB1FFF1F002003010000B76A00020157
:100B000001AA6B010302023E6C020003039B6C25E9
:100B100032692E253169560025336425632025303E
:100B200033646D00537461747573004552524F52B3
:100B30003A2025326400253469202532693A25306F
:100B40003269002534696D2563002533692025331A
:100B50006920253369202533690025336920253331
:100B60006920253369202533690054656D706572ED
:100B70006174757265732020202000256343202056
:100B8000202020002532692E25316956202025336A
:100B9000692E253169410025346957202536696D54
:100BA0004168002532756D2F73205361743A2564B6
:100BB000200020203344004E6F46780044475053B5
:100BC00000486F6D653A2533646D202533642563D5
:100BD000004E6F204E6176694374726C21000A0DDD
:100BE0007777772E4D696B726F4B6F707465722ECD
:100BF00064652028632920486953797374656D738F
:100C000020476D6248000A0D746865207573652081
:100C10006F66207468697320736F6674776172659C
:100C2000206973206F6E6C79207065726D697474C1
:100C30006564200A0D6F6E206F726967696E616C62
:100C4000204D696B726F4B6F707465722D486172C5
:100C50006477617265004143542044534C004A65F7
:100C6000746920736174656C6C6974005370656B92
:100C70007472756D20736174656C6C697420284C96
:100C80006F77207265736F6C7574696F6E2900538E
:100C900070656B7472756D20736174656C6C6974CA
:100CA00020283230343829005370656B7472756DAA
:100CB00020736174656C6C6974004D756C74697334
:100CC00069676E616C2050504D000A0D5265636576
:100CD000697665723A2000756E6B6E6F776E2E20A6
:100CE0005573696E672050504D2E2E2E006E6F7416
:100CF00020737570706F727465642062792068610A
:100D000072647761726521000A0D3D3D3D3D3D3DB8
:100D10003D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D03
:100D20003D3D3D3D3D3D3D3D3D3D3D3D3D000A0D93
:100D3000466C69676874436F6E74726F6C0A0D4815
:100D4000617264776172653A25642E25640A0D53D9
:100D50006F6674776172653A5625642E2564256343
:100D600020000A0D3D3D3D3D3D3D3D3D3D3D3D3D70
:100D70003D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3DA3
:100D80003D3D3D3D3D3D3D0011241FBECFEFD0E434
:100D9000DEBFCDBF11E0A0E0B1E0E4E6F2EF00E09D
:100DA0000BBF02C007900D92A23FB107D9F718E020
:100DB000A2EFB1E001C01D92A43BB107E1F77AEACE
:100DC000E2E0F0E081E280935700D4907E01089445
:100DD000E11CF11C20EF37EF41E050E087016FE0AC
:100DE000DA01C9012F5F3F4F4F4F5F4FABBFFC018F
:100DF0008791F80181938F01615067FFF1CFF7016F
:100E00006EE0819178277095615067FFFACF8889ED
:100E1000781729F0F7E9DF1611F40000FECF0E94E1
:100E2000D4070C9431790C94000080911906E82FB6
:100E3000FF27EE0FFF1FED5BF84F808191818D5EE4
:100E40009F4F14F010920301808191818A5B9F4F24
:100E5000CCF4809103018823A9F481E080930301FD
:100E600080915C048F5F80935C04853038F088EE5D
:100E700093E0909325028093240204C066E970E019
:100E80000E948F3780915C0499279093EA058093A4
:100E9000E90508951F93CF93DF93182F882389F0D6
:100EA00082E091E09F938F9380EF92E19F938F93E5
:100EB000E0912804F091290409950F900F900F906C
:100EC0000F9080913C06823308F044C084EF91E09B
:100ED0000E941617EC01112329F0CE010E941F1762
:100EE0008823D9F3C2E0D0E026E530E080911E01EE
:100EF00090911F018217930730F02196255D3F4F97
:100F0000C730D10598F380913C069927C89F90017E
:100F1000C99F300DD89F300D11242093000111235B
:100F2000D9F068EC70E08C2F0E948F37DF93CF935D
:100F30008AE091E09F938F9380EF92E19F938F934C
:100F4000E0912804F091290409958DB79EB7069683
:100F50008DBF02C080930001112311F18091000127
:100F60006AE00E948478892F99279F938F938091BC
:100F700000010E94847899279F938F9385E191E0E7
:100F80009F938F9380EF92E19F938F93E09128043A
:100F9000F091290409952DB73EB7285F3F4F2DBF2B
:100FA000DF91CF911F910895CFEFD0E4DEBFCDBF89
:100FB0008824992414B815B8C7EED3E0E297D7FF78
:100FC000FDCF85E18093020181E887B93E9A8FEFDA
:100FD00088B98BE184B911E015B98EE38AB987E449
:100FE0008BB9469A84B7877F84BF809160008861FF
:100FF000809360001092600084EC99E09093250249
:10100000809324021092180310921703109248073D
:101010001092470710921A031092190310921C03A2
:1010200010921B0384EC94E0A0E0B0E08093960162
:1010300090939701A0939801B093990128980E94EA
:101040007F170E9450170E94F8120E9409340E94D4
:10105000AF1A812F0E946C2F0E945F630E948A6DDD
:101060000E941875809102018C3010F4299A01C0F9
:10107000299878940E94862E80916C0282608093D9
:101080006C0210926F020E94B14284EF91E00E94C4
:101090001617EC0180916C0280FD05C0CE010E9404
:1010A0001F178823B9F38FE291E09F938F93C0EFCE
:1010B000AC2EC2E1BC2EBF92AF92E0912804F09119
:1010C0002904099580EA9FE00E941617EC0100E0D0
:1010D00010E00F900F900F900F90B5EEEB2EB6E052
:1010E000FB2EA9E9CA2EA6E0DA2E0E94B142809119
:1010F0006C0280FD05C0CE010E941F178823B9F342
:10110000F60180811816ACF40BC00E94B1428091A8
:101110006C0280FD05C0CE010E941F178823B9F321
:10112000CE010E941F17882321F4F70180818823B4
:1011300064F7F701808187FF1AC00F5F1F4F1F936D
:101140000F930150104081E491E09F938F93BF92E1
:10115000AF92E0912804F091290409958091F20161
:101160008F5F8093F2018DB79EB706968DBF0F5F9C
:101170001F4FE4E0F0E0CE0EDF1E88E090E0E80EC6
:10118000F91E0C30110508F4B0CF00E010E0C2EEFB
:10119000D6E0F9E9EF2EF6E0FF2E8B8187FD1EC029
:1011A000F70180811816D4F40F5F1F4F1F930F9320
:1011B0000150104084E491E09F938F9380EF92E17F
:1011C0009F938F93E0912804F0912904099582E080
:1011D000809322028DB79EB706968DBF8B81807853
:1011E0008B830F5F1F4FE4E0F0E0EE0EFF1E2896AA
:1011F0000C30110590F282E691E09F938F93E0EF1F
:10120000EE2EE2E1FE2EFF92EF92E0912804F091A3
:1012100029040995909117068091F2010F900F9083
:101220000F900F90981728F480914204806180936A
:10123000420488E891E09F938F93FF92EF92E091B0
:101240002804F0912904099588EE93E00E9416176E
:10125000EC010E94B51A0F900F900F900F90CE01E5
:101260000E941F178823D9F388EA91E09F938F93F8
:10127000FF92EF92E0912804F0912904099580E013
:101280000E945138809102010F900F900F900F90A3
:101290008A3011F0843110F0289801C0289A80ED2E
:1012A00097E0909325028093240285E580935E0465
:1012B0008EE090E00E94BB2C9927182F00278FE02A
:1012C00090E00E94BB2C080F111D1093F8010093B1
:1012D000F7018AE090E00E94BB2C9927182F002785
:1012E0008BE090E00E94BB2C080F111D1093F601BB
:1012F0000093F5010F5F1F4F39F08091F701909136
:10130000F8018F5F9F4F41F41092F8011092F7019E
:101310001092F6011092F5018091F5019091F6017D
:101320009F938F938091F7019091F8019F938F93F2
:101330008DEA91E09F938F93FF92EF92E0912804C2
:10134000F091290409958DB79EB708968DBF80ED61
:1013500091E09F938F93FF92EF92E0912804F09198
:1013600029040995809125060F900F900F900F90FA
:10137000E0912804F091290482FF07C08CED91E0F0
:101380009F938F93FF92EF9208C088EE91E09F9316
:101390008F9380EF92E19F938F9309950F900F9019
:1013A0000F900F900E94FA1F88E893E190939301A9
:1013B0008093920181E080935D040E944A078091AE
:1013C0003F060E947E748AEF91E09F938F93FF9275
:1013D000EF92E0912804F0912904099580ED97E0BF
:1013E0000E941617EC018AEF90E00E9416178C01FC
:1013F00083E08093C1050F900F900F900F90809124
:10140000FA018111FFCFC8010E941F17882339F00C
:1014100084E690E00E9416178C010E94D47580919A
:101420002802882309F4D4C180911001882309F48B
:10143000CFC11092280280915C04882319F00E9489
:10144000150702C00E948B450E94B1422091020103
:101450002A3011F0243110F0289801C0289A809188
:101460001D0390914204882339F080911D0381501F
:1014700080931D03977F0AC080916F0080628093E4
:101480006F001092440710924307986090934204B3
:101490008091920190919301019790939301809391
:1014A00092018091920190919301892B21F080917A
:1014B0006D028823C9F18091920190919301892B4B
:1014C000D9F40E94962F85E090E090939301809349
:1014D00092018091FB059091FC0501969093FC058B
:1014E0008093FB0580914204816080934204809147
:1014F000C20582608093C205809108019091090124
:101500008F5F9F4F19F5809114038823F9F080E1D4
:1015100097E2909325028093240280E890E09093D4
:1015200009018093080112C02A3011F0243110F013
:10153000289801C0289A8091240290912502892B35
:1015400029F4809142048E7F809342048091280286
:10155000882309F03DC180910E01882311F00E947B
:1015600096170E943B130E94760ECE010E941F1711
:10157000882309F429C1649680916D0290914204F8
:10158000882339F09260909342048091C205826072
:101590000CC09D7F909342048091920190919301A1
:1015A000079728F08091C2058D7F8093C2058091B6
:1015B000920190919301079728F0809142048E7FC9
:1015C0008093420480910501882321F0815080930B
:1015D000050125C0809368041092F5021092F40270
:1015E0001092F3021092F2021092F1021092F002A5
:1015F00080910801909109018F5F9F4F81F4809144
:101600001D03882361F488E99AE39093250280936F
:10161000240280E09CE0909309018093080180916E
:10162000E901893C48F081508093E90180914204AE
:101630008B7F8093420430C0809121088823E1F0A1
:1016400080914204846080934204809108019091CB
:1016500009018F5F9F4F81F480911403882361F00B
:1016600088E99AE3909325028093240280E098EA27
:1016700090930901809308011092FA031092F903E4
:101680001092F8031092F7038FEF9FEF90934F089B
:1016900080934E081092E90180910001282F332792
:1016A00080911E0190911F0182179307CCF48091C5
:1016B000E90280628093E90280910801909109011A
:1016C0008F5F9F4FC1F480E797E19093250280934D
:1016D000240280E093E090930901809308010BC0FD
:1016E0008091240290912502892B29F48091E902AE
:1016F0008F7D8093E9020E946B6784E080932302D0
:1017000080911403882329F45AEA852E55E0952EFA
:1017100012C08091F9018F5F8093F901813359F4F0
:101720001092F9018091F3019091F4010196909348
:10173000F4018093F3010894811C911CF2E78F1649
:10174000FBE09F0609F040C0882499242091F7010E
:101750003091F8012F5F3F4F3093F8012093F7014C
:101760008091F5019091F60101969093F601809396
:10177000F501832F9927682F8EE090E00E94C32CFB
:101780008091F7019091F8019070682F8FE090E0C0
:101790000E94C32C8091F5019091F601892F992721
:1017A000682F8AE090E00E94C32C8091F50190910F
:1017B000F6019070682F8BE090E00E94C32C84E1CA
:1017C00090E00E941617EC010E94BB670E94A16D79
:1017D00080912302882309F012CE0E9480630FCEED
:1017E0001F920F920FB60F9211248F939F93EF9336
:1017F000FF93809107018823E1F480911402909176
:10180000150201969093150280931402FC01E95E83
:10181000FA4FE081ED3019F08A3A910539F41092CF
:1018200015021092140281E080930701E093C60034
:1018300004C01092150210921402FF91EF919F9133
:101840008F910F900FBE0F901F9018951F920F92BF
:101850000FB60F9211242F933F934F935F936F9383
:101860007F938F939F93AF93BF93CF93EF93FF9308
:1018700090E08091FA01813029F48091C600809334
:10188000CE00CCC08091FA01823029F48091C6004C
:1018900080936B04C3C08091C60080930C0250916A
:1018A0001A025A3A10F090931B0280910C028D306C
:1018B00009F065C080911B02823009F060C09093EE
:1018C0001B02852F992785599B4FFC013297408138
:1018D0002091160230911702241B3109DC01119767
:1018E0008C91281B3109C9019F7090931702809336
:1018F000160246E0969587954A95E1F7982F935CF6
:10190000909318022F733070235C2093190280810A
:10191000981729F48C91281711F491E006C090E0F3
:10192000809109028F5F80930902C0910B02CC2342
:1019300009F074C0992309F471C081E080930B020F
:10194000580F509308025150E52FFF27E559FB4FE0
:101950008DE0808380916D04823509F05FC00E9424
:10196000FA1F88E190E02CE00FB6F894A8958093D8
:1019700060000FBE20936000C09322024FC02091F0
:101980001B02822F992781309105F9F08230910551
:101990001CF4892B21F040C0029711F13DC08091C9
:1019A0000C02833239F480910B02882319F481E010
:1019B00080931B0280910C0280936B0481E08093E2
:1019C0001A0280910C02992722C02F5F20931B02DC
:1019D000E52FFF27E559FB4F80910C02808309C05A
:1019E000E52FFF27E559FB4F80910C0280835A3A7F
:1019F00020F45F5F50931A0202C010921B022091E4
:101A00000C028091160290911702820F911D909303
:101A100017028093160202C010921B02FF91EF91F1
:101A2000CF91BF91AF919F918F917F916F915F9176
:101A30004F913F912F910F900FBE0F901F901895CF
:101A4000AC01A0E0B0E09D01A817B90748F4E7E1B8
:101A5000F5E08191280F311D1196A417B507C8F341
:101A60003F70FD01E95EFA4FC90156E096958795F2
:101A70005A95E1F7835C80831196FD01E95EFA4F88
:101A80002F733070822F835C8083A85EBA4F8DE005
:101A90008C9310920701809117058093C6000895DA
:101AA000A0E0B0E0E6E5FDE00C94FD782C859D8596
:101AB0000E85BB2483E2809317059F5990931805E8
:101AC0002093190533E0E32EF12C002309F49EC086
:101AD000CF84D888BE016D5E7F4FA989BA89015035
:101AE000109709F493C01097B9F0F601EB0DF11DB2
:101AF000B3949081119791F4002349F1FB016E5F3B
:101B00007F4FDB01C080D1806E5F7F4F0D90BC9115
:101B1000A02DBB24015002C090E019C01097B9F06D
:101B2000F601EB0DF11DB3944081119791F4002360
:101B300041F1FB016E5F7F4FDB01C080D1806E5FA2
:101B40007F4F0D90BC91A02DBB24015002C040E0FE
:101B500018C01097B1F0F601EB0DF11DB394108190
:101B6000119781F4002371F0FB013296DB01CD90D7
:101B7000DC90BF016E5F7F4FA081B181BB2401501B
:101B800001C010E0F701E95EFA4F892F869586952E
:101B9000835C80830894E11CF11CF701E95EFA4F35
:101BA000892F99278370907024E0880F991F2A95B8
:101BB000E1F755279A0194E0369527959A95E1F734
:101BC000822B835C80830894E11CF11CF701E95EA1
:101BD000FA4F4F705070440F551F440F551F812FFF
:101BE000992726E0969587952A95E1F7842B835CC3
:101BF00080830894E11CF11CF701E95EFA4F1F7322
:101C0000135C10830894E11CF11C6ACFC7010E9489
:101C1000200DE9E00C941979A3E07A2F4091080295
:101C20004650442309F458C0E72FFF27E559FB4FDE
:101C300080818D537F5FE72FFF27E559FB4F208180
:101C40002D537F5FE72FFF27E559FB4F30813D5331
:101C50007F5FE72FFF27E559FB4F60816D537F5F63
:101C60009927880F991F880F991F522F52955F70DF
:101C7000582B822F99278F709070F4E0880F991F4E
:101C8000FA95E1F7232F26952695282B832F992760
:101C900083709070E6E0880F991FEA95E1F7682B52
:101CA00041504F3FC9F0EA2FFF27E559FB4F5083C2
:101CB000AF5F41504F3F81F0EA2FFF27E559FB4FBF
:101CC0002083AF5F41504F3F39F0EA2FFF27E5599E
:101CD000FB4F6083AF5FA5CF8EE694E09093070241
:101CE00080930602A350A09305020895A2E0B0E0FD
:101CF000ECE7FEE00C94037980910B02882309F451
:101D00006BC40E940C0E80916C04823609F025C3CE
:101D100080916D0499278037910509F4C1C08137FE
:101D20009105C4F48A36910509F48DC28B3691056C
:101D300044F48B34910571F18636910509F46CC138
:101D40000CC38D36910509F47BC08E36910509F4DC
:101D50005FC003C384379105D1F1853791054CF4F9
:101D60008137910509F4A3C08337910509F4F1C0C7
:101D7000F4C28737910509F428C2883791052CF4FD
:101D80008537910509F4E4C1E8C28937910509F462
:101D90007AC1E3C2E0910602F0910702808191814D
:101DA0009093300380932F0320912D0330912E03C5
:101DB000821B930B845E9D4F68E671E00E94A478BD
:101DC000845B904090932C0380932B03C6C2809138
:101DD0000802A0910602B0910702853140F080E12F
:101DE000E6E4F4E00D9001928A95E1F70DC08D9143
:101DF0009D910D90BC91A02D809346049093470433
:101E0000A0934804B093490480EF809303024BC031
:101E1000809107018823E1F38DE490E09F938F93F5
:101E20008CE896E09F938F9381E08F938F938EE45D
:101E30008F930E94500D8DB79EB707968DBF8DC2B0
:101E4000A0910602B09107021C91113081F48DE43B
:101E5000ECE8F6E00D9001928A95E1F70E94C32D1F
:101E60001983809142048F7E8093420401C01982BD
:101E7000809107018823E1F381E090E09F938F93A5
:101E8000CE0101969F938F9381E08F938F938DE482
:101E90008F930E94500DADB7BEB71796ADBF5DC210
:101EA00081E080930E028FEF8093050156C2E0918E
:101EB0000602F0910702E0818E2F8A508A3058F492
:101EC0008983882311F481E003C0863010F085E017
:101ED000898361E00EC08E2F84518A3070F489832B
:101EE000882311F481E003C0863010F085E08983F7
:101EF00060E089810E94432E12C0E983EF3F19F40C
:101F00000E94262E89838981882311F481E003C0F1
:101F1000863010F085E0898389810E94D92C8091D8
:101F200007018823E1F383E790E09F938F9388E193
:101F300096E09F938F9381E090E09F938F93CE01E3
:101F400001969F938F9382E08F9381E08F9381E539
:101F500072C12091060230910702D9018C91815003
:101F6000853008F040C0F90181818535E1F52F5FAA
:101F70003F4F83E7E8E1F6E0D9010D9001928A95A1
:101F8000E1F7F90182910E94422D8091590699272B
:101F9000AA27BB27BC01CD0124EC39E040E050E08A
:101FA0000E946578DC01CB018093D5019093D60126
:101FB000A093D701B093D80180915A069927AA27F8
:101FC000BB27BC01CD010E946578DC01CB01809369
:101FD000D1019093D201A093D301B093D4010E9478
:101FE000262E898301C01982809107018823E1F39D
:101FF00081E090E09F938F93CE0101969F938F9302
:1020000081E08F938F9383E58F930E94500D8DB75E
:102010009EB707968DBF26C0E0910602F091070299
:10202000E0818E2F8150853018F48E2F0E94D92C9C
:102030000E94262E8983809107018823E1F381E0A5
:1020400090E09F938F93CE0101969F938F9381E0B1
:102050008F938F9386E48F930E94500DADB7BEB7D8
:102060001796ADBF80911403882329F46EE670E0C3
:1020700089810E948F3780E00E944A0780913F0645
:102080000E947E746AC1E0910602F091070280818D
:10209000992787FD909590935E0780935D078181D6
:1020A000992787FD90959093600780935F078281C1
:1020B000992787FD909590936207809361078381AC
:1020C000992787FD90959093640780936307848197
:1020D000992787FD90959093660780936507858182
:1020E000992787FD9095909368078093670786816D
:1020F000992787FD909590936A0780936907878158
:10210000992787FD909590936C0780936B07808546
:10211000992787FD909590936E0780936D07818531
:10212000992787FD90959093700780936F0782851C
:10213000992787FD90959093720780937107838507
:10214000992787FD9095909374078093730705C135
:10215000E0910602F091070280810E9462338A8337
:10216000882319F481E0898301C0198280910701D5
:102170008823E1F388E090E09F938F938AED96E0C7
:102180009F938F9321E030E03F932F93809106023D
:10219000909107029F938F933F932F93CE010296C6
:1021A0009F938F933F932F93CE01820F931F9F9303
:1021B0008F9384E08F9381E08F9385E58F930E94C6
:1021C000500DEDB7FEB773963CC080910502893083
:1021D00008F4C3C020910602309107022F5F3F4FE1
:1021E00088E0AAEDB6E0F90101900D928A95E1F739
:1021F000D9018E910E94B8328A83882319F481E034
:10220000898301C01982809107018823E1F321E0CD
:1022100030E03F932F93CE0102969F938F933F938D
:102220002F93CE01820F931F9F938F9382E08F9302
:1022300081E08F9387E58F930E94500DEDB7FEB735
:102240003B96EDBF8AC00E9431748983823019F0B9
:10225000843009F082C0F8948091C1008F7380931C
:10226000C1008091C9008F738093C9008091C10023
:10227000877E8093C1008091C900877E8093C900CA
:102280008091C80087FF03C08091CE00F9CF809174
:10229000C00087FF03C08091C600F9CFE09106021D
:1022A000F09107028081882359F581E08093FA013B
:1022B0001092CD0080E490E08093CC008091CD001E
:1022C0008093C5008091CC008093C4008091CA00A7
:1022D0008F7D8093CA008091CA008F7E8093CA0050
:1022E0008091C9008B7F8093C9008091CA0084606F
:1022F0008093CA008091CA0082608093CA0003C0A4
:1023000082E08093FA018091CA00877F8093CA009F
:102310008091C200877F8093C2008091C9008E7F28
:102320008093C9008091C10088618093C100809131
:10233000C90088618093C9008091C1008068809342
:10234000C1008091C90080688093C90010926E001E
:1023500010926F0010927000789480916D0499270C
:102360008436910509F4CDC085369105ACF48136EB
:10237000910509F481C0823691052CF48B349105C6
:1023800009F45DC021C18236910509F482C083360B
:10239000910509F491C018C18C36910509F4FFC06C
:1023A0008D3691054CF48736910509F40AC18836BB
:1023B000910509F4C4C008C18437910529F0863716
:1023C000910509F4FAC000C180910802A0910602AB
:1023D000B0910702803140F080E1E6E4F4E00D9036
:1023E00001928A95E1F70DC08D919D910D90BC9160
:1023F000A02D8093460490934704A0934804B09383
:102400004904809107018823E1F31F928091040120
:102410008F9384E58F930E94500D8AEF809303027F
:102420008FEF8093050180EA9FE00E94161790933A
:10243000FC018093FB010F900F900F90C5C0E091BD
:102440000602F0910702808191819093300380937E
:102450002F0320912D0330912E03821B930B845E5A
:102460009D4F68E671E00E94A478845B9040909351
:102470002C0380932B03A8C0E0910602F091070281
:10248000808180930601803298F08FE1809306016D
:102490000FC0A0910602B09107028BE0EEE5F4E0D8
:1024A0000D9001928A95E1F780916704809303066D
:1024B0008FEF8093050188C08091FF019091000209
:1024C000892B89F4E0910602F0910702E081EE2366
:1024D00051F08AE0E89FC00111240E9416179093E2
:1024E000390480933804E0910602F091070290814C
:1024F0008AE0989FC0011124909300028093FF010D
:1025000015C08FEF80930501E0910602F09107025C
:1025100090818AE0989FC0011124909302028093D9
:102520000102892B19F081E08093100280EA9FE07C
:102530000E9416179093FC018093FB0145C08FEF1A
:1025400080930501E0910602F0910702908197FDCA
:1025500008C082E080930D021092FE011092FD01EE
:102560001AC0909580916502892B809365029181B4
:102570008AE0989FC00111249093FE018093FD0191
:1025800084E080930D0280EA9FE00E9416179093EA
:10259000FC018093FB0181E08093110215C08FEF55
:1025A00080930501E0910602F091070280818093FB
:1025B000660281E08093120207C081E080930F02DF
:1025C00003C081E08093130210920B021092070265
:1025D0001092060210920502E3E0CE5F0C941F7980
:1025E000982F8091C00085FFFCCF9093C60008957E
:1025F0000F931F9388E18093C1008091C000826097
:102600008093C0008091C10080688093C100809158
:10261000C10080648093C10000E010E00093C50019
:102620008AE290E08093C4008091010290910202BE
:102630000E94161790933B0480933A048CED90E02F
:102640000E94161790936A048093690410923C04C8
:1026500082E580933D04109240048BE080933E0419
:1026600010923F0410930702009306021092050295
:102670001F910F910895A0E1B0E0E1E4F3E10C9423
:10268000007980910701882309F4C1C28091FB0180
:102690009091FC010E941F17882361F01092FE01A7
:1026A0001092FD011092020210920102109200029B
:1026B0001092FF018091FD019091FE01892B41F064
:1026C00080911505909116050E941F17882329F403
:1026D00080911102882309F460C08091070188234A
:1026E00009F45BC080910D0201E211E08430A8F092
:1026F0000E940E2080E590E09F938F931F930F938D
:1027000081E08F938F9388E48F930E94500D2DB7B3
:102710003EB7295F3F4F2DBF34C01092670282E25F
:1027200094E09F938F9383E090E29F938F93E09147
:102730002804F0912904099584E190E09F938F93F8
:102740001F930F9381E090E09F938F938DE092E031
:102750009F938F9382E08F9381E08F9388E48F9390
:102760000E94500D80910D02982F8F5F80930D0273
:102770002DB73EB7215F3F4F2DBF943010F0109220
:102780000D028091FD019091FE010E941617909319
:10279000160580931505109211028091120288236C
:1027A00051F180910701882331F10E940E2080E5CC
:1027B00090E09F938F9381E291E09F938F9321E02C
:1027C00030E03F932F9380E291E09F938F933F936C
:1027D0002F9386E692E09F938F9383E08F9381E01F
:1027E0008F938CE48F930E94500D109212028DB73C
:1027F0009EB70F968DBF80910F028823D1F08091F4
:1028000007018823B1F08AE090E09F938F938CE3D7
:1028100094E09F938F9381E08F938F9386E58F93BE
:102820000E94500D10920F022DB73EB7295F3F4F07
:102830002DBF809113028823D9F08091070188234E
:10284000B9F08BE090E09F938F938EE594E09F9397
:102850008F9381E08F93809104018F9387E48F930E
:102860000E94500D109213028DB79EB707968DBF30
:102870008091690490916A040E941F17882309F4CB
:1028800061C080910701882309F45CC080913406FF
:102890009927880F991F880F991F7C010027F7FC43
:1028A0000095102F8091710390917203A091730392
:1028B000B0917403BC01CD01A80197010E94D978A1
:1028C00030935704209356048091690390916A03D2
:1028D000A0916B03B0916C03BC01CD01A8019701DD
:1028E0000E94D97830935904209358048091FE02B5
:1028F00080935A048091FD0280935B0488E090E00D
:102900009F938F9386E594E09F938F9381E08F93BD
:1029100083E08F938BE68F930E94500D80915C042F
:102920002DB73EB7295F3F4F2DBF853018F086E0A9
:1029300080935C0483E690E00E94161790936A04EB
:10294000809369048091010290910202892B41F0E9
:1029500080913A0490913B040E941F17882321F430
:1029600080911002882339F180910701882319F1A1
:102970000E94853682E490E09F938F9381EC95E0EE
:102980009F938F9381E08F938F9384E48F930E9422
:10299000500D109210028DB79EB707968DBF809193
:1029A000010290910202009731F00E941617909355
:1029B0003B0480933A048091FF0190910002892B9F
:1029C00009F4B8C080913804909139040E941F170F
:1029D000882309F4AFC080910701882309F4AAC0B5
:1029E000809134069927880F991F880F991F7C01C1
:1029F0000027F7FC0095102F8091710390917203CE
:102A0000A0917303B0917403BC01CD01A80197019B
:102A10000E94D97830932B0420932A048091690373
:102A200090916A03A0916B03B0916C03BC01CD013E
:102A3000A80197010E94D97830932D0420932C048B
:102A40002091090830910A0840910B0850910C0818
:102A5000DA01C90163E0880F991FAA1FBB1F6A959D
:102A6000D1F7820F931FA41FB51F820F931FA41FBE
:102A7000B51F209196013091970140919801509196
:102A80009901BC01CD010E94D97830932F04209385
:102A90002E048091390390913A03A0913B03B091A9
:102AA0003C0339E0B595A795979587953A95D1F769
:102AB000809330048091350390913603A0913703C1
:102AC000B091380329E0B595A795979587952A95F4
:102AD000D1F7809331048091410390914203A091FA
:102AE0004303B091440309E0B595A7959795879561
:102AF0000A95D1F7809332048EE090E09F938F93F4
:102B00008AE294E09F938F9381E08F938F9383E485
:102B10008F930E94500D8091FF01909100020E94BE
:102B2000161790933904809338042DB73EB7295F68
:102B30003F4F2DBF809106018F3F71F1992714E01F
:102B4000880F991F1A95E1F78E5D9D4F40E150E087
:102B5000BC01CE0101960E94B87680E190E09F937F
:102B60008F93CE0101969F938F9381E090E09F9386
:102B70008F9386E091E09F938F9382E08F9381E023
:102B80008F9381E48F930E94500D8FEF8093060105
:102B90008DB79EB70B968DBF809103068823D1F029
:102BA000809107018823B1F081E090E09F938F939B
:102BB00083E096E09F938F9381E08F938F9382E4DD
:102BC0008F930E94500D109203062DB73EB7295FD8
:102BD0003F4F2DBF80910E028823C9F080910701DD
:102BE0008823A9F084E390E09F938F9383E497E098
:102BF0009F938F9381E08F938F9380E58F930E94B3
:102C0000500D10920E028DB79EB707968DBFE6E06D
:102C1000C05F0C941C791F920F920FB60F92112473
:102C20002F933F935F936F937F938F939F93AF9374
:102C3000BF93EF93FF9320E080912302882329F034
:102C40008091230281508093230280910B0488237A
:102C500019F0815080930B0480912B028150809356
:102C60002B028F3F09F05BC089E080932B0280919B
:102C7000290290912A02019690932A0280932902B8
:102C800080910F018F5F817080930F01882319F469
:102C900081E080932802349903C081E080932C0264
:102CA0008091240290912502892B21F180912402A8
:102CB000909125020B9750F080912402909125026B
:102CC0000A97909325028093240204C01092250253
:102CD00010922402809124029091250220910801F3
:102CE0003091090182239323892B11F021E008C040
:102CF00020E006C08FEF9FEF9093090180930801B9
:102D000080910201222331F08A3011F45A9A07C0CF
:102D1000479A05C08A3011F45A9801C047988091AB
:102D20002C02882309F472C02091E901222309F0C2
:102D30006DC08091250683FF69C086B19927FC018B
:102D4000E071F07084FF14C08091260290912702F8
:102D500001969093270280932602809126029091FB
:102D60002702895E934008F451C020932C024EC084
:102D70008091260290912702892B09F443C080910B
:102D80002602909127028A569140E0F58091260212
:102D90009091270269E270E00E949078809126026B
:102DA00090912702860F971F909327028093260207
:102DB00080912602909127020B9750F08091260275
:102DC000909127020A979093300380932F0304C0B9
:102DD000F0933003E0932F0380912F039091300301
:102DE00020912D0330912E03821B930B845E9D4F07
:102DF00068E671E00E94A478845B904090932C0375
:102E000080932B031092270210922602FF91EF91DC
:102E1000BF91AF919F918F917F916F915F913F9102
:102E20002F910F900FBE0F901F901895209129029F
:102E300030912A02280F391FC90101960895209167
:102E4000290230912A02821B930B892F992786959C
:102E5000807490700895CF93DF930E941617EC0151
:102E6000CE010E941F178823D9F3DF91CF910895D7
:102E7000CF93DF930E941617EC0109C080911001D7
:102E8000882329F0909310018FEC80937A00CE0173
:102E90000E941F17982F882389F3DF91CF910895FF
:102EA0009FB7F8945F983E9A469A8091B0008F70D1
:102EB0008093B0008091B00083608093B0008091D7
:102EC000B1008B738093B1008091B1008B608093CF
:102ED000B1001092B2008FEF8093B3008091B000E8
:102EE00080688093B000809170008A7F809370002A
:102EF000809170008260809370009FBF08958AE087
:102F000090E00E941617909332028093310282E083
:102F100085BD83EA84BD17BC84EB88BD86E086BD91
:102F200080916E00816080936E000895A0E0B0E013
:102F3000ECE9F7E10C94FF7880914F06E82FFF272A
:102F4000E456FE4F9681D08080910E01A92FBB27B9
:102F5000A7FDB095CB2FDB2F813009F0C9C02091A0
:102F60007103309172034091730350917403BD015A
:102F7000CE010E94657897FF04C061587F4F8F4F44
:102F80009F4F7B018C0167E015950795F794E794B7
:102F90006A95D1F78D2D992787FD9095A92FB92F87
:102FA0002091690330916A0340916B0350916C0347
:102FB000BC01CD010E94657897FF04C061587F4F26
:102FC0008F4F9F4F57E095958795779567955A95C1
:102FD000D1F7F801E701C61BD70BE80BF90B80917D
:102FE00046069927AA27BB27BC01CD019E01AF0148
:102FF0000E94657897FF04C061507E4F8F4F9F4FAE
:10300000FC01EB0149E0F595E795D795C7954A9501
:10301000D1F78091C101992736E0880F991F3A9521
:10302000E1F740910C0150910D0120914E0633279C
:10303000841B950BB9010E94A47880910C0190919A
:103040000D01860F971F90930D0180930C018091C5
:103050000C0190910D0197FD0F9624E095958795B1
:103060002A95E1F790931F0280931E0280917D06BE
:1030700080FF07C080911E0290911F028C0F9D1F40
:1030800006C080911E0290911F028C1B9D0B909395
:103090001F0280931E0280914706282F3327220F9C
:1030A000331F220F331F80911E0290911F0282173F
:1030B00093077CF080914806282F3327220F331F77
:1030C000220F331F80911E0290911F02281739078B
:1030D00024F430931F0220931E0280910201843158
:1030E00008F4C2C080910E018F5F80930E01BEC0B4
:1030F0002091690330916A0340916B0350916C03F6
:10310000BD01CE010E94657897FF04C061587F4FD2
:103110008F4F9F4F7B018C01C7E015950795F79462
:10312000E794CA95D1F78D2D992787FD9095A92F02
:10313000B92F209171033091720340917303509124
:103140007403BC01CD010E9465789B01AC0197FF1F
:1031500004C021583F4F4F4F5F4FB7E055954795FB
:1031600037952795BA95D1F72E0D3F1D401F511F5A
:1031700080914A069927AA27BB27BC01CD010E944E
:10318000657897FF04C061507E4F8F4F9F4FFC01C1
:10319000EB01A9E0F595E795D795C795AA95D1F7E5
:1031A0008091C001992776E0880F991F7A95E1F701
:1031B00040910A0150910B0120914E063327841B48
:1031C000950BB9010E94A47880910A0190910B019E
:1031D000860F971F90930B0180930A0180910A013B
:1031E00090910B0197FD0F9664E0959587956A95F0
:1031F000E1F790931D0280931C0280917D0681FF70
:1032000007C080911C0290911D028C0F9D1F06C06B
:1032100080911C0290911D028C1B9D0B90931D02AE
:1032200080931C0280914B06282F3327220F331FD7
:10323000220F331F80911C0290911D028217930769
:103240007CF080914C06282F3327220F331F220F4A
:10325000331F80911C0290911D022817390724F416
:1032600030931D0220931C0210920E01E7E0CDB7AF
:10327000DEB70C941B791F920F920FB60F92112498
:103280002F933F934F935F938F939F93EF93FF936E
:103290008091020190912D02843108F04CC0992355
:1032A00009F01CC18091B00086FF24C08091B0005D
:1032B0008F7B8093B00080911E0290911F028755F2
:1032C0009E4F909321028093200225E08D3D92072E
:1032D00018F08CED95E005C08757914030F487E7F2
:1032E00091E090932102809320028091200290919E
:1032F0002102BAC08091B00080648093B0008091B8
:103300004D06282F33278DED96E0289FA001299F99
:10331000500D389F500D1124CA0120912E0230917A
:103320002F02821B930B909321028093200281E055
:1033300080930E01D0C0992309F0D0C08091B000D5
:1033400086FF97C08091B0008F7B8093B000E091A2
:103350003002EE23F1F480914D06282F33278DEDB6
:1033600096E0289FA001299F500D389F500D1124F1
:10337000CA0120912E0230912F02821B930B909351
:1033800021028093200210922F0210922E02469A60
:10339000A2C089EA93E090932102809320028E2FAD
:1033A000992783309105D9F08430910534F4813028
:1033B000910549F0029761F020C08430910591F0A9
:1033C000059799F01AC080911E0290911F0204C0C7
:1033D00080911C0290911D0287559E4F1DC08091C7
:1033E000D70705C08091B10702C08091DF079927F8
:1033F000880F991F880F991FEFCFFF27EE0FFF1F30
:10340000ED5BF84F20813181220F331F8091200224
:1034100090912102820F931F9093210280932002AA
:10342000809120029091210255E08D3D950718F082
:103430008CED95E005C08757914030F487E791E027
:10344000909321028093200220912002309121024A
:103450002C5B3040309321022093200280912E0279
:1034600090912F02820F931F90932F0280932E0230
:1034700032C08091B00080648093B0008CEB90E00B
:10348000909321028093200280912E0290912F022E
:1034900084549F4F90932F0280932E02809122029A
:1034A000882321F080911D03833320F48091220230
:1034B000823011F4469801C0469A809130028F5FA5
:1034C0008093300290914D06981728F481E0809304
:1034D0000E011092300281E080932D022091200293
:1034E0003091210241E02F37340730F08FEF809385
:1034F000B3002F5F30400FC02F3F3105C9F0C0F03F
:10350000A9014F5F50404F37510550F480E8809338
:10351000B30020583040309321022093200212C083
:103520008FEF8093B30050932102409320020AC092
:10353000809120028093B300109221021092200209
:1035400010922D02FF91EF919F918F915F914F917A
:103550003F912F910F900FBE0F901F9018951092D2
:103560007C008FEC80937A000895CF93DF931092C4
:10357000370286E987BD83E090E00E94BB2CC82F0C
:10358000863E08F4C65FC8BD84E690E00E94381706
:1035900080911401909115018152934010F0C0EF79
:1035A00002C0C530F8F0C8BD82E390E00E94381731
:1035B00087E394E09F938F9380EF92E19F938F93A3
:1035C000E0912804F09129040995809114019091CB
:1035D00015010F900F900F900F908152934010F4AF
:1035E000C550DFCF6C2F83E090E00E94C32CCF301A
:1035F00018F0CCE8D0E002C0C0E0D0E0CA3FD1056E
:10360000F8F4C7BD82E390E00E94381789E394E0A4
:103610009F938F9380EF92E19F938F93E091280483
:10362000F0912904099580911401909115010F9052
:103630000F900F900F908052934010F02196DECFA4
:10364000C09314068091250680FF09C08C2F8A50F4
:103650008B3E28F080914104806480934104C7BD73
:103660008CE291E00E943817DF91CF910895EF929C
:10367000FF921F93CF9310E080ED97E00E94161702
:103680007C01CCE8133019F4CB3008F0C9E010E02D
:1036900080914702909148028C5F934024F480917E
:1036A000130181500AC080914702909148028750CF
:1036B000944034F0809113018F5F8093130101C017
:1036C00011E080914502909146028C5F934024F472
:1036D0008091120181500AC080914502909146026A
:1036E0008750944034F0809112018F5F80931201D3
:1036F00001C01F5F80914302909144028C5F934010
:1037000024F48091110181500AC08091430290916C
:10371000440287509440C4F0809111018F5F8093E0
:10372000110113C08BE394E09F938F9380EF92E19C
:103730009F938F93E0912804F091290409950F90AD
:103740000F900F900F905FC01F5F82E18093720215
:1037500080916C028E7F80936C0285EA8093BC001E
:10376000809113018A3040F48091410481608093FC
:1037700041048AE08093130180911301863F40F059
:103780008091410481608093410485EF809313010F
:10379000809112018A3040F48091410482608093CC
:1037A00041048AE08093120180911201863F40F02B
:1037B0008091410482608093410485EF80931201DF
:1037C000809111018A3040F480914104846080939B
:1037D00041048AE08093110180911101863F40F0FD
:1037E0008091410484608093410485EF80931101AE
:1037F00080917202882339F0C7010E941F17882325
:1038000009F090CFF5CF109210018FEC80937A00E1
:10381000809110018823E1F3CA3020F48AE090E01F
:103820000E943817C15009F02DCF86E490E00E9425
:103830003817CF911F91FF90EF9008951F920F922C
:103840000FB60F921124AF92BF92CF92DF92EF92F8
:10385000FF920F931F932F933F934F935F936F9319
:103860007F938F939F93AF93BF93EF93FF93809139
:103870005002282F3327442755278F5F809350020B
:10388000F9012231310508F08CC3EA5BFF4F0C943B
:103890002B79809178009091790046C080917800D2
:1038A000909179002CC1809178009091790090934B
:1038B00053028093520257C180917A0390917B0307
:1038C0002091780030917900821B930B909305062C
:1038D00080930406809104069091050690935D0202
:1038E00080935C025EC18091780090917900209174
:1038F0007C0330917D03821B930B9093130680937E
:103900001206809112069091130690935F028093A5
:103910005E0249C38091560290915702209178002F
:1039200030917900820F931F909357028093560233
:1039300081E03AC380915402909155022091780021
:1039400030917900820F931F909355028093540217
:1039500084E02AC380911E0190911F019C01220FD7
:10396000331F280F391F809178009091790063E010
:1039700070E00E949078260F371F36952795369570
:10398000279530931F0120931E0185E00DC3809180
:103990007800909179004091760350917703841BD1
:1039A000950B90933E0280933D0280913D02909151
:1039B0003E02029704F122E04E3E520784F4209129
:1039C00051022B5F2093510225508091EA02909181
:1039D000EB02845F914018F4215F209351028091A3
:1039E0005102853684F14F5F5F4F509377034093C8
:1039F0007603845626C080913D0290913E028F5FEF
:103A00009F4F0CF532E047325307ECF02091510202
:103A10002550209351022B5F8091EA029091EB0296
:103A2000845F914018F42F502093510280915102ED
:103A30008C394CF4415050405093770340937603B7
:103A40008C598093510281E080933C0280917800F0
:103A50009091790090930B0680930A0680913D0225
:103A600090913E029C01442737FD4095542F809150
:103A7000310390913203A0913303B0913403820F4C
:103A8000931FA41FB51F8093310390933203A0931B
:103A90003303B093340320913103309132034091CA
:103AA00033035091340357FF04C021503C4F4F4F14
:103AB0005F4F0AE055954795379527950A95D1F7B9
:103AC0008091310390913203A0913303B09134037C
:103AD000821B930BA40BB50B80933103909332039D
:103AE000A0933303B09334032EC18091540290917C
:103AF00055022091780030917900820F931F9093A6
:103B000055028093540210924F0250C280910201DC
:103B10008A3071F48091780090917900209152025E
:103B200030915302820F931F01969695879517C087
:103B30004091520250915302843158F02091780004
:103B400030917900240F351F8FEF97E0821B930B84
:103B500006C08091780090917900840F951F909312
:103B600044028093430286E01FC280917A039091C1
:103B70007B032091780030917900821B930B909306
:103B80000506809304068091040690910506209115
:103B90005C0230915D02820F931F909342028093EA
:103BA000410287E001C280917800909179002091D4
:103BB0007C0330917D03821B930B909313068093BB
:103BC0001206809112069091130620915E023091A8
:103BD0005F02820F931F9093400280933F02E3C1E4
:103BE000209156023091570280917800909179008F
:103BF000280F391F309357022093560280910201FB
:103C00008A3019F4220F331F04C0220F331F220FF2
:103C1000331F309357022093560220915602309161
:103C20005702C90137FD0796A3E095958795AA9598
:103C3000E1F7909348028093470280915802909157
:103C40005902820F931F97FD019695958795909342
:103C50005902809358022091860330918703821B7A
:103C6000930B90931D0180931C0120914D02309184
:103C70004E0280911C0190911D01280F391F37FFC2
:103C800002C02F5F3F4F3595279530934E0220930A
:103C90004D024ECE20915402309155028091780011
:103CA00090917900280F391F3093550220935402C8
:103CB000809102018A3019F4220F331F04C0220FB1
:103CC000331F220F331F309355022093540220914B
:103CD000540230915502C90137FD079663E095956E
:103CE00087956A95E1F7909346028093450280910B
:103CF0005A0290915B02820F931F97FD0196959552
:103D0000879590935B0280935A02209184033091AF
:103D10008503821B930B90931B0180931A012091C2
:103D20004B0230914C0280911A0190911B01280F97
:103D3000391F37FF02C02F5F3F4F359527953093CE
:103D40004C0220934B0283E02FC11092500281E07D
:103D500080931001809133029091340201969093E8
:103D6000340280933302809178009091790090938F
:103D70001501809314018091140190911501AA27D7
:103D8000BB27A0906002B0906102C0906202D09008
:103D90006302A80EB91ECA1EDB1EA0926002B0927A
:103DA0006102C0926202D0926302809164028F5FCE
:103DB00080936402823108F4F6C0809116019091DC
:103DC0001701A0911801B09119017C018D0123E028
:103DD000EE0CFF1C001F111F2A95D1F7E81AF90AF3
:103DE0000A0B1B0BEA0CFB1C0C1D1D1D80913702DE
:103DF000992787FD9095A92FB92FBC01CD0126ECFD
:103E000034E240E050E00E946578DC01CB01E81A22
:103E1000F90A0A0B1B0BD801C7010496A11DB11D9D
:103E2000B7FF05C0D801C7010B96A11DB11D13E056
:103E3000B595A795979587951A95D1F78093160113
:103E400090931701A0931801B093190180910C066B
:103E500090910D067C010027F7FC0095102F8091B2
:103E6000160190911701A0911801B0911901E81A5B
:103E7000F90A0A0B1B0BE0920F03F0921003009358
:103E800011031093120320913802309139024091AE
:103E90003A0250913B0257FF04C0215F3F4F4F4F02
:103EA0005F4FF4E05595479537952795FA95D1F7EB
:103EB0008091380290913902A0913A02B0913B0270
:103EC000821B930BA40BB50B80933802909339029D
:103ED000A0933A02B0933B0280913802909139024C
:103EE000A0913A02B0913B028E0D9F1DA01FB11F01
:103EF0008093380290933902A0933A02B0933B0228
:103F00008091350290913602AC01E5E0440F551FD7
:103F1000EA95E1F7481B590B8091380290913902DC
:103F2000A0913A02B0913B02B7FF03C00F96A11DCA
:103F3000B11D74E0B595A795979587957A95D1F7BA
:103F400020910F0330911003281B390B63E0220FDF
:103F5000331F6A95E1F7240F351F37FF02C0215E3A
:103F60003F4F45E0359527954A95E1F73093360266
:103F700020933502D601C501D7FE03C00196A11DCD
:103F8000B11DB595A79597958795809360029093FD
:103F90006102A0936202B093630289E0809364029D
:103FA00002C01092500282E080934F0280914F0233
:103FB00080937C0080915002882319F08FEC8093CD
:103FC0007A00FF91EF91BF91AF919F918F917F9177
:103FD0006F915F914F913F912F911F910F91FF90A2
:103FE000EF90DF90CF90BF90AF900F900FBE0F90EB
:103FF0001F90189590E2E1E2F1E08FE491938150F7
:1040000087FFFCCF089590916702E1E2F1E0E90FAC
:10401000F11D80839F5F909367020895EF92FF9256
:104020000F931F93CF93DF932091650220FF0AC067
:1040300080916602882311F0815002C08091200196
:104040008093660221FF0CC090916602809120014E
:10405000981719F41092660203C09F5F909366024E
:10406000822F992780FF04C081FF02C01092660250
:104070000E94FA1F80916602282F332753E0E52E15
:1040800050E2F52EC0912804D09129048A3098F48A
:1040900081E1809367023F932F9382E794E09F939F
:1040A0008F93FF92EF92FE0109952DB73EB72A5FDD
:1040B0003F4F2DBF11C080E1809367023F932F9344
:1040C00087E794E09F938F93FF92EF92FE0109950B
:1040D0008DB79EB706968DBF20916602822F9927D5
:1040E000AA27BB27FC01429710F00C94BF2AE85A7C
:1040F000FF4F43E0E42E40E2F42EC0912804D0911B
:1041000029040C942B79109267028CE794E09F931A
:104110008F9303E010E2FF92EF92FE01099584E194
:10412000809367020F900F900F900F9081E690E0C0
:104130009F938F9382E590E09F938F931F921F929E
:10414000809102016AE00E948478892F99279F93C9
:104150008F93809102010E94847899279F938F9377
:104160008CE894E09F938F93FF92EF92E091280464
:10417000F0912904099588E2809367022DB73EB734
:10418000225F3F4F2DBF8DE896E09F938F930E9453
:10419000262E99279F938F9381EA94E09F938F9384
:1041A000FF92EF92E0912804F091290409958DB7D0
:1041B0009EB708968DBF90914104992351F08CE3EE
:1041C00080936702892F99279F938F938FEA94E0BA
:1041D00081C690916D02992371F08CE38093670200
:1041E000892F99279F938F9386EC94E09F938F93C9
:1041F0001F930F9391C08091420484FF07C08CE30A
:10420000809367028BED94E00C94512A8091920187
:1042100090919301069710F00C94C82A8CE3809338
:10422000670288EE94E00C94512A8091250633E0D1
:10423000E32E30E2F32EC0912804D091290480FFB0
:1042400074C01092670280910F0390911003A091A7
:104250001103B0911203BC01CD0125E030E040E034
:1042600050E00E94D9783F932F9385EF94E09F937D
:104270008F93FF92EF92FE01099584E1809367028C
:104280002DB73EB72A5F3F4F2DBF80910B03909112
:104290000C03A0910D03B0910E03BC01CD0125E0EC
:1042A00030E040E050E00E94D9783F932F9382E0C5
:1042B00095E09F938F93FF92EF92E0912804F09105
:1042C0002904099588E2809367028DB79EB7069608
:1042D0008DBF80911401909115019F938F938FE072
:1042E00095E09F938F93FF92EF92E0912804F091D5
:1042F000290409958CE3809367022DB73EB72A5FA6
:104300003F4F2DBF87B599279F938F938CE195E001
:104310009F938F93FF92EF92E0912804F0912904EC
:1043200009958DB79EB7069633C71092670289E24A
:1043300095E09F938F93FF92EF92FE01099584E1A0
:10434000809367020F900F900F900F9088E395E095
:104350009F938F93FF92EF92E0912804F0912904AC
:10436000099588E2809367020F900F900F900F904D
:1043700081E495E09F938F93FF92EF92E091280460
:10438000F091290409958CE3809367020F900F90B8
:104390000F900F9080E595E09F938F93FF92EF929F
:1043A0000C94552A1092670289E595E09F938F93AC
:1043B00003E010E2FF92EF92FE01099584E1809301
:1043C00067020F900F900F900F9080917103909162
:1043D0007203A0917303B0917403B7FF04C08150BE
:1043E0009C4FAF4FBF4F2AE0B595A79597958795FE
:1043F0002A95D1F7BF93AF939F938F9386E695E06D
:104400009F938F931F930F93E0912804F0912904B9
:10441000099588E2809367022DB73EB7285F3F4F2A
:104420002DBF8091690390916A03A0916B03B091B5
:104430006C03B7FF04C081509C4FAF4FBF4FCAE021
:10444000B595A79597958795CA95D1F7BF93AF93E3
:104450009F938F9385E795E09F938F931F930F937F
:10446000E0912804F091290409958CE38093670278
:104470008DB79EB708968DBF80912F039091300322
:104480009F938F9384E895E09F938F931F930F934F
:10449000E0912804F091290409952DB73EB72A5FD1
:1044A0003F4F11C7109267028091470790914807CC
:1044B0009F938F9380914507909146079F938F9389
:1044C00083E995E09F938F93FF92EF92FE01099508
:1044D00084E1809367028DB79EB708968DBF809167
:1044E0004B0790914C079F938F9380914907909130
:1044F0004A079F938F9383EA95E09F938F93FF9250
:10450000EF92E0912804F0912904099588E28093C4
:1045100067022DB73EB7285F3F4F2DBF80914F07F1
:10452000909150079F938F9380914D0790914E07E4
:104530009F938F9383EB95E09F938F93FF92EF92DE
:10454000E0912804F091290409958CE38093670297
:104550008DB79EB708968DBF8091530790915407F1
:104560009F938F9380915107909152079F938F93C0
:1045700083EC95E0A2C01092670280911A06E82FA2
:10458000FF27EE0FFF1FED5BF84F808191819F9316
:104590008F9380911906E82FFF27EE0FFF1FED5B29
:1045A000F84F808191819F938F9383ED95E09F9346
:1045B0008F93FF92EF92FE01099584E18093670249
:1045C0008DB79EB708968DBF80911C06E82FFF27F8
:1045D000EE0FFF1FED5BF84F808191819F938F93CA
:1045E00080911B06E82FFF27EE0FFF1FED5BF84FB2
:1045F0008081918188589F4F9F938F9383EE95E0A0
:104600009F938F93FF92EF92E0912804F0912904F9
:10461000099588E2809367022DB73EB7285F3F4F28
:104620002DBF80911E06E82FFF27EE0FFF1FED5BC9
:10463000F84F8081918182599F4F9F938F938091F2
:104640001D06E82FFF27EE0FFF1FED5BF84F80815F
:10465000918182599F4F9F938F9383EF95E09F9312
:104660008F93FF92EF92E0912804F091290409952D
:104670008CE3809367028DB79EB708968DBF8091BB
:104680002006E82FFF27EE0FFF1FED5BF84F80811C
:10469000918182599F4F9F938F9380911F06E82F9E
:1046A000FF27EE0FFF1FED5BF84F8081918182594C
:1046B0009F4F9F938F9383E096E09F938F93FF92FA
:1046C000EF92E0912804F091290409952DB73EB7A7
:1046D000285F3F4FF8C51092670283E196E09F93F1
:1046E0008F9303E010E2FF92EF92FE010995809113
:1046F00002010F900F900F900F908A3009F09DC02B
:1047000084E18093670280918603909187039C01E6
:1047100097FF02C0295F3F4F287F821B930B9F9317
:104720008F93809186039091870397FD0796A3E06E
:1047300095958795AA95E1F79F938F93209186038E
:104740003091870337FF02C0295F3F4FF3E0359573
:104750002795FA95E1F78091470290914802821BD4
:10476000930B9F938F9381E296E09F938F931F9378
:104770000F93E0912804F0912904099588E2809331
:1047800067028DB79EB70A968DBF80918403909182
:1047900085039C0197FF02C0295F3F4F287F821B42
:1047A000930B9F938F93809184039091850397FD42
:1047B0000796E3E095958795EA95E1F79F938F93A8
:1047C000209184033091850337FF02C0295F3F4F5A
:1047D00073E0359527957A95E1F7809145029091A0
:1047E0004602821B930B9F938F9382E396E09F93E5
:1047F0008F931F930F93E0912804F091290409955A
:104800008CE3809367022DB73EB7265F3F4F2DBFE5
:1048100080918203909183039F938F938091820371
:10482000909183032091430230914402821B930BA9
:104830009F938F9383E496E0A7C38B3019F0843164
:1048400008F4ADC084E18093670280918603909163
:1048500087039C0197FF02C0215F3F4F207F821B8F
:10486000930B97FD0196959587959F938F938091D4
:1048700086039091870397FD0F9654E09595879551
:104880005A95E1F79F938F93209186033091870388
:1048900037FF02C0295F3F4F43E0359527954A9582
:1048A000E1F78091470290914802821B930B9F93FE
:1048B0008F9381E596E09F938F931F930F93E091E1
:1048C0002804F0912904099588E2809367022DB7A6
:1048D0003EB7265F3F4F2DBF8091840390918503A3
:1048E0009C0197FF02C0215F3F4F207F821B930BEB
:1048F00097FD0196959587959F938F93809184035B
:104900009091850397FD0F96C4E095958795CA957C
:10491000E1F79F938F93209184033091850337FFB4
:1049200002C0295F3F4FB3E035952795BA95E1F76F
:104930008091450290914602821B930B9F938F9327
:1049400083E696E09F938F931F930F93E091280443
:10495000F091290409958CE3809367028DB79EB787
:104960000A968DBF809182039091830397FD0196F3
:10497000959587959F938F93809182039091830360
:104980002091430230914402821B930B9F938F939B
:1049900085E796E09F938F931F930F9392CE8D3070
:1049A00009F0F6C584E1809367028091130199278D
:1049B0009F938F93809186039091870397FD0F9625
:1049C000F4E095958795FA95E1F79F938F93209161
:1049D00086033091870337FF02C0295F3F4FE3E032
:1049E00035952795EA95E1F7809147029091480225
:1049F000821B930B9F938F9384E896E09F938F93F2
:104A00001F930F93E0912804F0912904099588E2FF
:104A1000809367028DB79EB70A968DBF8091120171
:104A200099279F938F93809184039091850397FD9D
:104A30000F9674E0959587957A95E1F79F938F93FC
:104A4000209184033091850337FF02C0295F3F4FD7
:104A500063E0359527956A95E1F78091450290913D
:104A60004602821B930B9F938F9388E996E09F9356
:104A70008F931F930F93E0912804F09129040995D7
:104A80008CE3809367022DB73EB7265F3F4F2DBF63
:104A90008091110199279F938F9380918203909128
:104AA000830397FD0196959587959F938F938091AA
:104AB0008203909183032091430230914402821B30
:104AC000930B9F938F938CEA96E09F938F931F9302
:104AD0000F93E0912804F091290409958DB79EB7B2
:104AE0000A9656C31092670280EC96E09F938F93CC
:104AF000FF92EF92FE01099584E1809367020F9087
:104B00000F900F900F9080917C0390917D039F9365
:104B10008F9380913F02909140029F938F938DECF1
:104B200096E09F938F93FF92EF92E0912804F0918B
:104B30002904099588E2809367022DB73EB7285F64
:104B40003F4F2DBF80917A0390917B039F938F936A
:104B500080914102909142029F938F938CED96E059
:104B60009F938F93FF92EF92E0912804F091290494
:104B700009958CE3809367028DB79EB708968DBF29
:104B800080917603909177039F938F9380913D025C
:104B900090913E029F938F938BEE96E08ECD109274
:104BA000670280911E0190911F016AE070E00E94EF
:104BB000A4789F938F9380911E0190911F016AE0CA
:104BC00070E00E94A4787F936F938AEF96E09F93A2
:104BD0008F93FF92EF92FE01099584E18093670223
:104BE0008DB79EB708968DBF8091800890918108FF
:104BF0006AE070E00E9490789F938F938091800884
:104C0000909181086AE070E00E9490787F936F93A2
:104C10008EE097E09F938F93FF92EF92E0912804AC
:104C2000F0912904099588E2809367022DB73EB779
:104C3000285F3F4F2DBF80918208909183089F93FA
:104C40008F9382E297E09F938F93FF92EF92E09190
:104C50002804F091290409958CE3809367028DB7AD
:104C60009EB706968DBF80918408909185089F938A
:104C70008F9382E397E02EC11092670284E497E05D
:104C80009F938F93FF92EF92FE01099584E18093A9
:104C900067020F900F900F900F90809143079091B3
:104CA00044079F938F938DE497E09F938F93FF9298
:104CB000EF92E0912804F0912904099588E280930D
:104CC00067028DB79EB706968DBF80911D03992709
:104CD0009F938F938DE597E09F938F93FF92EF9231
:104CE000E0912804F091290409958CE380936702F0
:104CF0002DB73EB72A5F3F4F2DBF809142079927BE
:104D000001979F938F938DE697E002CB10926702F5
:104D10008DE797E09F938F93FF92EF92FE010995A5
:104D200084E1809367020F900F900F900F90809115
:104D30002B0390912C039F938F9385E897E09F938B
:104D40008F93FF92EF92E0912804F0912904099546
:104D500088E2809367022DB73EB72A5F3F4F2DBF91
:104D600080912F03909130039F938F9383E997E075
:104D70009F938F93FF92EF92E0912804F091290482
:104D800009958CE3809367028DB79EB706968DBF19
:104D900080912D0390912E039F938F9381EA97E04A
:104DA00099C01092670280911E0399279F938F9359
:104DB0008FEA97E09F938F93FF92EF92FE01099500
:104DC00084E1809367028DB79EB706968DBF809170
:104DD0001F0399279F938F938BEB97E09F938F935C
:104DE000FF92EF92E0912804F0912904099588E25E
:104DF000809367022DB73EB72A5F3F4F2DBF80914A
:104E0000200399279F938F9387EC97E09F938F932D
:104E1000FF92EF92E0912804F091290409958CE328
:104E2000809367028DB79EB706968DBF8091210350
:104E300099279F938F9383ED97E04CC01092670260
:104E40008091220399279F938F938FED97E09F93F3
:104E50008F93FF92EF92FE01099584E180936702A0
:104E60008DB79EB706968DBF8091230399279F9398
:104E70008F938BEE97E09F938F93FF92EF92E09149
:104E80002804F0912904099588E2809367022DB7E0
:104E90003EB72A5F3F4F2DBF8091240399279F93F0
:104EA0008F9387EF97E09F938F93FF92EF92E0911C
:104EB0002804F091290409958CE3809367028DB74B
:104EC0009EB706968DBF8091250399279F938F9358
:104ED00083E098E09F938F93FF92EF92D9CA10924C
:104EE00067028FE098E09F938F9303E010E2FF92B8
:104EF000EF92FE01099584E1809367020F900F9075
:104F00000F900F908091C10199279F938F9387E114
:104F100098E09F938F93FF92EF92E0912804F09195
:104F20002904099588E2809367028DB79EB706969B
:104F30008DBF80911E0290911F0297FD039695955B
:104F40008795959587959F938F9385E298E09F939A
:104F50008F931F930F93E0912804F09129040995F2
:104F60008CE3809367022DB73EB72A5F3F4F2DBF7A
:104F70008091480699279F938F93809147069927A0
:104F80009F938F9383E398E09F938F931F930F9347
:104F9000E0912804F091290409958DB79EB70896F1
:104FA000F7C01092670281E498E09F938F93FF927D
:104FB000EF92FE01099584E1809367020F900F90B4
:104FC0000F900F9080916204992787FD90959F9391
:104FD0008F9380916104992787FD90959F938F937C
:104FE00081E598E09F938F93FF92EF92E0912804E0
:104FF000F0912904099588E2809367022DB73EB7A6
:10500000285F3F4F2DBF80916304992787FD9095BE
:105010009F938F938091640499279F938F9381E648
:1050200098E09F938F93FF92EF92E0912804F09184
:10503000290409958CE3809367028DB79EB7089683
:105040008DBF8091680499279F938F938091650409
:10505000992787FD90959F938F9381E798E02DCBBB
:105060001092670281E898E09F938F93FF92EF92EE
:10507000FE01099584E1809367020F900F900F90D5
:105080000F908091FD0699278F7790709F938F9353
:105090008091F50699278F7790709F938F938091D9
:1050A000ED0699278F7790709F938F938091E506F7
:1050B00099278F7790709F938F9381E998E09F93C2
:1050C0008F93FF92EF92E0912804F09129040995C3
:1050D00088E2809367028DB79EB70C968DBF809152
:1050E0001D0799278F7790709F938F938091150755
:1050F00099278F7790709F938F9380910D079927B1
:105100008F7790709F938F938091050799278F7762
:1051100090709F938F9382EA98E09F938F93FF9272
:10512000EF92E0912804F091290409958CE3809393
:1051300067022DB73EB7245F3F4F2DBF80913D07DB
:1051400099278F7790709F938F9380913507992738
:105150008F7790709F938F9380912D0799278F77EA
:1051600090709F938F938091250799278F779070E8
:105170009F938F9383EB98E09F938F93FF92EF928F
:10518000E0912804F091290409958DB79EB70C96FB
:105190008DBFFEC11092670284EC98E09F938F93BD
:1051A000FF92EF92FE01099584E1809367020F90D0
:1051B0000F900F900F9080910107992787FD909590
:1051C0009F938F938091F906992787FD90959F93E0
:1051D0008F938091F106992787FD90959F938F93E8
:1051E0008091E906992787FD90959F938F9383ED92
:1051F00098E09F938F93FF92EF92E0912804F091B3
:105200002904099588E2809367022DB73EB7245F91
:105210003F4F2DBF80912107992787FD90959F9340
:105220008F9380911907992787FD90959F938F936E
:1052300080911107992787FD90959F938F93809177
:105240000907992787FD90959F938F9384EE98E0A7
:105250009F938F93FF92EF92E0912804F09129049D
:1052600009958CE3809367028DB79EB70C968DBF2E
:1052700080914107992787FD90959F938F93809107
:105280003907992787FD90959F938F9380913107D8
:10529000992787FD90959F938F9380912907992750
:1052A00087FD90959F938F9385EF98E09F938F93C1
:1052B000FF92EF92E0912804F091290409952DB70F
:1052C0003EB7245F3F4F2DBF63C11092670286E057
:1052D00099E09F938F9303E010E2FF92EF92FE011B
:1052E000099584E1809367020F900F900F900F90C3
:1052F0008091FD06881F8827881F97E0899FC0013D
:1053000011248D969F938F938091F506881F88278F
:10531000881F96E0899FC00111248D969F938F93DB
:105320008091ED06881F8827881F95E0899FC0011E
:1053300011248D969F938F938091E506881F88276F
:10534000881F9927880F991F880F991F8D969F9303
:105350008F9385E199E09F938F93FF92EF92E09175
:105360002804F0912904099588E2809367028DB79B
:105370009EB70C968DBF80911D07881F8827881FB8
:105380009BE0899FC00111248D969F938F938091FC
:105390001507881F8827881F9AE0899FC00111245C
:1053A0008D969F938F9380910D07881F8827881F64
:1053B00099E0899FC00111248D969F938F938091CE
:1053C0000507881F8827881F992723E0880F991FC2
:1053D0002A95E1F78D969F938F9389E299E09F93A9
:1053E0008F93FF92EF92E0912804F09129040995A0
:1053F0008CE3809367022DB73EB7245F3F4F2DBFEC
:1054000080912507881F8827881F9CE0899FC001FD
:1054100011248D969F938F938DE399E09F938F93A3
:10542000FF92EF92E0912804F09129040995809170
:105430002D072DB73EB72A5F3F4F2DBF87FF12C004
:1054400080E4809367028EE499E09F938F93FF92AC
:10545000EF92E0912804F091290409950F900F90A4
:105460000F900F908091350787FF12C084E48093DE
:10547000670281E599E09F938F931F930F93E091CB
:105480002804F091290409950F900F900F900F9028
:1054900080913D0787FF7CC088E48093670284E5A4
:1054A00099E09F938F931F930F93E0912804F091BD
:1054B000290409950F900F900F900F9069C01092DA
:1054C000670287E599E09F938F93FF92EF92FE0129
:1054D000099584E1809367020F900F900F900F90D1
:1054E0008091F5019091F6019F938F9385E699E065
:1054F0009F938F93FF92EF92E0912804F0912904FB
:10550000099588E2809367028DB79EB706968DBF96
:105510008091F7019091F8019F938F9382E799E032
:105520009F938F93FF92EF92E0912804F0912904CA
:10553000099589E4809367022DB73EB72A5F3F4FF4
:105540002DBF8FE799E09F938F93FF92EF92E091A9
:105550002804F09129040995809165020F900F901D
:105560000F900F9083FF14C01092F8011092F70172
:1055700060E070E08EE090E00E94D42C09C0809141
:105580002001281719F4215020932001109266025F
:1055900010926502E6E0CDB7DEB70C941C79F9995C
:1055A000FECF92BD81BDF89A80B599270895F999EB
:1055B000FECF1FBA92BD81BD60BD0FB6F894FA9AB6
:1055C000F99A0FBE08954AEA20E030E0261737071F
:1055D00040F4FC018191480F2F5F3F4F261737079A
:1055E000C8F3842F99270895EAEA40E050E046176F
:1055F000570778F49C01F999FECF32BD21BDF89A86
:1056000080B5E80F4F5F5F4F2F5F3F4F461757073B
:1056100090F38E2F9927089581E080931B0682E0F6
:1056200080931A0683E08093190684E080931C0619
:1056300085E080931D0686E080931E0687E08093B8
:105640001F0688E08093200689E0809321068AE087
:10565000809322068BE0809323068CE080932406BF
:10566000089595E59093180680910201843170F0B9
:105670008AE08093380610925C068BE180933406B2
:105680008EE48093590680935A060DC083E0809380
:10569000380680E280935C068EE180933406909316
:1056A000590690935A068AE68093250683E08093F4
:1056B0007E0681E080933F0610927B06109278066A
:1056C00068E06093320686EE8093330680E880932C
:1056D00035065EE1509326068FEF809328069FE003
:1056E000909329065093270610922B0660932C0660
:1056F00080E480932D0610922E0690932A06109235
:1057000041061092420610924306109244061092EF
:105710005E0610925F06109260061092610638E7EE
:105720003093450648E24093460672E070937D064A
:105730009093470627EF2093480685E080934D0617
:105740008DE78093500680935106809352063093E4
:1057500049069AE590934A0610924B0620934C0610
:1057600040934E0610924F068FE58093620683EFBA
:10577000809364068AEA809366068093670684E1D4
:10578000809363068093650682E38093530690932B
:1057900054068093550610927C068EEF809368061F
:1057A00024E62093690690936A0690936B06909383
:1057B0006C068BE480936D0680936E0680936F0673
:1057C0001092700686E08093710660937206909343
:1057D0007306509374062093750620937606709393
:1057E00077061092790610927A0681E280933C0641
:1057F0008DE280933D0690933E060895CF93DF930C
:105800000E94312B8EE080932F0620E120933006FA
:105810003CE03093310690E59093360686E980931C
:1058200037069093390680933A0686E080933B06CC
:1058300080E2809340068AE580935606909357064F
:1058400081E08093580620935B0684E680935D0692
:10585000AFE7B6E0E1E7F1E0ED01019009923A959A
:10586000E1F763E770E0CD01875690400E94E32A9C
:1058700080938B06DF91CF910895CF93DF930E94A1
:10588000312B8AE080932F0680E18093300626E05A
:10589000209331069AE59093360688E78093370681
:1058A0009093390680933A0620933B0620E220939A
:1058B00040069093560680E5809357068CE38093CC
:1058C000580620935B068BE480935D06AFE7B6E055
:1058D0008CE0E8E7F1E0ED01019009928A95E1F7AB
:1058E00063E770E0CD01875690400E94E32A8093E1
:1058F0008B06DF91CF910895CF93DF930E94312BD8
:1059000088E080932F0630E13093300626E0209324
:10591000310694E69093360688E780933706909395
:10592000390680933A0620933B06309340068AE579
:105930008093560680E58093570696E49093580628
:1059400080E280935B0690935D06AFE7B6E08CE063
:10595000E0E8F1E0ED01019009928A95E1F763E753
:1059600070E0CD01875690400E94E32A80938B0619
:10597000DF91CF910895F999FECF92BD81BDF89A3C
:1059800080B599270895F999FECF1FBA92BD81BDC0
:1059900060BD0FB6F894FA9AF99A0FBE08956FECAD
:1059A0007AE20E94F376089547ED5AE20E942D773D
:1059B0000895EF92FF920F931F93CF93C82F8150BA
:1059C000853008F0C3E084E7C89F8001112480EF90
:1059D000E82E8FEFF82EE00EF11E63E770E0C701AE
:1059E0000E94F42A682F98012D593F4F8FB39927B1
:1059F000AC014270507081FDF9CF32BD21BDF89AE3
:105A000080B5861711F0CA0121C08FB399279C0178
:105A10002270307081FDF9CFF2BCE1BCF89A80B5FC
:105A2000853511F0C90112C084E7C89FC001112457
:105A300040972FEC3AE244E750E0BC0188E196E061
:105A40000E94CE760E94AC6781E090E0CF911F91DA
:105A50000F91FF90EF900895282F863010F025E0E9
:105A600003C0882309F421E0F999FECF1FBA82E030
:105A700090E092BD81BD20BD0FB6F894FA9AF99AD4
:105A80000FBE0895CF93C82F80911806853509F071
:105A900042C0C63010F0C5E003C0CC2309F43BC0BF
:105AA00063E770E088E196E00E94E32A80938B062A
:105AB00084E7C89FC001112427ED3AE244E750E093
:105AC00068E176E040970E940B7727ED3AE24CE0E0
:105AD00050E069E176E080E590E00E940B776CE0B1
:105AE00070E089E196E00E94E32A282FF999FECF21
:105AF0001FBA8CE590E092BD81BD20BD0FB6F89431
:105B0000FA9AF99A0FBE8C2F0E942C2D0E94AC6736
:105B100081E090E002C080E090E0CF9108956DE4D4
:105B200070E088EE93E00E94F42A482F8FB3992703
:105B30009C012270307081FDF9CF85E394E092BD25
:105B400081BDF89A80B5841779F48FB399279C01A9
:105B50002270307081FDF9CF88EE93E092BD81BD57
:105B6000F89A80B5813011F0C90108952FEC3AE21E
:105B70004EE450E068EE73E08CE896E00E94CE764A
:105B800081E090E0089580918C068130A9F46DE465
:105B900070E08CE896E00E94E32A8093D90627ED16
:105BA0003AE24EE450E06CE876E088EE93E00E9442
:105BB0000B7781E090E0089580E090E00895CF9326
:105BC000DF9381E080938C06ECE8F6E08FE01586A9
:105BD00016861786108A8150349687FFF8CF80E4A6
:105BE0008093990680939A0610929B0680939C0658
:105BF00080939D0690EC90939E0610929F06809352
:105C0000A0068093A1061092A2069093A3069093FB
:105C1000A4068093A5061092A6068093A7069093EB
:105C2000A806ADE8B6E087E0EAE8F1E0ED01019012
:105C300009928A95E1F76DE470E0CD0101970E9429
:105C4000E32A8093D906DF91CF910895F999FECF89
:105C500082E090E092BD81BDF89A80B5282F863011
:105C600078F023E0322FF999FECF1FBA82E090E05E
:105C700092BD81BD30BD0FB6F894FA9AF99A0FBE65
:105C8000822F992708951F93CF93C82F162F863000
:105C900010F0C5E003C0882309F4C1E08C2F9927D8
:105CA0008230910541F08330910544F4019731F43D
:105CB0000E94FE2B05C00E943D2C02C00E947C2C3D
:105CC0001123E1F06CE070E080E590E00E94F42A9E
:105CD000282FF999FECF8CE590E092BD81BDF89A0E
:105CE00080B5821759F42FEC3AE24CE050E060E5C1
:105CF00070E089E196E00E94CE7602C00E940C2BF3
:105D00008C2F0E94422DCF911F910895DF92EF9228
:105D1000FF920F931F93CF93FF24DF2CEF2C81E092
:105D200090E00E94BB2C853539F031E0E32E65E52B
:105D300081E090E00E94C32C6CE070E080E590E090
:105D40000E94F42AC82FF999FECF8CE590E092BD0D
:105D500081BDF89A80B58C1711F421E0D22EC1E0F4
:105D600001E010E0EE2029F48C2F0E94D92C88232A
:105D7000C1F591E0F92E1F930F9387E899E09F9367
:105D80008F9380EF92E19F938F93E0912804F0919D
:105D9000290409958DB79EB706968DBF023011056F
:105DA00049F0033011054CF40130110531F40E9423
:105DB000FE2B05C00E943D2C02C00E947C2CDD20E1
:105DC00059F02FEC3AE24CE050E060E570E089E1F8
:105DD00096E00E94CE7602C00E940C2B8C2F0E946F
:105DE000422DCF5F0F5F1F4FC63008F4BBCFFF209F
:105DF00019F083E00E942C2D0E94262EC82F0E94AD
:105E0000D92C8C2F99279F938F938DEA99E09F939C
:105E10008F9300EF12E11F930F93E0912804F0910C
:105E2000290409958DB79EB706968DBFEE2021F403
:105E30000E948F2D882399F486EC99E09F938F938D
:105E40001F930F93E0912804F091290409950E9473
:105E5000DF2D0E94C32D0F900F900F900F90109286
:105E6000170690E0E9E9F6E0CFE080813496181655
:105E70000CF49F5FC150C7FFF8CF90931706892F8E
:105E800099279F938F938DE896E09F938F9387EE4A
:105E900099E09F938F931F930F93E0912804F091C3
:105EA000290409958DB79EB708968DBF88E09AE0C2
:105EB0009F938F931F930F93E0912804F0912904EF
:105EC00009950F900F900F900F90CF911F910F9108
:105ED000FF90EF90DF900895982F2FB7F89439989E
:105EE000389A88B1836088B98091B9008C7F80939B
:105EF000B9008AE28093B800109272021092700288
:105F000010926F02992379F0E2EEF6E08BE01082B6
:105F10001182128213821482158216821782815096
:105F2000389687FFF4CF78942FBF089510927202AD
:105F300084E98093BC0080E88093BC001092BD008F
:105F40001092BA001092BB001092B9001092B800E3
:105F500010926E0280E00E946C2F1092BB0085E8C8
:105F60008093BC0080916C02826080936C020895E3
:105F70001F920F920FB60F9211242F933F934F93BE
:105F80005F938F939F93EF93FF9380917202282FDB
:105F90003327442755278F5F80937202F9012731F9
:105FA000310508F0C2C2E659FF4F0C942B7981E00D
:105FB00080936E0209C0809170028C3090F48091C1
:105FC00070028F5F8093700280917002E82FFF272C
:105FD000EE0FFF1FEE0FFF1FE457F94F85851816D0
:105FE00054F7809170028C3070F010926B02109216
:105FF0006A021092700285E08093720280916F02B3
:10600000880F8D5A04C080917002880F8E5A809339
:10601000BB0085E87FC280917002E82FFF2783E0F4
:10602000EE0FFF1F8A95E1F7EE51F94F81818093C2
:10603000BB0085E88093BC0080917002E82FFF27A9
:10604000EE0FFF1FEE0FFF1FEE0FFF1FEE51F94F78
:10605000808180FF91C080917002E82FFF27EE0FB2
:10606000FF1FEE0FFF1FEE0FFF1FEE51F94F828152
:10607000882329F080911706873008F46CC280913C
:106080006A0290916B02892B09F065C280916802C7
:1060900090916902892B09F05EC26EC080917002F6
:1060A00021E030E002C0220F331F8A95E2F7809191
:1060B00068029091690228233923232B79F080917B
:1060C0007002E82FFF27EE0FFF1FEE0FFF1FEE0FEE
:1060D000FF1FEE51F94F80E184830DC08091700263
:1060E000E82FFF27EE0FFF1FEE0FFF1FEE0FFF1F22
:1060F000EE51F94F148280917002E82FFF2753E090
:10610000EE0FFF1F5A95E1F7EE51F94F8481282FCA
:10611000332743E0220F331F4A95E1F78091700245
:10612000E82FFF2793E0EE0FFF1F9A95E1F7EE515E
:10613000F94F82818770822B8093BB0085E8809322
:10614000BC002091700281E090E002C0880F991F8E
:106150002A95E2F720916A0230916B028223932301
:10616000892B51F08AED96E0909376028093750228
:1061700088E080937702EFC184E089C1E0917502E5
:10618000F091760281918093BB0085E88093BC00FA
:10619000F0937602E09375028091770281508093AC
:1061A0007702882309F4D7C183E071C18091B900D7
:1061B000803351F580917302882329F48091700215
:1061C0008F5F8093730280917002E82FFF2783E036
:1061D000EE0FFF1F8A95E1F7EE51F94F8381992762
:1061E0008F7790708F3791057CF480917002E82F43
:1061F000FF27EE0FFF1FEE0FFF1FEE0FFF1FEE51E9
:10620000F94F83818F5F83831092720284E98093B8
:10621000BC008AE090E0909393018093920180917A
:1062200070028F5F80937002109272026DC1809134
:10623000B9008034C9F180916F02E82FFF27EE0F7B
:10624000FF1FEE0FFF1FEE0FFF1FEE51F94F83816F
:106250008F77838380916F028F5F80936F0280912D
:106260006F028C30A0F010926F02109269021092AF
:106270006802809174028F5F809374028C3038F0D2
:106280001092740280916C028D7F80936C028091D9
:106290006C02816080936C021092720284E9809398
:1062A000BC0010926E0273C080916F02E82FFF272E
:1062B000EE0FFF1FEE0FFF1FEE0FFF1FEE51F94F06
:1062C00083818068838380916F02E82FFF27EE0F20
:1062D000FF1FEE0FFF1FEE0FFF1FEE51F94F8081E2
:1062E00080FF2FC080916F02E82FFF2753E0EE0F51
:1062F000FF1F5A95E1F7EE51F94F848199270097D6
:1063000051F04097D9F58AED96E09093760280930C
:10631000750288E031C080916F02992743E0880FB1
:10632000991F4A95E1F78951994F9093760280938E
:10633000750290916F02809174029817E1F483E0E6
:106340001BC080916F02992733E0880F991F3A95FF
:10635000E1F78951994F909376028093750280916D
:106360006C0281FD06C090916F02809174029817B3
:1063700011F482E001C081E080937702809177027E
:10638000813011F485E801C085EC8093BC008091D8
:10639000730280936D0210927302DDC0E09175026A
:1063A000F09176028091BB0080838091750290917C
:1063B000760201969093760280937502809177021F
:1063C000815080937702823010F085EC5DC081307F
:1063D00011F485E859C080916C0281FF2DC0809135
:1063E000E90280FD1DC080916F02E82FFF2723E0A6
:1063F000EE0FFF1F2A95E1F7EE51F94F86818A3F94
:1064000079F480916F02E82FFF2793E0EE0FFF1FD2
:106410009A95E1F7EE51F94F8081816080830CC03D
:1064200080916F02E82FFF2783E0EE0FFF1F8A9510
:10643000E1F7EE51F94F108280916F028F5F8093E8
:106440006F0280916F028C30A0F010926F02109258
:10645000690210926802809174028F5F80937402C7
:106460008C3038F01092740280916C028D7F809392
:106470006C021092720284E98093BC0080916C02DD
:10648000816080936C0265C08093BC0086E080933D
:10649000720261C088E9BBCD80917102880F805F74
:1064A000B6CD8091710299278130910561F08230DB
:1064B00091051CF4892B21F04EC0029739F04BC096
:1064C00080911301A4CD80911201A1CD8091110181
:1064D0009ECD80E89CCD1092720284E98093BC002E
:1064E00010926E028AE090E0909393018093920163
:1064F00080917102823088F4809171028F5F809365
:10650000710282E18093720280916C028E7F80938F
:106510006C0285EA8093BC001EC0109271028091CB
:106520006C02816080936C0216C01092720284E942
:106530008093BC0080916C02816080936C028AE041
:1065400090E09093930180939201109270021092C8
:106550006F0210926E02FF91EF919F918F915F9168
:106560004F913F912F910F900FBE0F901F90189554
:106570001F93CF93DF93182F80911403882321F466
:1065800080910302882319F081E090E097C01D30CC
:1065900008F092C01123B1F0E12FFF2723E0EE0FA6
:1065A000FF1F2A95E1F7EE51F94F35978081359617
:1065B00088230CF081C03897808180FD03C083E080
:1065C00090E07CC08091DA06823019F084E090E09F
:1065D00075C067E070E08AED96E00E94E32A909132
:1065E000E106891719F085E090E068C080ED97E03A
:1065F0000E941617EC0180916C0280FD05C0CE014F
:106600000E941F178823B9F3112319F48FEF90E02C
:106610000BC0212F33272150304081E090E002C091
:10662000880F991F2A95E2F790936B0280936A0274
:10663000A1E0B0E0E2EEF6E040E050E06BE0CD013A
:10664000042E02C0880F991F0A94E2F720916A0273
:1066500030916B0282239323892B11F011821282D5
:1066600061504F5F5F4F389667FFE9CF109270021D
:106670001092720280916C028E7F80936C0285EA88
:106680008093BC0080916C0280FD05C0CE010E9409
:106690001F178823B9F380916A0290916B02892BAE
:1066A00029F0CE010E941F17882311F380916A02FE
:1066B00090916B02009711F082E090E0DF91CF9112
:1066C0001F9108950F931F93CF93DF93982F80917D
:1066D0001403882321F480910302882319F081E0B8
:1066E00090E092C09D30A0F4992319F486E090E0E8
:1066F0008BC0C92FDD27FE0133E0EE0FFF1F3A9557
:10670000E1F7EE51F94F35978081359687FD03C04B
:1067100082E090E079C03897808180FD03C083E0FB
:1067200090E072C080ED97E00E9416178C01809176
:106730006C0280FD05C0C8010E941F178823B9F3B1
:10674000219721E030E0C90102C0880F991FCA9546
:10675000E2F79093690280936802D901E2EEF6E0D5
:1067600040E050E06BE0CD01042E02C0880F991F7D
:106770000A94E2F720916802309169028223932300
:10678000892B11F01182128261504F5F5F4F389652
:1067900067FFE9CF10926F021092DA061092E106BD
:1067A0001092720280916C028E7F80936C0285EA57
:1067B0008093BC0080916C0280FD05C0C8010E94DE
:1067C0001F178823B9F38091680290916902892B81
:1067D00029F0C8010E941F17882311F38091DA065F
:1067E000823019F084E090E00FC067E070E08AED3D
:1067F00096E00E94E32A9091E106891719F085E05E
:1068000090E002C080E090E0DF91CF911F910F9166
:10681000089589E1A7E7B7E0E3E4F7E01182108289
:10682000329611961C921E921296815087FFF6CFD7
:1068300010928303109282031092850310928403B6
:10684000109287031092860308951F920F920FB63D
:106850000F9211240F931F932F933F934F935F93A6
:106860006F937F938F939F93AF93BF93CF93DF9358
:10687000EF93FF9380917E0682FDCFC0409186000A
:10688000509187008091790290917A02481B590BB0
:10689000809186009091870090937A02809379028C
:1068A000CA018D549440A0917B02B0917C02835F19
:1068B0009A4178F480917B0280934207149714F0F8
:1068C0001092940181E090E090937C0280937B028F
:1068D00007C2AD30B1050CF003C2CA018B5F904016
:1068E000845B914008F074C0425D5140FD01EA0FA5
:1068F000FB1FED5BF84F80819181FA01E81BF90BDA
:10690000CF01F7FF03C0909581959F4F06975CF4E8
:1069100080911D03883C20F480911D03865F01C097
:1069200088EC80931D03FD01EA0FFB1FED5BF84F20
:10693000808191819C01220F331F280F391F240F62
:10694000351F37FF02C02D5F3F4FE901D595C79531
:10695000D595C795CA0101968C179D0714F4219708
:1069600006C041505040C417D5070CF421968091C1
:106970001D03833CE0F08D010A0F1B1FF801ED5B46
:10698000F84F808191819E01281B390BC90163E07A
:1069900070E00E94A478CB01880F991F860F971F83
:1069A0000958184FD80111969C938E9307C0AA0FCF
:1069B000BB1FA958B84F11961C921E92E0917B0202
:1069C000F0917C02EE0FFF1FED5BF84FD183C08387
:1069D00020917B0230917C022F5F3F4F30937C02ED
:1069E00020937B0280910201843108F079C1253027
:1069F000310511F45D9A01C05D9880917B02909100
:106A00007C028630910511F45C9A01C05C9807976E
:106A100011F45B9A65C15B9863C140918600509107
:106A2000870080917D0290917E02481B590B8091D6
:106A300086009091870090937E0280937D02CA0128
:106A40008D5494406091E702835F9A4108F07AC0C8
:106A50006093780280917802843008F453C090915A
:106A6000420780917802981709F04CC05091E802D3
:106A70005B3008F43FC0109294011092E70240E0AE
:106A80005F31C0F0E42FFF27EE0FFF1F9F012D5451
:106A90003D4FDF01AD5BB84F8D919C91D9018D9336
:106AA0009C93DF01A958B84F8D919C91E353FD4F02
:106AB00091838083E42FFF27EE0FFF1F9F012D5B43
:106AC000384FDF01A158BD4F8D919C91D90111968E
:106AD0009C938E93DF01A756BD4F8D919C91E958F1
:106AE000F84F91838083842F8F5F482F8D3040F241
:106AF0008093E7028091E8028F3FB9F08F5F809327
:106B0000E80213C08091E802853620F08AE0809385
:106B1000E80202C01092E802809102018A3011F06E
:106B2000843110F0289A01C0289881E08093E70210
:106B300080911403882309F0D3C080917802809358
:106B40004207CEC06D3008F0A3C0CA018B5F9040F1
:106B5000845B914008F07EC0425D5140E62FFF27E4
:106B6000EE0FFF1FE158FD4F80819181FA01E81B74
:106B7000F90BCF0105960B97B0F48091E8028A31AA
:106B800020F080911D03865F05C08B3028F0809136
:106B90001D038E5F80931D0380911D03893C18F0B7
:106BA00088EC80931D03E62FFF27EE0FFF1FE158AF
:106BB000FD4F808191819C01220F331F280F391FC7
:106BC000240F351F37FF02C02D5F3F4FE901D595D8
:106BD000C795D595C795CA0101968C179D0714F4E2
:106BE000219706C041505040C417D5070CF4219698
:106BF00080911D038E3BD8F0E62FFF27EE0FFF1F7D
:106C0000DF01A158BD4F8D919C919E01281B390B2E
:106C1000C90163E070E00E94A478CB01880F991F3E
:106C2000860F971FE756FD4F9183808308C0E62F9C
:106C3000FF27EE0FFF1FE756FD4F11821082809154
:106C4000E702E82FFF27EE0FFF1FE158FD4FD1832A
:106C5000C08309C0809102018A3011F0843110F0A4
:106C6000289A01C0289880910201843188F480918B
:106C7000E702853011F45D9A05C05D98863011F405
:106C80005C9A05C05C98873011F45B9A01C05B98F0
:106C90008091E702843120F48F5F8093E70220C067
:106CA0008431F1F4809102018A3011F0843110F0C6
:106CB000289A01C028988EE18093E7022CE0C7E76C
:106CC000D7E0A3EBB2E0E3E4F7E08D919D919183EF
:106CD00080833296198218822296215027FFF5CFA1
:106CE000FF91EF91DF91CF91BF91AF919F918F91E4
:106CF0007F916F915F914F913F912F911F910F91D4
:106D00000F900FBE0F901F901895EF92FF920F9368
:106D10001F93809134069927880F991F880F991F18
:106D20007C010027F7FC0095102F80917103909152
:106D30007203A0917303B0917403BC01CD01A8014B
:106D400097010E94D9783093C4052093C3058091A0
:106D5000690390916A03A0916B03B0916C03BC012D
:106D6000CD01A80197010E94D9783093C6052093E0
:106D7000C5058091FD079091FE0797FD03969595B7
:106D80008795959587959093C8058093C7058091C1
:106D90000D0890910E0897FD03969595879595950A
:106DA00087959093CA058093C9058091820390913D
:106DB00083032091430230914402821B930B9093F2
:106DC000CC058093CB0580910F0390911003A09187
:106DD0001103B0911203BC01CD0125E030E040E089
:106DE00050E00E94D9783093CE052093CD05809154
:106DF0003D0290913E029093D0058093CF05809103
:106E00002F03909130039093D4058093D305809104
:106E10001E0190911F019093D6058093D505809116
:106E20001D0399279093D8058093D7058091090871
:106E300090910A08A0910B08B0910C08209196013E
:106E4000309197014091980150919901BC01CD0179
:106E50000E94D9783093DA052093D9058091E30612
:106E600099279093DC058093DB058091EB069927A9
:106E70009093DE058093DD058091F306992790932A
:106E8000E0058093DF058091FB0699279093E2054A
:106E90008093E10580911E0290911F029093EC0572
:106EA0008093EB0580918008909181089093F00584
:106EB0008093EF0580918408909185089093F20566
:106EC0008093F1058091860899279093FE05809321
:106ED000FD058091F9039091FA0390930006809349
:106EE000FF058091F7039091F80390930206809339
:106EF000010680914104882321F480914204882373
:106F000021F08091C205816003C08091C2058E7F0F
:106F10008093C2051F910F91FF90EF9008951F93EA
:106F2000CF93DF93182FEB01809114038823A1F4F2
:106F300011501F3F89F0D0932502C0932402809105
:106F4000240290912502892BD1F7CE018C0F9D1F31
:106F50000E942B17115078F7DF91CF911F91089560
:106F6000CF93DF93809102018D3011F40E94371B83
:106F700010927A0080914702909148029093C40742
:106F80008093C30780914502909146029093B50784
:106F90008093B40780914302909144029093030838
:106FA0008093020820913F0230914002C901880F6E
:106FB000991F880F991F820F931F820F931F909321
:106FC000FE078093FD072091410230914202C901E2
:106FD000880F991F880F991F820F931F820F931F8D
:106FE00090930E0880930D088FEC80937A00AEE1A9
:106FF000B3E0CDE1D6E097E08991E82FFF27EE0FCF
:10700000FF1FED5BF84F0190F081E02DE259FF4F3B
:107010001E161F061CF0E0E0F0E005C0EF3FF10592
:1070200014F0EFEFF0E08C91282F3327E217F307ED
:1070300014F4815004C02E173F0714F48F5F8C9313
:107040009150119697FFD8CF809159069927AA277A
:10705000BB27BC01CD0124EC39E040E050E00E94A8
:107060006578DC01CB018093D5019093D601A09384
:10707000D701B093D80180915A069927AA27BB2738
:10708000BC01CD010E946578DC01CB018093D10168
:107090009093D201A093D301B093D401DF91CF910B
:1070A0000895A0E0B0E0E7E5F8E30C94FA78882EC4
:1070B000C0E0D0E07E016E0110924104469AD09368
:1070C0007D03C0937C03D0937B03C0937A03D0935A
:1070D0007703C0937603D0938703C0938603D0933E
:1070E0008503C0938403D0938303C09382031092DB
:1070F000BE011092BD01109237020E94B03784E6A3
:1071000090E00E9438170E94B0378091250680FFDA
:1071100010C08091140190911501875B934038F461
:1071200080911401909115018E5E924010F40E949E
:10713000B51A0FE18AE090E00E943817809143026F
:1071400090914402C80FD91F809147029091480244
:10715000E80EF91E8091450290914602C80ED91E94
:10716000015007FFE7CF9701205F3F4F36952795E6
:10717000369527953093870320938603C601409662
:10718000969587959695879590938503809384032C
:107190006096F5E0D695C795FA95E1F7D09383030D
:1071A000C0938203909381038093800330937F0385
:1071B00020937E03882009F441C08091FD079091BF
:1071C000FE0797FF03C0909581959F4F6CE070E09C
:1071D0000E94A4789B0170937D0360937C0380914F
:1071E0000D0890910E0897FF03C0909581959F4FD1
:1071F0006CE070E00E94A47870937B0360937A0344
:1072000080910A0690910B06909377038093760302
:10721000B90184E090E00E94D42C60917A037091CF
:107220007B0386E090E00E94D42C609176037091FD
:10723000770388E090E00E94D42C65C084E090E061
:107240000E94CF2C90937D0380937C0386E090E096
:107250000E94CF2C90937B0380937A0388E090E088
:107260000E94CF2C9C0190937703809376038091AA
:107270007C0390917D038150984050F480917A0373
:1072800090917B038150984018F421503440D8F1FC
:1072900089E29AE09F938F9380EF92E19F938F937F
:1072A000E0912804F091290409958091FD079091BF
:1072B000FE0797FF03C0909581959F4F6CE070E0AB
:1072C0000E94A47870937D0360937C0380910D08E5
:1072D00090910E0897FF03C0909581959F4F6CE0A9
:1072E00070E00E94A47870937B0360937A0380918E
:1072F0000A0690910B0690937703809376030F9084
:107300000F900F900F901092C4071092C307109225
:10731000B5071092B407109203081092020884E691
:1073200090E00E94381780913F02909140029C01AA
:10733000220F331F220F331F280F391F280F391F29
:107340003093FE072093FD07809141029091420205
:107350008C01000F111F000F111F080F191F080FBC
:10736000191F10930E0800930D0880913406C82E43
:10737000DD24EE24FF24442737FD4095542FC70118
:10738000B6010E9465784B015C01609371037093B4
:10739000720380937303909374039801442737FD1D
:1073A0004095542FC701B6010E946578DC01CB01DE
:1073B0008093690390936A03A0936B03B0936C036B
:1073C00080924D0390924E03A0924F03B0925003CF
:1073D0008093450390934603A0934703B0934803DB
:1073E00010924103109242031092430310924403FF
:1073F0008091160190911701A0911801B091190187
:1074000090930D0680930C0610923602109235026E
:10741000109231031092320310923303109234030E
:1074200080912F039091300390932E0380932D032E
:107430000E94356382E390E09093250280932402BA
:10744000809159069927AA27BB27BC01CD0124ECBE
:1074500039E040E050E00E946578DC01CB018856BD
:10746000954CAF4FBF4F8093D5019093D601A09319
:10747000D701B093D80180915A069927AA27BB2734
:10748000BC01CD010E946578DC01CB018856954C8A
:10749000AF4FBF4F8093D1019093D201A093D301FE
:1074A000B093D40110929B0110929A0180912F0306
:1074B00090913003AA2797FDA095BA2F20919601AD
:1074C000309197014091980150919901BC01CD01F3
:1074D0000E946578DC01CB018093090890930A082B
:1074E000A0930B08B0930C08109228031092270366
:1074F00081E0809301010E94AC678091E902846081
:107500008093E9028FEF80937B0810927C0880E2E1
:1075100080937D08CEE1D3E0ADE1B6E007E08D9148
:10752000E82FFF27EE0FFF1FED5BF84F8081918161
:1075300082598993015007FFF2CF84E680931D039F
:1075400080912202882311F0469A579A80918603EF
:107550009091870380569940815C9B4228F08091EE
:10756000410481608093410480918403909185035C
:1075700080569940815C9B4228F080914104826052
:107580008093410480918203909183038C529140B7
:107590008957954028F0809141048460809341048C
:1075A00080917C0390917D038C529140835C91404B
:1075B00028F08091410488608093410480917A038F
:1075C00090917B038C529140835C914028F0809194
:1075D0004104806180934104809176039091770308
:1075E000805092408355914028F080914104806200
:1075F00080934104ECE0CDB7DEB70C941679A3E19B
:10760000B0E0E5E0FBE30C94F47880918203909184
:1076100083032091430230914402821B930B909389
:1076200003088093020880914D0290914E0297FDCD
:1076300007969C0113E0359527951A95E1F730934D
:10764000C4072093C30780914B0290914C0297FD91
:107650000796B3E095958795BA95E1F79093B507AE
:107660008093B4073093CF072093CE079093C7073A
:107670008093C6078091FD079091FE07AC01440FEF
:10768000551F480F591F20913F0230914002C901F8
:10769000880F991F880F991F820F931F820F931FC6
:1076A000480F591F57FF02C04D5F5F4F55954795D3
:1076B000559547955093FE074093FD0780910D081F
:1076C00090910E08AC01440F551F480F591F20918F
:1076D000410230914202C901880F991F880F991FFA
:1076E000820F931F820F931F480F591F57FF02C02D
:1076F0004D5F5F4F559547955595479550930E08AB
:1077000040930D0820913F0230914002C901880F3B
:10771000991F880F991F820F931F820F931F9C013F
:10772000442737FD4095542F809161039091620367
:10773000A0916303B0916403820F931FA41FB51F30
:107740008093610390936203A0936303B0936403F7
:107750002091410230914202C901880F991F880F80
:10776000991F820F931F820F931F9C01442737FD9F
:107770004095542F80915D0390915E03A0915F032B
:10778000B0916003820F931FA41FB51F80935D0308
:1077900090935E03A0935F03B09360038091D8073A
:1077A0009091D90720913F0230914002820F931FA0
:1077B0009093D9078093D807809105089091060887
:1077C0002091410230914202820F931F909306084C
:1077D00080930508809178039091790301969093A6
:1077E00079038093780380910A0690910B0620918B
:1077F000760330917703821B930B9C01442737FD5E
:107800004095542F8091590390915A03A0915B03A6
:10781000B0915C03820F931FA41FB51F809359037F
:1078200090935A03A0935B03B0935C038FEC809317
:107830007A00109210012091490330914A0340913F
:107840004B0350914C0329873A874B875C87295417
:107850003B46414050402CF028E43BE641E050E0FC
:107860000DC089859A85AB85BC85885B9449AE4FF0
:10787000BF4F4CF428EB34E94EEF5FEF2D833E838E
:107880004F83588708C089859A85AB85BC858D83D1
:107890009E83AF83B887209151033091520340916A
:1078A0005303509154032D873E874F87588B29549B
:1078B0003B46414050402CF028E43BE641E050E09C
:1078C0000DC08D859E85AF85B889885B9449AE4F84
:1078D000BF4F4CF428EB34E94EEF5FEF29833A8336
:1078E0004B835C8308C08D859E85AF85B88989836D
:1078F0009A83AB83BC83A0910208B0910308BB8B31
:10790000AA8BFD01CF01AA2797FDA095BA2FA090C1
:107910004103B0904203C0904303D0904403A80EAB
:10792000B91ECA1EDB1EA0924103B0924203C09250
:107930004303D0924403E0900908F0900A080091B4
:107940000B0810910C08E80EF91E0A1F1B1FE0928D
:107950000908F0920A0800930B0810930C08F091A4
:107960000403F98BFF2309F098C180910303882356
:1079700009F093C18091250686FF8FC18091B407DD
:107980009091B507AA2797FDA095BA2FBC01CD010C
:1079900029813A814B815C810E9465789B01AC0111
:1079A00097FF04C02150384F4F4F5F4FBBE05595B4
:1079B000479537952795BA95D1F78091BD01682EE7
:1079C000772488249924CA01B901A40193010E9453
:1079D0006578DC01CB018093920390939303A0938D
:1079E0009403B0939503B7FF04C08150904FAF4FFD
:1079F000BF4F1C012D01ACE0559447943794279458
:107A0000AA95D1F720929203309293034092940367
:107A1000509295038091C3079091C407AA2797FDC0
:107A2000A095BA2FBC01CD012D813E814F81588593
:107A30000E94657897FF04C06150784F8F4F9F4F29
:107A4000FBE09595879577956795FA95D1F7A40111
:107A500093010E946578DC01CB018093960390939B
:107A60009703A0939803B0939903B7FF04C0815084
:107A7000904FAF4FBF4F9C01AD01ECE0559547953E
:107A800037952795EA95D1F720939603309397037E
:107A9000409398035093990380919203909193039C
:107AA0009093AC078093AB078091960390919703D6
:107AB0009093B0078093AF07221933094409550901
:107AC0002093960330939703409398035093990320
:107AD000E20EF31E041F151FE0920908F0920A0837
:107AE00000930B0810930C088091BC018823B1F41B
:107AF00057FF04C02F5F3F4F4F4F5F4F559547953E
:107B000037952795A21AB30AC40AD50AA092410351
:107B1000B0924203C0924303D09244032A893B8926
:107B200079010027F7FC0095102F80919603909122
:107B30009703A0919803B0919903E80EF91E0A1FCC
:107B40001B1FC801B70129813A814B815C810E94CA
:107B500065789B01AC0197FF04C02150384F4F4F0F
:107B60005F4F6BE055954795379527956A95D1F707
:107B70008091BE01A82EBB24CC24DD24CA01B9010A
:107B8000A60195010E946578DC01CB0180938A03F0
:107B900090938B03A0938C03B0938D03B7FF04C025
:107BA0008150904FAF4FBF4F3C014D013CE0959449
:107BB0008794779467943A95D1F760928A0370928C
:107BC0008B0380928C0390928D03C801B7012D81A5
:107BD0003E814F8158850E94657897FF04C06150AF
:107BE000784F8F4F9F4F2BE09595879577956795A9
:107BF0002A95D1F7A60195010E946578DC01CB0199
:107C000080938E0390938F03A0939003B09391037E
:107C1000B7FF04C08150904FAF4FBF4FAC01BD01C3
:107C20008CE075956795579547958A95D1F7409360
:107C30008E0350938F0360939003709391032A896E
:107C40003B8937FF03C0309521953F4F21343105E3
:107C5000E4F1D401C30197FE07C0B095A0959095BB
:107C600081959F4FAF4FBF4F81389105A105B10559
:107C700084F4DB01CA0177FF07C0B095A095909509
:107C800081959F4FAF4FBF4F81389105A105B10539
:107C9000E4F081E08093290318C01092B00710929D
:107CA000AF071092AC071092AB0710928E031092A0
:107CB0008F03109290031092910310928A031092F6
:107CC0008B0310928C0310928D0380918E03909100
:107CD0008F03A0919003B0919103BC01CD0124E6E4
:107CE00030E040E050E00E94D978E0908A03F090C4
:107CF0008B03E21AF30AF092C207E092C107809167
:107D00008A0390918B03A0918C03B0918D03BC01E9
:107D1000CD0124E630E040E050E00E94D978DA015D
:107D2000C90120918E0330918F038C01021B130B2C
:107D30001093B7070093B607809196019091970131
:107D4000A0919801B0919901BC01CD0128E631E0E4
:107D500040E050E00E9465782091090830910A08BF
:107D600040910B0850910C08261737074807590710
:107D700064F0261B370B480B590B209309083093EE
:107D80000A0840930B0850930C0820910908309181
:107D90000A0840910B0850910C0857FF0CC0260FA1
:107DA000371F481F591F2093090830930A08409332
:107DB0000B0850930C086091B4077091B5076E0DD5
:107DC0007F1D9B01442737FD4095542F809145032B
:107DD00090914603A0914703B0914803820F931FEF
:107DE000A41FB51F8093450390934603A0934703B8
:107DF000B09348038091090390910A03681B790BA3
:107E0000CB01AA2797FDA095BA2F29853A854B85E6
:107E10005C85820F931FA41FB51F80934903909325
:107E20004A03A0934B03B0934C03C090D101D09070
:107E3000D201E090D301F090D401C816D906EA0629
:107E4000FB06C4F488EA91E6A0E0B0E08C199D0935
:107E5000AE09BF098093490390934A03A0934B0353
:107E6000B0934C038093450390934603A09347033C
:107E7000B093480322273327A9012C193D094E0945
:107E80005F098091490390914A03A0914B03B091FF
:107E90004C0382179307A407B507B4F4D701C601B2
:107EA000885A9146A040B0408093490390934A037A
:107EB000A0934B03B0934C038093450390934603E8
:107EC000A0934703B09348036091C3077091C40720
:107ED000600F711F9B01442737FD4095542F8091FF
:107EE0004D0390914E03A0914F03B0915003820F28
:107EF000931FA41FB51F80934D0390934E03A0932F
:107F00004F03B09350038091070390910803681BBF
:107F1000790BCB01AA2797FDA095BA2F2D853E8519
:107F20004F855889820F931FA41FB51F809351035B
:107F300090935203A0935303B0935403E090D50160
:107F4000F090D6010091D7011091D801E816F906FA
:107F50000A071B07C4F488EA91E6A0E0B0E08E1996
:107F60009F09A00BB10B8093510390935203A093F0
:107F70005303B093540380934D0390934E03A09307
:107F80004F03B093500322273327A9012E193F092D
:107F9000400B510B8091510390915203A0915303D8
:107FA000B091540382179307A407B507B4F4D8011E
:107FB000C701885A9146A040B040809351039093E6
:107FC0005203A0935303B093540380934D039093B3
:107FD0004E03A0934F03B0935003809141039091BF
:107FE0004203A0914303B0914403809355039093BF
:107FF0005603A0935703B093580380915103909177
:108000005203A0915303B091540380937103909352
:108010007203A0937303B09374038091490390910A
:108020004A03A0914B03B0914C0380936903909352
:108030006A03A0936B03B0936C0380914D039091FE
:108040004E03A0914F03B091500380936D03909322
:108050006E03A0936F03B0937003809145039091DA
:108060004603A0914703B091480380936503909322
:108070006603A0936703B093680380911C019091FD
:108080001D0197FD079603E0959587950A95E1F701
:108090009093C4078093C30780911A0190911B01AC
:1080A00097FD079613E0959587951A95E1F79093BC
:1080B000B5078093B40780914702909148020F97CB
:1080C00034F488E19CEF9093C4078093C3078091B8
:1080D000470290914802079734F480E398EF909319
:1080E000C4078093C307209102012A30A9F480912C
:1080F000470290914802835F934034F088EE93E00A
:108100009093C4078093C3078091470290914802DF
:108110008A5F9340DCF014C080914702909148023E
:10812000815D974034F088EE93E09093C40780938C
:10813000C3078091470290914802805E974034F0D7
:1081400080ED97E09093C4078093C3078091450228
:10815000909146020F9734F488E19CEF9093B50715
:108160008093B4078091450290914602079734F4BA
:1081700080E398EF9093B5078093B4072A30A9F471
:108180008091450290914602835F934034F088EEDF
:1081900093E09093B5078093B40780914502909146
:1081A00046028A5F9340DCF014C0809145029091B2
:1081B0004602815D974034F088EE93E09093B507D6
:1081C0008093B4078091450290914602805E97406B
:1081D00034F080ED97E09093B5078093B4076091F9
:1081E000C801662309F4AFC040911C0150911D01E4
:1081F00080919A0390919B03481B590B5093A103C4
:108200004093A00320911C0130911D01280F391FBC
:1082100037FF02C02F5F3F4F3595279530939B0363
:1082200020939A03413851051CF080E890E005C086
:1082300040585F4F34F480E89FEF9093A103809300
:10824000A00340911A0150911B0180919C039091D1
:108250009D03481B590B50939F0340939E0320910D
:108260001A0130911B01280F391F37FF02C02F5F01
:108270003F4F3595279530939D0320939C034138BC
:1082800051051CF080E890E005C040585F4F34F481
:1082900080E89FEF90939F0380939E03462F55277E
:1082A0008091A0039091A103849FB001859F700DE0
:1082B000949F700D11249B0177FF02C0215F3F4FF7
:1082C000F4E035952795FA95E1F78091C3079091F1
:1082D000C407820F931F9093C4078093C3078091B4
:1082E0009E0390919F03849FD001859FB00D949F22
:1082F000B00D1124AD019D01B7FF02C0215F3F4FBA
:10830000E4E035952795EA95E1F78091B4079091DF
:10831000B507820F931F9093B5078093B4078091A0
:108320001C0190911D01860F971F90931D01809352
:108330001C0180911A0190911B01840F951F90934D
:108340001B0180931A010091C6071091C707809105
:10835000AB079091AC07101611065CF59C0197FFD6
:1083600004C022273327281B390BC901AA2797FDF0
:10837000A095BA2F2091BC01332744275527BC0173
:10838000CD010E9465789B01AC0197FF04C0215C80
:108390003F4F4F4F5F4F76E055954795379527955F
:1083A0007A95D1F78091C1079091C207820F931FF0
:1083B00027C097FF03C0909581959F4FAA2797FDEF
:1083C000A095BA2F2091BC01332744275527BC0123
:1083D000CD010E9465789B01AC0197FF04C0215C30
:1083E0003F4F4F4F5F4F66E055954795379527951F
:1083F0006A95D1F78091C1079091C207821B930BB8
:108400009093C2078093C107E090CE07F090CF070A
:108410008091AF079091B0071E141F045CF59C017A
:1084200097FF04C022273327281B390BC901AA272D
:1084300097FDA095BA2F2091BC01332744275527DB
:10844000BC01CD010E9465789B01AC0197FF04C07F
:10845000215C3F4F4F4F5F4F96E0559547953795BD
:1084600027959A95D1F78091B6079091B707820F1B
:10847000931F27C097FF03C0909581959F4FAA2710
:1084800097FDA095BA2F2091BC013327442755278B
:10849000BC01CD010E9465789B01AC0197FF04C02F
:1084A000215C3F4F4F4F5F4F86E05595479537957D
:1084B00027958A95D1F78091B6079091B707821BCF
:1084C000930B9093B7078093B6078091250687FF9B
:1084D00044C0B989BB2309F040C0809103038823BD
:1084E000E1F5E1E0EE16E1E0FE064CF08091C30715
:1084F0009091C4078E0D9F1D805091400DC0F0E0FB
:10850000EF16FFEFFF0664F48091C3079091C40754
:108510008E0D9F1D80509F4F9093C4078093C3077B
:1085200021E0013012074CF08091B4079091B5071B
:10853000800F911F805091400CC03FEF0030130717
:1085400064F48091B4079091B507800F911F80501B
:108550009F4F9093B5078093B407E2E1CD5E0C94F2
:10856000107980911403882301F58091E9028C7FB2
:108570008093E902A6E4B4E0E2EEF6E09BE08091AD
:108580000302882309F48C938D9181831282915088
:10859000389697FFF4CF80910302882359F0809199
:1085A000030281508093030205C08091E90281603B
:1085B0008093E90280916E02882319F010926E0276
:1085C0000895809370028093720280916C028E7F76
:1085D00080936C0285EA8093BC000895CF93DF936B
:1085E000AEE1B3E0CDE1D6E057E08991E82FFF2777
:1085F000EE0FFF1FED5BF84F0190F081E02DE25987
:10860000FF4FEF3FF10521F01CF0EFEFF0E004C069
:10861000F7FF02C0E0E0F0E04C91242F3327E2178F
:10862000F307A9F0CF01821B930B97FD0396959555
:10863000879595958795242F280F2C93822F99271E
:10864000E817F90714F4215001C02F5F2C93515003
:10865000119657FFCACF80912706883F38F0EFEF79
:10866000F0E0E81BF109E25EFC4F80818093CE01CF
:108670008091CE01882329F0843618F084E6809317
:10868000CE0180912906883F38F0EFEFF0E0E81B3B
:10869000F109E25EFC4F80818093CC018091CC0196
:1086A000882329F0843618F084E68093CC018091E9
:1086B0003606883F38F0EFEFF0E0E81BF109E25EA4
:1086C000FC4F80818093C7018091C7018B3010F4EB
:1086D0008AE002C08F3F11F48093C7018091630646
:1086E000883F38F0EFEFF0E0E81BF109E25EFC4F65
:1086F00080818093DA078091DA07823010F481E07C
:1087000002C08F3F11F48093DA0780916506883F9D
:1087100038F0EFEFF0E0E81BF109E25EFC4F8081FA
:108720008093000880910008823010F481E002C03C
:108730008F3F11F48093000880915006883F38F0F5
:10874000EFEFF0E0E81BF109E25EFC4F80818093DF
:10875000D70780915106883F38F0EFEFF0E0E81B33
:10876000F109E25EFC4F80818093B107809152064F
:10877000883F38F0EFEFF0E0E81BF109E25EFC4FD4
:1087800080818093DF0790912806983F18F490939A
:10879000CD0109C0EFEFF0E0E91BF109E25EFC4F0B
:1087A00080818093CD01983F18F49093CD0109C04A
:1087B000EFEFF0E0E91BF109E25EFC4F808180936E
:1087C000CD0180912B06883F38F0EFEFF0E0E81BF9
:1087D000F109E25EFC4F80818093CB0180912D06F0
:1087E000883F38F0EFEFF0E0E81BF109E25EFC4F64
:1087F00080818093C90180913506883F38F0EFEF82
:10880000F0E0E81BF109E25EFC4F80818093CA0131
:1088100080913706883F38F0EFEFF0E0E81BF10970
:10882000E25EFC4F80818093C60180913806883FCC
:1088300038F0EFEFF0E0E81BF109E25EFC4F8081D9
:108840008093C80180913906883F38F0EFEFF0E05F
:10885000E81BF109E25EFC4F80818093C5018091A5
:108860003A06883F38F0EFEFF0E0E81BF109E25EEE
:10887000FC4F80818093C40180914006883F38F08E
:10888000EFEFF0E0E81BF109E25EFC4F808180939E
:10889000C20180914106883F38F0EFEFF0E0E81B1D
:1088A000F109E25EFC4F80818093FE0280914206D6
:1088B000883F38F0EFEFF0E0E81BF109E25EFC4F93
:1088C00080818093FD0280914306883F38F0EFEF6E
:1088D000F0E0E81BF109E25EFC4F80818093FC022E
:1088E00080914406883F38F0EFEFF0E0E81BF10993
:1088F000E25EFC4F80818093FB0280915E06883FA0
:1089000038F0EFEFF0E0E81BF109E25EFC4F808108
:108910008093FA0280915F06883F38F0EFEFF0E035
:10892000E81BF109E25EFC4F80818093F90280919F
:108930006006883F38F0EFEFF0E0E81BF109E25EF7
:10894000FC4F80818093F80280916106883F38F067
:10895000EFEFF0E0E81BF109E25EFC4F80818093CD
:10896000F70280914506883F38F0EFEFF0E0E81B12
:10897000F109E25EFC4F80818093C101809149063C
:10898000883F38F0EFEFF0E0E81BF109E25EFC4FC2
:1089900080818093C00180915306883F38F0EFEFCB
:1089A000F0E0E81BF109E25EFC4F80818093BF019B
:1089B00080915606883F38F0EFEFF0E0E81BF109B0
:1089C000E25EFC4F80818093BE0180915706883F14
:1089D00038F0EFEFF0E0E81BF109E25EFC4F808138
:1089E0008093BD0180915806883F38F0EFEFF0E0AA
:1089F000E81BF109E25EFC4F80818093BC0180910D
:108A00005D06883F38F0EFEFF0E0E81BF109E25E29
:108A1000FC4F80818093BB0180917806883F38F0BD
:108A2000EFEFF0E0E81BF109E25EFC4F80818093FC
:108A300010088091C201282F33272F5F3F4F8CE30E
:108A400098E2B9010E94A4787093D0016093CF019D
:108A50008091330680930108809132068093C80785
:108A600090917A06933320F181E08093F602983F4B
:108A700058F0EFEFF0E0E91BF109E25EFC4F808176
:108A8000823310F41092F60280914E0890914F08B4
:108A900097FF08C08091F602882321F0809141045D
:108AA000806803C0809141048F778093410402C0A5
:108AB0001092F60280914E0890914F0897FF1DC0CA
:108AC000809114038823C9F08091F6028823A9F0CD
:108AD00080910801909109018F5F9F4F71F488E99F
:108AE0009AE3909325028093240280E094EA909385
:108AF0000901809308011092F6028091F602882302
:108B000039F08091BE01823D18F4825E8093BE01EF
:108B1000DF91CF910895A8E1B0E0E1E9F5E40C948C
:108B2000F4780E94FF3A309102013C3010F4299A07
:108B300001C02998E0901503F0901603FA82E982AB
:108B40008091C80799270A96E816F90614F49A83C3
:108B5000898380911D03843608F05CC08091B60340
:108B60009091B703009731F001979093B7038093EA
:108B7000B60307C0109214038091E9028F7E8093A0
:108B8000E9023A3011F0343110F0289A01C02898E7
:108B90008091EA029091EB02895E9340C0F180914E
:108BA0003D06282F33273A8329838091E90280618B
:108BB0008093E90280911906A82FBB27AA0FBB1F3B
:108BC000FD01E958F84F1182108280911A06282F72
:108BD0003327220F331FC9018958984FFC01118296
:108BE0001082AD5BB84F11961C921E922D5B384FD0
:108BF000D90111961C921E9280911C06E82FFF2726
:108C0000EE0FFF1FED5BF84F11821082C9C2109268
:108C10001403C6C280911D038D3808F4C1C280912F
:108C2000E9028F7E8093E90290913E0682E3989F4D
:108C3000C00111249093B7038093B603E981FA81B0
:108C4000B9978CF080911403882369F08091EA022F
:108C50009091EB02FFEF8F3F9F0729F001969093D1
:108C6000EB028093EA028091EA029091EB028F3F3F
:108C7000910509F038F51092390310923A031092D9
:108C80003B0310923C03109235031092360310926E
:108C90003703109238031092A2031092A30310928C
:108CA000A4031092A5031092410310924203109264
:108CB0004303109244038A3F910549F481E0809375
:108CC000BC0305C08091E90282608093E902809133
:108CD0001B06E82FFF27EE0FFF1FED5BF84F80818B
:108CE0009181813591050CF441C120911403222317
:108CF00009F03CC180911C06E82FFF27EE0FFF1FF3
:108D0000ED5BF84F808191818C3491050CF406C1A4
:108D10008091B8038F5F8093B803893C08F426C123
:108D20003C3010F4299801C0299A10921403109233
:108D3000B8031092EB021092EA0230911906E32F69
:108D4000FF27EE0FFF1FED5BF84F80819181873485
:108D50009105B4F480911A06E82FFF27EE0FFF1F4C
:108D6000ED5BF84F808191810190F081E02DF7FF5C
:108D700003C0F095E195FF4FE734F1050CF478C09E
:108D800041E020911A06A22FBB27AA0FBB1FAD5BA3
:108D9000B84F8D919C9111978734910544F0E32F42
:108DA000FF27EE0FFF1FED5BF84F808191818D91C2
:108DB0009C918734910574F080911906E82FFF2764
:108DC000EE0FFF1FED5BF84F808191818734910595
:108DD0000CF042E0E22FFF27EE0FFF1FED5BF84F94
:108DE000808191818634910574F480911906E82F71
:108DF000FF27EE0FFF1FED5BF84F808191818734D5
:108E000091050CF043E0E22FFF27EE0FFF1FED5B13
:108E1000F84F808191818A5B9F4F74F4809119068D
:108E2000E82FFF27EE0FFF1FED5BF84F8081918148
:108E3000873491050CF044E0E22FFF27EE0FFF1F6F
:108E4000ED5BF84F808191818A5B9F4F74F4809134
:108E50001906E82FFF27EE0FFF1FED5BF84F80810B
:108E60009181863491050CF445E0842F0E942C2DCD
:108E700080911A06E82FFF27EE0FFF1FED5BF84FDA
:108E8000808191810190F081E02DF7FF03C0F09582
:108E9000E195FF4F7E97BCF480911906E82FFF27DC
:108EA000EE0FFF1FED5BF84F808191818A5B9F4F32
:108EB00054F481E080935C0488EE93E09093250263
:108EC0008093240253C00E94262E0E94D92C80E059
:108ED0000E944A0780913F060E947E748091250679
:108EE00080FF10C08091140190911501875B934021
:108EF00038F480911401909115018E5E924010F427
:108F00000E94B51A1092220280E00E94513881E03E
:108F10008093BB0380932202579A1FC08081918166
:108F2000855B9F4F0CF58091B8038F5F8093B803EA
:108F3000893CE0F03C3010F4299801C0299A109245
:108F400014031092B8031092EB021092EA0281E02F
:108F50000E94513881E08093BB030E94262E68E76F
:108F600070E00E948F3702C02093B80380911B06E7
:108F7000E82FFF27EE0FFF1FED5BF84F80819181F7
:108F80008B5A9F4F0CF00CC130911403E0911C06DA
:108F9000332309F0DAC0FF27EE0FFF1FED5BF84F18
:108FA00080819181855B9F4F0CF0CCC020917B0626
:108FB000E22FFF27EE0FFF1FED5BF84F80819181BD
:108FC000855B9F4F1CF0222309F0BCC08091B90340
:108FD0008F5F8093B903893C08F4E2C03093B903F2
:108FE00080914104882309F0A6C08091BB038823A7
:108FF00009F4A1C081E090E09093EB028093EA0233
:1090000081E0809314031092A2031092A3031092A4
:10901000A4031092A50310924103109242031092F0
:1090200043031092440310923D0310923E031092AA
:109030003F031092400380913406E82EFF2400275E
:1090400011278091FD079091FE079C01442737FD71
:109050004095542FC801B7010E946578DC01CB010F
:109060008093510390935203A0935303B0935403FE
:1090700080910D0890910E089C01442737FD409582
:10908000542FC801B7010E946578DC01CB018093A1
:10909000490390934A03A0934B03B0934C038091F0
:1090A000710390917203A0917303B0917403809344
:1090B0004D0390934E03A0934F03B09350038091C0
:1090C000690390916A03A0916B03B0916C03809344
:1090D000450390934603A0934703B093480310922F
:1090E000390310923A0310923B0310923C03109202
:1090F0003503109236031092370310923803809193
:10910000E90288608093E902909179068FE0989F48
:109110009001112480912F0390913003820F931FAF
:1091200068E671E00E94A47897FD01969595879571
:109130008093750335C08CED95E090932502809364
:1091400024022EC01092B9032BC0FF27EE0FFF1F81
:10915000ED5BF84F808191818C349105FCF020917A
:109160007B06E22FFF27EE0FFF1FED5BF84F80819C
:109170009181855B9F4F14F0222381F48091BA0383
:109180008F5F8093BA03893C58F0109214031092B9
:10919000BA031092EB021092EA0202C01092BA03D4
:1091A00080919401815080939401809194018F3F2C
:1091B00021F08091E90284FF72C30E94EE42809107
:1091C000C5039091C6039C01220F331F280F391F3E
:1091D000C0901906AC2DBB27AA0FBB1FFD01ED5B8C
:1091E000F84FB0902F064B2D552780819181849F99
:1091F000F001859FF00D949FF00D11242E0F3F1F5D
:1092000037FF02C02D5F3F4FB90175956795759582
:109210006795A958B84F80913006082F11278D9176
:109220009C91809F7001819FF00C909FF00C112405
:109230006E0D7F1D7093C6036093C5038091C703B5
:109240009091C8039C01220F331F280F391FD09023
:109250001A06AD2DBB27AA0FBB1FFD01ED5BF84F12
:1092600080819181849FF001859FF00D949FF00D86
:1092700011242E0F3F1F37FF02C02D5F3F4FA90162
:109280005595479555954795A958B84F8D919C91FF
:10929000809F7001819FF00C909FF00C11244E0D67
:1092A0005F1D5093C8034093C7038091F602882343
:1092B00009F448C0CB0177FD0396DC01B595A7956D
:1092C000B595A795CA0157FD0396FC01F595E7955D
:1092D000F595E7958091EA01682F772767FD7095EE
:1092E0006A9F90016B9F300D7A9F300D1124809101
:1092F000FD03482F552747FD50954E9FC0014F9FB6
:10930000900D5E9F900D1124280F391F37FF02C06A
:10931000295F3F4F03E0359527950A95E1F7309394
:109320001C0320931B036E9F90016F9F300D7E9F47
:10933000300D11244A9FC0014B9F900D5A9F900DF4
:1093400011243FC080917906E82FFF27E456FE4F95
:1093500086818093EA0190819093FD03A82FBB271B
:10936000A7FDB095A69F9001A79F300DB69F300D29
:109370001124E92FFF27E7FDF095E49FC001E59F49
:10938000900DF49F900D1124280F391F37FF02C054
:10939000295F3F4F13E0359527951A95E1F73093F4
:1093A0001C0320931B03A49F9001A59F300DB49F25
:1093B000300D1124E69FC001E79F900DF69F900DA0
:1093C0001124281B390B37FF02C0295F3F4FF3E000
:1093D00035952795FA95E1F730931A0320931903F1
:1093E00080911C06E82FFF27EE0FFF1FED5BF84F63
:1093F00080819181909581959F4F909318038093E0
:1094000017038330910514F0029705C00FEF8E3FCC
:10941000900734F40296909318038093170304C0C6
:1094200010921803109217038091F9039091FA0398
:109430002091F5033091F603820F931F00911B03D7
:1094400010911C03081B190B10931C0300931B03A2
:109450008091F7039091F8032091F3033091F40386
:10946000820F931F8090190390901A03881A990A0B
:1094700090921A038092190380911B06E82FFF2710
:10948000EE0FFF1FED5BF84FE080F18028E730E042
:10949000E20EF31EF0921603E09215038091C701CD
:1094A0009927AA2797FDA095BA2FBC01CD010E944C
:1094B000D977DC01CB0120E030E040E251E4BC018F
:1094C000CD010E944777DC01CB01BC01CD010E9498
:1094D000AB77DC01CB01809307088091C6018093B4
:1094E000E0078091C5019927AA2797FDA095BA2F7B
:1094F000BC01CD010E94D977DC01CB0120E030E036
:1095000040E251E4BC01CD010E944777DC01CB0170
:10951000BC01CD010E94AB77DC01CB018093BB077E
:109520008091C4018093D0078091680480FF59C066
:1095300080911008813808F454C080916104992703
:1095400087FD90952B2D3327829FA001839F500D7F
:10955000929F500D1124040F151F10931C030093AC
:109560001B0380916204992787FD9095829FB0012B
:10957000839F700D929F700D1124860E971E9092FE
:109580001A038092190380916304282F332727FD43
:1095900030958091170390911803820F931F909339
:1095A00018038093170380916504282F332727FD24
:1095B000309580912A069927289FD001299FB00DC8
:1095C000389FB00D1124B0939B01A0939A01809114
:1095D000640499278E159F0524F4909316038093B5
:1095E0001503809115039091160397FF04C0109204
:1095F0001603109215038091250682FF02C0109277
:10960000E00740911B0350911C03CA0157FD0396CC
:109610009C01359527953595279537FF03C03095E3
:1096200021953F4F8091EE029091EF0282179307B0
:10963000B4F4CA0157FF03C0909581959F4F97FDE1
:10964000039695958795959587959093EF028093CE
:10965000EE028536910544F084E690E001C0019762
:109660009093EF028093EE024091190350911A03F8
:10967000CA0157FD03969C01359527953595279589
:1096800037FF03C0309521953F4F8091EC029091B8
:10969000ED0282179307B4F4CA0157FF03C09095F7
:1096A00081959F4F97FD03969595879595958795FD
:1096B0009093ED028093EC028536910544F084E6A8
:1096C00090E001C001979093ED028093EC028091AD
:1096D000E90284FF08C01092EF021092EE0210928D
:1096E000ED021092EC02ED2DFF27EE0FFF1FED5B58
:1096F000F84F40915406242F3327808191812817F9
:10970000390744F480917C0682FF04C081E0809395
:10971000020313C0ED2DFF27EE0FFF1FED5BF84F87
:10972000842F992720915506821B91092081318130
:109730002817390714F41092020340911A06E42FF7
:10974000FF27EE0FFF1FED5BF84F50915406852F5A
:10975000992722273327281B390B80819181821773
:10976000930744F480917C0683FF04C081E08093DA
:10977000010316C080910103882391F0E42FFF2795
:10978000EE0FFF1FED5BF84F809155069927851B63
:109790009109208131818217930714F410920103FB
:1097A000EC2DFF27EE0FFF1FED5BF84F40915406A5
:1097B000242F3327808191812817390744F4809121
:1097C0007C0680FF04C081E08093FF0217C0809177
:1097D000FF02882399F0EC2DFF27EE0FFF1FED5BB2
:1097E000F84F842F992720915506821B91092081DB
:1097F00031812817390714F41092FF02409119069D
:10980000E42FFF27EE0FFF1FED5BF84F509154063A
:10981000852F992722273327281B390B8081918197
:109820008217930744F480917C0681FF04C081E095
:109830008093000316C080910003882391F0E42FE9
:10984000FF27EE0FFF1FED5BF84F8091550699271C
:10985000851B9109208131818217930714F410929E
:10986000000380910203882319F480910103811180
:1098700081E0809303038091FF02882321F480918B
:109880000003882351F081E08093040310920303C6
:10989000109202031092010302C08093040380918E
:1098A0000303882321F480910403882369F08091C5
:1098B00053069927E981FA818E179F0714F49A833A
:1098C000898381E0809329038091E90284FF1AC093
:1098D000109218031092170310921C0310921B038E
:1098E00010921A03109219039AE59093070888E7DB
:1098F0008093E0079093BB078093D00710920303F7
:10990000109204038091D3079091D407A091D507BA
:10991000B091D60720917103309172034091730387
:1099200050917403820F931FA41FB51F8093D30718
:109930009093D407A093D507B093D6078091DB0707
:109940009091DC07A091DD07B091DE0720906903BC
:1099500030906A0340906B0350906C03820D931D0E
:10996000A41DB51D8093DB079093DC07A093DD0752
:10997000B093DE078091CA079091CB07A091CC07E6
:10998000B091CD07E0906D03F0906E0300916F03EE
:1099900010917003EB82FC820D831E838E0D9F1D40
:1099A000A01FB11F8093CA079093CB07A093CC0749
:1099B000B093CD078091BC079091BD07A091BE07E1
:1099C000B091BF07E0906503F090660300916703D4
:1099D00010916803EF82F88609871A878E0D9F1D04
:1099E000A01FB11F8093BC079093BD07A093BE0733
:1099F000B093BF07F0900403FB86FF2029F4809109
:109A00000303882309F460C010926103109262037B
:109A1000109263031092640310925D0310925E0330
:109A200010925F03109260031092D3071092D40734
:109A30001092D5071092D6071092DB071092DC0720
:109A40001092DD071092DE071092CA071092CB0722
:109A50001092CC071092CD071092BC071092BD0750
:109A60001092BE071092BF0780915103909152034C
:109A7000A0915303B091540380934D0390934E03F0
:109A8000A0934F03B09350038091490390914A03F0
:109A9000A0914B03B0914C038093450390934603F0
:109AA000A0934703B09348031092340210923302FC
:109AB000109208031092070310920A0310920903F0
:109AC0000B85002309F0F2C180910303882309F07C
:109AD000EDC180910A0690910B06815092402CF4C2
:109AE00080911403882309F4E1C190907B08A09031
:109AF00034066091FD077091FE07788F6F8B80911F
:109B00000D0890910E089A8B898B9FEF991609F496
:109B1000D9C0BB24CC24DD24CA01B901A60195011A
:109B20000E94D97879018A01EF89F88DCF01AA279F
:109B300097FDA095BA2FE81AF90A0A0B1B0BC20170
:109B4000B101A60195010E94D97859016A012989BC
:109B50003A89C901AA2797FDA095BA2FA81AB90A70
:109B6000CA0ADB0A292C332427FC3094432C532CBB
:109B7000C801B701A20191010E94657897FF04C056
:109B800061507E4F8F4F9F4F3B014C0109E09594F0
:109B90008794779467940A95D1F7C601B501A2011D
:109BA00091010E94657897FF04C061507E4F8F4FEE
:109BB0009F4F5B016C0119E0D594C794B794A794AB
:109BC0001A95D1F78091EE029091EF0281349105C0
:109BD0003CF48091EC029091ED0281349105D4F037
:109BE000D401C30197FE03C00196A11DB11D3C0124
:109BF0004D019594879477946794D601C501D7FE5B
:109C000003C00196A11DB11D5C016D01D594C794DF
:109C1000B794A79480911C06E82FFF27EE0FFF1F33
:109C2000ED5BF84F808191810190F081E02DF7FF8D
:109C300003C0F095E195FF4F7A97A4F0C401B301FA
:109C400023E030E040E050E00E94D97839014A0139
:109C5000C601B50123E030E040E050E00E94D97831
:109C600059016A0180917D08282F332727FD3095FF
:109C7000432F532F261537054805590514F439018C
:109C80004A01992787FD9095909581959F4FAA2726
:109C900097FDA095BA2F681679068A069B0614F4DC
:109CA0003C014D012A153B054C055D0514F4590195
:109CB0006A01A816B906CA06DB060CF0CFC05C0123
:109CC0006D01CCC0EA2CFF2400271127CA01B9017D
:109CD000A80197010E94D97839014A014F89588D0E
:109CE000CA01AA2797FDA095BA2F681A790A8A0A8D
:109CF0009B0AC201B101A80197010E94D9785901BC
:109D00006A0169897A89CB01AA2797FDA095BA2FA4
:109D1000A81AB90ACA0ADB0AD401C30197FE03C014
:109D20000F96A11DB11D3C014D01F4E0959487945F
:109D300077946794FA95D1F7D601C501D7FE03C091
:109D40000F96A11DB11D5C016D01E4E0D594C7948F
:109D5000B794A794EA95D1F78091EE029091EF0223
:109D6000813491053CF48091EC029091ED028134B4
:109D70009105A4F0C401B30123E030E040E050E0DD
:109D80000E94D97839014A01C601B50123E030E0CB
:109D900040E050E00E94D97859016A0180911C0688
:109DA000E82FFF27EE0FFF1FED5BF84F80819181B9
:109DB0000190F081E02DF7FF03C0F095E195FF4F92
:109DC0007A97A4F0C401B30123E030E040E050E012
:109DD0000E94D97839014A01C601B50123E030E07B
:109DE00040E050E00E94D97859016A0171E267169B
:109DF0007104810491042CF070E2672E712C812C87
:109E0000912C80EE68168FEF78068FEF88068FEF23
:109E1000980644F460EE662E6FEF762E6FEF862E76
:109E20006FEF962E91E2A916B104C104D1042CF073
:109E300050E2A52EB12CC12CD12CA0EEAA16AFEF6A
:109E4000BA06AFEFCA06AFEFDA0644F440EEA42E2E
:109E50004FEFB42E4FEFC42E4FEFD42E809151030D
:109E600090915203A0915303B0915403861997091E
:109E7000A809B9098093510390935203A093530307
:109E8000B09354038091490390914A03A0914B03EE
:109E9000B0914C038A199B09AC09BD098093490311
:109EA00090934A03A0934B03B0934C0380913302E9
:109EB000909134028F3F910509F008F4C4C5BB8529
:109EC000BB2309F04EC580910303882309F049C5DF
:109ED00080912903882309F044C5E0915C06EC8752
:109EE000EE2309F43EC58091D3079091D407A09149
:109EF000D507B091D607B7FF04C081509F4FAF4F31
:109F0000BF4FE92EFA2E0B2F112707FD1A95E0926D
:109F1000D307F092D4070093D5071093D60780910A
:109F2000DB079091DC07A091DD07B091DE07B7FF5A
:109F300004C081509F4FAF4FBF4F892F9A2FAB2F37
:109F4000BB27A7FDBA958D879E87AF87B88B809377
:109F5000DB079093DC07A093DD07B093DE078091C9
:109F60003406A82EBB24CC24DD242091610330913B
:109F700062034091630350916403C601B5010E94DE
:109F8000657897FF04C061507F4F8F4F9F4F672EBA
:109F9000782E892E992487FC9A946092610370929E
:109FA0006203809263039092640320915D03309179
:109FB0005E0340915F0350916003C601B5010E94AA
:109FC000657897FF04C061507F4F8F4F9F4F272EBA
:109FD000382E492E552447FC5A9420925D03309226
:109FE0005E0340925F035092600380915903909109
:109FF0005A03A0915B03B0915C03B7FF04C081508A
:10A000009F4FAF4FBF4F892F9A2FAB2FBB27A7FD75
:10A01000BA958093590390935A03A0935B03B0932E
:10A020005C03D801C70186199709A809B90980936B
:10A03000AE039093AF03A093B003B093B10320910C
:10A040005B06E22EFF2400271127BC01CD01A801E9
:10A0500097010E94D97859016A012093BD0330937A
:10A06000BE034093BF035093C0038D859E85AF858B
:10A07000B88982199309A409B5098093B203909312
:10A08000B303A093B403B093B503BC01CD01A80101
:10A0900097010E94D9782093C1033093C203409363
:10A0A000C3035093C403D601C501D7FE04C0815039
:10A0B0009F4FAF4FBF4F892F9A2FAB2FBB27A7FDC5
:10A0C000BA95909308038093070357FF04C021506B
:10A0D0003F4F4F4F5F4FBB2757FDBA95A52F942F8A
:10A0E000832F90930A03809309038091EE0290914D
:10A0F000EF0281349105DCF48091EC029091ED0245
:10A1000081349105A4F480911C06E82FFF27EE0FFF
:10A11000FF1FED5BF84F808191810190F081E02D70
:10A12000F7FF03C0F095E195FF4F7A97E4F0809137
:10A130007B088F3FC1F4809107039091080397FD3E
:10A1400001969595879590930803809307038091D6
:10A15000090390910A0397FD019695958795909331
:10A160000A03809309038091CA079091CB07A091BD
:10A17000CC07B091CD07B7FF04C081509F4FAF4FC0
:10A18000BF4F892F9A2FAB2FBB27A7FDBA9580937E
:10A19000CA079093CB07A093CC07B093CD078091CB
:10A1A000BC079091BD07A091BE07B091BF07B7FF54
:10A1B00004C081509F4FAF4FBF4F892F9A2FAB2FB5
:10A1C000BB27A7FDBA958093BC079093BD07A093CA
:10A1D000BE07B093BF078091710390917203A09165
:10A1E0007303B09174032B813C814D815E81281BE8
:10A1F000390B4A0B5B0B2093A6033093A7034093C4
:10A20000A8035093A9038091690390916A03A091D8
:10A210006B03B0916C03EF80F88409851A85E81A06
:10A22000F90A0A0B1B0BE092AA03F092AB0300930E
:10A23000AC031093AD032093AE033093AF03409370
:10A24000B0035093B103E092B203F092B3030093D2
:10A25000B4031093B50380914D0390914E03A091E8
:10A260004F03B0915003821B930BA40BB50B80934B
:10A270004D0390934E03A0934F03B09350038091EE
:10A28000450390914603A0914703B09148038E196E
:10A290009F09A00BB10B8093450390934603A093B5
:10A2A0004703B0934803FC85FF23E1F02091270387
:10A2B00030912803213831054CF080918203909130
:10A2C00083030196909383038093820320583F4F2A
:10A2D0004CF48091820390918303019790938303C0
:10A2E00080938203109228031092270381E090E06C
:10A2F0009093CA038093C903E090AE03F090AF033C
:10A300000091B0031091B103D801C70117FF07C036
:10A3100088279927DC018E199F09A00BB10B81506A
:10A320009240A040B04034F084E090E09093CA03A3
:10A330008093C9038091CF039091D003A091D10362
:10A34000B091D2032091D3073091D4074091D50723
:10A350005091D607821B930BA40BB50B815E914BDA
:10A36000AF4FBF4F8F539C49A040B04028F0809121
:10A370007C0889310CF4FFC041E0E41640E1F406AA
:10A3800040E0040740E014070CF473C08091CB0355
:10A39000882309F46AC0D801C70117FF07C08827BE
:10A3A0009927DC018E199F09A00BB10B9C01AD010F
:10A3B000B7FF04C021503E4F4F4F5F4FF9E0559516
:10A3C000479537952795FA95D1F78091C9039091D4
:10A3D000CA03820F931F9093CA038093C903D801C5
:10A3E000C70117FF03C00796A11DB11DE3E0B59596
:10A3F000A79597958795EA95D1F78093BD0390939C
:10A40000BE03A093BF03B093C00389589341A040FB
:10A41000B04064F088E893E1A0E0B0E08093BD0331
:10A420009093BE03A093BF03B093C0032091BD03DC
:10A430003091BE034091BF035091C00357FF04C049
:10A4400021503F4F4F4F5F4F232F342F452F55271C
:10A4500047FD5A958091070390910803820F931F3F
:10A46000909308038093070306C081E08093CB0399
:10A4700002C01092CB0360E0E61660EFF6066FEFC5
:10A4800006076FEF16070CF073C08091CC0388238A
:10A4900009F46AC0D801C70117FF07C088279927A8
:10A4A000DC018E199F09A00BB10B9C01AD01B7FF18
:10A4B00004C021503E4F4F4F5F4F69E0559547957F
:10A4C000379527956A95D1F78091C9039091CA0372
:10A4D000820F931F9093CA038093C903D801C701C9
:10A4E00017FF03C00796A11DB11D23E0B595A795E1
:10A4F000979587952A95D1F78093BD039093BE03D6
:10A50000A093BF03B093C00388579C4EAF4FBF4F7B
:10A5100064F488E79CEEAFEFBFEF8093BD039093A8
:10A52000BE03A093BF03B093C0032091BD0330913D
:10A53000BE034091BF035091C00357FF04C0215098
:10A540003F4F4F4F5F4F232F342F452F552747FD48
:10A550005A958091070390910803820F931F90935F
:10A5600008038093070311C081E08093CC030DC0E2
:10A570001092CC030AC01092CA031092C90388EE4D
:10A5800093E09093DA018093D9018C85282F3327AB
:10A590008091C9039091CA032817390724F4309396
:10A5A000CA032093C90310917C08112379F0212F4D
:10A5B000332727FD30958091C9039091CA0328174E
:10A5C000390724F43093CA032093C9034091AE03A2
:10A5D0005091AF036091B0037091B10341385105C0
:10A5E0006105710574F08091860390918703209135
:10A5F000C9033091CA03820F931F909387038093FE
:10A60000860340585F4F6F4F7F4F74F480918603ED
:10A61000909187032091C9033091CA03821B930B49
:10A62000909387038093860381E090E09093CA0320
:10A630008093C903C090B203D090B303E090B403F9
:10A64000F090B503D701C601F7FE07C08827992708
:10A65000DC018C199D09AE09BF0981509240A040D0
:10A66000B04034F084E090E09093CA038093C90333
:10A670008091D3039091D403A091D503B091D603D8
:10A680002091DB073091DC074091DD075091DE0718
:10A69000821B930BA40BB50B815E914BAF4FBF4F49
:10A6A0008F539C49A040B04018F019310CF4FFC002
:10A6B00001E0C01600E1D00600E0E00600E0F00690
:10A6C0000CF473C08091CD03882309F46AC0D701CC
:10A6D000C601F7FE07C088279927DC018C199D0960
:10A6E000AE09BF099C01AD01B7FF04C021503E4F28
:10A6F0004F4F5F4F09E055954795379527950A9538
:10A70000D1F78091C9039091CA03820F931F909350
:10A71000CA038093C903D701C601F7FE03C0079699
:10A72000A11DB11D13E0B595A795979587951A952D
:10A73000D1F78093C1039093C203A093C303B09356
:10A74000C40389589341A040B04064F088E893E185
:10A75000A0E0B0E08093C1039093C203A093C30331
:10A76000B093C4032091C1033091C2034091C3034D
:10A770005091C40357FF04C021503F4F4F4F5F4FCC
:10A78000232F342F452F552747FD5A9580910903D4
:10A7900090910A03820F931F90930A0380930903F9
:10A7A00006C081E08093CD0302C01092CD0320E06B
:10A7B000C21620EFD2062FEFE2062FEFF2060CF0C2
:10A7C00073C08091CE03882309F46AC0D701C60103
:10A7D000F7FE07C088279927DC018C199D09AE096F
:10A7E000BF099C01AD01B7FF04C021503E4F4F4F40
:10A7F0005F4FE9E05595479537952795EA95D1F74D
:10A800008091C9039091CA03820F931F9093CA034A
:10A810008093C903D701C601F7FE03C00796A11DA7
:10A82000B11D73E0B595A795979587957A95D1F762
:10A830008093C1039093C203A093C303B093C40356
:10A8400088579C4EAF4FBF4F64F488E79CEEAFEF44
:10A85000BFEF8093C1039093C203A093C303B0934F
:10A86000C4032091C1033091C2034091C3035091AE
:10A87000C40357FF04C021503F4F4F4F5F4F232F5A
:10A88000342F452F552747FD5A9580910903909104
:10A890000A03820F931F90930A038093090311C048
:10A8A00081E08093CE030DC01092CE030AC01092B7
:10A8B000CA031092C90388EE93E09093DA01809363
:10A8C000D9014C85242F33278091C9039091CA0365
:10A8D0002817390724F43093CA032093C9038091C1
:10A8E0007C08882379F0282F332727FD3095809125
:10A8F000C9039091CA032817390724F43093CA0377
:10A900002093C9034091B2035091B3036091B40303
:10A910007091B503413851056105710574F080915E
:10A920008403909185032091C9033091CA03820F5B
:10A93000931F909385038093840340585F4F6F4F1C
:10A940007F4FCCF480918403909185032091C903BB
:10A950003091CA03821B930B9093850380938403E9
:10A960000AC010920A031092090310920803109271
:10A970000703109229038091E007882341F4109285
:10A980000A031092090310920803109207038091A2
:10A99000D3079091D407A091D507B091D6078093A3
:10A9A000CF039093D003A093D103B093D2038091AF
:10A9B000DB079091DC07A091DD07B091DE07809363
:10A9C000D3039093D403A093D503B093D6031092EE
:10A9D0006103109262031092630310926403109259
:10A9E0005D0310925E0310925F0310926003109259
:10A9F000590310925A0310925B0310925C03109259
:10AA0000D3071092D4071092D5071092D607109250
:10AA1000DB071092DC071092DD071092DE07109220
:10AA2000CA071092CB071092CC071092CD07109254
:10AA3000BC071092BD071092BE071092BF0710927C
:10AA4000340210923302E0901703F0901803C7010C
:10AA5000F7FE04C0882799278E199F0940976CF04C
:10AA600088EE93E09093DA018093D90180912506D6
:10AA700084FD03C081E08093BC0310913106A12EB8
:10AA8000BB24CC24DD24B701882777FD8095982F3F
:10AA90009701F7FE04C0222733272E193F094427C8
:10AAA00037FD4095542F0E9465789B01AC01C6018B
:10AAB000B5010E94657897FF04C061507E4F8F4FAB
:10AAC0009F4F59E095958795779567955A95D1F75A
:10AAD0009B01812F99278E9DD0018F9DB00D9E9D4A
:10AAE000B00D1124CD01B7FD0396959587959595E9
:10AAF0008795280F391F442737FD4095542F209301
:10AB0000A2033093A3034093A4035093A503809121
:10AB1000410390914203A0914303B0914403821BEF
:10AB2000930BA40BB50B8093410390934203A09326
:10AB30004303B09344038155934CA040B04064F06C
:10AB400080E593ECA0E0B0E0809341039093420352
:10AB5000A0934303B0934403809141039091420337
:10AB6000A0914303B0914403805B9C43AF4FBF4F20
:10AB700064F480EB9CE3AFEFBFEF809341039093CD
:10AB80004203A0934303B093440340902F0350909B
:10AB900030034114510409F478C18091250683FFE4
:10ABA00074C18091710390917203A0917303B0916D
:10ABB0007403B7FF04C081509E4FAF4FBF4F39E0C1
:10ABC000B595A795979587953A95D1F76C0197FF1D
:10ABD00004C0D094C194D108D3948091690390911A
:10ABE0006A03A0916B03B0916C03B7FF04C081505E
:10ABF0009E4FAF4FBF4F29E0B595A7959795879585
:10AC00002A95D1F7BC0197FF03C0709561957F4FDE
:10AC1000C616D7060CF46B01B601D7FE02C0695FF9
:10AC20007F4F3B0183E0759467948A95E1F702E0DA
:10AC3000E02EF12C6E0C7F1C0CE112E0400E511E38
:10AC400072010027F7FC0095102F24EE3DEF420E15
:10AC5000531E8091090890910A08A0910B08B091A9
:10AC60000C088090960190909701A0909801B09068
:10AC70009901BC01CD01A50194010E94D978E21A85
:10AC8000F30A040B150BC801B70128E631E040E0D8
:10AC900050E00E94D978DC01CB011CE4E12E1FEFCB
:10ACA000F12EE80EF91E0091D9011091DA0101157B
:10ACB000110589F539E1C316D1046CF5809127039C
:10ACC000909128038E0D9F1D909328038093270356
:10ACD0008091BC038823F9F0C201AA2797FDA095B3
:10ACE000BA2FBC01CD01A50194010E946578DC0159
:10ACF000CB018093090890930A08A0930B08B093A6
:10AD00000C08BC01CD010E94D97830932E0320930A
:10AD10002D031092BC03C701B4E0880F991FBA95A8
:10AD2000E1F7B3010E94A478CB01AA2797FDA09573
:10AD3000BA2F2091090830910A0840910B085091D0
:10AD40000C08280F391F4A1F5B1F209309083093F6
:10AD50000A0840930B0850930C08F090CA016F2D1D
:10AD60007727C69EC001C79E900DD69E900D1124D8
:10AD700097FD4F966C01A5E0D594C794AA95E1F78D
:10AD80006C197D096B0177FD7AC00115110509F079
:10AD90006FC00091EE021091EF028091EC02909151
:10ADA000ED02080F191F17FF02C0095F1F4FF3E0E4
:10ADB00015950795FA95E1F7005C1F4FCA01B90197
:10ADC000A50194010E94D978DA01C90120912D03CF
:10ADD00030912E03442737FD4095542F821B930B4F
:10ADE000A40BB50B845E9D4FAF4FBF4FBC01CD018F
:10ADF00028E631E040E050E00E94D978DC01CB0148
:10AE0000845B90408C9DA0018D9D500D9C9D500DAC
:10AE10001124CA01B8010E94A47883E0F89E600161
:10AE20001124C616D70614F4B60108C0882799273E
:10AE30008C199D09681779070CF4BC019B01442704
:10AE400037FD4095542F8091410390914203A0918A
:10AE50004303B0914403820F931FA41FB51F809337
:10AE6000410390934203A0934303B09344030DC066
:10AE7000015010401093DA010093D90106C084EF0D
:10AE800091E09093DA018093D9018091290388237E
:10AE900081F010923503109236031092370310920E
:10AEA00038031092390310923A0310923B03109228
:10AEB0003C03F0900403FF20F1F48091E007282F79
:10AEC0003327442755278091710390917203A091F5
:10AED0007303B0917403BC01CD010E946578DC015D
:10AEE000CB01BC01CD0128EF3AE240E050E00E94E6
:10AEF000D978390102C066247724E0900303EE205C
:10AF0000F1F48091E007282F3327442755278091BB
:10AF1000690390916A03A0916B03B0916C03BC012B
:10AF2000CD010E946578DC01CB01BC01CD0128EF89
:10AF30003AE240E050E00E94D978290102C044245E
:10AF400055248091B6079091B707893C91051CF074
:10AF500088EC90E005C088539F4F34F488E39FEF5E
:10AF60009093B7078093B6078091C1079091C2076D
:10AF7000893C91051CF088EC90E005C088539F4FF8
:10AF800034F488E39FEF9093C2078093C1078091C8
:10AF9000C3079091C407AA2797FDA095BA2F2091C7
:10AFA0000708A22EBB24CC24DD24BC01CD01A601C0
:10AFB00095010E9465789B01AC018091B607909144
:10AFC000B707AA2797FDA095BA2FE7E0880F991F2A
:10AFD000AA1FBB1FEA95D1F7280F391F4A1F5B1F15
:10AFE00057FF04C0215C3F4F4F4F5F4F76E05595B0
:10AFF0004795379527957A95D1F78301020F131F4F
:10B000001093C4070093C3078091B4079091B507CC
:10B01000AA2797FDA095BA2FBC01CD01A6019501E5
:10B020000E9465789B01AC018091C1079091C20795
:10B03000AA2797FDA095BA2F67E0880F991FAA1F2E
:10B04000BB1F6A95D1F7280F391F4A1F5B1F57FF97
:10B0500004C0215C3F4F4F4F5F4F96E05595479599
:10B06000379527959A95D1F74201820E931E9092BB
:10B07000B5078092B4078091020890910308880F69
:10B08000991FAA2797FDA095BA2F2091BB073327B8
:10B0900044275527BC01CD010E9465785B016C01F6
:10B0A00097FF08C08FE390E0A0E0B0E0A80EB91EC3
:10B0B000CA1EDB1E86E0D594C794B794A7948A95E0
:10B0C000D1F78091D007282F332744275527809127
:10B0D000550390915603A0915703B0915803BC01BA
:10B0E000CD010E946578DC01CB01BC01CD0120EFD0
:10B0F00035E540E050E00E94D978B501620F731F3A
:10B1000070930308609302080150104134F080E00E
:10B1100090E19093C4078093C3078091C3079091F7
:10B12000C4078050904F34F480E090EF9093C407B0
:10B130008093C307B1E08B16B0E19B0634F080E04A
:10B1400090E19093B5078093B4078091B4079091F4
:10B15000B5078050904F34F480E090EF9093B5079E
:10B160008093B4076150704134F080E090E1909397
:10B170000308809302088091020890910308805090
:10B18000904F34F480E090EF90930308809302088E
:10B1900080910001482F552780911E0190911F0139
:10B1A0004817590794F420911E0130911F016981BD
:10B1B0007A81649FC001659F900D749F900D11244A
:10B1C000B9010E9490787A83698389819A81880F76
:10B1D000991F880F991F9A8389834091250640FF04
:10B1E000BDC6EE2009F0BAC6FF2009F0B7C6AA24F2
:10B1F000BB24450180910503909106039093EE05D1
:10B200008093ED0520918803309189032115310544
:10B2100009F03FC080911401909115018959934024
:10B2200058F087B5803F20F480913702815011C0DB
:10B2300081E08093E2034EC080911401909115014A
:10B240008436910508F587B58031D0F080913702BA
:10B250008F5F809337029FE08902900111248091D3
:10B260001406821B87BD8CE291E0909325028093A7
:10B2700024028EE591E090938903809388032AC08D
:10B2800081E08093E10326C0F092E103F092E203B3
:10B2900021C080910F0390911003A0911103B091F0
:10B2A000120314E0880F991FAA1FBB1F1A95D1F72C
:10B2B0008093380290933902A0933A02B0933B02F4
:10B2C000B0923602A092350221503040309389036B
:10B2D000209388032091CD0141FF24C02233D8F46C
:10B2E0008091DF0181508093DF018F3FD9F510926B
:10B2F0002A0380910F0390911003A0911103B09144
:10B30000120380930B0390930C03A0930D03B0934F
:10B310000E0381E004C081E080932A0388EC8093CF
:10B32000DF0120C080919A0190919B01820F911DB5
:10B3300020912A063327829FF001839FF00D929F70
:10B34000F00D1124CF01AA2797FDA095BA2F809365
:10B350000B0390930C03A0930D03B0930E0381E0B5
:10B3600080932A038091710390917203A0917303DB
:10B37000B0917403E0909601F090970100919801CC
:10B3800010919901BC01CD01A80197010E94D978C3
:10B3900059016A018091690390916A03A0916B033E
:10B3A000B0916C03BC01CD01A80197010E94D9782E
:10B3B000B901C5010E948E768C01CC9714F00CE384
:10B3C00010E0C8010E94AF6A8C0180E28093950171
:10B3D00080912A03882309F447C48091E9029927C0
:10B3E0009C012071307084FD3FC460917E0660FD39
:10B3F00004C08091250681FD0CC0C980DA8030939D
:10B40000D8032093D7038091E902806C8093E902EE
:10B4100099C18091E90281FF6BC14091DB0150919C
:10B42000DC01CA010F962091150330911603821793
:10B430009307BCF58091E103882399F58091E90297
:10B4400087FF15C08091E9028F778093E902809190
:10B450000F0390911003A0911103B09112038093F8
:10B460000B0390930C03A0930D03B0930E038091F4
:10B47000E90280648093E902241B350B2F50304091
:10B4800037FF03C0309521953F4F8091D7039091AE
:10B49000D803820F931F9093D8038093D7038BE236
:10B4A0006EC0CA010F9728173907BCF58091E203D7
:10B4B000882399F58091E90286FF15C08091E90201
:10B4C0008F7B8093E90280910F0390911003A091EC
:10B4D0001103B091120380930B0390930C03A0937C
:10B4E0000D03B0930E038091E90280688093E90216
:10B4F000241B350B215F3F4F37FF03C0309521954B
:10B500003F4F8091D7039091D803821B930B909368
:10B51000D8038093D7038DE232C08091E902807C0A
:10B5200069F18091E9028F738093E9021092D80348
:10B530001092D70320910F03309110034091110313
:10B540005091120320930B0330930C0340930D038F
:10B5500050930E0361FF06C084EF91E090932502A3
:10B560008093240280911303882341F4233331050F
:10B57000410551051CF081E0809313038DE3809316
:10B5800095012091D7033091D803C90137FF04C03A
:10B5900088279927821B930B815092400CF491C00D
:10B5A00080912A069927289F7001299FF00C389FC7
:10B5B000F00C1124C70160E075E00E94A478CB0173
:10B5C000AA2797FDA095BA2F20910B0330910C0369
:10B5D00040910D0350910E03280F391F4A1F5B1F26
:10B5E00020930B0330930C0340930D0350930E03F1
:10B5F0001092D8031092D703C0900F03D09010037D
:10B60000E0901103F0901203D701C60180509440DE
:10B61000A040B04082179307A407B5075CF4D70198
:10B62000C60180509C4FAF4FBF4F281739074A07BC
:10B630005B0744F080930B0390930C03A0930D03DE
:10B64000B0930E0380917E0681FF06C084E690E0F1
:10B65000909325028093240280912E06882389F5F9
:10B66000409105035091060357FF02C04D5F5F4FA5
:10B67000559547955595479580911E0190911F01CD
:10B68000209100013327489FB001499F700D589FBA
:10B69000700D1124CB01B9010E94A4787093DC01D4
:10B6A0006093DB01663471051CF486E490E005C00C
:10B6B0006739710534F086E990E09093DC0180935E
:10B6C000DB018091880390918903892BB9F18091E6
:10B6D0000F0390911003A0911103B0911203809376
:10B6E0000B0390930C03A0930D03B0930E0326C09D
:10B6F00080910F0390911003A0911103B091120358
:10B7000080599140A040B04080930B0390930C036C
:10B71000A0930D03B0930E0380912E06882311F0A1
:10B72000992702C088E790E09093DC018093DB01C9
:10B7300089819A819093060380930503C090050345
:10B74000D090060320910F03309110034091110314
:10B75000509112032B8B3C8B4D8B5E8B20910B03F6
:10B7600030910C0340910D0350910E036B897C893D
:10B770008D899E89261737074807590724F080913D
:10B780007E0680FDB8C28091880390918903892B41
:10B7900039F0C0900503D0900603AA24BB24D9C079
:10B7A0008B899C89AD89BE89821B930BA40BB50B39
:10B7B0008093A6039093A703A093A803B093A90333
:10B7C000823070E897077FEFA7077FEFB7072CF469
:10B7D00081E090E8AFEFBFEF09C08F5F9F47A040C7
:10B7E000B04064F08FEF9FE7A0E0B0E08093A60345
:10B7F0009093A703A093A803B093A903A090A603D6
:10B80000B090A7038091CC01282F332744275527D8
:10B810008091A6039091A703A091A803B091A903DA
:10B82000BC01CD010E94657897FF04C0615E7F4F27
:10B830008F4F9F4FA5E09595879577956795AA952A
:10B84000D1F76093A6037093A7038093A803909306
:10B85000A9036530FEEF7F07FFEF8F07FFEF9F071C
:10B860002CF484E09EEFAFEFBFEF09C0605074404E
:10B870008040904064F080E094E0A0E0B0E08093ED
:10B88000A6039093A703A093A803B093A903809065
:10B89000A6039090A703209135023091360237FF1E
:10B8A00002C0295F3F4FF3E035952795FA95E1F700
:10B8B0004FEF223834071CF421E83FEF05C0203851
:10B8C000310514F020E830E0C901AA2797FDA095C2
:10B8D000BA2F2091CE01332744275527BC01CD0133
:10B8E0000E94657897FF04C06D5F7F4F8F4F9F4F19
:10B8F000E2E09595879577956795EA95D1F79B0155
:10B900005FEF613075071CF420E03FEF06C06F3F2A
:10B91000710519F014F020E031E08091E902807C9B
:10B9200049F0C90137FD03969C013595279535955A
:10B9300027950DC080917E0680FF09C0C90137FDA3
:10B9400007969C0143E0359527954A95E1F7820ECD
:10B95000931E2091CB01222309F454C0609131033E
:10B9600070913203809133039091340397FF04C0A8
:10B9700061587F4F8F4F9F4F37E09595879577950B
:10B9800067953A95D1F73327442755270E94657864
:10B9900097FF04C0615E7F4F8F4F9F4FB5E0959535
:10B9A000879577956795BA95D1F76093A6037093BD
:10B9B000A7038093A8039093A9036138AFEF7A0798
:10B9C000AFEF8A07AFEF9A072CF480E89FEFAFEF55
:10B9D000BFEF0AC06F3F71058105910569F064F002
:10B9E00080E091E0A0E0B0E08093A6039093A703ED
:10B9F000A093A803B093A9038091A6039091A703F5
:10BA0000880E991E8091C901282F332780917F08C5
:10BA1000992787FD9095289FF001299FF00D389F69
:10BA2000F00D11249F01F7FF02C021583F4F220F54
:10BA3000232F221F330BFFEF21383F071CF420E890
:10BA40003FEF06C02F3F310519F014F020E031E040
:10BA5000820E931EC401AA2797FDA095BA2FE090ED
:10BA60000503F09006039701442737FD4095542FB6
:10BA7000BC01CD010E94657897FF04C061507E4FE4
:10BA80008F4F9F4FF9E09595879577956795FA9534
:10BA9000D1F7C61AD70A8091D7039091D803892B82
:10BAA00009F060C01E141F040CF05CC09501B7FEC5
:10BAB00003C0309521953F4F2D33310540F48091DF
:10BAC000DB039091DC038C159D0574F526C02C5387
:10BAD0003040E5E036952795EA95E1F720313105CC
:10BAE00010F02FE030E04091DB035091DC031A149A
:10BAF0001B04E4F480E190E0821B930B489F9001CB
:10BB0000499F300D589F300D112474E036952795CC
:10BB10007A95E1F72C153D0520F58091DD01909196
:10BB2000DE01C816D906F4F06C011CC0205F3F4F3F
:10BB30008091DD019091DE01829FB001839F700DA5
:10BB4000929F700D11249B0164E0369527956A95AC
:10BB5000E1F74C155D0514F06A0104C0C216D30666
:10BB600008F06901C601AA2797FDA095BA2F2DE01C
:10BB7000880F991FAA1FBB1F2A95D1F79801442748
:10BB800037FD4095542FBC01CD010E94D9782093F8
:10BB9000AA033093AB034093AC035093AD03C09022
:10BBA000AA03D090AB038091D9039091DA039C0152
:10BBB000220F331F280F391F2C0D3D1D37FF02C0E8
:10BBC0002D5F3F4FA9015595479555954795509342
:10BBD000DA034093D90380912606282F3327220FBA
:10BBE000331F220F331F241735076CF4809101088F
:10BBF000282F3327220F331F220F331F20553040A9
:10BC00004217530724F03093DA032093D90380912D
:10BC10007E0680FF14C08091D9039091DA03A98138
:10BC2000BA818A179B0724F0B093DA03A093D90353
:10BC3000E091D903F091DA03FA83E9835CC02981AA
:10BC40003A812E193F0937FF02C02D5F3F4F3595CE
:10BC5000279535952795E090D903F090DA03E20E09
:10BC6000F31EFA82E98247C080912E06882301F5EF
:10BC7000609105037091060377FF02C06D5F7F4FEF
:10BC8000759567957595679540911E0150911F01B7
:10BC900080910001282F3327649FC001659F900D7C
:10BCA000749F900D1124B9010E94A478CB0101C0AA
:10BCB00099279093DC018093DB018091DB019091C7
:10BCC000DC01873491051CF486E490E005C08639D8
:10BCD000910534F086E990E09093DC018093DB01DC
:10BCE00029813A813093DA032093D9038091E902C4
:10BCF000806C8093E9028091E90299279C0122706F
:10BD0000307081FF1CC18091DD039091DE03A09112
:10BD1000DF03B091E0030097A105B10521F0809108
:10BD200013038130B1F449815A81CA01AA2797FDD2
:10BD3000A095BA2F2EE0880F991FAA1FBB1F2A9526
:10BD4000D1F78093DD039093DE03A093DF03B093DC
:10BD5000E00380911303813019F482E08093130390
:10BD600069817A81CB01AA2797FDA095BA2F980106
:10BD7000442737FD4095542FBC01CD010E946578C2
:10BD8000DC01CB018093AA039093AB03A093AC0397
:10BD9000B093AD03B7FF04C08150904EAF4FBF4F7B
:10BDA0007C018D01FDE015950795F794E794FA95D0
:10BDB000D1F7E092AA03F092AB030093AC03109387
:10BDC000AD036091EA027091EB028FE0603A780770
:10BDD00050F58091DD039091DE03A091DF03B091D7
:10BDE000E0039C01AD01EAE056954795379527950C
:10BDF000EA95D1F7821B930BA40BB50BA801970111
:10BE0000F4E0220F331F441F551FFA95D1F7820F1C
:10BE1000931FA41FB51F8093DD039093DE03A093AF
:10BE2000DF03B093E00360547F4118F58091DD0398
:10BE30009091DE03A091DF03B091E0039C01AD017E
:10BE4000ECE05695479537952795EA95D1F7821BF3
:10BE5000930BA40BB50BA801970172E0220F331FBF
:10BE6000441F551F7A95D1F7820F931FA41FB51F4A
:10BE700029C08091350290913602809135029091CF
:10BE8000360297FF03C0909581959F4F84369105A8
:10BE90000CF58091DD039091DE03A091DF03B0915A
:10BEA000E0039C01AD016EE05695479537952795C7
:10BEB0006A95D1F7821B930BA40BB50B8E0D9F1DBA
:10BEC000A01FB11F8093DD039093DE03A093DF03D7
:10BED000B093E0038091DD039091DE03A091DF0336
:10BEE000B091E0031EE0B695A795979587951A95B2
:10BEF000D1F7909306038093050340912C064423C9
:10BF000099F055279C01BA010E94A478C901861BAB
:10BF1000970B9093DC038093DB03260F371F30933E
:10BF2000DE012093DD011FC01092DC031092DB03C1
:10BF30008FEF93E09093DE018093DD0114C01092A7
:10BF400013031092DD031092DE031092DF031092B0
:10BF5000E003309306032093050305C08091E902B6
:10BF6000806C8093E9022090C807222D3327220F8E
:10BF7000331F220F331F285D3F4FA981BA812A1733
:10BF80003B0714F03A83298330900108832D9927C9
:10BF9000880F991F880F991F80559040E981FA8179
:10BFA0008E179F0714F49A83898380916D028823EA
:10BFB00021F4809186088F3FA1F08091EA02909150
:10BFC000EB020297C09768F4E980FA801E141F0400
:10BFD00044F481E090E09093EB028093EA023A838C
:10BFE000298309811A811093D2050093D10580918C
:10BFF000A2039091A303A091A403B091A503F2E042
:10C00000880F991FAA1FBB1FFA95D1F7009102084C
:10C0100010910308081B190B29813A81213A310537
:10C020008CF0C90137FD019695958795801791078A
:10C030000CF48C01909581959F4F081719076CF4AB
:10C040008C010BC00135110514F000E510E03FEF45
:10C05000003B130714F400EB1FEF232D3327220FAF
:10C06000331F220F331FC90149815A81841B950B4D
:10C07000801791070CF48C0169817A81621B730B24
:10C08000061717070CF48B018091C3079091C40722
:10C0900060911B0370911C03861B970B9093D20732
:10C0A0008093D107D090E0072091390330913A0373
:10C0B00040913B0350913C03DD2041F0661A770A22
:10C0C000C301AA2797FDA095BA2F04C0AA2797FD00
:10C0D000A095BA2F280F391F4A1F5B1F20933903E1
:10C0E00030933A0340933B0350933C0380913903D0
:10C0F00090913A03A0913B03B0913C0381509A4F39
:10C10000A040B04064F080E09AEFA0E0B0E08093FF
:10C11000390390933A03A0933B03B0933C0380917F
:10C12000390390913A03A0913B03B0913C038050B6
:10C130009640AF4FBF4F64F480E096E0AFEFBFEFA3
:10C140008093390390933A03A0933B03B0933C034D
:10C15000C0903B062091D1073091D207F8E0FC1542
:10C1600098F08C2D9927829F7001839FF00C929FED
:10C17000F00C1124C701F7FC07967C0163E0F594ED
:10C18000E7946A95E1F712C08C2D86959927829FD6
:10C19000A001839F500D929F500D1124CA0157FD9D
:10C1A00003967C01F594E794F594E794A090CF0171
:10C1B000B090D0019501442737FD4095542F8091D0
:10C1C000390390913A03A0913B03B0913C03BC0129
:10C1D000CD010E94D978E20EF31E9090BB01692D2B
:10C1E000772788279927980117FF04C0222733272C
:10C1F000201B310B37FF02C02F5F3F4F359527952E
:10C20000A981BA812A0F3B1F442737FD4095542F3F
:10C210000E94657897FF04C0615C7F4F8F4F9F4FEE
:10C2200026E095958795779567952A95D1F79B0197
:10C230006E157F050CF47B01309521953F4FE2167A
:10C24000F3060CF479018091B4079091B5076091E1
:10C25000190370911A03861B970B9093B307809371
:10C26000B207209135033091360340913703509146
:10C270003803DD2041F0461A570AC201AA2797FD6C
:10C28000A095BA2F04C0AA2797FDA095BA2F280F12
:10C29000391F4A1F5B1F20933503309336034093A9
:10C2A0003703509338038091350390913603A09162
:10C2B0003703B091380381509A4FA040B04064F0EA
:10C2C00080E09AEFA0E0B0E08093350390933603CE
:10C2D000A0933703B09338038091350390913603D0
:10C2E000A0913703B091380380509640AF4FBF4FB5
:10C2F00064F480E096E0AFEFBFEF80933503909356
:10C300003603A0933703B09338032091B2073091DE
:10C31000B30748E04C1598F08C2D9927829FB00107
:10C32000839F700D929F700D1124CB0177FD0796AE
:10C330006C01B3E0D594C794BA95E1F712C0C694E6
:10C340008C2D9927829FD001839FB00D929FB00DB5
:10C350001124CD01B7FD03966C01D594C794D594F3
:10C36000C7949501442737FD4095542F809135039C
:10C3700090913603A0913703B0913803BC01CD01F1
:10C380000E94D978C20ED31E692D77278827992756
:10C39000980117FF04C022273327201B310B37FFDA
:10C3A00002C02F5F3F4F35952795E981FA812E0F07
:10C3B0003F1F442737FD4095542F0E94657897FF13
:10C3C00004C0615C7F4F8F4F9F4FE6E09595879546
:10C3D00077956795EA95D1F79B016C157D050CF46F
:10C3E0006B01309521953F4FC216D3060CF46901BD
:10C3F00062EE862E66E0962E59E9A52E56E0B52E01
:10C400004BE0542E31EE632E37E0732ED5012C9184
:10C4100012160CF014C1203429F4E981FA81F88F46
:10C42000EF8B1FC049815A81CA01AA2797FDA095A9
:10C43000BA2F332727FD3095432F532FBC01CD0151
:10C440000E94657897FF04C0615C7F4F8F4F9F4FBC
:10C4500026E095958795779567952A95D1F7788FFA
:10C460006F8BF5012181203439F42F89388D2E0D01
:10C470003F1D388F2F8B2AC0203C39F44F89588DAF
:10C480004E195F09588F4F8B21C0C701AA2797FD0E
:10C49000A095BA2F332727FD3095432F532FBC018A
:10C4A000CD010E94657897FF04C0615C7F4F8F4F7C
:10C4B0009F4FB6E09595879577956795BA95D1F793
:10C4C000AF89B88DA60FB71FB88FAF8BF50122814A
:10C4D000203439F42F89388D2C0D3D1D388F2F8B4A
:10C4E0002AC0203C39F44F89588D4C195D09588F6A
:10C4F0004F8B21C0C601AA2797FDA095BA2F3327DD
:10C5000027FD3095432F532FBC01CD010E94657844
:10C5100097FF04C0615C7F4F8F4F9F4FA6E09595BA
:10C52000879577956795AA95D1F7AF89B88DA60FAE
:10C53000B71FB88FAF8BF5012381203439F42F89D1
:10C54000388D200F311F388F2F8B2AC0203C39F4B3
:10C550004F89588D401B510B588F4F8B21C0C801FC
:10C56000AA2797FDA095BA2F332727FD3095432F93
:10C57000532FBC01CD010E94657897FF04C0615C18
:10C580007F4F8F4F9F4FF6E09595879577956795ED
:10C59000FA95D1F7AF89B88DA60FB71FB88FAF8BBB
:10C5A000F301808191812F89388D8217930764F47C
:10C5B000B901680F791F77FF02C06F5F7F4F7595D4
:10C5C0006795788F6F8B08C04F89588D440F551F22
:10C5D000481B590B588F4F8B822D9927880F991F15
:10C5E000880F991F6F89788D861797075CF4832DC4
:10C5F0009927880F991F880F991FAF89B88DA817A1
:10C60000B90714F0988F8F8B8F89988D97FD0396BB
:10C610009595879595958795F4018183880F991F46
:10C62000880F991F2F89388D281B390BC901880F56
:10C630008283EF89F88DD301ED93FC9303C0F4015D
:10C64000118212825A9422E030E0620E731E44E09E
:10C6500050E0A40EB51E68E070E0860E971E57FEEF
:10C66000D5CEE2E1C85E0C9410798091EF039091F1
:10C67000F003A091F103B091F2038093E70390934C
:10C68000E803A093E903B093EA038091EB03909150
:10C69000EC03A091ED03B091EE038093E30390933C
:10C6A000E403A093E503B093E60308951092FA0320
:10C6B0001092F9031092F8031092F703089584B1D1
:10C6C000806A84B93D9A82E58CBD1DBC459A81E0A3
:10C6D000809313088AEA8093240883E880932508CE
:10C6E0008AE080932608109228081092270810925A
:10C6F0002A081092290810927E0810924608089580
:10C7000030911308332309F085C00DB407FE82C0B1
:10C7100084E080932302459A2EB58091FE039927E9
:10C720008130910589F0823091051CF4892B21F02C
:10C730003EC00297B9F03BC0309345082093FF03F9
:10C740002138A9F581E008C0253549F48091FF031F
:10C75000820F8093FF0382E08093FE0328C0309312
:10C76000FE0325C080914508E82FFF27EF59F74FBA
:10C7700020838F5F809345089091FF038A31A0F05A
:10C78000291769F48AE1A1E6B8E0E7E4F8E00D9042
:10C7900001928A95E1F781E08093460802C03093C8
:10C7A00046081092FE0303C0920F9093FF0320915E
:10C7B0002308203208F028C045980000000000003F
:10C7C0000000000000000000000000000000000069
:10C7D0000000000000000000000000000000000059
:10C7E00000000000000000000000E0911C08F09133
:10C7F0001D08E20FF11D80818EBD8091430890815C
:10C80000890F8093430803C081E0809313082F5F52
:10C81000209323080895EF92FF920F931F93809126
:10C8200034069927880F991F880F991F7C010027CC
:10C83000F7FC0095102F8091710390917203A091E5
:10C840007303B0917403BC01CD01A80197010E944C
:10C85000D978309328082093270880916903909114
:10C860006A03A0916B03B0916C03BC01CD01A801D8
:10C8700097010E94D97830932A08209329082091A3
:10C88000090830910A0840910B0850910C08DA0110
:10C89000C901E3E0880F991FAA1FBB1FEA95D1F7D2
:10C8A000820F931FA41FB51F820F931FA41FB51FD4
:10C8B00020919601309197014091980150919901F2
:10C8C000BC01CD010E94D9783093300820932F0805
:10C8D000809182039091830320914302309144021E
:10C8E000821B930B9093360880933508E091780370
:10C8F000F09179038091D8079091D907BF010E94E8
:10C90000A478CB019B01220F331F220F331F280F66
:10C91000391F280F391F37FF02C02D5F3F4F359554
:10C9200027953595279530932C0820932B088091D7
:10C93000050890910608BF010E94A4789B01220F70
:10C94000331F220F331F260F371F260F371F37FFC6
:10C9500002C02D5F3F4F359527953595279530932C
:10C960002E0820932D0810927903109278031092CC
:10C97000D9071092D80710920608109205088091E6
:10C98000260899278D30910509F466C08E309105EF
:10C990005CF48B30910509F48EC08C3091050CF05D
:10C9A0000FC10A9761F0ADC18F30910509F481C1C3
:10C9B0008F3091050CF45CC1409799F1A2C1809130
:10C9C000FE02809337088091FD02809338088091A1
:10C9D000FC02809339088091FB0280933A08809191
:10C9E000FA0280933B088091F90280933C08809181
:10C9F000F80280933D088091F70280933E08809171
:10CA0000E90280933F088091E902837F8093E902E5
:10CA10000E94262E809340088091750380934108E0
:10CA200070C180918008909181089093380880931C
:10CA30003708809184089091850890933A088093F4
:10CA4000390880911E0190911F0180933B088091CD
:10CA5000000180933C0855C1809168068093370897
:10CA6000809169068093380880916A06809339081E
:10CA700080916B0680933A0880916C0680933B0806
:10CA80008091700680933C088091710680933D08E8
:10CA90008091720680933E088091750680933F08CE
:10CAA00080917306809340088091740680934108BA
:10CAB00080917606DAC0F89480911B06E82FFF2754
:10CAC000EE0FFF1FED5BF84F0190F081E02DE03895
:10CAD000F1051CF0EFE7F0E006C02FEFE138F207B8
:10CAE00014F4E1E8FFEFE093370880911C06E82F8B
:10CAF000FF27EE0FFF1FED5BF84F0190F081E02D57
:10CB0000E038F1051CF0EFE7F0E006C06FEFE13828
:10CB1000F60714F4E1E8FFEFE093380880911A0675
:10CB2000E82FFF27EE0FFF1FED5BF84F0190F0811C
:10CB3000E02DE038F1051CF0EFE7F0E006C08FEFE4
:10CB4000E138F80714F4E1E8FFEFE0933908809149
:10CB50001906E82FFF27EE0FFF1FED5BF84F01903E
:10CB6000F081E02DE038F1051CF0EFE7F0E006C0C1
:10CB70002FEFE138F20714F4E1E8FFEF7894E09347
:10CB80003A0880911E0380933B0880911F03809395
:10CB90003C088091200380933D088091210380937D
:10CBA0003E088091220380933F0880912303809365
:10CBB000400880912403809341088091250355C04B
:10CBC00080915C04863018F010925C0485E08093BC
:10CBD0003708809177068093380880910F039091F1
:10CBE0001003A0911103B0911203BC01CD0125E007
:10CBF00030E040E050E00E94D97830933A0820932A
:10CC0000390880910B0390910C03A0910D03B09112
:10CC10000E03BC01CD0125E030E040E050E00E9471
:10CC2000D97830933C0820933B0880916D0680931F
:10CC30003D0880916E0680933E0880916F06809338
:10CC40003F0880911D038093400880914307909195
:10CC50004407809341088091D1059091D20597FDBA
:10CC6000039695958795959587958093420849C039
:10CC70001092370882E5809338081092390880E1D5
:10CC800080933A088091020180933B08809141048F
:10CC900080933C088091420480933D088091430436
:10CCA00080933E088091440480933F08809145041E
:10CCB00026C080914D068093370880917D06809331
:10CCC00038088091C101809339088091460680938D
:10CCD0003A088091470680933B08809148068093EC
:10CCE0003C088091C00180933D0880914A06809362
:10CCF0003E0880914B0680933F0880914C068093BC
:10CD0000400880914608882309F4D8C08AEF8093B0
:10CD1000E9014091480850914908CA0181509E4F4D
:10CD20008F5F9340B0F420914A0830914B08C901BD
:10CD300081509E4F8F5F934060F48091250685FF60
:10CD400008C05093FA034093F9033093F8032093FB
:10CD5000F70380914E0890914F0821E089369207A1
:10CD600024F49093300380932F0380912F039091AC
:10CD7000300320912D0330912E03821B930B845E90
:10CD80009D4F68E671E00E94A478845B9040909388
:10CD90002C0380932B0320915208309153088091EB
:10CDA0002402909125028217930740F480915C043D
:10CDB000882321F430932502209324028091470890
:10CDC00099278836910549F18936910524F48736EB
:10CDD000910531F07BC08936910509F445C076C0D4
:10CDE0008091540880937B088091550880937D083A
:10CDF0008091560880937C088091570880937E0824
:10CE00008091580880937F08809159088093EA01A7
:10CE100080915A088093FD0359C0809154088093F3
:10CE20001E088091550880931F08809156088093B2
:10CE3000200880915708809321088091580880939A
:10CE400022088091C10590915908892B8093C105D2
:10CE500090915A089093FB038091C20583709C7057
:10CE6000892B8093C20532C08091540880931408A6
:10CE70008091550880931508809156088093160874
:10CE8000809157088093170880915808909159080D
:10CE9000909319088093180880915A0890915B0824
:10CEA00090931B0880931A0880915C08992787FD4E
:10CEB0009095909376078093750708C01092FA03B7
:10CEC0001092F9031092F8031092F7031F910F913B
:10CED000FF90EF90089580911308882309F43BC0D8
:10CEE000459884E298E090931D0880931C089091E7
:10CEF000FC03E92FFF27E052FE4F9F5F9093FC0356
:10CF0000808180932608993010F01092FC031092D3
:10CF100013080E940B6481E0809323080000000046
:10CF20000000000000000000000000000000000001
:10CF300000000000000000000000000000000000F1
:10CF400000000000000000000000000080912408A4
:10CF5000809343088EBD089587B18C6087B942984D
:10CF600043981092010480E88093EC011092000431
:10CF70008093EB010895809106048150809306040C
:10CF80008F3F09F0FBC024E0209306048091E90262
:10CF9000992780739070892B21F48091420480FF3F
:10CFA0001CC080916606882349F08091090488237B
:10CFB00011F42093010481E08093090480916706B5
:10CFC0008823B9F080910A04882319F484E08093BF
:10CFD000000481E080930A040CC0109209041092AE
:10CFE0000A0480916206809307048091640680930E
:10CFF000080480910904882309F040C080917C06D0
:10D00000282F332724FF07C080911403882319F4A5
:10D0100025FD4DC04EC090916306983F50F0809121
:10D02000DA078D3D30F08091070488230CF43FC06F
:10D0300040C0983F48F08091DA078A3028F4809108
:10D0400007048823B4F133C0809101048150809398
:10D0500001048F3F79F58091DA07815080930104B4
:10D060008091EC01813011F480E801C086958093B5
:10D07000EC018091EC019091070417C080910104AC
:10D080008150809301048F3FA9F489E080930104CB
:10D090008091EC01813011F480E801C08695809385
:10D0A000EC018091EC0190916606892311F0429A7F
:10D0B00001C0429880910A04882309F043C08091FE
:10D0C0007C06282F332724FF07C080911403882370
:10D0D00019F426FD50C034C090916506983F50F079
:10D0E000809100088D3D30F08091080488230CF475
:10D0F00042C026C0983F48F0809100088A3028F44A
:10D10000809108048823E4F036C0809100048150A7
:10D11000809300048F3F91F58091000881508093A7
:10D1200000048091EB01813011F480E801C0869504
:10D130008093EB018091EB01909108048923D9F44D
:10D1400043980895809100048150809300048F3F9C
:10D15000A9F489E0809300048091EB01813011F4FF
:10D1600080E801C086958093EB018091EB0190915E
:10D170006706892311F0439A0895439808954FB79D
:10D1800024E130E0F8948091C9008F778093C90042
:10D190008091C9008F7B8093C9008091C9008F7DE9
:10D1A0008093C9005A9A52985B9A539A832F992771
:10D1B0008093CD002093CC008091C8008260809342
:10D1C000C80080E18093C9008091CA008F77809366
:10D1D000CA008091CA008F7B8093CA008091CA00E8
:10D1E0008F7D8093CA008091CA008F7E8093CA0091
:10D1F0008091CA00877F8093CA008091C9008B7F8D
:10D200008093C9008091CA0084608093CA00809195
:10D21000CA0082608093CA008091C80087FF03C063
:10D220008091CE00F9CF8091C90080688093C900B9
:10D230004FBF0895EF92FF920F931F93CF93DF9309
:10D24000482F00E010E08091ED01813061F41092F0
:10D25000ED0184E480930B0410920D0410920C04F1
:10D2600010920E042BC180910B04882319F421E045
:10D2700030E001C0980190910C04992371F4232BA4
:10D2800011F081E010C084E480930B0490930D04AE
:10D2900090930C0490930E04FAC0913069F4232B00
:10D2A00009F0EBC082E080930C0480910D048F5F45
:10D2B00080930D0483E0E9C09230D1F4232B09F070
:10D2C000DCC083E080930B0440930E0490910D0426
:10D2D000923039F410920F0447FF03C081E080932D
:10D2E0000F0483E080930C049F5F90930D04CFC0E4
:10D2F000933009F0C2C0232B09F0BFC090930B04F8
:10D3000082E080930C0480910D048F5F80930D0464
:10D3100020910E04822F9927782F6627842F992732
:10D32000682B792B80913F06813049F47370CB01D3
:10D330008050924063E070E00E94A47817C0823071
:10D3400061F47770CB018050944066E070E00E94F9
:10D35000A4782695269526950BC073706856714063
:10D36000CB0177FD0196BC017595679526952695AD
:10D37000022F11270F7010700F5F1F4F0D30110516
:10D3800008F074C07801E00EF11EF701ED5BF84F74
:10D39000808191819B01281B390BC90137FF03C094
:10D3A000909581959F4F069794F480911D03883C3A
:10D3B00030F480911D03865F80931D0308C088ECC4
:10D3C00080931D0380916F008F7D80936F00F70124
:10D3D000ED5BF84F808191819C01220F331F280F54
:10D3E000391F260F371F37FF02C02D5F3F4FE9015E
:10D3F000D595C795D595C795CB0101968C179D07F7
:10D4000014F4219706C061507040C617D7070CF47A
:10D41000219680911D03843BD0F0F701ED5BF84F1E
:10D4200080819181FE01E81BF90BCF0163E070E080
:10D430000E94A478CB01880F991F860F971F27E7BA
:10D4400037E0E20EF31EF7019183808307C027E7E0
:10D4500037E0E20EF31EF70111821082000F111F58
:10D460000D5B184FF801D183C08311C00231110543
:10D4700070F081E08093ED010AC081E08093ED01BE
:10D4800010920D0410920F0484E480930B04809199
:10D490000D04803198F080910F04882331F480913D
:10D4A000ED01882311F48093940110920D041092E1
:10D4B0000F0410920C0484E480930B04E6E0CDB7D3
:10D4C000DEB70C941C79CF93FC0197FF05C0CFEF1A
:10D4D000F095E195FF4F01C0C1E028E631E0CF01B2
:10D4E000B9010E94A478FC018B35910554F08B554D
:10D4F00090408A35910538F484EB90E08E1B9F0BA9
:10D50000FC0141E00DC0CF01855B90408A3591055B
:10D5100018F4E45BF04003C02E1B3F0BF9014FEF02
:10D52000EE0FFF1FEF5BF54F259134918C2F99275C
:10D5300087FD9095289FB001299F700D389F700D31
:10D540001124842F992787FD9095689FA001699FDA
:10D55000500D789F500D1124CA01CF9108952AE5EE
:10D5600030E0281B390BC9010E94636A0895CF93EC
:10D57000DF9380E00E941A7080911E0190911F013C
:10D580006AE070E00E94A4789F938F9380911E01BF
:10D5900090911F016AE070E00E94A4787F936F93DE
:10D5A0008FE09BE09F938F93CDE0D0E7DF93CF9305
:10D5B000E0912804F091290409952DB73EB7285F22
:10D5C0003F4F2DBF8091E9018823B9F186E00E9489
:10D5D0001A7080911808909119086AE070E00E9412
:10D5E00090787F936F938FED90E09F938F938091CE
:10D5F000090890910A08A0910B08B0910C0820919D
:10D600009601309197014091980150919901BC0188
:10D61000CD010E94D9783F932F9388E19BE09F939F
:10D620008F93DF93CF93E0912804F091290409951B
:10D630008DB79EB70A968DBF12C086E00E941A7001
:10D6400084E29BE09F938F93DF93CF93E091280434
:10D65000F091290409950F900F900F900F908091F1
:10D66000FB038823C1F086E00E941A708091FB03BF
:10D6700099279F938F938BE29BE09F938F93DF93E8
:10D68000CF93E0912804F091290409952DB73EB776
:10D690002A5F3F4F2DBF80E10E941A708091F301F5
:10D6A0009091F4016CE370E00E9490789F938F93C7
:10D6B0008091F3019091F4016CE370E00E94907806
:10D6C0007F936F9380918408909185089F938F93A7
:10D6D00086E39BE09F938F93CDE0D0E7DF93CF93DA
:10D6E000E0912804F09129040995809125062DB731
:10D6F0003EB7265F3F4F2DBF80FF29C08AE10E94C1
:10D700001A708091950199279F938F9380910F03B1
:10D7100090911003A0911103B0911203BC01CD01AF
:10D7200024E630E040E050E00E94D9783F932F9308
:10D7300083E49BE09F938F93DF93CF93E091280442
:10D74000F091290409958DB79EB708968DBFDF919A
:10D75000CF910895CF93DF9380E00E941A7080915B
:10D760000107992787FD90959F938F938091F906E4
:10D77000992787FD90959F938F938091F106992724
:10D7800087FD90959F938F938091E906992787FD58
:10D7900090959F938F938AE49BE09F938F93CDE026
:10D7A000D0E7DF93CF93E0912804F0912904099505
:10D7B00080E10E941A702DB73EB7245F3F4F2DBF06
:10D7C00080912107992787FD90959F938F93809152
:10D7D0001907992787FD90959F938F938091110743
:10D7E000992787FD90959F938F938091090799279B
:10D7F00087FD90959F938F938AE59BE09F938F93EE
:10D80000DF93CF93E0912804F0912904099580914A
:10D8100017062DB73EB7245F3F4F2DBF853098F4D4
:10D8200080E10E941A708AE69BE09F938F93DF93BA
:10D83000CF93E0912804F091290409950F900F905F
:10D840000F900F9018C08730B0F488E10E941A70D2
:10D850008FED90E09F938F938BE79BE09F938F9347
:10D86000DF93CF93E0912804F091290409958DB7B7
:10D870009EB706968DBFDF91CF9108950F931F93AA
:10D8800080E00E941A702AE030E080918008909138
:10D890008108B9010E9490789F938F9380918008AE
:10D8A00090918108B9010E9490787F936F93809145
:10D8B0001E0190911F01B9010E94A4789F938F933C
:10D8C00080911E0190911F01B9010E94A4787F935D
:10D8D0006F9384E89BE09F938F930DE010E71F9375
:10D8E0000F93E0912804F0912904099580E10E94AA
:10D8F0001A708DB79EB70C968DBF80918408909159
:10D9000085089F938F9380918208909183089F93BD
:10D910008F9387E99BE09F938F931F930F93E091E1
:10D920002804F091290409958DB79EB708968DBFFC
:10D930001F910F9108950F931F93CF93DF938091C1
:10D94000E901CDE0D0E7882309F478C080E00E94A7
:10D950001A708091150899279F938F9380911708CB
:10D9600099279F938F9383EA9BE09F938F938E01D8
:10D97000DF93CF93E0912804F091290409958DB7A6
:10D980009EB708968DBF80911608833031F48CE0E5
:10D990000E941A7082EB9BE005C08CE00E941A7016
:10D9A00087EB9BE09F938F93DF93CF93E0912804C5
:10D9B000F091290409950F900F900F900F9080918E
:10D9C000140881FF12C08CE00E941A708CEB9BE05F
:10D9D0009F938F931F930F93E0912804F091290454
:10D9E00009950F900F900F900F9080E10E941A7090
:10D9F0008FED90E09F938F9380911A0890911B0870
:10DA00009F938F9380911808909119086AE070E0B5
:10DA10000E9490787F936F9381EC9BE09F938F930C
:10DA20008DE090E79F938F93E0912804F091290473
:10DA300009958DB79EB70A968DBF12C082E00E94ED
:10DA40001A7081ED9BE09F938F93DF93CF93E091CA
:10DA50002804F091290409950F900F900F900F90D2
:10DA6000DF91CF911F910F910895CF93C82F2091EF
:10DA700010042093110499278F32910509F1803306
:10DA800091051CF44F97A1F02CC08F34910501F142
:10DA90008F38910531F5222319F481E090E038C0E8
:10DAA00086E0289FF0011124E950F54F849117C0BA
:10DAB00086E0289FF0011124E850F54F84910FC0B3
:10DAC00086E0289FF0011124E750F54F849107C0AC
:10DAD00086E0289FF0011124E650F54F8491809351
:10DAE000100490911004809111049813C0E00E94DA
:10DAF00020709091100486E0989FF0011124E55069
:10DB0000F54F259134918C2FF901099580E090E033
:10DB1000CF91089510928108109280081092850884
:10DB2000109284081092830810928208109286083E
:10DB30008AE090E00E9416179093130480931204D9
:10DB40000895CF93DF9380911204909113040E9463
:10DB50001F17882309F4AFC0809112049091130419
:10DB60000A969093130480931204E0E0F0E09F0182
:10DB700090E05FEFA2EEB6E04BE0ED018B8187FF16
:10DB80000BC09F5F8D81E80FF11D8981280F311D2A
:10DB90008E81851708F4582F4150189647FFEDCF16
:10DBA00050938608232B41F52091180430911904D5
:10DBB00040911A0450911B04BB27A52F942F832F4B
:10DBC0009093170480931604AA27BB27281B390BB0
:10DBD0004A0B5B0BCF01AA27BB27280F391F4A1F0F
:10DBE0005B1F209318043093190440931A04509338
:10DBF0001B04E5E0F0E013C02091160430911704F7
:10DC00002E173F0718F4E21BF30B02C0E0E0F0E030
:10DC1000892F9927880F991FE80FF91F3596F093E0
:10DC20008108E0938008EF3FF10578F480911E01B0
:10DC300090911F018E9F90018F9F300D9E9F300D00
:10DC40001124C90164E670E013C0CF019695879551
:10DC50009695879520911E0130911F01289FA00164
:10DC6000299F500D389F500D1124CA0169E170E0C1
:10DC70000E94907870938308609382082091140426
:10DC8000309115042E0F3F1F309315042093140478
:10DC90005EE02131350778F0809184089091850805
:10DCA0000196909385088093840820513E403093DC
:10DCB000150420931404DF91CF9108954FB720E409
:10DCC00030E0F8948091C9008F778093C9008091EB
:10DCD000C9008F7B8093C9008091C9008F7D80939C
:10DCE000C9005A9A52985B9A539A832F9927809326
:10DCF000CD002093CC008091C80082608093C80042
:10DD000088E18093C9008091CA008F778093CA0010
:10DD10008091CA008F7B8093CA008091CA008F7D5A
:10DD20008093CA008091CA008F7E8093CA00809140
:10DD3000CA00877F8093CA008091C9008B7F80933F
:10DD4000C9008091CA0084608093CA008091CA0093
:10DD500082608093CA008091C80087FF03C08091D1
:10DD6000CE00F9CF8091C90080688093C9004FBF71
:10DD700008950F931F93CF93DF93482F4F5F8931FF
:10DD800008F08BC080914207841720F44F5F4093C6
:10DD900042074150CB0183539B4268E170E00E94EF
:10DDA000A478A42FBB27FD01EA0FFB1FED5BF84F02
:10DDB000808191819B01281B390BC90137FF03C06A
:10DDC000909581959F4F069794F480911D03883C10
:10DDD00030F480911D03865F80931D0308C088EC9A
:10DDE00080931D0380916F008F7D80936F00FD01F4
:10DDF000EA0FFB1FED5BF84F808191819C01220FA0
:10DE0000331F280F391F260F371F37FF02C02D5F22
:10DE10003F4FE901D595C795D595C795CB0101969B
:10DE20008C179D0714F4219706C061507040C617E7
:10DE3000D7070CF4219680911D03843BD8F08D0107
:10DE40000A0F1B1FF801ED5BF84F80819181FE01E5
:10DE5000E81BF90BCF0163E070E00E94A478CB01CE
:10DE6000880F991F860F971F0958184FF801918343
:10DE7000808307C0AA0FBB1FA958B84F11961C92E8
:10DE80001E92E42FFF27EE0FFF1FED5BF84FD183AB
:10DE9000C083443011F410929401DF91CF911F910F
:10DEA0000F910895CF93DF9320918708822F9927B0
:10DEB000807F9070409709F06CC02F3109F046C008
:10DEC000809188088093200420918A08209322045E
:10DED00080918B0880932104822F99279093440787
:10DEE00080934307222309F054C080911906282FFC
:10DEF0003327220F331FF901E958F84F118210829E
:10DF000080911A06A82FBB27AA0FBB1FFD01E95855
:10DF1000F84F1182108280911C06E82FFF27EE0F28
:10DF2000FF1FCF018958984FEC01198218822D5B91
:10DF3000384FE90119821882AD5BB84F11961C92D7
:10DF40001E92ED5BF84F1182108223C0C22FCF705A
:10DF5000CA30F8F4809188088093B10880918908CC
:10DF60008093B00880918A088093B30880918B08D1
:10DF70008093B2086091B0087091B1088C2F0E9414
:10DF8000B96E6091B2087091B3088C2F8F5F0E94B8
:10DF9000B96EDF91CF910895CF93C82F8F3F49F489
:10DFA000809123048F3F29F41092250410922404B9
:10DFB00032C020912504222339F4CF3111F485E0B9
:10DFC00001C084E08093260480912604909124046B
:10DFD0008217A0F4892F8095809324048F3F19F431
:10DFE0008EEF8093240480912404C81711F40E94BA
:10DFF000526F10922504109224040BC0E22FFF27C9
:10E00000E957F74FC0832F5F209325049C0F90930F
:10E010002404C0932304CF91089590911F04933258
:10E0200040F4E92FFF27E357F74F80839F5F9093DA
:10E030001F040895833218F48D5F80931F040895A0
:10E0400090E2E0E9F8E08FE19193815087FFFCCF07
:10E050000895CF93CFB723E031E0F8948091C900C1
:10E060008F778093C9008091C9008F7B8093C9000E
:10E070008091C9008F7D8093C9005A9A52985B9A0B
:10E08000539A832F99278093CD002093CC008091C1
:10E09000C80082608093C80088E18093C9008091A5
:10E0A000CA008F778093CA008091CA008F7B8093CB
:10E0B000CA008091CA0080628093CA008091CA0021
:10E0C00080618093CA008091CA0088608093CA00F2
:10E0D0008091C90084608093C9008091CA008460E7
:10E0E0008093CA008091CA0082608093CA008091A8
:10E0F000C80087FF03C08091CE00F9CF8091C9008E
:10E1000080688093C9008091C90080648093C900B1
:10E110000E942070CFBFCF910895282F99278F702C
:10E120009070892B31F4209580911E04822B80936E
:10E130001E0408958091F001882309F441C0809164
:10E14000E90285FF0AC082E980938D0883E280930B
:10E150008E0885E580938F0802C010928D0880910B
:10E16000F1018F3071F480911E040E94356D882377
:10E1700041F081E980938D0880938E0881E380933C
:10E180008F081092F0018091C80085FFFCCF80912C
:10E19000C9008F7E8093C9008091C9008E7F8093D3
:10E1A000C90080918D08882311F48EEF01C08EE79D
:10E1B0008093CE0080911E048093F10110921E0482
:10E1C00008951F920F920FB60F9211248F939F9371
:10E1D000EF93FF939091F001992309F040C0809153
:10E1E0002704882361F480918D08882311F483E04B
:10E1F00003C0813999F481E0809327040FC08330F4
:10E2000099F480918D08882349F090938D0880912E
:10E21000C9008E7F8093C9008EEF1EC08091C90017
:10E2200081608093C9000EC0833261F48091C9007F
:10E230008E7F8093C9008FEF8093CE0081E0809322
:10E24000F00114C080912704E82FFF27E357F74F10
:10E250008F5F8093270480818093CE0007C0109247
:10E2600027048091C90080618093C900FF91EF91DC
:10E270009F918F910F900FBE0F901F901895EF9266
:10E28000FF920F931F93CF93DF937C018B01EA01E1
:10E29000452B39F0F80181918F01F70109952197FC
:10E2A000C9F7E6E0CDB7DEB70C941C79EF92FF9288
:10E2B0000F931F93CF93DF937C018B01EA01452BD2
:10E2C00041F0F8010F5F1F4F8491F70109952197E5
:10E2D000C1F7E6E0CDB7DEB70C941C790F931F931E
:10E2E000CF938C01C62F161634F480E2F8010995FD
:10E2F000C1501C16D4F3CF911F910F9108950F9325
:10E300001F93CF938C01C62F161634F480E3F801C7
:10E310000995C1501C16D4F3CF911F910F91089508
:10E32000A5E3B0E0E6E9F1E70C94F4782E96EEADC3
:10E33000FFAD2E9788249924540180911D048823D1
:10E3400021F42C961FAE1EAE2C975EE4452E512C68
:10E350004C0E5D1E6F01B60105C0153239F00894F0
:10E36000C11CD11CF60114911123B9F7A601461B5B
:10E37000570B31F02C968EAD9FAD2C970E945671A5
:10E38000112309F46AC20894C11CD11CFF24FDA604
:10E39000FCA64FEFE42EF9A6F6010894C11CD11C8F
:10E3A0001491153721F0812F80628837B1F4F0FE87
:10E3B0000AC0F20124E030E0420E531E80809180BA
:10E3C000A280B3800AC0F20142E050E0440E551E24
:10E3D000808191814C01AA24BB24103221F489A5AB
:10E3E0008823D1F61DC0133219F458E0F52AD4CF92
:10E3F0001A3211F01D3291F41A3259F4F20182E00E
:10E4000090E0480E591EE081ECA7EE232CF6E19532
:10E41000ECA790E1F92AAFEDFA22BECF1B3211F43E
:10E4200019A7BACF1E32C1F5F6010894C11CD11C40
:10E4300014911A3279F4F20122E030E0420E531EB8
:10E44000408151813FEF4F3F530714F44FEF5FEF8F
:10E45000E42EA2CF40E050E0812F80538A30A0F418
:10E46000CA0133E0880F991F3A95E1F7840F951F91
:10E47000480F591F410F511D40535040F601089459
:10E48000C11CD11C1491E8CF8FEF4F3F580714F4F3
:10E490004FEF5FEFE42E85CF103329F4F4FC7CCFEF
:10E4A00090E2F92A79CF812F81538930D8F440E066
:10E4B00050E0CA0123E0880F991F2A95E1F7840FE5
:10E4C000951F480F591F410F511D40535040F601F1
:10E4D0000894C11CD11C1491812F80538A3048F3B9
:10E4E0004CA75FCF183619F4A4E0FA2A55CF1C3692
:10E4F00019F4B1E0FB2A50CF133661F43E010894C1
:10E50000611C711CF20122E030E0420E531E80813A
:10E5100089833CC1143421F0143611F0193651F5B9
:10E52000143411F431E0F32AF0FE0AC0F20144E0A1
:10E5300050E0440E551E80809180A280B3800CC0B4
:10E54000F20182E090E0480E591E808191814C01D9
:10E55000AA2497FCA094BA2CB7FE0AC0B094A09449
:10E5600090948094811C911CA11CB11C8DE289A700
:10E570000AE06FC01F3411F01F3631F41F3411F45C
:10E5800091E0F92A08E064C0103779F4F201A2E0C2
:10E59000B0E04A0E5B1E808191814C01AA24BB240D
:10E5A00000E1B0E4FB2A18E753C01337C1F5F201CC
:10E5B00022E030E0420E531E6080718061147104CD
:10E5C00089F43E010894611C711C88E289838EE6FF
:10E5D000F301818385E78B838CE68C838D8389E2CD
:10E5E0008E831F82E7FC13C08E2D992787FD90959F
:10E5F000AC0160E070E0C3010E94C176009729F091
:10E60000382E3618E3140CF0C3C03E2CC1C0F30101
:10E6100001900020E9F731973E2E3618B9C0153524
:10E6200011F0153731F4153511F4F1E0FF2A0AE045
:10E630000FC0183519F0183709F0A0C000E1F3FE3B
:10E6400007C081149104A104B10411F020E4F22A5E
:10E6500019A6EDA6E7FC02C03FEDF32289E2682E81
:10E66000712C6C0E7D1E81149104A104B10421F45F
:10E670004DA5442309F47BC0802F9927AA27BB27E7
:10E680008EA79FA7A8ABB9AB202E332490E08916A4
:10E6900090E0990691E0A90690E0B90648F0C5011E
:10E6A000B4012EA53FA548A959A90E94B77817C063
:10E6B000AFEF8A169104A104B10449F040F0C401FF
:10E6C000B1010E9490789B014427552708C0882DEE
:10E6D000602F0E948478282F3327442755272AABA0
:10E6E0003BAB4CAB5DAB0A3059F48AA9880F880F5D
:10E6F000880F9AA9990F890F382D381B832F10C0C6
:10E70000003139F48AA98295807F482D481B842FD7
:10E7100007C08AA9880F880F880F582D581B852F8E
:10E7200090E02EA53FA548A959A982169306A406F4
:10E73000B50608F091E08AA89BA8ACA8BDA88A30CD
:10E7400010F4805D04C0895A183509F48F7DD30117
:10E750008E933D01992309F099CF083041F4F3FEDF
:10E7600006C0803321F080E3FD0182933F01CE019A
:10E770000196382E3618F8E23F0E0BC0112309F42B
:10E780006CC03E010894611C711C1983B1E03B2EE2
:10E7900019A6032D2DA4231827FC222489A588233C
:10E7A00011F00F5F02C0F6FC0E5F020DEF2CFF248C
:10E7B000C70180739070892B49F48CA5801B682F4A
:10E7C0002C968EAD9FAD2C970E946E7189A58823E3
:10E7D00031F041E050E0BE01675D7F4F0AC0E6FEC8
:10E7E0000EC080E38AA71BA742E050E0BE01665D31
:10E7F0007F4F2C968EAD9FAD2C970E943F71C70125
:10E8000080739070809749F48CA5801B682F2C969C
:10E810008EAD9FAD2C970E947F71622D2C968EAD90
:10E820009FAD2C970E947F71832D992787FD90952E
:10E83000AC01B3012C968EAD9FAD2C970E943F7119
:10E84000E4FE89CD2CA5201B2CA7622F2C968EAD23
:10E850009FAD2C970E946E717ECDE2E1CB5C0C9453
:10E8600010792FB740E0F894E0E0F0E081E2809387
:10E8700057009491E2E0F0E0809357003491E4E097
:10E88000F0E08093570084912FBF9E3199F4363980
:10E8900041F4893011F441E00DC08A3059F442E06E
:10E8A00009C0373939F4863011F443E003C08530AC
:10E8B00009F444E0842F992708959FB7F894809134
:10E8C000C900877F8093C9008091C9008F7E8093A3
:10E8D000C9008091C9008F778093C9008091C900D9
:10E8E0008F7B8093C9008091C9008F7D8093C90080
:10E8F00052985A9A53985B9A9FBF08951F93CF934B
:10E90000DF93182F80911D04882309F48DC0809116
:10E91000EF01181709F488C080911C04882321F4A2
:10E920000E94317480931C048AEC9CE09F938F9327
:10E93000C0EFD2E1DF93CF93E0912804F091290456
:10E9400009950F900F900F900F90812F992782308B
:10E95000910501F1833091052CF4009761F0019746
:10E9600069F024C084309105D9F084309105ACF071
:10E970000597C9F01BC08AEB9CE002C088EA9CE0C6
:10E980009F938F93DF93CF93E0912804F091290414
:10E99000099518C08FE89CE0F3CF8CE69CE0F0CF9F
:10E9A0008EE59CE0EDCF86E59CE0EACF87ED9CE02C
:10E9B0009F938F93DF93CF93E0912804F0912904E4
:10E9C000099510E00F900F900F900F9080911C040C
:10E9D000843011F0823099F40E945D74812F81504F
:10E9E000833018F40E94BF681DC0143019F40E94CF
:10E9F000297018C01530B1F40E945E6E13C0112347
:10EA000089F08DEE9CE09F938F9380EF92E19F932E
:10EA10008F93E0912804F091290409950F900F90AD
:10EA20000F900F901093EF01DF91CF911F910895F8
:10EA30000F931F9381E080931D044091EE01E6E067
:10EA4000FCE020E030E05FE4849199272F5F3F4FA6
:10EA5000829FB001839F700D929F700D11244627F5
:10EA60005150319657FFF0CF4093EE01EEEDFBE0B1
:10EA700020E030E057E2849199272F5F3F4F829F3B
:10EA8000B001839F700D929F700D11244627515045
:10EA9000319657FFF0CF4093EE0180911C048823FC
:10EAA00021F40E94317480931C048091EE01833420
:10EAB00059F088E190E029E20FB6F894A895809388
:10EAC00060000FBE2093600080E991E790932904D5
:10EAD0008093280488E09DE09F938F9300EF12E1DC
:10EAE0001F930F93E0912804F091290409950F904A
:10EAF0000F900F900F9081E690E09F938F9382E5A7
:10EB000090E09F938F931F921F92809102016AE081
:10EB10000E948478892F99279F938F938091020177
:10EB20000E94847899279F938F938EE29DE09F9314
:10EB30008F931F930F93E0912804F0912904099576
:10EB400086E09CE09F938F931F930F93E09128049E
:10EB5000F091290409958EED9BE09F938F931F936D
:10EB60000F93E0912804F091290409958DB79EB781
:10EB700046968DBF82E69DE09F938F931F930F93E0
:10EB8000E0912804F0912904099583EC8093810099
:10EB900080916F00806280936F000F900F900F90B4
:10EBA0000F901F910F91089580911D04882361F0AB
:10EBB0008091EF01843011F40E949A708091EE01EF
:10EBC000833411F010921D0408951F920F920FB616
:10EBD0000F9211242F933F934F935F936F937F93E3
:10EBE0008F939F93AF93BF93EF93FF932091CE00AA
:10EBF0008091FA018823B1F02093C6008091FA0138
:10EC0000823029F52F3F19F58FEF94E3ACE0B0E0A7
:10EC1000C297A109B109B7FFFBCF80916B04809324
:10EC2000CE0015C09091EF01892F8150833020F4E0
:10EC3000822F0E941A690BC0943021F4822F0E9407
:10EC40008D7005C0953019F4822F0E94CC6FFF9112
:10EC5000EF91BF91AF919F918F917F916F915F9154
:10EC60004F913F912F910F900FBE0F901F901895CD
:10EC7000002422273327442751E0BB27EE27FF2714
:10EC8000A0E1660F771F881F991F001C221F331FEA
:10EC9000441F660F771F881F991F001C221F331FF8
:10ECA000441F2AF4050E2B1F3E1F4F1F04C0051AD8
:10ECB0002B0B3E0B4F0B550FBB1FEE1F587F5560A4
:10ECC00047FD5250AA95E9F6E695B7955795E69512
:10ECD000B7955795852F9B2F08952227332741E01D
:10ECE000552768E0880F991F221F331F880F991F2F
:10ECF000221F331F1AF4240F351F02C0241B350BAB
:10ED0000440F551F487F456037FD42506A9551F7C3
:10ED10005695479556954795842F0895AA2797FFAE
:10ED200004C0809590958A1F9A1F77FF04C0609554
:10ED300070956A1F7A1F669F9001779FA001679F59
:10ED4000300D411D5A1F300D411D5A1F889FF00183
:10ED5000999F2E0F3F1F401D511D899F300D411D52
:10ED60005A1F300D411D5A1FCA01B901112480CF0D
:10ED7000FB01DC0102C005900D9241505040D8F7D4
:10ED80000895FC014150504030F001900616D1F733
:10ED90003197CF010895882799270895A0E0B0E022
:10EDA000E4EDF6E70C94FC786C017B01EA01590173
:10EDB00021978FEFCF3FD80789F086010894C11CB7
:10EDC000D11CC7010894E11CF11CF5010995F8015B
:10EDD00080832197FFEFCF3FDF0779F7EAE0CDB7D8
:10EDE000DEB70C941879CF92DF92EF92FF920F93D7
:10EDF0001F937C016B01FB010995082FC701019648
:10EE0000F6010995182FC8011F910F91FF90EF90FF
:10EE1000DF90CF900895A0E0B0E0E1E1F7E70C9437
:10EE2000FE788C017B01EA01690121978FEFCF3FCA
:10EE3000D80771F0F70121917F01C8010F5F1F4FC3
:10EE4000622FF60109952197FFEFCF3FDF0791F77A
:10EE5000E8E0CDB7DEB70C941A79CF92DF92EF924B
:10EE6000FF920F931F936C018B017A01FA010995B0
:10EE7000812F9927682FC6010196F70109951F91E7
:10EE80000F91FF90EF90DF90CF9008955058BB27DF
:10EE9000AA270ED0E0C0D1D030F0D6D020F031F487
:10EEA0009F3F11F41EF4C6C00EF4E095E7FBBCC012
:10EEB000E92FE2D080F3BA1762077307840795073A
:10EEC00018F071F49EF5FAC00EF4E0950B2EBA2FEF
:10EED000A02D0B01B90190010C01CA01A001112460
:10EEE000FF27591B99F0593F50F4503E68F11A160C
:10EEF000F040A22F232F342F4427585FF3CF46959D
:10EF000037952795A795F0405395C9F77EF41F16BE
:10EF1000BA0B620B730B840BBAF09150A1F0FF0F88
:10EF2000BB1F661F771F881FC2F70EC0BA0F621F74
:10EF3000731F841F48F4879577956795B795F79564
:10EF40009E3F08F0B3CF9395880F08F09927EE0FF6
:10EF500097958795089598D088F09F5790F0B92F8E
:10EF60009927B751A0F0D1F0660F771F881F991F1E
:10EF70001AF0BA95C9F712C0B13081F09FD0B1E054
:10EF800008959CC0672F782F8827B85F39F0B93F64
:10EF9000CCF3869577956795B395D9F73EF4909520
:10EFA0008095709561957F4F8F4F9F4F0895E8949E
:10EFB00009C097FB3EF490958095709561957F4FC1
:10EFC0008F4F9F4F9923A9F0F92F96E9BB2793956F
:10EFD000F695879577956795B795F111F8CFFAF47F
:10EFE000BB0F11F460FF1BC06F5F7F4F8F4F9F4FB0
:10EFF00016C0882311F096E911C0772321F09EE80E
:10F00000872F762F05C0662371F096E8862F70E073
:10F0100060E02AF09A95660F771F881FDAF7880F4D
:10F020009695879597F9089597F99F6780E870E01E
:10F0300060E008959FEF80EC089500240A9416166E
:10F04000170618060906089500240A9412161306D6
:10F05000140605060895092E0394000C11F4882364
:10F0600052F0BB0F40F4BF2B11F460FF04C06F5F80
:10F070007F4F8F4F9F4F089557FD9058440F551F56
:10F0800059F05F3F71F04795880F97FB991F61F02A
:10F090009F3F79F087950895121613061406551FA1
:10F0A000F2CF4695F1DF08C0161617061806991F0D
:10F0B000F1CF86957105610508940895E894BB2702
:10F0C00066277727CB0197F90895629FD001739F38
:10F0D000F001829FE00DF11D649FE00DF11D929FF4
:10F0E000F00D839FF00D749FF00D659FF00D992733
:10F0F000729FB00DE11DF91F639FB00DE11DF91F57
:10F10000BD01CF0111240895991B79E004C0991F16
:10F11000961708F0961B881F7A95C9F78095089571
:10F12000AA1BBB1B51E107C0AA1FBB1FA617B7072D
:10F1300010F0A61BB70B881F991F5A95A9F7809549
:10F140009095BC01CD01089597FB092E07260AD0A2
:10F1500077FD04D0E5DF06D000201AF470956195A4
:10F160007F4F0895F6F7909581959F4F0895A1E2FE
:10F170001A2EAA1BBB1BFD010DC0AA1FBB1FEE1F31
:10F18000FF1FA217B307E407F50720F0A21BB30B7C
:10F19000E40BF50B661F771F881F991F1A9469F7F8
:10F1A00060957095809590959B01AC01BD01CF0154
:10F1B000089597FB092E05260ED057FD04D0D7DF02
:10F1C0000AD0001C38F450954095309521953F4F5A
:10F1D0004F4F5F4F0895F6F7909580957095619524
:10F1E0007F4F8F4F9F4F08952F923F924F925F9284
:10F1F0006F927F928F929F92AF92BF92CF92DF9247
:10F20000EF92FF920F931F93CF93DF93CDB7DEB7AB
:10F21000CA1BDB0B0FB6F894DEBF0FBECDBF09943F
:10F220002A88398848885F846E847D848C849B8496
:10F23000AA84B984C884DF80EE80FD800C811B81A4
:10F24000AA81B981CE0FD11D0FB6F894DEBF0FBED3
:10F25000CDBFED010895EE0FFF1F0590F491E02D55
:04F260000994FFCF3F
:10F264005E010A010164FF01FFFFC01FC01F01010D
:10F2740001737373FF03007D0000C409C4096400B3
:10F284001148656C6C6F20576F726C64000000004D
:10F29400000000000000000000000000000000006A
:10F2A400000000000000000000000000000000005A
:10F2B400000000000000000000000000000000004A
:10F2C400000000000000000000000000000000003A
:10F2D4000053706F727400004E6F726D616C0000A9
:10F2E400426567696E6E6572000051756164726F84
:10F2F4000000640001200B050000ECFF000204067E
:10F30400070808080706040200FEFCFAF9F8F8F8F2
:10F31400F9FAFCFE000204060708086440415A4654
:10F3240064640A02969696960840403A10FB303878
:10F334000190D0030090D00300F4017800FF03642F
:10F344000B0A0D0B0C0E0B0F10FA2001010170FFBC
:02F35400010FA7
:00000001FF
/branches/metro/v0.82a metro_Akku+/Hex-Files/Flight-Ctrl_MEGA1284p_V0_82a_S3D.hex
0,0 → 1,3847
:100000000C94C4060C9413070C9413070C94130758
:100010000C9413070C9413070C9413070C941307F8
:100020000C9413070C943B190C9413070C941307AE
:100030000C9425340C9413070C9413070C94130799
:100040000C9413070C9413070C940B160C941307C1
:100050000C94260C0C9413070C94F00B0C941307BF
:100060000C941E1C0C9413070C94B82F0C941307BB
:100070000C945D740C9413070C94596F0C94130733
:100080000C9413070C9413070C941307491C4E1C73
:10009000531C5C1C731C8A1C9A1CAA1CC71CB31E14
:1000A0008A1C751D861DB51DD31DF01D4A1EA51E7B
:1000B00083201521D2215222BB226B237225CF250A
:1000C0003C268626D1261E276F27D1273028CA280E
:1000D00065295F2AD72F0B304E30BE30D63017310E
:1000E000CE319532953295329532953295329532A0
:1000F00095329532953295324A324C3251326932CC
:100100006B320A0D426174743A0020256420436505
:100110006C6C732000204C6F77207761726E696E73
:1001200067206C6576656C3A2025642E2564000A8C
:100130000D466F756E6420424C2D4374726C3A20EC
:10014000002564000A0D0A0D2121204D4953534911
:100150004E4720424C2D4354524C3A2025642021D6
:1001600021000A0D3D3D3D3D3D3D3D3D3D3D3D3D7B
:100170003D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3DAF
:100180003D3D3D3D3D3D3D000A0D43616C69627260
:100190006174696E67207072657373757265207320
:1001A000656E736F722E2E004F4B0A0D000A0D46BE
:1001B0006C696768742D74696D65202575206D699B
:1001C0006E2020546F74616C3A2575206D696E0045
:1001D0000A0D436F6E74726F6C3A2000486561645B
:1001E000696E67486F6C64004E6F726D616C202899
:1001F0004143432D4D6F646529000A0D3D3D3D3D52
:100200003D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D1E
:100210003D3D3D3D3D3D3D3D3D3D3D3D3D3D3D0A41
:100220000D00416E676C654E69636B2020202020B5
:100230002020416E676C65526F6C6C20202020205E
:1002400020204163634E69636B2020202020202002
:100250002020416363526F6C6C20202020202020DE
:1002600020205961774779726F202020202020209C
:1002700020204865696768742056616C7565202088
:1002800020204163635A202020202020202020208D
:1002900020204761732020202020202020202020A3
:1002A0002020436F6D706173732056616C756520FB
:1002B0002020566F6C74616765205B302E31565D6F
:1002C00020205265636569766572204C6576656CA1
:1002D00020204779726F20436F6D70617373202007
:1002E00020204D6F746F722031202020202020208C
:1002F00020204D6F746F722032202020202020207B
:1003000020204D6F746F7220332020202020202069
:1003100020204D6F746F7220342020202020202058
:1003200020203136202020202020202020202020A6
:100330002020313720202020202020202020202095
:100340002020313820202020202020202020202084
:100350002020313920202020202020202020202073
:100360002020536572766F2020202020202020201E
:100370002020486F7665726761732020202020203E
:10038000202043757272656E74205B302E31415DA2
:1003900020204361706163697479205B6D41685D01
:1003A0002020323420202020202020202020202027
:1003B0002020323520202020202020202020202016
:1003C0002020323620202020202020202020202005
:1003D00020203237202020202020202020202020F4
:1003E00020204932432D4572726F72202020202038
:1003F0002020424C204C696D697420202020202050
:1004000020204750535F4E69636B2020202020201E
:1004100020204750535F526F6C6C202020202020FA
:10042000202021212120494E434F4D504154494223
:100430004C4520212121002A002E000A0D20444194
:1004400043206F7220493243204552524F5221209F
:10045000436865636B204932432C203356726566CE
:100460002C2044414320616E6420424C2D43747221
:100470006C005B25695D005B25695D002B204D6983
:100480006B726F4B6F70746572202B0048573A5631
:1004900025642E25642053573A25642E2564256350
:1004A0000053657474696E673A25642025730048AB
:1004B00061726477617265204572726F7220313AA1
:1004C0002564202121004D697373696E6720424CB9
:1004D0002D4374726C3A25642121004D6978657250
:1004E000204572726F722100493243204552524FAB
:1004F00052212121004865696768743A202025351A
:100500006900536574706F696E743A2535690050DF
:10051000726573737572653A253569004F66667347
:1005200065743A202025356900486569676874203C
:10053000636F6E74726F6C0044495341424C454482
:100540000048656967687420636F6E74726F6C0031
:1005500044495341424C4544006163742E20626516
:100560006172696E67004E69636B3A20202020201B
:100570002025356900526F6C6C3A20202020202005
:1005800025356900436F6D706173733A2020202513
:100590003569004B313A25346920204B323A2534F5
:1005A0006920004B333A25346920204B343A2534F6
:1005B0006920004B353A25346920204B363A2534E2
:1005C0006920004B373A25346920204B383A2534CE
:1005D0006920004E693A2534692020526F3A25344B
:1005E00069200047733A253469202047693A253449
:1005F00069200050313A253469202050323A2534A0
:1006000069200050333A253469202050343A25348B
:100610006920004779726F202D2053656E736F72C9
:10062000004E69636B25346920282533692E2569BE
:100630002900526F6C6C25346920282533692E25DA
:10064000692900476965722534692028253369299D
:10065000004E69636B2025346920282533692E25D7
:10066000782900526F6C6C20253469202825336965
:100670002E257829005961772020253469202825E6
:10068000336929004E69636B20253469202825339E
:100690006929282533692900526F6C6C202534693B
:1006A00020282533692928253369290059617720B5
:1006B0002025346920282533692928253369290014
:1006C000414343202D2053656E736F72004E696362
:1006D0006B2025346920282533692900526F6C6C02
:1006E00020253469202825336929005A202020201C
:1006F00025346920282533692900566F6C74616799
:10070000653A2020202533692E253169560043752E
:100710007272656E743A2020202533692E25316966
:100720004100506F7765723A2020202020253469DF
:1007300057004469736368617267653A20253569BB
:100740006D41680052656365697665720052432D9C
:10075000525353493A202020202534690052432D1A
:100760005175616C6974793A202534690052432DC2
:100770004368616E6E656C733A25346900436F6D32
:10078000706173730048656164696E673A20202563
:1007900035690056616C75653A2020202025356941
:1007A0000053746172743A2020202025356900506E
:1007B0006F7469313A202025336900506F746932B3
:1007C0003A202025336900506F7469333A20202580
:1007D000336900506F7469343A2020253369005022
:1007E0006F7469353A202025336900506F7469367B
:1007F0003A202025336900506F7469373A2020254C
:10080000336900506F7469383A20202533690053EA
:100810006572766F202000536574706F696E742066
:100820002025336900506F736974696F6E3A202513
:1008300033690052616E67653A2533692D25336946
:100840000045787465726E436F6E74726F6C202011
:10085000004E693A2534692020526F3A25346920C8
:100860000047733A253469202047693A25346920C6
:100870000048693A253469202043663A25346920C6
:1008800000424C2D4374726C204572726F7273205B
:100890000025336420253364202533642025336408
:1008A000200025336420253364202533642025333C
:1008B00064200025336420253364202533642025FB
:1008C00033642000424C2054656D7065726174750C
:1008D0007265002533692025336920253369202579
:1008E00033692000253369202533692025336920A9
:1008F0002533692000253369202533692025336994
:10090000202533692000424C2D4374726C20666FA1
:10091000756E642000202563202020256320202080
:10092000256320202025632000202563202020250A
:1009300063202020256320202025632000202563BC
:100940002020202D2020202D2020202D200031307F
:1009500000313100313200466C696768742D54698A
:100960006D65202000546F74616C3A2535756D6992
:100970006E004163743A20202535756D696E00283C
:10098000726573657429000A0D47656E657261743E
:10099000696E672064656661756C74205061726170
:1009A0006D6574657220536574202564000A0D55C9
:1009B00073696E6720506172616D65746572205352
:1009C0006574202564000A0D47656E65726174695F
:1009D0006E672064656661756C74204D6978657218
:1009E000205461626C65000A0D4D697865722D4373
:1009F0006F6E6669673A20272573272028257520A2
:100A00004D6F746F727329000A0D3D3D3D3D3D3DB4
:100A10003D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D06
:100A20003D3D3D3D3D3D3D3D000A0D414343206E72
:100A30006F742063616C69627261746564210D0A70
:100A40000000008F001E01AD013B02CA025803E600
:100A500003740402058F051B06A7063307BE07486B
:100A600008D2085B09E3096B0AF20A780BFD0B81D7
:100A70000C040D860D070E870E060F840F00107BE9
:100A800010F5106E11E5115B12CF124213B3132350
:100A9000149214FE146A15D3153B16A11605176798
:100AA00017C81727188318DE1837198E19E3193657
:100AB0001A871AD61A231B6E1BB61BFD1B411C83FB
:100AC0001CC31C001D3C1D751DAB1DE01D121E42EC
:100AD0001E6F1E9A1EC31EE91E0D1F2E1F4D1F697D
:100AE0001F841F9B1FB01FC31FD31FE11FEC1FF5E7
:100AF0001FFB1FFF1F0020030100002F69000201E0
:100B000001226A01030202B66A02000303136B2585
:100B100032692E253169560025336425632025303E
:100B200033646D00537461747573004552524F52B3
:100B30003A2025326400253469202532693A25306F
:100B40003269002534696D2563002533692025331A
:100B50006920253369202533690025336920253331
:100B60006920253369202533690054656D706572ED
:100B70006174757265732020202000256343202056
:100B8000202020002532692E25316956202025336A
:100B9000692E253169410025346957202536696D54
:100BA0004168002532756D2F73205361743A2564B6
:100BB000200020203344004E6F46780044475053B5
:100BC00000486F6D653A2533646D202533642563D5
:100BD000004E6F204E6176694374726C21000A0DDD
:100BE0007777772E4D696B726F4B6F707465722ECD
:100BF00064652028632920486953797374656D738F
:100C000020476D6248000A0D746865207573652081
:100C10006F66207468697320736F6674776172659C
:100C2000206973206F6E6C79207065726D697474C1
:100C30006564200A0D6F6E206F726967696E616C62
:100C4000204D696B726F4B6F707465722D486172C5
:100C50006477617265004143542044534C004A65F7
:100C6000746920736174656C6C6974005370656B92
:100C70007472756D20736174656C6C697420284C96
:100C80006F77207265736F6C7574696F6E2900538E
:100C900070656B7472756D20736174656C6C6974CA
:100CA00020283230343829005370656B7472756DAA
:100CB00020736174656C6C6974004D756C74697334
:100CC00069676E616C2050504D000A0D5265636576
:100CD000697665723A2000756E6B6E6F776E2E20A6
:100CE0005573696E672050504D2E2E2E006E6F7416
:100CF00020737570706F727465642062792068610A
:100D000072647761726521000A0D3D3D3D3D3D3DB8
:100D10003D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D03
:100D20003D3D3D3D3D3D3D3D3D3D3D3D3D000A0D93
:100D3000466C69676874436F6E74726F6C0A0D4815
:100D4000617264776172653A25642E25640A0D53D9
:100D50006F6674776172653A5625642E2564256343
:100D600020000A0D3D3D3D3D3D3D3D3D3D3D3D3D70
:100D70003D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3DA3
:100D80003D3D3D3D3D3D3D0011241FBECFEFD0E434
:100D9000DEBFCDBF11E0A0E0B1E0E4E5FFEE00E092
:100DA0000BBF02C007900D92A23FB107D9F718E020
:100DB000A2EFB1E001C01D92A834B107E1F77AEAD1
:100DC000E2E0F0E081E280935700D4907E01089445
:100DD000E11CF11C20EF37EF41E050E087016FE0AC
:100DE000DA01C9012F5F3F4F4F4F5F4FABBFFC018F
:100DF0008791F80181938F01615067FFF1CFF7016F
:100E00006EE0819178277095615067FFFACF8889ED
:100E1000781729F0F7E9DF1611F40000FECF0E94E1
:100E2000D4070C94A9770C9400008091AD05E82FAD
:100E3000FF27EE0FFF1FE952F94F808191818D5EF0
:100E40009F4F14F010920301808191818A5B9F4F24
:100E5000CCF4809103018823A9F481E080930301FD
:100E60008091F0038F5F8093F003853038F088EE37
:100E700093E0909325028093240204C066E970E019
:100E80000E9407368091F003992790937E05809306
:100E90007D0508951F93CF93DF93182F882389F042
:100EA00082E091E09F938F9380EF92E19F938F93E5
:100EB000E091BC03F091BD0309950F900F900F9046
:100EC0000F908091D005823308F044C084EF91E008
:100ED0000E941617EC01112329F0CE010E941F1762
:100EE0008823D9F3C2E0D0E026E530E080911E01EE
:100EF00090911F018217930730F02196255D3F4F97
:100F0000C730D10598F38091D0059927C89F9001EB
:100F1000C99F300DD89F300D11242093000111235B
:100F2000D9F068EC70E08C2F0E940736DF93CF93E6
:100F30008AE091E09F938F9380EF92E19F938F934C
:100F4000E091BC03F091BD0309958DB79EB706965D
:100F50008DBF02C080930001112311F18091000127
:100F60006AE00E94FC76892F99279F938F93809146
:100F700000010E94FC7699279F938F9385E191E071
:100F80009F938F9380EF92E19F938F93E091BC03A7
:100F9000F091BD0309952DB73EB7285F3F4F2DBF98
:100FA000DF91CF911F910895CFEFD0E4DEBFCDBF89
:100FB0008824992414B815B8C7EED3E0E297D7FF78
:100FC000FDCF85E18093020181E887B93E9A8FEFDA
:100FD00088B98BE184B911E015B98EE38AB987E449
:100FE0008BB9469A84B7877F84BF809160008861FF
:100FF000809360001092600084EC99E09093250249
:10100000809324021092AC021092AB021092DC0684
:101010001092DB061092AE021092AD021092B00256
:101020001092AF0284EC94E0A0E0B0E080939601CF
:1010300090939701A0939801B093990128980E94EA
:101040007F170E9450170E94F8120E9409340E94D4
:10105000AF1A812F0E946C2F0E94D7610E94026CF0
:101060000E949073809102018C3010F4299A01C083
:10107000299878940E94862E80916C0282608093D9
:101080006C0210926F020E94294184EF91E00E944D
:101090001617EC0180916C0280FD05C0CE010E9404
:1010A0001F178823B9F38FE291E09F938F93C0EFCE
:1010B000AC2EC2E1BC2EBF92AF92E091BC03F09186
:1010C000BD03099580EA9FE00E941617EC0100E03D
:1010D00010E00F900F900F900F90B9E7EB2EB6E055
:1010E000FB2EADE2CA2EA6E0DA2E0E9429418091A5
:1010F0006C0280FD05C0CE010E941F178823B9F342
:10110000F60180811816ACF40BC00E942941809131
:101110006C0280FD05C0CE010E941F178823B9F321
:10112000CE010E941F17882321F4F70180818823B4
:1011300064F7F701808187FF1AC00F5F1F4F1F936D
:101140000F930150104081E491E09F938F93BF92E1
:10115000AF92E091BC03F091BD0309958091F2013B
:101160008F5F8093F2018DB79EB706968DBF0F5F9C
:101170001F4FE4E0F0E0CE0EDF1E88E090E0E80EC6
:10118000F91E0C30110508F4B0CF00E010E0C6E7FE
:10119000D6E0FDE2EF2EF6E0FF2E8B8187FD1EC02C
:1011A000F70180811816D4F40F5F1F4F1F930F9320
:1011B0000150104084E491E09F938F9380EF92E17F
:1011C0009F938F93E091BC03F091BD03099582E05A
:1011D000809322028DB79EB706968DBF8B81807853
:1011E0008B830F5F1F4FE4E0F0E0EE0EFF1E2896AA
:1011F0000C30110590F282E691E09F938F93E0EF1F
:10120000EE2EE2E1FE2EFF92EF92E091BC03F09110
:10121000BD0309959091AB058091F2010F900F905D
:101220000F900F90981728F48091D60380618093D7
:10123000D60388E891E09F938F93FF92EF92E0911D
:10124000BC03F091BD03099588EE93E00E94161748
:10125000EC010E94B51A0F900F900F900F90CE01E5
:101260000E941F178823D9F388EA91E09F938F93F8
:10127000FF92EF92E091BC03F091BD03099580E0ED
:101280000E94C936809102010F900F900F900F902D
:101290008A3011F0843110F0289801C0289A80ED2E
:1012A00097E0909325028093240285E58093F203D2
:1012B0008EE090E00E94BB2C9927182F00278FE02A
:1012C00090E00E94BB2C080F111D1093F8010093B1
:1012D000F7018AE090E00E94BB2C9927182F002785
:1012E0008BE090E00E94BB2C080F111D1093F601BB
:1012F0000093F5010F5F1F4F39F08091F701909136
:10130000F8018F5F9F4F41F41092F8011092F7019E
:101310001092F6011092F5018091F5019091F6017D
:101320009F938F938091F7019091F8019F938F93F2
:101330008DEA91E09F938F93FF92EF92E091BC032F
:10134000F091BD0309958DB79EB708968DBF80EDCE
:1013500091E09F938F93FF92EF92E091BC03F09105
:10136000BD0309958091B9050F900F900F900F90D4
:10137000E091BC03F091BD0382FF07C08CED91E0CA
:101380009F938F93FF92EF9208C088EE91E09F9316
:101390008F9380EF92E19F938F9309950F900F9019
:1013A0000F900F900E94FA1F88E893E190939301A9
:1013B0008093920181E08093F1030E944A0780911B
:1013C000D3050E94F6728AEF91E09F938F93FF926C
:1013D000EF92E091BC03F091BD03099580ED97E099
:1013E0000E941617EC018AEF90E00E9416178C01FC
:1013F00083E0809355050F900F900F900F90809190
:10140000FA018111FFCFC8010E941F17882339F00C
:1014100084E690E00E9416178C010E944C74809123
:101420002802882309F4D4C180911001882309F48B
:10143000CFC1109228028091F003882319F00E94F6
:10144000150702C00E9403440E9429412091020115
:101450002A3011F0243110F0289801C0289A809188
:10146000B1029091D603882339F08091B102815066
:101470008093B102977F0AC080916F008062809351
:101480006F001092D8061092D70698609093D603FA
:101490008091920190919301019790939301809391
:1014A00092018091920190919301892B21F080917A
:1014B0006D028823C9F18091920190919301892B4B
:1014C000D9F40E94962F85E090E090939301809349
:1014D000920180918F0590919005019690939005CF
:1014E00080938F058091D60381608093D60380918D
:1014F00056058260809356058091080190910901FC
:101500008F5F9F4F19F58091A8028823F9F080E141
:1015100097E2909325028093240280E890E09093D4
:1015200009018093080112C02A3011F0243110F013
:10153000289801C0289A8091240290912502892B35
:1015400029F48091D6038E7F8093D6038091280260
:10155000882309F03DC180910E01882311F00E947B
:1015600096170E943B130E94760ECE010E941F1711
:10157000882309F429C1649680916D029091D60365
:10158000882339F092609093D6038091560582604B
:101590000CC09D7F9093D60380919201909193010E
:1015A000079728F0809156058D7F8093560580918E
:1015B000920190919301079728F08091D6038E7F36
:1015C0008093D60380910501882321F08150809378
:1015D000050125C08093FC031092890210928802B5
:1015E0001092870210928602109285021092840255
:1015F00080910801909109018F5F9F4F81F4809144
:10160000B102882361F488E99AE3909325028093DC
:10161000240280E09CE0909309018093080180916E
:10162000E901893C48F081508093E9018091D6031B
:101630008B7F8093D60330C08091B5078823E1F07B
:101640008091D60384608093D603809108019091A5
:1016500009018F5F9F4F81F48091A802882361F078
:1016600088E99AE3909325028093240280E098EA27
:10167000909309018093080110928E0310928D03BC
:1016800010928C0310928B038FEF9FEF9093E307E0
:101690008093E2071092E90180910001282F3327FF
:1016A00080911E0190911F0182179307CCF48091C5
:1016B0007D02806280937D028091080190910901F2
:1016C0008F5F9F4FC1F480E797E19093250280934D
:1016D000240280E093E090930901809308010BC0FD
:1016E0008091240290912502892B29F480917D021A
:1016F0008F7D80937D020E94E36584E080932302C6
:101700008091A802882329F45AEA852E55E0952E67
:1017100012C08091F9018F5F8093F901813359F4F0
:101720001092F9018091F3019091F4010196909348
:10173000F4018093F3010894811C911CF2E78F1649
:10174000FBE09F0609F040C0882499242091F7010E
:101750003091F8012F5F3F4F3093F8012093F7014C
:101760008091F5019091F60101969093F601809396
:10177000F501832F9927682F8EE090E00E94C32CFB
:101780008091F7019091F8019070682F8FE090E0C0
:101790000E94C32C8091F5019091F601892F992721
:1017A000682F8AE090E00E94C32C8091F50190910F
:1017B000F6019070682F8BE090E00E94C32C84E1CA
:1017C00090E00E941617EC010E9433660E94196C8B
:1017D00080912302882309F012CE0E94F8610FCE77
:1017E0001F920F920FB60F9211248F939F93EF9336
:1017F000FF93809107018823E1F480911402909176
:10180000150201969093150280931402FC01E55590
:10181000FB4FE081ED3019F08A3A910539F41092CE
:1018200015021092140281E080930701E093C60034
:1018300004C01092150210921402FF91EF919F9133
:101840008F910F900FBE0F901F9018951F920F92BF
:101850000FB60F9211242F933F934F935F936F9383
:101860007F938F939F93AF93BF93CF93EF93FF9308
:1018700090E08091FA01813029F48091C600809334
:10188000CE00CCC08091FA01823029F48091C6004C
:101890008093FF03C3C08091C60080930C025091D7
:1018A0001A025A3A10F090931B0280910C028D306C
:1018B00009F065C080911B02823009F060C09093EE
:1018C0001B02852F992781509C4FFC013297408144
:1018D0002091160230911702241B3109DC01119767
:1018E0008C91281B3109C9019F7090931702809336
:1018F000160246E0969587954A95E1F7982F935CF6
:10190000909318022F733070235C2093190280810A
:10191000981729F48C91281711F491E006C090E0F3
:10192000809109028F5F80930902C0910B02CC2342
:1019300009F074C0992309F471C081E080930B020F
:10194000580F509308025150E52FFF27E150FC4FEC
:101950008DE0808380910104823509F05FC00E9490
:10196000FA1F88E190E02CE00FB6F894A8958093D8
:1019700060000FBE20936000C09322024FC02091F0
:101980001B02822F992781309105F9F08230910551
:101990001CF4892B21F040C0029711F13DC08091C9
:1019A0000C02833239F480910B02882319F481E010
:1019B00080931B0280910C028093FF0381E080934F
:1019C0001A0280910C02992722C02F5F20931B02DC
:1019D000E52FFF27E150FC4F80910C02808309C066
:1019E000E52FFF27E150FC4F80910C0280835A3A8B
:1019F00020F45F5F50931A0202C010921B022091E4
:101A00000C028091160290911702820F911D909303
:101A100017028093160202C010921B02FF91EF91F1
:101A2000CF91BF91AF919F918F917F916F915F9176
:101A30004F913F912F910F900FBE0F901F901895CF
:101A4000AC01A0E0B0E09D01A817B90748F4EBEAAB
:101A5000F4E08191280F311D1196A417B507C8F342
:101A60003F70FD01E555FB4FC90156E096958795FE
:101A70005A95E1F7835C80831196FD01E555FB4F94
:101A80002F733070822F835C8083A455BB4F8DE011
:101A90008C93109207018091AB048093C600089547
:101AA000A0E0B0E0E6E5FDE00C9475772C859D851F
:101AB0000E85BB2483E28093AB049F599093AC04C2
:101AC0002093AD0433E0E32EF12C002309F49EC0F3
:101AD000CF84D888BE016D5E7F4FA989BA89015035
:101AE000109709F493C01097B9F0F601EB0DF11DB2
:101AF000B3949081119791F4002349F1FB016E5F3B
:101B00007F4FDB01C080D1806E5F7F4F0D90BC9115
:101B1000A02DBB24015002C090E019C01097B9F06D
:101B2000F601EB0DF11DB3944081119791F4002360
:101B300041F1FB016E5F7F4FDB01C080D1806E5FA2
:101B40007F4F0D90BC91A02DBB24015002C040E0FE
:101B500018C01097B1F0F601EB0DF11DB394108190
:101B6000119781F4002371F0FB013296DB01CD90D7
:101B7000DC90BF016E5F7F4FA081B181BB2401501B
:101B800001C010E0F701E555FB4F892F869586953A
:101B9000835C80830894E11CF11CF701E555FB4F41
:101BA000892F99278370907024E0880F991F2A95B8
:101BB000E1F755279A0194E0369527959A95E1F734
:101BC000822B835C80830894E11CF11CF701E555AE
:101BD000FB4F4F705070440F551F440F551F812FFE
:101BE000992726E0969587952A95E1F7842B835CC3
:101BF00080830894E11CF11CF701E555FB4F1F732E
:101C0000135C10830894E11CF11C6ACFC7010E9489
:101C1000200DE9E00C949177A3E07A2F409108021F
:101C20004650442309F458C0E72FFF27E150FC4FEA
:101C300080818D537F5FE72FFF27E150FC4F20818C
:101C40002D537F5FE72FFF27E150FC4F30813D533D
:101C50007F5FE72FFF27E150FC4F60816D537F5F6F
:101C60009927880F991F880F991F522F52955F70DF
:101C7000582B822F99278F709070F4E0880F991F4E
:101C8000FA95E1F7232F26952695282B832F992760
:101C900083709070E6E0880F991FEA95E1F7682B52
:101CA00041504F3FC9F0EA2FFF27E150FC4F5083CE
:101CB000AF5F41504F3F81F0EA2FFF27E150FC4FCB
:101CC0002083AF5F41504F3F39F0EA2FFF27E150AB
:101CD000FC4F6083AF5FA5CF82E094E09093070252
:101CE00080930602A350A09305020895A2E0B0E0FD
:101CF000ECE7FEE00C947B7780910B02882309F4DB
:101D00006BC40E940C0E80910004823609F025C33A
:101D10008091010499278037910509F4C1C081376A
:101D20009105C4F48A36910509F48DC28B3691056C
:101D300044F48B34910571F18636910509F46CC138
:101D40000CC38D36910509F47BC08E36910509F4DC
:101D50005FC003C384379105D1F1853791054CF4F9
:101D60008137910509F4A3C08337910509F4F1C0C7
:101D7000F4C28737910509F428C2883791052CF4FD
:101D80008537910509F4E4C1E8C28937910509F462
:101D90007AC1E3C2E0910602F0910702808191814D
:101DA0009093C4028093C3022091C1023091C20279
:101DB000821B930B845E9D4F68E671E00E941C7746
:101DC000845B90409093C0028093BF02C6C2809112
:101DD0000802A0910602B0910702853140F080E12F
:101DE000EAEDF3E00D9001928A95E1F70DC08D9137
:101DF0009D910D90BC91A02D8093DA039093DB030D
:101E0000A093DC03B093DD0380EF809303024BC00B
:101E1000809107018823E1F38DE490E09F938F93F5
:101E200080E296E09F938F9381E08F938F938EE46F
:101E30008F930E94500D8DB79EB707968DBF8DC2B0
:101E4000A0910602B09107021C91113081F48DE43B
:101E5000E0E2F6E00D9001928A95E1F70E94C32D31
:101E600019838091D6038F7E8093D60301C0198297
:101E7000809107018823E1F381E090E09F938F93A5
:101E8000CE0101969F938F9381E08F938F938DE482
:101E90008F930E94500DADB7BEB71796ADBF5DC210
:101EA00081E080930E028FEF8093050156C2E0918E
:101EB0000602F0910702E0818E2F8A508A3058F492
:101EC0008983882311F481E003C0863010F085E017
:101ED000898361E00EC08E2F84518A3070F489832B
:101EE000882311F481E003C0863010F085E08983F7
:101EF00060E089810E94432E12C0E983EF3F19F40C
:101F00000E94262E89838981882311F481E003C0F1
:101F1000863010F085E0898389810E94D92C8091D8
:101F200007018823E1F383E790E09F938F938CEA86
:101F300095E09F938F9381E090E09F938F93CE01E4
:101F400001969F938F9382E08F9381E08F9381E539
:101F500072C12091060230910702D9018C91815003
:101F6000853008F040C0F90181818535E1F52F5FAA
:101F70003F4F83E7ECEAF5E0D9010D9001928A9595
:101F8000E1F7F90182910E94422D8091ED05992798
:101F9000AA27BB27BC01CD0124EC39E040E050E08A
:101FA0000E94DD76DC01CB018093D5019093D601B0
:101FB000A093D701B093D8018091EE059927AA2765
:101FC000BB27BC01CD010E94DD76DC01CB018093F3
:101FD000D1019093D201A093D301B093D4010E9478
:101FE000262E898301C01982809107018823E1F39D
:101FF00081E090E09F938F93CE0101969F938F9302
:1020000081E08F938F9383E58F930E94500D8DB75E
:102010009EB707968DBF26C0E0910602F091070299
:10202000E0818E2F8150853018F48E2F0E94D92C9C
:102030000E94262E8983809107018823E1F381E0A5
:1020400090E09F938F93CE0101969F938F9381E0B1
:102050008F938F9386E48F930E94500DADB7BEB7D8
:102060001796ADBF8091A802882329F46EE670E030
:1020700089810E94073680E00E944A078091D3053B
:102080000E94F6726AC1E0910602F0910702808117
:10209000992787FD90959093F2068093F1068181B0
:1020A000992787FD90959093F4068093F30682819B
:1020B000992787FD90959093F6068093F506838186
:1020C000992787FD90959093F8068093F706848171
:1020D000992787FD90959093FA068093F90685815C
:1020E000992787FD90959093FC068093FB06868147
:1020F000992787FD90959093FE068093FD06878132
:10210000992787FD9095909300078093FF0680851F
:10211000992787FD90959093020780930107818509
:10212000992787FD909590930407809303078285F4
:10213000992787FD909590930607809305078385DF
:10214000992787FD9095909308078093070705C10D
:10215000E0910602F091070280810E9462338A8337
:10216000882319F481E0898301C0198280910701D5
:102170008823E1F388E090E09F938F938EE696E0CA
:102180009F938F9321E030E03F932F93809106023D
:10219000909107029F938F933F932F93CE010296C6
:1021A0009F938F933F932F93CE01820F931F9F9303
:1021B0008F9384E08F9381E08F9385E58F930E94C6
:1021C000500DEDB7FEB773963CC080910502893083
:1021D00008F4C3C020910602309107022F5F3F4FE1
:1021E00088E0AEE6B6E0F90101900D928A95E1F73C
:1021F000D9018E910E94B8328A83882319F481E034
:10220000898301C01982809107018823E1F321E0CD
:1022100030E03F932F93CE0102969F938F933F938D
:102220002F93CE01820F931F9F938F9382E08F9302
:1022300081E08F9387E58F930E94500DEDB7FEB735
:102240003B96EDBF8AC00E94A9728983823019F043
:10225000843009F082C0F8948091C1008F7380931C
:10226000C1008091C9008F738093C9008091C10023
:10227000877E8093C1008091C900877E8093C900CA
:102280008091C80087FF03C08091CE00F9CF809174
:10229000C00087FF03C08091C600F9CFE09106021D
:1022A000F09107028081882359F581E08093FA013B
:1022B0001092CD0080E490E08093CC008091CD001E
:1022C0008093C5008091CC008093C4008091CA00A7
:1022D0008F7D8093CA008091CA008F7E8093CA0050
:1022E0008091C9008B7F8093C9008091CA0084606F
:1022F0008093CA008091CA0082608093CA0003C0A4
:1023000082E08093FA018091CA00877F8093CA009F
:102310008091C200877F8093C2008091C9008E7F28
:102320008093C9008091C10088618093C100809131
:10233000C90088618093C9008091C1008068809342
:10234000C1008091C90080688093C90010926E001E
:1023500010926F0010927000789480910104992778
:102360008436910509F4CDC085369105ACF48136EB
:10237000910509F481C0823691052CF48B349105C6
:1023800009F45DC021C18236910509F482C083360B
:10239000910509F491C018C18C36910509F4FFC06C
:1023A0008D3691054CF48736910509F40AC18836BB
:1023B000910509F4C4C008C18437910529F0863716
:1023C000910509F4FAC000C180910802A0910602AB
:1023D000B0910702803140F080E1EAEDF3E00D902A
:1023E00001928A95E1F70DC08D919D910D90BC9160
:1023F000A02D8093DA039093DB03A093DC03B093CA
:10240000DD03809107018823E1F31F92809104018D
:102410008F9384E58F930E94500D8AEF809303027F
:102420008FEF8093050180EA9FE00E94161790933A
:10243000FC018093FB010F900F900F90C5C0E091BD
:102440000602F0910702808191819093C4028093EB
:10245000C3022091C1023091C202821B930B845EA1
:102460009D4F68E671E00E941C77845B90409093DA
:10247000C0028093BF02A8C0E0910602F09107025B
:10248000808180930601803298F08FE1809306016D
:102490000FC0A0910602B09107028BE0E2EFF3E0DB
:1024A0000D9001928A95E1F78091FB038093970547
:1024B0008FEF8093050188C08091FF019091000209
:1024C000892B89F4E0910602F0910702E081EE2366
:1024D00051F08AE0E89FC00111240E9416179093E2
:1024E000CD038093CC03E0910602F0910702908126
:1024F0008AE0989FC0011124909300028093FF010D
:1025000015C08FEF80930501E0910602F09107025C
:1025100090818AE0989FC0011124909302028093D9
:102520000102892B19F081E08093100280EA9FE07C
:102530000E9416179093FC018093FB0145C08FEF1A
:1025400080930501E0910602F0910702908197FDCA
:1025500008C082E080930D021092FE011092FD01EE
:102560001AC0909580916502892B809365029181B4
:102570008AE0989FC00111249093FE018093FD0191
:1025800084E080930D0280EA9FE00E9416179093EA
:10259000FC018093FB0181E08093110215C08FEF55
:1025A00080930501E0910602F091070280818093FB
:1025B000660281E08093120207C081E080930F02DF
:1025C00003C081E08093130210920B021092070265
:1025D0001092060210920502E3E0CE5F0C9497770A
:1025E000982F8091C00085FFFCCF9093C60008957E
:1025F0000F931F9388E18093C1008091C000826097
:102600008093C0008091C10080688093C100809158
:10261000C10080648093C10000E010E00093C50019
:102620008AE290E08093C4008091010290910202BE
:102630000E9416179093CF038093CE038CED90E009
:102640000E9416179093FE038093FD031092D0030F
:1026500082E58093D1031092D4038BE08093D20360
:102660001092D30310930702009306021092050202
:102670001F910F910895A0E1B0E0E1E4F3E10C9423
:10268000787780910701882309F4C1C28091FB010A
:102690009091FC010E941F17882361F01092FE01A7
:1026A0001092FD011092020210920102109200029B
:1026B0001092FF018091FD019091FE01892B41F064
:1026C0008091A9049091AA040E941F17882329F4DD
:1026D00080911102882309F460C08091070188234A
:1026E00009F45BC080910D0201E211E08430A8F092
:1026F0000E940E2080E590E09F938F931F930F938D
:1027000081E08F938F9388E48F930E94500D2DB7B3
:102710003EB7295F3F4F2DBF34C01092670282E25F
:1027200094E09F938F9383E090E29F938F93E09147
:10273000BC03F091BD03099584E190E09F938F93D2
:102740001F930F9381E090E09F938F938DE092E031
:102750009F938F9382E08F9381E08F9388E48F9390
:102760000E94500D80910D02982F8F5F80930D0273
:102770002DB73EB7215F3F4F2DBF943010F0109220
:102780000D028091FD019091FE010E941617909319
:10279000AA048093A9041092110280911202882346
:1027A00051F180910701882331F10E940E2080E5CC
:1027B00090E09F938F9381E291E09F938F9321E02C
:1027C00030E03F932F9380E291E09F938F933F936C
:1027D0002F9386E692E09F938F9383E08F9381E01F
:1027E0008F938CE48F930E94500D109212028DB73C
:1027F0009EB70F968DBF80910F028823D1F08091F4
:1028000007018823B1F08AE090E09F938F9380EDD9
:1028100093E09F938F9381E08F938F9386E58F93BF
:102820000E94500D10920F022DB73EB7295F3F4F07
:102830002DBF809113028823D9F08091070188234E
:10284000B9F08BE090E09F938F9382EF93E09F939A
:102850008F9381E08F93809104018F9387E48F930E
:102860000E94500D109213028DB79EB707968DBF30
:102870008091FD039091FE030E941F17882309F4A5
:1028800061C080910701882309F45CC08091C8056C
:102890009927880F991F880F991F7C010027F7FC43
:1028A0000095102F8091050390910603A0910703D6
:1028B000B0910803BC01CD01A80197010E94517796
:1028C0003093EB032093EA038091FD029091FE0286
:1028D000A091FF02B0910003BC01CD01A8019701B6
:1028E0000E9451773093ED032093EC038091920284
:1028F0008093EE03809191028093EF0388E090E053
:102900009F938F938AEE93E09F938F9381E08F93B1
:1029100083E08F938BE68F930E94500D8091F0039C
:102920002DB73EB7295F3F4F2DBF853018F086E0A9
:102930008093F00383E690E00E9416179093FE03C5
:102940008093FD038091010290910202892B41F056
:102950008091CE039091CF030E941F17882321F40A
:1029600080911002882339F180910701882319F1A1
:102970000E94FD3482E490E09F938F9385E595E07B
:102980009F938F9381E08F938F9384E48F930E9422
:10299000500D109210028DB79EB707968DBF809193
:1029A000010290910202009731F00E941617909355
:1029B000CF038093CE038091FF0190910002892B79
:1029C00009F4B8C08091CC039091CD030E941F17E9
:1029D000882309F4AFC080910701882309F4AAC0B5
:1029E0008091C8059927880F991F880F991F7C012E
:1029F0000027F7FC0095102F8091050390910603A6
:102A0000A0910703B0910803BC01CD01A801970173
:102A10000E9451773093BF032093BE038091FD0243
:102A20009091FE02A091FF02B0910003BC01CD0184
:102A3000A80197010E9451773093C1032093C003EE
:102A400020919D0730919E0740919F075091A007CC
:102A5000DA01C90163E0880F991FAA1FBB1F6A959D
:102A6000D1F7820F931FA41FB51F820F931FA41FBE
:102A7000B51F209196013091970140919801509196
:102A80009901BC01CD010E9451773093C30320937B
:102A9000C2038091CD029091CE02A091CF02B0915D
:102AA000D00239E0B595A795979587953A95D1F7D6
:102AB0008093C4038091C9029091CA02A091CB0275
:102AC000B091CC0229E0B595A795979587952A9561
:102AD000D1F78093C5038091D5029091D602A09141
:102AE000D702B091D80209E0B595A795979587953B
:102AF0000A95D1F78093C6038EE090E09F938F9361
:102B00008EEB93E09F938F9381E08F938F9383E479
:102B10008F930E94500D8091FF01909100020E94BE
:102B200016179093CD038093CC032DB73EB7295F42
:102B30003F4F2DBF809106018F3F71F1992714E01F
:102B4000880F991F1A95E1F78E5D9D4F40E150E087
:102B5000BC01CE0101960E94307580E190E09F9308
:102B60008F93CE0101969F938F9381E090E09F9386
:102B70008F9386E091E09F938F9382E08F9381E023
:102B80008F9381E48F930E94500D8FEF8093060105
:102B90008DB79EB70B968DBF809197058823D1F096
:102BA000809107018823B1F081E090E09F938F939B
:102BB00087E995E09F938F9381E08F938F9382E4D1
:102BC0008F930E94500D109297052DB73EB7295F45
:102BD0003F4F2DBF80910E028823C9F080910701DD
:102BE0008823A9F084E390E09F938F9387ED96E08C
:102BF0009F938F9381E08F938F9380E58F930E94B3
:102C0000500D10920E028DB79EB707968DBFE6E06D
:102C1000C05F0C9494771F920F920FB60F921124FD
:102C20002F933F935F936F937F938F939F93AF9374
:102C3000BF93EF93FF9320E080912302882329F034
:102C40008091230281508093230280919F038823E7
:102C500019F0815080939F0380912B0281508093C3
:102C60002B028F3F09F05BC089E080932B0280919B
:102C7000290290912A02019690932A0280932902B8
:102C800080910F018F5F817080930F01882319F469
:102C900081E080932802349903C081E080932C0264
:102CA0008091240290912502892B21F180912402A8
:102CB000909125020B9750F080912402909125026B
:102CC0000A97909325028093240204C01092250253
:102CD00010922402809124029091250220910801F3
:102CE0003091090182239323892B11F021E008C040
:102CF00020E006C08FEF9FEF9093090180930801B9
:102D000080910201222331F08A3011F45A9A07C0CF
:102D1000479A05C08A3011F45A9801C047988091AB
:102D20002C02882309F472C02091E901222309F0C2
:102D30006DC08091B90583FF69C086B19927FC01F8
:102D4000E071F07084FF14C08091260290912702F8
:102D500001969093270280932602809126029091FB
:102D60002702895E934008F451C020932C024EC084
:102D70008091260290912702892B09F443C080910B
:102D80002602909127028A569140E0F58091260212
:102D90009091270269E270E00E94087780912602F4
:102DA00090912702860F971F909327028093260207
:102DB00080912602909127020B9750F08091260275
:102DC000909127020A979093C4028093C30204C093
:102DD000F093C402E093C3028091C3029091C402B5
:102DE0002091C1023091C202821B930B845E9D4FE1
:102DF00068E671E00E941C77845B90409093C0026B
:102E00008093BF021092270210922602FF91EF9149
:102E1000BF91AF919F918F917F916F915F913F9102
:102E20002F910F900FBE0F901F901895209129029F
:102E300030912A02280F391FC90101960895209167
:102E4000290230912A02821B930B892F992786959C
:102E5000807490700895CF93DF930E941617EC0151
:102E6000CE010E941F178823D9F3DF91CF910895D7
:102E7000CF93DF930E941617EC0109C080911001D7
:102E8000882329F0909310018FEC80937A00CE0173
:102E90000E941F17982F882389F3DF91CF910895FF
:102EA0009FB7F8945F983E9A469A8091B0008F70D1
:102EB0008093B0008091B00083608093B0008091D7
:102EC000B1008B738093B1008091B1008B608093CF
:102ED000B1001092B2008FEF8093B3008091B000E8
:102EE00080688093B000809170008A7F809370002A
:102EF000809170008260809370009FBF08958AE087
:102F000090E00E941617909332028093310282E083
:102F100085BD83EA84BD17BC84EB88BD86E086BD91
:102F200080916E00816080936E000895A0E0B0E013
:102F3000ECE9F7E10C9477778091E305E82FFF2720
:102F4000E456FE4F9681D08080910E01A92FBB27B9
:102F5000A7FDB095CB2FDB2F813009F0C9C02091A0
:102F60000503309106034091070350910803BD010A
:102F7000CE010E94DD7697FF04C061587F4F8F4FCE
:102F80009F4F7B018C0167E015950795F794E794B7
:102F90006A95D1F78D2D992787FD9095A92FB92F87
:102FA0002091FD023091FE024091FF0250910003FA
:102FB000BC01CD010E94DD7697FF04C061587F4FB0
:102FC0008F4F9F4F57E095958795779567955A95C1
:102FD000D1F7F801E701C61BD70BE80BF90B80917D
:102FE000DA059927AA27BB27BC01CD019E01AF01B5
:102FF0000E94DD7697FF04C061507E4F8F4F9F4F38
:10300000FC01EB0149E0F595E795D795C7954A9501
:10301000D1F78091C101992736E0880F991F3A9521
:10302000E1F740910C0150910D012091E205332709
:10303000841B950BB9010E941C7780910C01909123
:103040000D01860F971F90930D0180930C018091C5
:103050000C0190910D0197FD0F9624E095958795B1
:103060002A95E1F790931F0280931E02809111062A
:1030700080FF07C080911E0290911F028C0F9D1F40
:1030800006C080911E0290911F028C1B9D0B909395
:103090001F0280931E028091DB05282F3327220F09
:1030A000331F220F331F80911E0290911F0282173F
:1030B00093077CF08091DC05282F3327220F331FE4
:1030C000220F331F80911E0290911F02281739078B
:1030D00024F430931F0220931E0280910201843158
:1030E00008F4C2C080910E018F5F80930E01BEC0B4
:1030F0002091FD023091FE024091FF0250910003A9
:10310000BD01CE010E94DD7697FF04C061587F4F5C
:103110008F4F9F4F7B018C01C7E015950795F79462
:10312000E794CA95D1F78D2D992787FD9095A92F02
:10313000B92F209105033091060340910703509168
:103140000803BC01CD010E94DD769B01AC0197FF15
:1031500004C021583F4F4F4F5F4FB7E055954795FB
:1031600037952795BA95D1F72E0D3F1D401F511F5A
:103170008091DE059927AA27BB27BC01CD010E94BB
:10318000DD7697FF04C061507E4F8F4F9F4FFC014B
:10319000EB01A9E0F595E795D795C795AA95D1F7E5
:1031A0008091C001992776E0880F991F7A95E1F701
:1031B00040910A0150910B012091E2053327841BB5
:1031C000950BB9010E941C7780910A0190910B0127
:1031D000860F971F90930B0180930A0180910A013B
:1031E00090910B0197FD0F9664E0959587956A95F0
:1031F000E1F790931D0280931C028091110681FFDC
:1032000007C080911C0290911D028C0F9D1F06C06B
:1032100080911C0290911D028C1B9D0B90931D02AE
:1032200080931C028091DF05282F3327220F331F44
:10323000220F331F80911C0290911D028217930769
:103240007CF08091E005282F3327220F331F220FB7
:10325000331F80911C0290911D022817390724F416
:1032600030931D0220931C0210920E01E7E0CDB7AF
:10327000DEB70C9493771F920F920FB60F92112422
:103280002F933F934F935F938F939F93EF93FF936E
:103290008091020190912D02843108F04CC0992355
:1032A00009F01CC18091B00086FF24C08091B0005D
:1032B0008F7B8093B00080911E0290911F028755F2
:1032C0009E4F909321028093200225E08D3D92072E
:1032D00018F08CED95E005C08757914030F487E7F2
:1032E00091E090932102809320028091200290919E
:1032F0002102BAC08091B00080648093B0008091B8
:10330000E105282F33278DED96E0289FA001299F06
:10331000500D389F500D1124CA0120912E0230917A
:103320002F02821B930B909321028093200281E055
:1033300080930E01D0C0992309F0D0C08091B000D5
:1033400086FF97C08091B0008F7B8093B000E091A2
:103350003002EE23F1F48091E105282F33278DED23
:1033600096E0289FA001299F500D389F500D1124F1
:10337000CA0120912E0230912F02821B930B909351
:1033800021028093200210922F0210922E02469A60
:10339000A2C089EA93E090932102809320028E2FAD
:1033A000992783309105D9F08430910534F4813028
:1033B000910549F0029761F020C08430910591F0A9
:1033C000059799F01AC080911E0290911F0204C0C7
:1033D00080911C0290911D0287559E4F1DC08091C7
:1033E0006B0705C08091450702C08091730799273C
:1033F000880F991F880F991FEFCFFF27EE0FFF1F30
:10340000E952F94F20813181220F331F8091200230
:1034100090912102820F931F9093210280932002AA
:10342000809120029091210255E08D3D950718F082
:103430008CED95E005C08757914030F487E791E027
:10344000909321028093200220912002309121024A
:103450002C5B3040309321022093200280912E0279
:1034600090912F02820F931F90932F0280932E0230
:1034700032C08091B00080648093B0008CEB90E00B
:10348000909321028093200280912E0290912F022E
:1034900084549F4F90932F0280932E02809122029A
:1034A000882321F08091B102833320F4809122029D
:1034B000823011F4469801C0469A809130028F5FA5
:1034C000809330029091E105981728F481E0809371
:1034D0000E011092300281E080932D022091200293
:1034E0003091210241E02F37340730F08FEF809385
:1034F000B3002F5F30400FC02F3F3105C9F0C0F03F
:10350000A9014F5F50404F37510550F480E8809338
:10351000B30020583040309321022093200212C083
:103520008FEF8093B30050932102409320020AC092
:10353000809120028093B300109221021092200209
:1035400010922D02FF91EF919F918F915F914F917A
:103550003F912F910F900FBE0F901F9018951092D2
:103560007C008FEC80937A000895CF93DF931092C4
:10357000370286E987BD83E090E00E94BB2CC82F0C
:10358000863E08F4C65FC8BD84E690E00E94381706
:1035900080911401909115018152934010F0C0EF79
:1035A00002C0C530F8F0C8BD82E390E00E94381731
:1035B00087E394E09F938F9380EF92E19F938F93A3
:1035C000E091BC03F091BD030995809114019091A5
:1035D00015010F900F900F900F908152934010F4AF
:1035E000C550DFCF6C2F83E090E00E94C32CCF301A
:1035F00018F0CCE8D0E002C0C0E0D0E0CA3FD1056E
:10360000F8F4C7BD82E390E00E94381789E394E0A4
:103610009F938F9380EF92E19F938F93E091BC03F0
:10362000F091BD03099580911401909115010F90BF
:103630000F900F900F908052934010F02196DECFA4
:10364000C093A8058091B90580FF09C08C2F8A50CE
:103650008B3E28F08091D50380648093D503C7BD4D
:103660008CE291E00E943817DF91CF910895EF929C
:10367000FF921F93CF9310E080ED97E00E94161702
:103680007C01CCE8133019F4CB3008F0C9E010E02D
:1036900080914702909148028C5F934024F480917E
:1036A000130181500AC080914702909148028750CF
:1036B000944034F0809113018F5F8093130101C017
:1036C00011E080914502909146028C5F934024F472
:1036D0008091120181500AC080914502909146026A
:1036E0008750944034F0809112018F5F80931201D3
:1036F00001C01F5F80914302909144028C5F934010
:1037000024F48091110181500AC08091430290916C
:10371000440287509440C4F0809111018F5F8093E0
:10372000110113C08BE394E09F938F9380EF92E19C
:103730009F938F93E091BC03F091BD0309950F9087
:103740000F900F900F905FC01F5F82E18093720215
:1037500080916C028E7F80936C0285EA8093BC001E
:10376000809113018A3040F48091D5038160809369
:10377000D5038AE08093130180911301863F40F0C6
:103780008091D50381608093D50385EF80931301E9
:10379000809112018A3040F48091D5038260809339
:1037A000D5038AE08093120180911201863F40F098
:1037B0008091D50382608093D50385EF80931201B9
:1037C000809111018A3040F48091D5038460809308
:1037D000D5038AE08093110180911101863F40F06A
:1037E0008091D50384608093D50385EF8093110188
:1037F00080917202882339F0C7010E941F17882325
:1038000009F090CFF5CF109210018FEC80937A00E1
:10381000809110018823E1F3CA3020F48AE090E01F
:103820000E943817C15009F02DCF86E490E00E9425
:103830003817CF911F91FF90EF9008951F920F922C
:103840000FB60F921124AF92BF92CF92DF92EF92F8
:10385000FF920F931F932F933F934F935F936F9319
:103860007F938F939F93AF93BF93EF93FF93809139
:103870005002282F3327442755278F5F809350020B
:10388000F9012231310508F08CC3EA5BFF4F0C943B
:10389000A377809178009091790046C0809178005C
:1038A000909179002CC1809178009091790090934B
:1038B00053028093520257C180910E0390910F03DF
:1038C0002091780030917900821B930B9093990599
:1038D00080939805809198059091990590935D0249
:1038E00080935C025EC18091780090917900209174
:1038F000100330911103821B930B9093A7058093C3
:10390000A6058091A6059091A70590935F028093EC
:103910005E0249C38091560290915702209178002F
:1039200030917900820F931F909357028093560233
:1039300081E03AC380915402909155022091780021
:1039400030917900820F931F909355028093540217
:1039500084E02AC380911E0190911F019C01220FD7
:10396000331F280F391F809178009091790063E010
:1039700070E00E940877260F371F369527953695F9
:10398000279530931F0120931E0185E00DC3809180
:1039900078009091790040910A0350910B03841BA9
:1039A000950B90933E0280933D0280913D02909151
:1039B0003E02029704F122E04E3E520784F4209129
:1039C00051022B5F20935102255080917E029091ED
:1039D0007F02845F914018F4215F2093510280910F
:1039E0005102853684F14F5F5F4F50930B03409334
:1039F0000A03845626C080913D0290913E028F5F5B
:103A00009F4F0CF532E047325307ECF02091510202
:103A10002550209351022B5F80917E0290917F026E
:103A2000845F914018F42F502093510280915102ED
:103A30008C394CF44150504050930B0340930A038F
:103A40008C598093510281E080933C0280917800F0
:103A50009091790090939F0580939E0580913D02FF
:103A600090913E029C01442737FD4095542F809150
:103A7000C5029091C602A091C702B091C802820F00
:103A8000931FA41FB51F8093C5029093C602A093F5
:103A9000C702B093C8022091C5023091C60240917E
:103AA000C7025091C80257FF04C021503C4F4F4FEE
:103AB0005F4F0AE055954795379527950A95D1F7B9
:103AC0008091C5029091C602A091C702B091C80230
:103AD000821B930BA40BB50B8093C5029093C60277
:103AE000A093C702B093C8022EC180915402909156
:103AF00055022091780030917900820F931F9093A6
:103B000055028093540210924F0250C280910201DC
:103B10008A3071F48091780090917900209152025E
:103B200030915302820F931F01969695879517C087
:103B30004091520250915302843158F02091780004
:103B400030917900240F351F8FEF97E0821B930B84
:103B500006C08091780090917900840F951F909312
:103B600044028093430286E01FC280910E0390912D
:103B70000F032091780030917900821B930B909372
:103B800099058093980580919805909199052091C9
:103B90005C0230915D02820F931F909342028093EA
:103BA000410287E001C280917800909179002091D4
:103BB000100330911103821B930B9093A705809300
:103BC000A6058091A6059091A70520915E023091EF
:103BD0005F02820F931F9093400280933F02E3C1E4
:103BE000209156023091570280917800909179008F
:103BF000280F391F309357022093560280910201FB
:103C00008A3019F4220F331F04C0220F331F220FF2
:103C1000331F309357022093560220915602309161
:103C20005702C90137FD0796A3E095958795AA9598
:103C3000E1F7909348028093470280915802909157
:103C40005902820F931F97FD019695958795909342
:103C500059028093580220911A0330911B03821B52
:103C6000930B90931D0180931C0120914D02309184
:103C70004E0280911C0190911D01280F391F37FFC2
:103C800002C02F5F3F4F3595279530934E0220930A
:103C90004D024ECE20915402309155028091780011
:103CA00090917900280F391F3093550220935402C8
:103CB000809102018A3019F4220F331F04C0220FB1
:103CC000331F220F331F309355022093540220914B
:103CD000540230915502C90137FD079663E095956E
:103CE00087956A95E1F7909346028093450280910B
:103CF0005A0290915B02820F931F97FD0196959552
:103D0000879590935B0280935A022091180330911B
:103D10001903821B930B90931B0180931A0120912E
:103D20004B0230914C0280911A0190911B01280F97
:103D3000391F37FF02C02F5F3F4F359527953093CE
:103D40004C0220934B0283E02FC11092500281E07D
:103D500080931001809133029091340201969093E8
:103D6000340280933302809178009091790090938F
:103D70001501809314018091140190911501AA27D7
:103D8000BB27A0906002B0906102C0906202D09008
:103D90006302A80EB91ECA1EDB1EA0926002B0927A
:103DA0006102C0926202D0926302809164028F5FCE
:103DB00080936402823108F4F6C0809116019091DC
:103DC0001701A0911801B09119017C018D0123E028
:103DD000EE0CFF1C001F111F2A95D1F7E81AF90AF3
:103DE0000A0B1B0BEA0CFB1C0C1D1D1D80913702DE
:103DF000992787FD9095A92FB92FBC01CD0126ECFD
:103E000034E240E050E00E94DD76DC01CB01E81AAC
:103E1000F90A0A0B1B0BD801C7010496A11DB11D9D
:103E2000B7FF05C0D801C7010B96A11DB11D13E056
:103E3000B595A795979587951A95D1F78093160113
:103E400090931701A0931801B09319018091A005D8
:103E50009091A1057C010027F7FC0095102F80911F
:103E6000160190911701A0911801B0911901E81A5B
:103E7000F90A0A0B1B0BE092A302F092A402009332
:103E8000A5021093A6022091380230913902409188
:103E90003A0250913B0257FF04C0215F3F4F4F4F02
:103EA0005F4FF4E05595479537952795FA95D1F7EB
:103EB0008091380290913902A0913A02B0913B0270
:103EC000821B930BA40BB50B80933802909339029D
:103ED000A0933A02B0933B0280913802909139024C
:103EE000A0913A02B0913B028E0D9F1DA01FB11F01
:103EF0008093380290933902A0933A02B0933B0228
:103F00008091350290913602AC01E5E0440F551FD7
:103F1000EA95E1F7481B590B8091380290913902DC
:103F2000A0913A02B0913B02B7FF03C00F96A11DCA
:103F3000B11D74E0B595A795979587957A95D1F7BA
:103F40002091A3023091A402281B390B63E0220FB9
:103F5000331F6A95E1F7240F351F37FF02C0215E3A
:103F60003F4F45E0359527954A95E1F73093360266
:103F700020933502D601C501D7FE03C00196A11DCD
:103F8000B11DB595A79597958795809360029093FD
:103F90006102A0936202B093630289E0809364029D
:103FA00002C01092500282E080934F0280914F0233
:103FB00080937C0080915002882319F08FEC8093CD
:103FC0007A00FF91EF91BF91AF919F918F917F9177
:103FD0006F915F914F913F912F911F910F91FF90A2
:103FE000EF90DF90CF90BF90AF900F900FBE0F90EB
:103FF0001F90189590E2E1E2F1E08FE491938150F7
:1040000087FFFCCF089590916702E1E2F1E0E90FAC
:10401000F11D80839F5F909367020895EF92FF9256
:104020000F931F93CF93DF932091650220FF0AC067
:1040300080916602882311F0815002C08091200196
:104040008093660221FF0CC090916602809120014E
:10405000981719F41092660203C09F5F909366024E
:10406000822F992780FF04C081FF02C01092660250
:104070000E94FA1F80916602282F332753E0E52E15
:1040800050E2F52EC091BC03D091BD038A3098F464
:1040900081E1809367023F932F9382E794E09F939F
:1040A0008F93FF92EF92FE0109952DB73EB72A5FDD
:1040B0003F4F2DBF11C080E1809367023F932F9344
:1040C00087E794E09F938F93FF92EF92FE0109950B
:1040D0008DB79EB706968DBF20916602822F9927D5
:1040E000AA27BB27FC01429710F00C94BF2AE85A7C
:1040F000FF4F43E0E42E40E2F42EC091BC03D09188
:10410000BD030C94A377109267028CE794E09F9311
:104110008F9303E010E2FF92EF92FE01099584E194
:10412000809367020F900F900F900F9081E690E0C0
:104130009F938F9382E590E09F938F931F921F929E
:10414000809102016AE00E94FC76892F99279F9353
:104150008F93809102010E94FC7699279F938F9301
:104160008CE894E09F938F93FF92EF92E091BC03D1
:10417000F091BD03099588E2809367022DB73EB7A1
:10418000225F3F4F2DBF81E296E09F938F930E9465
:10419000262E99279F938F9381EA94E09F938F9384
:1041A000FF92EF92E091BC03F091BD0309958DB7AA
:1041B0009EB708968DBF9091D503992351F08CE35B
:1041C00080936702892F99279F938F938FEA94E0BA
:1041D00081C690916D02992371F08CE38093670200
:1041E000892F99279F938F9386EC94E09F938F93C9
:1041F0001F930F9391C08091D60384FF07C08CE377
:10420000809367028BED94E00C94512A8091920187
:1042100090919301069710F00C94C82A8CE3809338
:10422000670288EE94E00C94512A8091B90533E03E
:10423000E32E30E2F32EC091BC03D091BD0380FF8A
:1042400074C0109267028091A3029091A402A09181
:10425000A502B091A602BC01CD0125E030E040E00E
:1042600050E00E9451773F932F9385EF94E09F9306
:104270008F93FF92EF92FE01099584E1809367028C
:104280002DB73EB72A5F3F4F2DBF80919F0290917F
:10429000A002A091A102B091A202BC01CD0125E033
:1042A00030E040E050E00E9451773F932F9382E04E
:1042B00095E09F938F93FF92EF92E091BC03F09172
:1042C000BD03099588E2809367028DB79EB7069675
:1042D0008DBF80911401909115019F938F938FE072
:1042E00095E09F938F93FF92EF92E091BC03F09142
:1042F000BD0309958CE3809367022DB73EB72A5F13
:104300003F4F2DBF87B599279F938F938CE195E001
:104310009F938F93FF92EF92E091BC03F091BD03C6
:1043200009958DB79EB7069633C71092670289E24A
:1043300095E09F938F93FF92EF92FE01099584E1A0
:10434000809367020F900F900F900F9088E395E095
:104350009F938F93FF92EF92E091BC03F091BD0386
:10436000099588E2809367020F900F900F900F904D
:1043700081E495E09F938F93FF92EF92E091BC03CD
:10438000F091BD0309958CE3809367020F900F9025
:104390000F900F9080E595E09F938F93FF92EF929F
:1043A0000C94552A1092670289E595E09F938F93AC
:1043B00003E010E2FF92EF92FE01099584E1809301
:1043C00067020F900F900F900F90809105039091CE
:1043D0000603A0910703B0910803B7FF04C0815002
:1043E0009C4FAF4FBF4F2AE0B595A79597958795FE
:1043F0002A95D1F7BF93AF939F938F9386E695E06D
:104400009F938F931F930F93E091BC03F091BD0393
:10441000099588E2809367022DB73EB7285F3F4F2A
:104420002DBF8091FD029091FE02A091FF02B091FC
:104430000003B7FF04C081509C4FAF4FBF4FCAE08D
:10444000B595A79597958795CA95D1F7BF93AF93E3
:104450009F938F9385E795E09F938F931F930F937F
:10446000E091BC03F091BD0309958CE38093670252
:104470008DB79EB708968DBF8091C3029091C402FC
:104480009F938F9384E895E09F938F931F930F934F
:10449000E091BC03F091BD0309952DB73EB72A5FAB
:1044A0003F4F11C7109267028091DB069091DC06A6
:1044B0009F938F938091D9069091DA069F938F9363
:1044C00083E995E09F938F93FF92EF92FE01099508
:1044D00084E1809367028DB79EB708968DBF809167
:1044E000DF069091E0069F938F938091DD06909177
:1044F000DE069F938F9383EA95E09F938F93FF92BD
:10450000EF92E091BC03F091BD03099588E280939E
:1045100067022DB73EB7285F3F4F2DBF8091E3065E
:104520009091E4069F938F938091E1069091E2062B
:104530009F938F9383EB95E09F938F93FF92EF92DE
:10454000E091BC03F091BD0309958CE38093670271
:104550008DB79EB708968DBF8091E7069091E806CB
:104560009F938F938091E5069091E6069F938F939A
:1045700083EC95E0A2C0109267028091AE05E82F0F
:10458000FF27EE0FFF1FE952F94F808191819F9322
:104590008F938091AD05E82FFF27EE0FFF1FE952A3
:1045A000F94F808191819F938F9383ED95E09F9345
:1045B0008F93FF92EF92FE01099584E18093670249
:1045C0008DB79EB708968DBF8091B005E82FFF2765
:1045D000EE0FFF1FE952F94F808191819F938F93D6
:1045E0008091AF05E82FFF27EE0FFF1FE952F94F2B
:1045F0008081918188589F4F9F938F9383EE95E0A0
:104600009F938F93FF92EF92E091BC03F091BD03D3
:10461000099588E2809367022DB73EB7285F3F4F28
:104620002DBF8091B205E82FFF27EE0FFF1FE95243
:10463000F94F8081918182599F4F9F938F938091F1
:10464000B105E82FFF27EE0FFF1FE952F94F8081D8
:10465000918182599F4F9F938F9383EF95E09F9312
:104660008F93FF92EF92E091BC03F091BD03099507
:104670008CE3809367028DB79EB708968DBF8091BB
:10468000B405E82FFF27EE0FFF1FE952F94F808195
:10469000918182599F4F9F938F938091B305E82F0B
:1046A000FF27EE0FFF1FE952F94F80819181825958
:1046B0009F4F9F938F9383E096E09F938F93FF92FA
:1046C000EF92E091BC03F091BD0309952DB73EB781
:1046D000285F3F4FF8C51092670283E196E09F93F1
:1046E0008F9303E010E2FF92EF92FE010995809113
:1046F00002010F900F900F900F908A3009F09DC02B
:1047000084E18093670280911A0390911B039C01BE
:1047100097FF02C0295F3F4F287F821B930B9F9317
:104720008F9380911A0390911B0397FD0796A3E046
:1047300095958795AA95E1F79F938F9320911A03FA
:1047400030911B0337FF02C0295F3F4FF3E03595DF
:104750002795FA95E1F78091470290914802821BD4
:10476000930B9F938F9381E296E09F938F931F9378
:104770000F93E091BC03F091BD03099588E280930B
:1047800067028DB79EB70A968DBF809118039091EE
:1047900019039C0197FF02C0295F3F4F287F821BAE
:1047A000930B9F938F93809118039091190397FD1A
:1047B0000796E3E095958795EA95E1F79F938F93A8
:1047C000209118033091190337FF02C0295F3F4F32
:1047D00073E0359527957A95E1F7809145029091A0
:1047E0004602821B930B9F938F9382E396E09F93E5
:1047F0008F931F930F93E091BC03F091BD03099534
:104800008CE3809367022DB73EB7265F3F4F2DBFE5
:1048100080911603909117039F938F9380911603B5
:10482000909117032091430230914402821B930B15
:104830009F938F9383E496E0A7C38B3019F0843164
:1048400008F4ADC084E18093670280911A039091CF
:104850001B039C0197FF02C0215F3F4F207F821BFB
:10486000930B97FD0196959587959F938F938091D4
:104870001A0390911B0397FD0F9654E09595879529
:104880005A95E1F79F938F9320911A0330911B0360
:1048900037FF02C0295F3F4F43E0359527954A9582
:1048A000E1F78091470290914802821B930B9F93FE
:1048B0008F9381E596E09F938F931F930F93E091E1
:1048C000BC03F091BD03099588E2809367022DB780
:1048D0003EB7265F3F4F2DBF80911803909119037B
:1048E0009C0197FF02C0215F3F4F207F821B930BEB
:1048F00097FD0196959587959F938F9380911803C7
:104900009091190397FD0F96C4E095958795CA95E8
:10491000E1F79F938F93209118033091190337FF8C
:1049200002C0295F3F4FB3E035952795BA95E1F76F
:104930008091450290914602821B930B9F938F9327
:1049400083E696E09F938F931F930F93E091BC03B0
:10495000F091BD0309958CE3809367028DB79EB7F4
:104960000A968DBF809116039091170397FD0196CB
:10497000959587959F938F93809116039091170338
:104980002091430230914402821B930B9F938F939B
:1049900085E796E09F938F931F930F9392CE8D3070
:1049A00009F0F6C584E1809367028091130199278D
:1049B0009F938F9380911A0390911B0397FD0F96FD
:1049C000F4E095958795FA95E1F79F938F93209161
:1049D0001A0330911B0337FF02C0295F3F4FE3E00A
:1049E00035952795EA95E1F7809147029091480225
:1049F000821B930B9F938F9384E896E09F938F93F2
:104A00001F930F93E091BC03F091BD03099588E2D9
:104A1000809367028DB79EB70A968DBF8091120171
:104A200099279F938F93809118039091190397FD75
:104A30000F9674E0959587957A95E1F79F938F93FC
:104A4000209118033091190337FF02C0295F3F4FAF
:104A500063E0359527956A95E1F78091450290913D
:104A60004602821B930B9F938F9388E996E09F9356
:104A70008F931F930F93E091BC03F091BD030995B1
:104A80008CE3809367022DB73EB7265F3F4F2DBF63
:104A90008091110199279F938F9380911603909194
:104AA000170397FD0196959587959F938F93809116
:104AB0001603909117032091430230914402821B08
:104AC000930B9F938F938CEA96E09F938F931F9302
:104AD0000F93E091BC03F091BD0309958DB79EB78C
:104AE0000A9656C31092670280EC96E09F938F93CC
:104AF000FF92EF92FE01099584E1809367020F9087
:104B00000F900F900F9080911003909111039F933D
:104B10008F9380913F02909140029F938F938DECF1
:104B200096E09F938F93FF92EF92E091BC03F091F8
:104B3000BD03099588E2809367022DB73EB7285FD1
:104B40003F4F2DBF80910E0390910F039F938F9342
:104B500080914102909142029F938F938CED96E059
:104B60009F938F93FF92EF92E091BC03F091BD036E
:104B700009958CE3809367028DB79EB708968DBF29
:104B800080910A0390910B039F938F9380913D0234
:104B900090913E029F938F938BEE96E08ECD109274
:104BA000670280911E0190911F016AE070E00E94EF
:104BB0001C779F938F9380911E0190911F016AE053
:104BC00070E00E941C777F936F938AEF96E09F932B
:104BD0008F93FF92EF92FE01099584E18093670223
:104BE0008DB79EB708968DBF8091140890911508D7
:104BF0006AE070E00E9408779F938F938091140879
:104C0000909115086AE070E00E9408777F936F9397
:104C10008EE097E09F938F93FF92EF92E091BC0319
:104C2000F091BD03099588E2809367022DB73EB7E6
:104C3000285F3F4F2DBF80911608909117089F93D2
:104C40008F9382E297E09F938F93FF92EF92E09190
:104C5000BC03F091BD0309958CE3809367028DB787
:104C60009EB706968DBF80911808909119089F9362
:104C70008F9382E397E02EC11092670284E497E05D
:104C80009F938F93FF92EF92FE01099584E18093A9
:104C900067020F900F900F900F908091D706909120
:104CA000D8069F938F938DE497E09F938F93FF9205
:104CB000EF92E091BC03F091BD03099588E28093E7
:104CC00067028DB79EB706968DBF8091B102992776
:104CD0009F938F938DE597E09F938F93FF92EF9231
:104CE000E091BC03F091BD0309958CE380936702CA
:104CF0002DB73EB72A5F3F4F2DBF8091D60699272B
:104D000001979F938F938DE697E002CB10926702F5
:104D10008DE797E09F938F93FF92EF92FE010995A5
:104D200084E1809367020F900F900F900F90809115
:104D3000BF029091C0029F938F9385E897E09F9365
:104D40008F93FF92EF92E091BC03F091BD03099520
:104D500088E2809367022DB73EB72A5F3F4F2DBF91
:104D60008091C3029091C4029F938F9383E997E04F
:104D70009F938F93FF92EF92E091BC03F091BD035C
:104D800009958CE3809367028DB79EB706968DBF19
:104D90008091C1029091C2029F938F9381EA97E024
:104DA00099C0109267028091B20299279F938F93C6
:104DB0008FEA97E09F938F93FF92EF92FE01099500
:104DC00084E1809367028DB79EB706968DBF809170
:104DD000B30299279F938F938BEB97E09F938F93C9
:104DE000FF92EF92E091BC03F091BD03099588E238
:104DF000809367022DB73EB72A5F3F4F2DBF80914A
:104E0000B40299279F938F9387EC97E09F938F939A
:104E1000FF92EF92E091BC03F091BD0309958CE302
:104E2000809367028DB79EB706968DBF8091B502BD
:104E300099279F938F9383ED97E04CC01092670260
:104E40008091B60299279F938F938FED97E09F9360
:104E50008F93FF92EF92FE01099584E180936702A0
:104E60008DB79EB706968DBF8091B70299279F9305
:104E70008F938BEE97E09F938F93FF92EF92E09149
:104E8000BC03F091BD03099588E2809367022DB7BA
:104E90003EB72A5F3F4F2DBF8091B80299279F935D
:104EA0008F9387EF97E09F938F93FF92EF92E0911C
:104EB000BC03F091BD0309958CE3809367028DB725
:104EC0009EB706968DBF8091B90299279F938F93C5
:104ED00083E098E09F938F93FF92EF92D9CA10924C
:104EE00067028FE098E09F938F9303E010E2FF92B8
:104EF000EF92FE01099584E1809367020F900F9075
:104F00000F900F908091C10199279F938F9387E114
:104F100098E09F938F93FF92EF92E091BC03F09102
:104F2000BD03099588E2809367028DB79EB7069608
:104F30008DBF80911E0290911F0297FD039695955B
:104F40008795959587959F938F9385E298E09F939A
:104F50008F931F930F93E091BC03F091BD030995CC
:104F60008CE3809367022DB73EB72A5F3F4F2DBF7A
:104F70008091DC0599279F938F938091DB0599277A
:104F80009F938F9383E398E09F938F931F930F9347
:104F9000E091BC03F091BD0309958DB79EB70896CB
:104FA000F7C01092670281E498E09F938F93FF927D
:104FB000EF92FE01099584E1809367020F900F90B4
:104FC0000F900F908091F603992787FD90959F93FE
:104FD0008F938091F503992787FD90959F938F93E9
:104FE00081E598E09F938F93FF92EF92E091BC034D
:104FF000F091BD03099588E2809367022DB73EB713
:10500000285F3F4F2DBF8091F703992787FD90952B
:105010009F938F938091F80399279F938F9381E6B5
:1050200098E09F938F93FF92EF92E091BC03F091F1
:10503000BD0309958CE3809367028DB79EB70896F0
:105040008DBF8091FC0399279F938F938091F903E3
:10505000992787FD90959F938F9381E798E02DCBBB
:105060001092670281E898E09F938F93FF92EF92EE
:10507000FE01099584E1809367020F900F900F90D5
:105080000F908091910699278F7790709F938F93BF
:105090008091890699278F7790709F938F93809145
:1050A000810699278F7790709F938F9380917906CF
:1050B00099278F7790709F938F9381E998E09F93C2
:1050C0008F93FF92EF92E091BC03F091BD0309959D
:1050D00088E2809367028DB79EB70C968DBF809152
:1050E000B10699278F7790709F938F938091A9062F
:1050F00099278F7790709F938F938091A10699271E
:105100008F7790709F938F938091990699278F77CF
:1051100090709F938F9382EA98E09F938F93FF9272
:10512000EF92E091BC03F091BD0309958CE380936D
:1051300067022DB73EB7245F3F4F2DBF8091D10648
:1051400099278F7790709F938F938091C9069927A5
:105150008F7790709F938F938091C10699278F7757
:1051600090709F938F938091B90699278F77907055
:105170009F938F9383EB98E09F938F93FF92EF928F
:10518000E091BC03F091BD0309958DB79EB70C96D5
:105190008DBFFEC11092670284EC98E09F938F93BD
:1051A000FF92EF92FE01099584E1809367020F90D0
:1051B0000F900F900F9080919506992787FD9095FD
:1051C0009F938F9380918D06992787FD90959F934C
:1051D0008F9380918506992787FD90959F938F9354
:1051E00080917D06992787FD90959F938F9383EDFE
:1051F00098E09F938F93FF92EF92E091BC03F09120
:10520000BD03099588E2809367022DB73EB7245FFE
:105210003F4F2DBF8091B506992787FD90959F93AD
:105220008F938091AD06992787FD90959F938F93DB
:105230008091A506992787FD90959F938F938091E4
:105240009D06992787FD90959F938F9384EE98E014
:105250009F938F93FF92EF92E091BC03F091BD0377
:1052600009958CE3809367028DB79EB70C968DBF2E
:105270008091D506992787FD90959F938F93809174
:10528000CD06992787FD90959F938F938091C506B2
:10529000992787FD90959F938F938091BD069927BD
:1052A00087FD90959F938F9385EF98E09F938F93C1
:1052B000FF92EF92E091BC03F091BD0309952DB7E9
:1052C0003EB7245F3F4F2DBF63C11092670286E057
:1052D00099E09F938F9303E010E2FF92EF92FE011B
:1052E000099584E1809367020F900F900F900F90C3
:1052F00080919106881F8827881F97E0899FC001A9
:1053000011248D969F938F9380918906881F8827FB
:10531000881F96E0899FC00111248D969F938F93DB
:1053200080918106881F8827881F95E0899FC0018A
:1053300011248D969F938F9380917906881F8827DB
:10534000881F9927880F991F880F991F8D969F9303
:105350008F9385E199E09F938F93FF92EF92E09175
:10536000BC03F091BD03099588E2809367028DB775
:105370009EB70C968DBF8091B106881F8827881F25
:105380009BE0899FC00111248D969F938F938091FC
:10539000A906881F8827881F9AE0899FC0011124C9
:1053A0008D969F938F938091A106881F8827881FD1
:1053B00099E0899FC00111248D969F938F938091CE
:1053C0009906881F8827881F992723E0880F991F2F
:1053D0002A95E1F78D969F938F9389E299E09F93A9
:1053E0008F93FF92EF92E091BC03F091BD0309957A
:1053F0008CE3809367022DB73EB7245F3F4F2DBFEC
:105400008091B906881F8827881F9CE0899FC0016A
:1054100011248D969F938F938DE399E09F938F93A3
:10542000FF92EF92E091BC03F091BD03099580914A
:10543000C1062DB73EB72A5F3F4F2DBF87FF12C071
:1054400080E4809367028EE499E09F938F93FF92AC
:10545000EF92E091BC03F091BD0309950F900F907E
:105460000F900F908091C90687FF12C084E480934B
:10547000670281E599E09F938F931F930F93E091CB
:10548000BC03F091BD0309950F900F900F900F9002
:105490008091D10687FF7CC088E48093670284E511
:1054A00099E09F938F931F930F93E091BC03F0912A
:1054B000BD0309950F900F900F900F9069C0109247
:1054C000670287E599E09F938F93FF92EF92FE0129
:1054D000099584E1809367020F900F900F900F90D1
:1054E0008091F5019091F6019F938F9385E699E065
:1054F0009F938F93FF92EF92E091BC03F091BD03D5
:10550000099588E2809367028DB79EB706968DBF96
:105510008091F7019091F8019F938F9382E799E032
:105520009F938F93FF92EF92E091BC03F091BD03A4
:10553000099589E4809367022DB73EB72A5F3F4FF4
:105540002DBF8FE799E09F938F93FF92EF92E091A9
:10555000BC03F091BD030995809165020F900F90F7
:105560000F900F9083FF14C01092F8011092F70172
:1055700060E070E08EE090E00E94D42C09C0809141
:105580002001281719F4215020932001109266025F
:1055900010926502E6E0CDB7DEB70C949477F999E6
:1055A000FECF92BD81BDF89A80B599270895F999EB
:1055B000FECF1FBA92BD81BD60BD0FB6F894FA9AB6
:1055C000F99A0FBE08954AEA20E030E0261737071F
:1055D00040F4FC018191480F2F5F3F4F261737079A
:1055E000C8F3842F99270895EAEA40E050E046176F
:1055F000570778F49C01F999FECF32BD21BDF89A86
:1056000080B5E80F4F5F5F4F2F5F3F4F461757073B
:1056100090F38E2F9927089581E08093AF0582E063
:105620008093AE0583E08093AD0584E08093B00560
:1056300085E08093B10586E08093B20587E0809392
:10564000B30588E08093B40589E08093B5058AE0CE
:105650008093B6058BE08093B7058CE08093B80506
:10566000089595E59093AC0580910201843170F026
:105670008AE08093CC051092F0058BE18093C805F9
:105680008EE48093ED058093EE050DC083E080935A
:10569000CC0580E28093F0058EE18093C80590935D
:1056A000ED059093EE058AE68093B90583E080933B
:1056B000120681E08093D30510920F0610920C061B
:1056C00068E06093C60586EE8093C70580E8809306
:1056D000C9055EE15093BA058FEF8093BC059FE04A
:1056E0009093BD055093BB051092BF056093C00514
:1056F00080E48093C1051092C2059093BE0510927C
:10570000D5051092D6051092D7051092D8051092A3
:10571000F2051092F3051092F4051092F50538E7A2
:105720003093D90548E24093DA0572E07093110690
:105730009093DB0527EF2093DC0585E08093E1055E
:105740008DE78093E4058093E5058093E60530932B
:10575000DD059AE59093DE051092DF052093E005C4
:105760004093E2051092E3058FE58093F60583EF01
:105770008093F8058AEA8093FA058093FB0584E11B
:105780008093F7058093F90582E38093E705909372
:10579000E8058093E905109210068EEF8093FC05D2
:1057A00024E62093FD059093FE059093FF059093CA
:1057B00000068BE480930106809302068093030623
:1057C0001092040686E08093050660930606909387
:1057D0000706509308062093090620930A06709343
:1057E0000B0610920D0610920E0681E28093D005F2
:1057F0008DE28093D1059093D2050895CF93DF93E6
:105800000E94312B8EE08093C30520E12093C405D4
:105810003CE03093C50590E59093CA0586E98093F6
:10582000CB059093CD058093CE0586E08093CF0580
:1058300080E28093D4058AE58093EA059093EB0596
:1058400081E08093EC052093EF0584E68093F105D9
:10585000A3E1B6E0E1E7F1E0ED01019009923A95AC
:10586000E1F763E770E0CD01875690400E94E32A9C
:1058700080931F06DF91CF910895CF93DF930E940D
:10588000312B8AE08093C30580E18093C40526E034
:105890002093C5059AE59093CA0588E78093CB05C8
:1058A0009093CD058093CE052093CF0520E22093E1
:1058B000D4059093EA0580E58093EB058CE3809313
:1058C000EC052093EF058BE48093F105A3E1B6E0AE
:1058D0008CE0E8E7F1E0ED01019009928A95E1F7AB
:1058E00063E770E0CD01875690400E94E32A8093E1
:1058F0001F06DF91CF910895CF93DF930E94312B44
:1059000088E08093C30530E13093C40526E02093FE
:10591000C50594E69093CA0588E78093CB059093DC
:10592000CD058093CE052093CF053093D4058AE52D
:105930008093EA0580E58093EB0596E49093EC056F
:1059400080E28093EF059093F105A3E1B6E08CE04F
:10595000E0E8F1E0ED01019009928A95E1F763E753
:1059600070E0CD01875690400E94E32A80931F0685
:10597000DF91CF910895F999FECF92BD81BDF89A3C
:1059800080B599270895F999FECF1FBA92BD81BDC0
:1059900060BD0FB6F894FA9AF99A0FBE08956FECAD
:1059A0007AE20E946B75089547ED5AE20E94A57550
:1059B0000895EF92FF920F931F93CF93C82F8150BA
:1059C000853008F0C3E084E7C89F8001112480EF90
:1059D000E82E8FEFF82EE00EF11E63E770E0C701AE
:1059E0000E94F42A682F98012D593F4F8FB39927B1
:1059F000AC014270507081FDF9CF32BD21BDF89AE3
:105A000080B5861711F0CA0121C08FB399279C0178
:105A10002270307081FDF9CFF2BCE1BCF89A80B5FC
:105A2000853511F0C90112C084E7C89FC001112457
:105A300040972FEC3AE244E750E0BC018CEA95E055
:105A40000E9446750E94246681E090E0CF911F91EC
:105A50000F91FF90EF900895282F863010F025E0E9
:105A600003C0882309F421E0F999FECF1FBA82E030
:105A700090E092BD81BD20BD0FB6F894FA9AF99AD4
:105A80000FBE0895CF93C82F8091AC05853509F0DE
:105A900042C0C63010F0C5E003C0CC2309F43BC0BF
:105AA00063E770E08CEA95E00E94E32A80931F068A
:105AB00084E7C89FC001112427ED3AE244E750E093
:105AC0006CEA75E040970E94837527ED3AE24CE05E
:105AD00050E06DEA75E080E590E00E9483756CE02F
:105AE00070E08DEA95E00E94E32A282FF999FECF15
:105AF0001FBA8CE590E092BD81BD20BD0FB6F89431
:105B0000FA9AF99A0FBE8C2F0E942C2D0E942466BF
:105B100081E090E002C080E090E0CF9108956DE4D4
:105B200070E088EE93E00E94F42A482F8FB3992703
:105B30009C012270307081FDF9CF85E394E092BD25
:105B400081BDF89A80B5841779F48FB399279C01A9
:105B50002270307081FDF9CF88EE93E092BD81BD57
:105B6000F89A80B5813011F0C90108952FEC3AE21E
:105B70004EE450E068EE73E080E296E00E944675E5
:105B800081E090E00895809120068130A9F46DE4D1
:105B900070E080E296E00E94E32A80936D0627ED94
:105BA0003AE24EE450E060E276E088EE93E00E9454
:105BB000837581E090E0089580E090E00895CF93B0
:105BC000DF9381E080932006E0E2F6E08FE0158627
:105BD00016861786108A8150349687FFF8CF80E4A6
:105BE00080932D0680932E0610922F068093300608
:105BF0008093310690EC9093320610923306809396
:105C000034068093350610923606909337069093AB
:105C100038068093390610923A0680933B0690939B
:105C20003C06A1E2B6E087E0EAE8F1E0ED01019090
:105C300009928A95E1F76DE470E0CD0101970E9429
:105C4000E32A80936D06DF91CF910895F999FECFF5
:105C500082E090E092BD81BDF89A80B5282F863011
:105C600078F023E0322FF999FECF1FBA82E090E05E
:105C700092BD81BD30BD0FB6F894FA9AF99A0FBE65
:105C8000822F992708951F93CF93C82F162F863000
:105C900010F0C5E003C0882309F4C1E08C2F9927D8
:105CA0008230910541F08330910544F4019731F43D
:105CB0000E94FE2B05C00E943D2C02C00E947C2C3D
:105CC0001123E1F06CE070E080E590E00E94F42A9E
:105CD000282FF999FECF8CE590E092BD81BDF89A0E
:105CE00080B5821759F42FEC3AE24CE050E060E5C1
:105CF00070E08DEA95E00E94467502C00E940C2B70
:105D00008C2F0E94422DCF911F910895DF92EF9228
:105D1000FF920F931F93CF93FF24DF2CEF2C81E092
:105D200090E00E94BB2C853539F031E0E32E65E52B
:105D300081E090E00E94C32C6CE070E080E590E090
:105D40000E94F42AC82FF999FECF8CE590E092BD0D
:105D500081BDF89A80B58C1711F421E0D22EC1E0F4
:105D600001E010E0EE2029F48C2F0E94D92C88232A
:105D7000C1F591E0F92E1F930F9387E899E09F9367
:105D80008F9380EF92E19F938F93E091BC03F0910A
:105D9000BD0309958DB79EB706968DBF02301105DC
:105DA00049F0033011054CF40130110531F40E9423
:105DB000FE2B05C00E943D2C02C00E947C2CDD20E1
:105DC00059F02FEC3AE24CE050E060E570E08DEAEB
:105DD00095E00E94467502C00E940C2B8C2F0E94F9
:105DE000422DCF5F0F5F1F4FC63008F4BBCFFF209F
:105DF00019F083E00E942C2D0E94262EC82F0E94AD
:105E0000D92C8C2F99279F938F938DEA99E09F939C
:105E10008F9300EF12E11F930F93E091BC03F09179
:105E2000BD0309958DB79EB706968DBFEE2021F470
:105E30000E948F2D882399F486EC99E09F938F938D
:105E40001F930F93E091BC03F091BD0309950E944D
:105E5000DF2D0E94C32D0F900F900F900F90109286
:105E6000AB0590E0EDE2F6E0CFE0808134961816C5
:105E70000CF49F5FC150C7FFF8CF9093AB05892FFB
:105E800099279F938F9381E296E09F938F9387EE5C
:105E900099E09F938F931F930F93E091BC03F09130
:105EA000BD0309958DB79EB708968DBF88E09AE02F
:105EB0009F938F931F930F93E091BC03F091BD03C9
:105EC00009950F900F900F900F90CF911F910F9108
:105ED000FF90EF90DF900895982F2FB7F89439989E
:105EE000389A88B1836088B98091B9008C7F80939B
:105EF000B9008AE28093B800109272021092700288
:105F000010926F02992379F0E6E7F6E08BE01082B9
:105F10001182128213821482158216821782815096
:105F2000389687FFF4CF78942FBF089510927202AD
:105F300084E98093BC0080E88093BC001092BD008F
:105F40001092BA001092BB001092B9001092B800E3
:105F500010926E0280E00E946C2F1092BB0085E8C8
:105F60008093BC0080916C02826080936C020895E3
:105F70001F920F920FB60F9211242F933F934F93BE
:105F80005F938F939F93EF93FF9380917202282FDB
:105F90003327442755278F5F80937202F9012731F9
:105FA000310508F0C2C2E659FF4F0C94A37781E097
:105FB00080936E0209C0809170028C3090F48091C1
:105FC00070028F5F8093700280917002E82FFF272C
:105FD000EE0FFF1FEE0FFF1FE05EF94F85851816CD
:105FE00054F7809170028C3070F010926B02109216
:105FF0006A021092700285E08093720280916F02B3
:10600000880F8D5A04C080917002880F8E5A809339
:10601000BB0085E87FC280917002E82FFF2783E0F4
:10602000EE0FFF1F8A95E1F7EA58F94F81818093BF
:10603000BB0085E88093BC0080917002E82FFF27A9
:10604000EE0FFF1FEE0FFF1FEE0FFF1FEA58F94F75
:10605000808180FF91C080917002E82FFF27EE0FB2
:10606000FF1FEE0FFF1FEE0FFF1FEA58F94F82814F
:10607000882329F08091AB05873008F46CC28091A9
:106080006A0290916B02892B09F065C280916802C7
:1060900090916902892B09F05EC26EC080917002F6
:1060A00021E030E002C0220F331F8A95E2F7809191
:1060B00068029091690228233923232B79F080917B
:1060C0007002E82FFF27EE0FFF1FEE0FFF1FEE0FEE
:1060D000FF1FEA58F94F80E184830DC08091700260
:1060E000E82FFF27EE0FFF1FEE0FFF1FEE0FFF1F22
:1060F000EA58F94F148280917002E82FFF2753E08D
:10610000EE0FFF1F5A95E1F7EA58F94F8481282FC7
:10611000332743E0220F331F4A95E1F78091700245
:10612000E82FFF2793E0EE0FFF1F9A95E1F7EA585B
:10613000F94F82818770822B8093BB0085E8809322
:10614000BC002091700281E090E002C0880F991F8E
:106150002A95E2F720916A0230916B028223932301
:10616000892B51F08EE696E090937602809375022B
:1061700088E080937702EFC184E089C1E0917502E5
:10618000F091760281918093BB0085E88093BC00FA
:10619000F0937602E09375028091770281508093AC
:1061A0007702882309F4D7C183E071C18091B900D7
:1061B000803351F580917302882329F48091700215
:1061C0008F5F8093730280917002E82FFF2783E036
:1061D000EE0FFF1F8A95E1F7EA58F94F838199275F
:1061E0008F7790708F3791057CF480917002E82F43
:1061F000FF27EE0FFF1FEE0FFF1FEE0FFF1FEA58E6
:10620000F94F83818F5F83831092720284E98093B8
:10621000BC008AE090E0909393018093920180917A
:1062200070028F5F80937002109272026DC1809134
:10623000B9008034C9F180916F02E82FFF27EE0F7B
:10624000FF1FEE0FFF1FEE0FFF1FEA58F94F83816C
:106250008F77838380916F028F5F80936F0280912D
:106260006F028C30A0F010926F02109269021092AF
:106270006802809174028F5F809374028C3038F0D2
:106280001092740280916C028D7F80936C028091D9
:106290006C02816080936C021092720284E9809398
:1062A000BC0010926E0273C080916F02E82FFF272E
:1062B000EE0FFF1FEE0FFF1FEE0FFF1FEA58F94F03
:1062C00083818068838380916F02E82FFF27EE0F20
:1062D000FF1FEE0FFF1FEE0FFF1FEA58F94F8081DF
:1062E00080FF2FC080916F02E82FFF2753E0EE0F51
:1062F000FF1F5A95E1F7EA58F94F848199270097D3
:1063000051F04097D9F58EE696E09093760280930F
:10631000750288E031C080916F02992743E0880FB1
:10632000991F4A95E1F78558994F9093760280938B
:10633000750290916F02809174029817E1F483E0E6
:106340001BC080916F02992733E0880F991F3A95FF
:10635000E1F78558994F909376028093750280916A
:106360006C0281FD06C090916F02809174029817B3
:1063700011F482E001C081E080937702809177027E
:10638000813011F485E801C085EC8093BC008091D8
:10639000730280936D0210927302DDC0E09175026A
:1063A000F09176028091BB0080838091750290917C
:1063B000760201969093760280937502809177021F
:1063C000815080937702823010F085EC5DC081307F
:1063D00011F485E859C080916C0281FF2DC0809135
:1063E0007D0280FD1DC080916F02E82FFF2723E012
:1063F000EE0FFF1F2A95E1F7EA58F94F86818A3F91
:1064000079F480916F02E82FFF2793E0EE0FFF1FD2
:106410009A95E1F7EA58F94F8081816080830CC03A
:1064200080916F02E82FFF2783E0EE0FFF1F8A9510
:10643000E1F7EA58F94F108280916F028F5F8093E5
:106440006F0280916F028C30A0F010926F02109258
:10645000690210926802809174028F5F80937402C7
:106460008C3038F01092740280916C028D7F809392
:106470006C021092720284E98093BC0080916C02DD
:10648000816080936C0265C08093BC0086E080933D
:10649000720261C088E9BBCD80917102880F805F74
:1064A000B6CD8091710299278130910561F08230DB
:1064B00091051CF4892B21F04EC0029739F04BC096
:1064C00080911301A4CD80911201A1CD8091110181
:1064D0009ECD80E89CCD1092720284E98093BC002E
:1064E00010926E028AE090E0909393018093920163
:1064F00080917102823088F4809171028F5F809365
:10650000710282E18093720280916C028E7F80938F
:106510006C0285EA8093BC001EC0109271028091CB
:106520006C02816080936C0216C01092720284E942
:106530008093BC0080916C02816080936C028AE041
:1065400090E09093930180939201109270021092C8
:106550006F0210926E02FF91EF919F918F915F9168
:106560004F913F912F910F900FBE0F901F90189554
:106570001F93CF93DF93182F8091A802882321F4D3
:1065800080910302882319F081E090E097C01D30CC
:1065900008F092C01123B1F0E12FFF2723E0EE0FA6
:1065A000FF1F2A95E1F7EA58F94F35978081359614
:1065B00088230CF081C03897808180FD03C083E080
:1065C00090E07CC080916E06823019F084E090E00B
:1065D00075C067E070E08EE696E00E94E32A909135
:1065E0007506891719F085E090E068C080ED97E0A6
:1065F0000E941617EC0180916C0280FD05C0CE014F
:106600000E941F178823B9F3112319F48FEF90E02C
:106610000BC0212F33272150304081E090E002C091
:10662000880F991F2A95E2F790936B0280936A0274
:10663000A1E0B0E0E6E7F6E040E050E06BE0CD013D
:10664000042E02C0880F991F0A94E2F720916A0273
:1066500030916B0282239323892B11F011821282D5
:1066600061504F5F5F4F389667FFE9CF109270021D
:106670001092720280916C028E7F80936C0285EA88
:106680008093BC0080916C0280FD05C0CE010E9409
:106690001F178823B9F380916A0290916B02892BAE
:1066A00029F0CE010E941F17882311F380916A02FE
:1066B00090916B02009711F082E090E0DF91CF9112
:1066C0001F9108950F931F93CF93DF93982F80917D
:1066D000A802882321F480910302882319F081E025
:1066E00090E092C09D30A0F4992319F486E090E0E8
:1066F0008BC0C92FDD27FE0133E0EE0FFF1F3A9557
:10670000E1F7EA58F94F35978081359687FD03C048
:1067100082E090E079C03897808180FD03C083E0FB
:1067200090E072C080ED97E00E9416178C01809176
:106730006C0280FD05C0C8010E941F178823B9F3B1
:10674000219721E030E0C90102C0880F991FCA9546
:10675000E2F79093690280936802D901E6E7F6E0D8
:1067600040E050E06BE0CD01042E02C0880F991F7D
:106770000A94E2F720916802309169028223932300
:10678000892B11F01182128261504F5F5F4F389652
:1067900067FFE9CF10926F0210926E061092750695
:1067A0001092720280916C028E7F80936C0285EA57
:1067B0008093BC0080916C0280FD05C0C8010E94DE
:1067C0001F178823B9F38091680290916902892B81
:1067D00029F0C8010E941F17882311F380916E06CB
:1067E000823019F084E090E00FC067E070E08EE640
:1067F00096E00E94E32A90917506891719F085E0CA
:1068000090E002C080E090E0DF91CF911F910F9166
:10681000089589E1ABE0B7E0E7EDF6E01182108280
:10682000329611961C921E921296815087FFF6CFD7
:106830001092170310921603109219031092180366
:1068400010921B0310921A0308951F920F920FB615
:106850000F9211240F931F932F933F934F935F93A6
:106860006F937F938F939F93AF93BF93CF93DF9358
:10687000EF93FF93409186005091870080917902B9
:1068800090917A02481B590BCA0157FD0196AC0141
:1068900055954795809186009091870090937A0254
:1068A00080937902CA0189599840A0917B02B091E6
:1068B0007C02875E954338F4149714F0109294018B
:1068C00081E090E081C0AD30B1050CF081C0CA011B
:1068D0008B5F90408356944008F071C0425C5340F7
:1068E000FD01EA0FFB1FE952F94F80819181FA0106
:1068F000E81BF90BCF01F7FF03C0909581959F4FDF
:1069000006974CF48091B102883C28F48091B10242
:10691000865F8093B102FD01EA0FFB1FE952F94F38
:10692000808191819C01220F331F280F391F240F72
:10693000351F37FF02C02D5F3F4FE901D595C79541
:10694000D595C795CA0101968C179D0714F4219718
:1069500006C041505040C417D5070CF421968091D1
:10696000B102833CD8F08D010A0F1B1FF801E952D8
:10697000F94F808191819E01281B390BC90163E089
:1069800070E00E941C77CB01880F991F860F971F1C
:10699000055F184FF8019183808307C0AA0FBB1FC2
:1069A000A55FB84F11961C921E92E0917B02F09168
:1069B0007C02EE0FFF1FE952F94FD183C083809113
:1069C0007B0290917C02019690937C0280937B02E3
:1069D000FF91EF91DF91CF91BF91AF919F918F91F7
:1069E0007F916F915F914F913F912F911F910F91E7
:1069F0000F900FBE0F901F901895EF92FF920F937C
:106A00001F938091C8059927880F991F880F991F98
:106A10007C010027F7FC0095102F809105039091D1
:106A20000603A0910703B0910803BC01CD01A801A2
:106A300097010E9451773093580520935705809114
:106A4000FD029091FE02A091FF02B0910003BC01F3
:106A5000CD01A80197010E94517730935A052093E8
:106A60005905809191079091920797FD039695950E
:106A700087959595879590935C0580935B058091AC
:106A8000A1079091A20797FD0396959587959595F7
:106A9000879590935E0580935D0580911603909194
:106AA00017032091430230914402821B930B909371
:106AB000600580935F058091A3029091A402A0914C
:106AC000A502B091A602BC01CD0125E030E040E076
:106AD00050E00E94517730936205209361058091C8
:106AE0003D0290913E0290936405809363058091EE
:106AF000C3029091C40290936805809367058091CA
:106B00001E0190911F0190936A0580936905809101
:106B1000B102992790936C0580936B0580919D0736
:106B200090919E07A0919F07B091A0072091960198
:106B3000309197014091980150919901BC01CD018C
:106B40000E94517730936E0520936D0580917706F2
:106B500099279093700580936F0580917F06992700
:106B60009093720580937105809187069927909381
:106B700074058093730580918F069927909376050D
:106B80008093750580911E0290911F02909380055D
:106B900080937F0580911408909115089093840547
:106BA0008093830580911808909119089093860529
:106BB0008093850580911A08992790939205809378
:106BC000910580918D0390918E039093940580930D
:106BD000930580918B0390918C03909396058093FD
:106BE00095058091D503882321F48091D6038823CD
:106BF00021F080915605816003C0809156058E7FFB
:106C0000809356051F910F91FF90EF9008951F9369
:106C1000CF93DF93182FEB018091A8028823A1F472
:106C200011501F3F89F0D0932502C0932402809118
:106C3000240290912502892BD1F7CE018C0F9D1F44
:106C40000E942B17115078F7DF91CF911F91089573
:106C5000CF93DF93809102018D3011F40E94371B96
:106C600010927A00809147029091480290935807C1
:106C7000809357078091450290914602909349076F
:106C80008093480780914302909144029093970724
:106C90008093960720913F0230914002C901880FEE
:106CA000991F880F991F820F931F820F931F909334
:106CB0009207809391072091410230914202C901CD
:106CC000880F991F880F991F820F931F820F931FA0
:106CD0009093A2078093A1078FEC80937A00A2EB98
:106CE000B2E0C1EBD5E097E08991E82FFF27EE0FE6
:106CF000FF1FE952F94F0190F081E02DE259FF4F5B
:106D00001E161F061CF0E0E0F0E005C0EF3FF105A5
:106D100014F0EFEFF0E08C91282F3327E217F30700
:106D200014F4815004C02E173F0714F48F5F8C9326
:106D30009150119697FFD8CF8091ED059927AA27FA
:106D4000BB27BC01CD0124EC39E040E050E00E94BB
:106D5000DD76DC01CB018093D5019093D601A09321
:106D6000D701B093D8018091EE059927AA27BB27B8
:106D7000BC01CD010E94DD76DC01CB018093D10105
:106D80009093D201A093D301B093D401DF91CF911E
:106D90000895A0E0B0E0EFECF6E30C947277882E53
:106DA000C0E0D0E07E016E011092D503469AD093E8
:106DB0001103C0931003D0930F03C0930E03D0931D
:106DC0000B03C0930A03D0931B03C0931A03D09301
:106DD0001903C0931803D0931703C093160310929E
:106DE000BE011092BD01109237020E94283684E63F
:106DF00090E00E9438170E9428368091B90580FFE4
:106E000010C08091140190911501875B934038F474
:106E100080911401909115018E5E924010F40E94B1
:106E2000B51A0FE18AE090E00E9438178091430282
:106E300090914402C80FD91F809147029091480257
:106E4000E80EF91E8091450290914602C80ED91EA7
:106E5000015007FFE7CF9701205F3F4F36952795F9
:106E60003695279530931B0320931A03C60140964D
:106E70009695879596958795909319038093180317
:106E80006096F5E0D695C795FA95E1F7D09317038C
:106E9000C093160390931503809314033093130348
:106EA00020931203882009F441C0809191079091AA
:106EB000920797FF03C0909581959F4F6CE070E01B
:106EC0000E941C779B0170931103609310038091C3
:106ED000A1079091A20797FF03C0909581959F4FBE
:106EE0006CE070E00E941C7770930F0360930E03B8
:106EF00080919E0590919F0590930B0380930A03C8
:106F0000B90184E090E00E94D42C60910E0370914E
:106F10000F0386E090E00E94D42C60910A037091E8
:106F20000B0388E090E00E94D42C65C084E090E0E0
:106F30000E94CF2C909311038093100386E090E081
:106F40000E94CF2C90930F0380930E0388E090E073
:106F50000E94CF2C9C0190930B0380930A03809195
:106F60001003909111038150984050F480910E03CA
:106F700090910F038150984018F421503440D8F17B
:106F800089E29AE09F938F9380EF92E19F938F9392
:106F9000E091BC03F091BD03099580919107909118
:106FA000920797FF03C0909581959F4F6CE070E02A
:106FB0000E941C7770931103609310038091A107C6
:106FC0009091A20797FF03C0909581959F4F6CE029
:106FD00070E00E941C7770930F0360930E03809102
:106FE0009E0590919F0590930B0380930A030F9049
:106FF0000F900F900F901092580710925707109211
:10700000490710924807109297071092960784E656
:1070100090E00E94381780913F02909140029C01BD
:10702000220F331F220F331F280F391F280F391F3C
:1070300030939207209391078091410290914202F0
:107040008C01000F111F000F111F080F191F080FCF
:10705000191F1093A2070093A1078091C805C82E9D
:10706000DD24EE24FF24442737FD4095542FC7012B
:10707000B6010E94DD764B015C01609305037093BD
:10708000060380930703909308039801442737FD74
:107090004095542FC701B6010E94DD76DC01CB017B
:1070A0008093FD029093FE02A093FF02B093000331
:1070B0008092E1029092E202A092E302B092E40296
:1070C0008093D9029093DA02A093DB02B093DC02A2
:1070D0001092D5021092D6021092D7021092D802C6
:1070E0008091160190911701A0911801B09119019A
:1070F0009093A1058093A00510923602109235025C
:107100001092C5021092C6021092C7021092C802D5
:107110008091C3029091C4029093C2028093C102F5
:107120000E94AD6182E390E0909325028093240257
:107130008091ED059927AA27BB27BC01CD0124EC3E
:1071400039E040E050E00E94DD76DC01CB0188565A
:10715000954CAF4FBF4F8093D5019093D601A0932C
:10716000D701B093D8018091EE059927AA27BB27B4
:10717000BC01CD010E94DD76DC01CB018856954C27
:10718000AF4FBF4F8093D1019093D201A093D30111
:10719000B093D40110929B0110929A018091C30286
:1071A0009091C402AA2797FDA095BA2F209196012D
:1071B000309197014091980150919901BC01CD0106
:1071C0000E94DD76DC01CB0180939D0790939E07A2
:1071D000A0939F07B093A0071092BC021092BB022D
:1071E00081E0809301010E94246680917D02846089
:1071F00080937D028FEF80930F081092100880E239
:1072000080931108C2EBD2E0A1EBB5E007E08D91CD
:10721000E82FFF27EE0FFF1FE952F94F8081918180
:1072200082598993015007FFF2CF84E68093B1021F
:1072300080912202882311F0469A579A80911A036E
:1072400090911B0380569940815C9B4228F080916D
:10725000D50381608093D503809118039091190321
:1072600080569940815C9B4228F08091D5038260D2
:107270008093D50380911603909117038C5291400F
:107280008957954028F08091D50384608093D50379
:1072900080911003909111038C529140835C914036
:1072A00028F08091D50388608093D50380910E03E8
:1072B00090910F038C529140835C914028F0809113
:1072C000D50380618093D50380910A0390910B03CD
:1072D000805092408355914028F08091D503806280
:1072E0008093D503ECE0CDB7DEB70C948E77A3E1A5
:1072F000B0E0EDE7F9E30C946C7780911603909180
:1073000017032091430230914402821B930B909308
:1073100097078093960780914D0290914E0297FDBA
:1073200007969C0113E0359527951A95E1F7309360
:1073300058072093570780914B0290914C0297FD7C
:107340000796B3E095958795BA95E1F7909349072D
:1073500080934807309363072093620790935B07FD
:1073600080935A078091910790919207AC01440F46
:10737000551F480F591F20913F0230914002C9010B
:10738000880F991F880F991F820F931F820F931FD9
:10739000480F591F57FF02C04D5F5F4F55954795E6
:1073A0005595479550939207409391078091A10777
:1073B0009091A207AC01440F551F480F591F20910F
:1073C000410230914202C901880F991F880F991F0D
:1073D000820F931F820F931F480F591F57FF02C040
:1073E0004D5F5F4F55954795559547955093A2072B
:1073F0004093A10720913F0230914002C901880FBC
:10740000991F880F991F820F931F820F931F9C0152
:10741000442737FD4095542F8091F5029091F60254
:10742000A091F702B091F802820F931FA41FB51F1D
:107430008093F5029093F602A093F702B093F802BE
:107440002091410230914202C901880F991F880F93
:10745000991F820F931F820F931F9C01442737FDB2
:107460004095542F8091F1029091F202A091F30285
:10747000B091F402820F931FA41FB51F8093F102F5
:107480009093F202A093F302B093F40280916C0700
:1074900090916D0720913F0230914002820F931F1F
:1074A00090936D0780936C078091990790919A074C
:1074B0002091410230914202820F931F90939A07CC
:1074C0008093990780910C0390910D0301969093FE
:1074D0000D0380930C0380919E0590919F05209150
:1074E0000A0330910B03821B930B9C01442737FD49
:1074F0004095542F8091ED029091EE02A091EF0201
:10750000B091F002820F931FA41FB51F8093ED026C
:107510009093EE02A093EF02B093F0028FEC809371
:107520007A00109210012091DD023091DE0240912C
:10753000DF025091E00229873A874B875C87295404
:107540003B46414050402CF028E43BE641E050E00F
:107550000DC089859A85AB85BC85885B9449AE4F03
:10756000BF4F4CF428EB34E94EEF5FEF2D833E83A1
:107570004F83588708C089859A85AB85BC858D83E4
:107580009E83AF83B8872091E5023091E602409157
:10759000E7025091E8022D873E874F87588B295488
:1075A0003B46414050402CF028E43BE641E050E0AF
:1075B0000DC08D859E85AF85B889885B9449AE4F97
:1075C000BF4F4CF428EB34E94EEF5FEF29833A8349
:1075D0004B835C8308C08D859E85AF85B889898380
:1075E0009A83AB83BC83A0919607B0919707BB8B1E
:1075F000AA8BFD01CF01AA2797FDA095BA2FA090D5
:10760000D502B090D602C090D702D090D802A80E72
:10761000B91ECA1EDB1EA092D502B092D602C0923D
:10762000D702D092D802E0909D07F0909E0700917B
:107630009F071091A007E80EF91E0A1F1B1FE0927A
:107640009D07F0929E0700939F071093A007F0916B
:107650009802F98BFF2309F098C180919702882343
:1076600009F093C18091B90586FF8FC180914807C9
:1076700090914907AA2797FDA095BA2FBC01CD018B
:1076800029813A814B815C810E94DD769B01AC01AE
:1076900097FF04C02150384F4F4F5F4FBBE05595C7
:1076A000479537952795BA95D1F78091BD01682EFA
:1076B000772488249924CA01B901A40193010E9466
:1076C000DD76DC01CB018093260390932703A09302
:1076D0002803B0932903B7FF04C08150904FAF4FE8
:1076E000BF4F1C012D01ACE055944794379427946B
:1076F000AA95D1F7209226033092270340922803BF
:10770000509229038091570790915807AA2797FD17
:10771000A095BA2FBC01CD012D813E814F815885A6
:107720000E94DD7697FF04C06150784F8F4F9F4FC6
:10773000FBE09595879577956795FA95D1F7A40124
:1077400093010E94DD76DC01CB0180932A039093A4
:107750002B03A0932C03B0932D03B7FF04C08150DB
:10776000904FAF4FBF4F9C01AD01ECE05595479551
:1077700037952795EA95D1F720932A0330932B0369
:1077800040932C0350932D0380912603909127035F
:107790009093400780933F0780912A0390912B0399
:1077A00090934407809343072219330944095509EC
:1077B00020932A0330932B0340932C0350932D03E3
:1077C000E20EF31E041F151FE0929D07F0929E0724
:1077D00000939F071093A0078091BC018823B1F408
:1077E00057FF04C02F5F3F4F4F4F5F4F5595479551
:1077F00037952795A21AB30AC40AD50AA092D502D2
:10780000B092D602C092D702D092D8022A893B8980
:1078100079010027F7FC0095102F80912A039091A1
:107820002B03A0912C03B0912D03E80EF91E0A1F23
:107830001B1FC801B70129813A814B815C810E94DD
:10784000DD769B01AC0197FF04C02150384F4F4FAC
:107850005F4F6BE055954795379527956A95D1F71A
:107860008091BE01A82EBB24CC24DD24CA01B9011D
:10787000A60195010E94DD76DC01CB0180931E03F9
:1078800090931F03A0932003B0932103B7FF04C07C
:107890008150904FAF4FBF4F3C014D013CE095945C
:1078A0008794779467943A95D1F760921E0370920B
:1078B0001F038092200390922103C801B7012D81FC
:1078C0003E814F8158850E94DD7697FF04C061504C
:1078D000784F8F4F9F4F2BE09595879577956795BC
:1078E0002A95D1F7A60195010E94DD76DC01CB0136
:1078F0008093220390932303A0932403B093250342
:10790000B7FF04C08150904FAF4FBF4FAC01BD01D6
:107910008CE075956795579547958A95D1F7409373
:1079200022035093230360932403709325032A8931
:107930003B8937FF03C0309521953F4F21343105F6
:10794000E4F1D401C30197FE07C0B095A0959095CE
:1079500081959F4FAF4FBF4F81389105A105B1056C
:1079600084F4DB01CA0177FF07C0B095A09590951C
:1079700081959F4FAF4FBF4F81389105A105B1054C
:10798000E4F081E08093BD0218C010924407109289
:1079900043071092400710923F0710922203109263
:1079A0002303109224031092250310921E031092B9
:1079B0001F031092200310922103809122039091C3
:1079C0002303A0912403B0912503BC01CD0124E63B
:1079D00030E040E050E00E945177E0901E03F090CC
:1079E0001F03E21AF30AF0925607E09255078091BE
:1079F0001E0390911F03A0912003B0912103BC01AD
:107A0000CD0124E630E040E050E00E945177DA01F9
:107A1000C90120912203309123038C01021B130B17
:107A200010934B0700934A0780919601909197011C
:107A3000A0919801B0919901BC01CD0128E631E0F7
:107A400040E050E00E94DD7620919D0730919E0736
:107A500040919F075091A0072617370748075907FD
:107A600064F0261B370B480B590B20939D0730936E
:107A70009E0740939F075093A00720919D07309148
:107A80009E0740919F075091A00757FF0CC0260FFB
:107A9000371F481F591F20939D0730939E0740931F
:107AA0009F075093A00760914807709149076E0D9A
:107AB0007F1D9B01442737FD4095542F8091D902AB
:107AC0009091DA02A091DB02B091DC02820F931F49
:107AD000A41FB51F8093D9029093DA02A093DB0212
:107AE000B093DC0280919D0290919E02681B790BFD
:107AF000CB01AA2797FDA095BA2F29853A854B85FA
:107B00005C85820F931FA41FB51F8093DD029093A5
:107B1000DE02A093DF02B093E002C090D101D090CA
:107B2000D201E090D301F090D401C816D906EA063C
:107B3000FB06C4F488EA91E6A0E0B0E08C199D0948
:107B4000AE09BF098093DD029093DE02A093DF02AD
:107B5000B093E0028093D9029093DA02A093DB0203
:107B6000B093DC0222273327A9012C193D094E09C5
:107B70005F098091DD029091DE02A091DF02B09159
:107B8000E00282179307A407B507B4F4D701C60132
:107B9000885A9146A040B0408093DD029093DE0267
:107BA000A093DF02B093E0028093D9029093DA02AF
:107BB000A093DB02B093DC026091570770915807E5
:107BC000600F711F9B01442737FD4095542F809112
:107BD000E1029091E202A091E302B091E402820FEF
:107BE000931FA41FB51F8093E1029093E202A0931C
:107BF000E302B093E40280919B0290919C02681B87
:107C0000790BCB01AA2797FDA095BA2F2D853E852C
:107C10004F855889820F931FA41FB51F8093E502DB
:107C20009093E602A093E702B093E802E090D501BA
:107C3000F090D6010091D7011091D801E816F9060D
:107C40000A071B07C4F488EA91E6A0E0B0E08E19A9
:107C50009F09A00BB10B8093E5029093E602A093DD
:107C6000E702B093E8028093E1029093E202A093CE
:107C7000E302B093E40222273327A9012E193F091A
:107C8000400B510B8091E5029091E602A091E70232
:107C9000B091E80282179307A407B507B4F4D8019E
:107CA000C701885A9146A040B0408093E502909366
:107CB000E602A093E702B093E8028093E10290937A
:107CC000E202A093E302B093E4028091D502909186
:107CD000D602A091D702B091D8028093E902909386
:107CE000EA02A093EB02B093EC028091E50290913E
:107CF000E602A091E702B091E80280930503909319
:107D00000603A0930703B09308038091DD029091CE
:107D1000DE02A091DF02B091E0028093FD02909319
:107D2000FE02A093FF02B09300038091E1029091C4
:107D3000E202A091E302B091E402809301039093E8
:107D40000203A0930303B09304038091D90290919E
:107D5000DA02A091DB02B091DC028093F9029093E9
:107D6000FA02A093FB02B093FC0280911C01909157
:107D70001D0197FD079603E0959587950A95E1F714
:107D8000909358078093570780911A0190911B0197
:107D900097FD079613E0959587951A95E1F79093CF
:107DA00049078093480780914702909148020F97B6
:107DB00034F488E19CEF90935807809357078091A3
:107DC000470290914802079734F480E398EF90932C
:107DD000580780935707209102012A30A9F4809117
:107DE000470290914802835F934034F088EE93E01D
:107DF00090935807809357078091470290914802CB
:107E00008A5F9340DCF014C0809147029091480251
:107E1000815D974034F088EE93E09093580780930B
:107E200057078091470290914802805E974034F056
:107E300080ED97E090935807809357078091450213
:107E4000909146020F9734F488E19CEF9093490794
:107E5000809348078091450290914602079734F439
:107E600080E398EF90934907809348072A30A9F45C
:107E70008091450290914602835F934034F088EEF2
:107E800093E0909349078093480780914502909131
:107E900046028A5F9340DCF014C0809145029091C5
:107EA0004602815D974034F088EE93E09093490755
:107EB000809348078091450290914602805E9740EA
:107EC00034F080ED97E090934907809348076091E4
:107ED000C801662309F4AFC040911C0150911D01F7
:107EE00080912E0390912F03481B590B509335031B
:107EF0004093340320911C0130911D01280F391F3C
:107F000037FF02C02F5F3F4F3595279530932F03E2
:107F100020932E03413851051CF080E890E005C005
:107F200040585F4F34F480E89FEF9093350380937F
:107F3000340340911A0150911B01809130039091BC
:107F40003103481B590B5093330340933203209164
:107F50001A0130911B01280F391F37FF02C02F5F14
:107F60003F4F3595279530933103209330034138A7
:107F700051051CF080E890E005C040585F4F34F494
:107F800080E89FEF9093330380933203462F552769
:107F90008091340390913503849FB001859F700DCB
:107FA000949F700D11249B0177FF02C0215F3F4F0A
:107FB000F4E035952795FA95E1F780915707909170
:107FC0005807820F931F909358078093570780910B
:107FD000320390913303849FD001859FB00D949F0D
:107FE000B00D1124AD019D01B7FF02C0215F3F4FCD
:107FF000E4E035952795EA95E1F78091480790915F
:108000004907820F931F90934907809348078091F7
:108010001C0190911D01860F971F90931D01809365
:108020001C0180911A0190911B01840F951F909360
:108030001B0180931A0100915A0710915B078091F0
:108040003F0790914007101611065CF59C0197FFC1
:1080500004C022273327281B390BC901AA2797FD03
:10806000A095BA2F2091BC01332744275527BC0186
:10807000CD010E94DD769B01AC0197FF04C0215C1D
:108080003F4F4F4F5F4F76E0559547953795279572
:108090007A95D1F78091550790915607820F931FDB
:1080A00027C097FF03C0909581959F4FAA2797FD02
:1080B000A095BA2F2091BC01332744275527BC0136
:1080C000CD010E94DD769B01AC0197FF04C0215CCD
:1080D0003F4F4F4F5F4F66E0559547953795279532
:1080E0006A95D1F78091550790915607821B930BA3
:1080F0009093560780935507E0906207F0906307CE
:1081000080914307909144071E141F045CF59C0165
:1081100097FF04C022273327281B390BC901AA2740
:1081200097FDA095BA2F2091BC01332744275527EE
:10813000BC01CD010E94DD769B01AC0197FF04C01C
:10814000215C3F4F4F4F5F4F96E0559547953795D0
:1081500027959A95D1F780914A0790914B07820F06
:10816000931F27C097FF03C0909581959F4FAA2723
:1081700097FDA095BA2F2091BC013327442755279E
:10818000BC01CD010E94DD769B01AC0197FF04C0CC
:10819000215C3F4F4F4F5F4F86E055954795379590
:1081A00027958A95D1F780914A0790914B07821BBA
:1081B000930B90934B0780934A078091B90587FFF3
:1081C00044C0B989BB2309F040C08091970288233D
:1081D000E1F5E1E0EE16E1E0FE064CF08091570794
:1081E000909158078E0D9F1D805091400DC0F0E07A
:1081F000EF16FFEFFF0664F4809157079091580740
:108200008E0D9F1D80509F4F909358078093570766
:1082100021E0013012074CF0809148079091490706
:10822000800F911F805091400CC03FEF003013072A
:1082300064F48091480790914907800F911F805006
:108240009F4F9093490780934807E2E1CD5E0C94DD
:1082500088778091A802882301F580917D028C7F28
:1082600080937D02AAEDB3E0E6E7F6E09BE0809123
:108270000302882309F48C938D918183128291509B
:10828000389697FFF4CF80910302882359F08091AC
:10829000030281508093030205C080917D028160BA
:1082A00080937D0280916E02882319F010926E02F5
:1082B0000895809370028093720280916C028E7F89
:1082C00080936C0285EA8093BC000895CF93DF937E
:1082D000A2EBB2E0C1EBD5E057E08991E82FFF2790
:1082E000EE0FFF1FE952F94F0190F081E02DE259A6
:1082F000FF4FEF3FF10521F01CF0EFEFF0E004C07D
:10830000F7FF02C0E0E0F0E04C91242F3327E217A2
:10831000F307A9F0CF01821B930B97FD0396959568
:10832000879595958795242F280F2C93822F992731
:10833000E817F90714F4215001C02F5F2C93515016
:10834000119657FFCACF8091BB05883F38F0EFEFF9
:10835000F0E0E81BF109EE54FD4F80818093CE01DF
:108360008091CE01882329F0843618F084E680932A
:10837000CE018091BD05883F38F0EFEFF0E0E81BBB
:10838000F109EE54FD4F80818093CC018091CC01A6
:10839000882329F0843618F084E68093CC018091FC
:1083A000CA05883F38F0EFEFF0E0E81BF109EE5422
:1083B000FD4F80818093C7018091C7018B3010F4FD
:1083C0008AE002C08F3F11F48093C7018091F705C6
:1083D000883F38F0EFEFF0E0E81BF109EE54FD4F75
:1083E000808180936E0780916E07823010F481E067
:1083F00002C08F3F11F480936E078091F905883F8A
:1084000038F0EFEFF0E0E81BF109EE54FD4F80810A
:108410008093940780919407823010F481E002C029
:108420008F3F11F4809394078091E405883F38F0E2
:10843000EFEFF0E0E81BF109EE54FD4F80818093EF
:108440006B078091E505883F38F0EFEFF0E0E81B1F
:10845000F109EE54FD4F8081809345078091E60538
:10846000883F38F0EFEFF0E0E81BF109EE54FD4FE4
:108470008081809373079091BC05983F18F4909386
:10848000CD0109C0EFEFF0E0E91BF109EE54FD4F1B
:1084900080818093CD01983F18F49093CD0109C05D
:1084A000EFEFF0E0E91BF109EE54FD4F808180937E
:1084B000CD018091BF05883F38F0EFEFF0E0E81B79
:1084C000F109EE54FD4F80818093CB018091C1056D
:1084D000883F38F0EFEFF0E0E81BF109EE54FD4F74
:1084E00080818093C9018091C905883F38F0EFEF02
:1084F000F0E0E81BF109EE54FD4F80818093CA0142
:108500008091CB05883F38F0EFEFF0E0E81BF109F0
:10851000EE54FD4F80818093C6018091CC05883F49
:1085200038F0EFEFF0E0E81BF109EE54FD4F8081E9
:108530008093C8018091CD05883F38F0EFEFF0E0DF
:10854000E81BF109EE54FD4F80818093C5018091B5
:10855000CE05883F38F0EFEFF0E0E81BF109EE546C
:10856000FD4F80818093C4018091D405883F38F00D
:10857000EFEFF0E0E81BF109EE54FD4F80818093AE
:10858000C2018091D505883F38F0EFEFF0E0E81B9D
:10859000F109EE54FD4F8081809392028091D605BF
:1085A000883F38F0EFEFF0E0E81BF109EE54FD4FA3
:1085B0008081809391028091D705883F38F0EFEF5A
:1085C000F0E0E81BF109EE54FD4F808180939002AA
:1085D0008091D805883F38F0EFEFF0E0E81BF10913
:1085E000EE54FD4F808180938F028091F205883F89
:1085F00038F0EFEFF0E0E81BF109EE54FD4F808119
:1086000080938E028091F305883F38F0EFEFF0E021
:10861000E81BF109EE54FD4F808180938D0280911B
:10862000F405883F38F0EFEFF0E0E81BF109EE5475
:10863000FD4F808180938C028091F505883F38F052
:10864000EFEFF0E0E81BF109EE54FD4F80818093DD
:108650008B028091D905883F38F0EFEFF0E0E81BFE
:10866000F109EE54FD4F80818093C1018091DD05B9
:10867000883F38F0EFEFF0E0E81BF109EE54FD4FD2
:1086800080818093C0018091E705883F38F0EFEF4B
:10869000F0E0E81BF109EE54FD4F80818093BF01AB
:1086A0008091EA05883F38F0EFEFF0E0E81BF10930
:1086B000EE54FD4F80818093BE018091EB05883F91
:1086C00038F0EFEFF0E0E81BF109EE54FD4F808148
:1086D0008093BD018091EC05883F38F0EFEFF0E02A
:1086E000E81BF109EE54FD4F80818093BC0180911D
:1086F000F105883F38F0EFEFF0E0E81BF109EE54A8
:10870000FD4F80818093BB0180910C06883F38F03B
:10871000EFEFF0E0E81BF109EE54FD4F808180930C
:10872000A4078091C201282F33272F5F3F4F8CE38E
:1087300098E2B9010E941C777093D0016093CF0139
:108740008091C705809395078091C60580935C074B
:1087500090910E06933320F181E080938A02983F36
:1087600058F0EFEFF0E0E91BF109EE54FD4F808186
:10877000823310F410928A028091E2079091E3070D
:1087800097FF08C080918A02882321F08091D50349
:10879000806803C08091D5038F778093D50302C092
:1087A00010928A028091E2079091E30797FF1DC023
:1087B0008091A8028823C9F080918A028823A9F0B9
:1087C00080910801909109018F5F9F4F71F488E9B2
:1087D0009AE3909325028093240280E094EA909398
:1087E00009018093080110928A0280918A028823ED
:1087F00039F08091BE01823D18F4825E8093BE0103
:10880000DF91CF910895A8E1B0E0E9E0F4E40C94A1
:108810006C770E947739309102013C3010F4299A2C
:1088200001C02998E090A902F090AA02FA82E98298
:1088300080915C0799270A96E816F90614F49A8342
:1088400089838091B102843608F05CC080914A032C
:1088500090914B03009731F0019790934B038093D5
:108860004A0307C01092A80280917D028F7E8093F8
:108870007D023A3011F0343110F0289A01C0289866
:1088800080917E0290917F02895E9340C0F1809139
:10889000D105282F33273A83298380917D02806177
:1088A00080937D028091AD05A82FBB27AA0FBB1F27
:1088B000FD01E55FF84F118210828091AE05282FEF
:1088C0003327220F331FC901855F984FFC011182A6
:1088D0001082A952B94F11961C921E922952394FFB
:1088E000D90111961C921E928091B005E82FFF27A6
:1088F000EE0FFF1FE952F94F11821082C9C2109288
:10890000A802C6C28091B1028D3808F4C1C280911C
:108910007D028F7E80937D029091D20582E3989FA5
:10892000C001112490934B0380934A03E981FA819B
:10893000B9978CF08091A802882369F080917E021B
:1089400090917F02FFEF8F3F9F0729F00196909350
:108950007F0280937E0280917E0290917F028F3F02
:10896000910509F038F51092CD021092CE021092C6
:10897000CF021092D0021092C9021092CA02109235
:10898000CB021092CC021092360310923703109251
:108990003803109239031092D5021092D602109229
:1089A000D7021092D8028A3F910549F481E0809362
:1089B000500305C080917D02826080937D0280918A
:1089C000AF05E82FFF27EE0FFF1FE952F94F808117
:1089D0009181813591050CF441C12091A802222397
:1089E00009F03CC18091B005E82FFF27EE0FFF1F73
:1089F000E952F94F808191818C3491050CF406C1C4
:108A000080914C038F5F80934C03893C08F426C10E
:108A10003C3010F4299801C0299A1092A8021092B3
:108A20004C0310927F0210927E023091AD05E32F2D
:108A3000FF27EE0FFF1FE952F94F808191818734A4
:108A40009105B4F48091AE05E82FFF27EE0FFF1FCC
:108A5000E952F94F808191810190F081E02DF7FF7B
:108A600003C0F095E195FF4FE734F1050CF478C0B1
:108A700041E02091AE05A22FBB27AA0FBB1FA95230
:108A8000B94F8D919C9111978734910544F0E32F54
:108A9000FF27EE0FFF1FE952F94F808191818D91E1
:108AA0009C918734910574F08091AD05E82FFF27E4
:108AB000EE0FFF1FE952F94F8081918187349105B4
:108AC0000CF042E0E22FFF27EE0FFF1FE952F94FB3
:108AD000808191818634910574F48091AD05E82FF1
:108AE000FF27EE0FFF1FE952F94F808191818734F4
:108AF00091050CF043E0E22FFF27EE0FFF1FE95234
:108B0000F94F808191818A5B9F4F74F48091AD050C
:108B1000E82FFF27EE0FFF1FE952F94F8081918167
:108B2000873491050CF044E0E22FFF27EE0FFF1F82
:108B3000E952F94F808191818A5B9F4F74F4809153
:108B4000AD05E82FFF27EE0FFF1FE952F94F808197
:108B50009181863491050CF445E0842F0E942C2DE0
:108B60008091AE05E82FFF27EE0FFF1FE952F94F66
:108B7000808191810190F081E02DF7FF03C0F09595
:108B8000E195FF4F7E97BCF48091AD05E82FFF275C
:108B9000EE0FFF1FE952F94F808191818A5B9F4F51
:108BA00054F481E08093F00388EE93E090932502E3
:108BB0008093240253C00E94262E0E94D92C80E06C
:108BC0000E944A078091D3050E94F6728091B905F0
:108BD00080FF10C08091140190911501875B934034
:108BE00038F480911401909115018E5E924010F43A
:108BF0000E94B51A1092220280E00E94C93681E0DC
:108C000080934F0380932202579A1FC080819181E5
:108C1000855B9F4F0CF580914C038F5F80934C03D5
:108C2000893CE0F03C3010F4299801C0299A109258
:108C3000A80210924C0310927F0210927E0281E0F3
:108C40000E94C93681E080934F030E94262E68E778
:108C500070E00E94073602C020934C038091AF055C
:108C6000E82FFF27EE0FFF1FE952F94F8081918116
:108C70008B5A9F4F0CF00CC13091A802E091B005C7
:108C8000332309F0DAC0FF27EE0FFF1FE952F94F37
:108C900080819181855B9F4F0CF0CCC020910F06A5
:108CA000E22FFF27EE0FFF1FE952F94F80819181DC
:108CB000855B9F4F1CF0222309F0BCC080914D03BF
:108CC0008F5F80934D03893C08F4E2C030934D03DD
:108CD0008091D503882309F0A6C080914F03882393
:108CE00009F4A1C081E090E090937F0280937E021E
:108CF00081E08093A80210923603109237031092FD
:108D00003803109239031092D5021092D6021092B5
:108D1000D7021092D8021092D1021092D202109271
:108D2000D3021092D4028091C805E82EFF240027B8
:108D3000112780919107909192079C01442737FD5C
:108D40004095542FC801B7010E94DD76DC01CB01AC
:108D50008093E5029093E602A093E702B093E802C5
:108D60008091A1079091A2079C01442737FD40956F
:108D7000542FC801B7010E94DD76DC01CB0180933E
:108D8000DD029093DE02A093DF02B093E0028091B7
:108D9000050390910603A0910703B0910803809307
:108DA000E1029093E202A093E302B093E402809187
:108DB000FD029091FE02A091FF02B091000380930A
:108DC000D9029093DA02A093DB02B093DC021092F6
:108DD000CD021092CE021092CF021092D0021092C9
:108DE000C9021092CA021092CB021092CC0280915A
:108DF0007D02886080937D0290910D068FE0989FA0
:108E0000900111248091C3029091C402820F931F9C
:108E100068E671E00E941C7797FD0196959587950D
:108E20008093090335C08CED95E0909325028093E3
:108E300024022EC010924D032BC0FF27EE0FFF1F00
:108E4000E952F94F808191818C349105FCF0209199
:108E50000F06E22FFF27EE0FFF1FE952F94F808127
:108E60009181855B9F4F14F0222381F480914E0302
:108E70008F5F80934E03893C58F01092A8021092A5
:108E80004E0310927F0210927E0202C010924E0397
:108E900080919401815080939401809194018F3F3F
:108EA00021F080917D0284FF72C30E94664180910F
:108EB000590390915A039C01220F331F280F391F29
:108EC000C090AD05AC2DBB27AA0FBB1FFD01E95219
:108ED000F94FB090C3054B2D552780819181849F18
:108EE000F001859FF00D949FF00D11242E0F3F1F70
:108EF00037FF02C02D5F3F4FB90175956795759596
:108F00006795A55FB84F8091C405082F11278D91F3
:108F10009C91809F7001819FF00C909FF00C112418
:108F20006E0D7F1D70935A036093590380915B030C
:108F300090915C039C01220F331F280F391FD090A2
:108F4000AE05AD2DBB27AA0FBB1FFD01E952F94F9E
:108F500080819181849FF001859FF00D949FF00D99
:108F600011242E0F3F1F37FF02C02D5F3F4FA90175
:108F70005595479555954795A55FB84F8D919C910F
:108F8000809F7001819FF00C909FF00C11244E0D7A
:108F90005F1D50935C0340935B0380918A0288239A
:108FA00009F448C0CB0177FD0396DC01B595A79580
:108FB000B595A795CA0157FD0396FC01F595E79570
:108FC000F595E7958091EA01682F772767FD709501
:108FD0006A9F90016B9F300D7A9F300D1124809114
:108FE0009103482F552747FD50954E9FC0014F9F35
:108FF000900D5E9F900D1124280F391F37FF02C07E
:10900000295F3F4F03E0359527950A95E1F73093A7
:10901000B0022093AF026E9F90016F9F300D7E9F34
:10902000300D11244A9FC0014B9F900D5A9F900D07
:1090300011243FC080910D06E82FFF27E456FE4F14
:1090400086818093EA01908190939103A82FBB279A
:10905000A7FDB095A69F9001A79F300DB69F300D3C
:109060001124E92FFF27E7FDF095E49FC001E59F5C
:10907000900DF49F900D1124280F391F37FF02C067
:10908000295F3F4F13E0359527951A95E1F7309307
:10909000B0022093AF02A49F9001A59F300DB49F12
:1090A000300D1124E69FC001E79F900DF69F900DB3
:1090B0001124281B390B37FF02C0295F3F4FF3E013
:1090C00035952795FA95E1F73093AE022093AD02DE
:1090D0008091B005E82FFF27EE0FFF1FE952F94FEF
:1090E00080819181909581959F4F9093AC02809360
:1090F000AB028330910514F0029705C00FEF8E3F4D
:10910000900734F402969093AC028093AB0204C0B3
:109110001092AC021092AB0280918D0390918E035D
:109120002091890330918A03820F931F0091AF022F
:109130001091B002081B190B1093B0020093AF02FC
:1091400080918B0390918C03209187033091880349
:10915000820F931F8090AD029090AE02881A990AF8
:109160009092AE028092AD028091AF05E82FFF276A
:10917000EE0FFF1FE952F94FE080F18028E730E061
:10918000E20EF31EF092AA02E092A9028091C701BA
:109190009927AA2797FDA095BA2FBC01CD010E945F
:1091A0005176DC01CB0120E030E040E251E4BC012B
:1091B000CD010E94BF75DC01CB01BC01CD010E9435
:1091C0002376DC01CB0180939B078091C6018093BD
:1091D00074078091C5019927AA2797FDA095BA2FFA
:1091E000BC01CD010E945176DC01CB0120E030E0D2
:1091F00040E251E4BC01CD010E94BF75DC01CB010E
:10920000BC01CD010E942376DC01CB0180934F0786
:109210008091C401809364078091FC0380FF59C052
:109220008091A407813808F454C08091F5039927F0
:1092300087FD90952B2D3327829FA001839F500D92
:10924000929F500D1124040F151F1093B00200932C
:10925000AF028091F603992787FD9095829FB00118
:10926000839F700D929F700D1124860E971E909211
:10927000AE028092AD028091F703282F332727FD9D
:1092800030958091AB029091AC02820F931F909326
:10929000AC028093AB028091F903282F332727FD7E
:1092A00030958091BE059927289FD001299FB00D48
:1092B000389FB00D1124B0939B01A0939A01809127
:1092C000F80399278E159F0524F49093AA028093A2
:1092D000A9028091A9029091AA0297FF04C010925E
:1092E000AA021092A9028091B90582FF02C01092D1
:1092F00074074091AF025091B002CA0157FD039626
:109300009C01359527953595279537FF03C03095F6
:1093100021953F4F8091820290918302821793079B
:10932000B4F4CA0157FF03C0909581959F4F97FDF4
:10933000039695958795959587959093830280934D
:1093400082028536910544F084E690E001C00197E1
:1093500090938302809382024091AD025091AE02BD
:10936000CA0157FD03969C0135952795359527959C
:1093700037FF03C0309521953F4F80918002909137
:10938000810282179307B4F4CA0157FF03C0909576
:1093900081959F4F97FD0396959587959595879510
:1093A00090938102809380028536910544F084E693
:1093B00090E001C001979093810280938002809198
:1093C0007D0284FF08C010928302109282021092E4
:1093D000810210928002ED2DFF27EE0FFF1FE95250
:1093E000F94F4091E805242F332780819181281778
:1093F000390744F48091100682FF04C081E0809315
:10940000960213C0ED2DFF27EE0FFF1FE952F94F13
:10941000842F99272091E905821B910920813181B0
:109420002817390714F4109296024091AE05E42FE4
:10943000FF27EE0FFF1FE952F94F5091E805852FE6
:10944000992722273327281B390B80819181821786
:10945000930744F48091100683FF04C081E0809359
:10946000950216C080919502882391F0E42FFF2782
:10947000EE0FFF1FE952F94F8091E9059927851BEF
:109480009109208131818217930714F4109295027B
:10949000EC2DFF27EE0FFF1FE952F94F4091E80531
:1094A000242F3327808191812817390744F4809134
:1094B000100680FF04C081E08093930217C0809162
:1094C0009302882399F0EC2DFF27EE0FFF1FE9523E
:1094D000F94F842F99272091E905821B910920815A
:1094E00031812817390714F4109293024091AD0589
:1094F000E42FFF27EE0FFF1FE952F94F5091E805C7
:10950000852F992722273327281B390B80819181AA
:109510008217930744F48091100681FF04C081E014
:109520008093940216C080919402882391F0E42FD6
:10953000FF27EE0FFF1FE952F94F8091E9059927A8
:10954000851B9109208131818217930714F41092B1
:10955000940280919602882319F4809195028111DA
:1095600081E08093970280919302882321F4809177
:109570009402882351F081E0809398021092970220
:10958000109296021092950202C0809398028091E8
:109590009702882321F480919802882369F08091B2
:1095A000E7059927E981FA818E179F0714F49A83BA
:1095B000898381E08093BD0280917D0284FF1AC07F
:1095C0001092AC021092AB021092B0021092AF0255
:1095D0001092AE021092AD029AE590939B0788E735
:1095E0008093740790934F078093640710929702BB
:1095F000109298028091670790916807A09169077F
:10960000B0916A072091050330910603409107034A
:1096100050910803820F931FA41FB51F8093670703
:1096200090936807A0936907B0936A0780916F07CA
:1096300090917007A0917107B09172072090FD0280
:109640003090FE024090FF0250900003820D931D67
:10965000A41DB51D80936F0790937007A0937107A9
:10966000B093720780915E0790915F07A0916007A9
:10967000B0916107E0900103F090020300910303B1
:1096800010910403EB82FC820D831E838E0D9F1DBF
:10969000A01FB11F80935E0790935F07A0936007A0
:1096A000B09361078091500790915107A0915207A4
:1096B000B0915307E090F902F090FA020091FB029A
:1096C0001091FC02EF82F88609871A878E0D9F1D84
:1096D000A01FB11F8093500790935107A09352078A
:1096E000B0935307F0909802FB86FF2029F48091F5
:1096F0009702882309F460C01092F5021092F602D6
:109700001092F7021092F8021092F1021092F202F7
:109710001092F3021092F4021092670710926807F9
:109720001092690710926A0710926F0710927007E3
:10973000109271071092720710925E0710925F07E5
:109740001092600710926107109250071092510713
:1097500010925207109253078091E5029091E60211
:10976000A091E702B091E8028093E1029093E202B7
:10977000A093E302B093E4028091DD029091DE02B7
:10978000A091DF02B091E0028093D9029093DA02B7
:10979000A093DB02B093DC021092340210923302E9
:1097A00010929C0210929B0210929E0210929D02B7
:1097B0000B85002309F0F2C180919702882309F0FC
:1097C000EDC180919E0590919F05815092402CF4AF
:1097D0008091A802882309F4E1C190900F08A0901D
:1097E000C8056091910770919207788F6F8B809177
:1097F000A1079091A2079A8B898B9FEF991609F484
:10980000D9C0BB24CC24DD24CA01B901A60195012D
:109810000E94517779018A01EF89F88DCF01AA273B
:1098200097FDA095BA2FE81AF90A0A0B1B0BC20183
:10983000B101A60195010E94517759016A01298958
:109840003A89C901AA2797FDA095BA2FA81AB90A83
:10985000CA0ADB0A292C332427FC3094432C532CCE
:10986000C801B701A20191010E94DD7697FF04C0F3
:1098700061507E4F8F4F9F4F3B014C0109E0959403
:109880008794779467940A95D1F7C601B501A20130
:1098900091010E94DD7697FF04C061507E4F8F4F8B
:1098A0009F4F5B016C0119E0D594C794B794A794BE
:1098B0001A95D1F7809182029091830281349105AB
:1098C0003CF4809180029091810281349105D4F022
:1098D000D401C30197FE03C00196A11DB11D3C0137
:1098E0004D019594879477946794D601C501D7FE6E
:1098F00003C00196A11DB11D5C016D01D594C794F3
:10990000B794A7948091B005E82FFF27EE0FFF1FB3
:10991000E952F94F808191810190F081E02DF7FFAC
:1099200003C0F095E195FF4F7A97A4F0C401B3010D
:1099300023E030E040E050E00E94517739014A01D5
:10994000C601B50123E030E040E050E00E945177CD
:1099500059016A0180911108282F332727FD30957E
:10996000432F532F261537054805590514F439019F
:109970004A01992787FD9095909581959F4FAA2739
:1099800097FDA095BA2F681679068A069B0614F4EF
:109990003C014D012A153B054C055D0514F45901A8
:1099A0006A01A816B906CA06DB060CF0CFC05C0136
:1099B0006D01CCC0EA2CFF2400271127CA01B90190
:1099C000A80197010E94517739014A014F89588DAA
:1099D000CA01AA2797FDA095BA2F681A790A8A0AA0
:1099E0009B0AC201B101A80197010E945177590158
:1099F0006A0169897A89CB01AA2797FDA095BA2FB8
:109A0000A81AB90ACA0ADB0AD401C30197FE03C027
:109A10000F96A11DB11D3C014D01F4E09594879472
:109A200077946794FA95D1F7D601C501D7FE03C0A4
:109A30000F96A11DB11D5C016D01E4E0D594C794A2
:109A4000B794A794EA95D1F780918202909183020E
:109A5000813491053CF4809180029091810281349F
:109A60009105A4F0C401B30123E030E040E050E0F0
:109A70000E94517739014A01C601B50123E030E067
:109A800040E050E00E94517759016A018091B00591
:109A9000E82FFF27EE0FFF1FE952F94F80819181D8
:109AA0000190F081E02DF7FF03C0F095E195FF4FA5
:109AB0007A97A4F0C401B30123E030E040E050E025
:109AC0000E94517739014A01C601B50123E030E017
:109AD00040E050E00E94517759016A0171E2671637
:109AE0007104810491042CF070E2672E712C812C9A
:109AF000912C80EE68168FEF78068FEF88068FEF37
:109B0000980644F460EE662E6FEF762E6FEF862E89
:109B10006FEF962E91E2A916B104C104D1042CF086
:109B200050E2A52EB12CC12CD12CA0EEAA16AFEF7D
:109B3000BA06AFEFCA06AFEFDA0644F440EEA42E41
:109B40004FEFB42E4FEFC42E4FEFD42E8091E5028D
:109B50009091E602A091E702B091E8028619970978
:109B6000A809B9098093E5029093E602A093E70261
:109B7000B093E8028091DD029091DE02A091DF02B5
:109B8000B091E0028A199B09AC09BD098093DD02FE
:109B90009093DE02A093DF02B093E0028091330243
:109BA000909134028F3F910509F008F4C4C5BB853C
:109BB000BB2309F04EC580919702882309F049C55F
:109BC0008091BD02882309F044C5E091F005EC873F
:109BD000EE2309F43EC58091670790916807A09134
:109BE0006907B0916A07B7FF04C081509F4FAF4F1C
:109BF000BF4FE92EFA2E0B2F112707FD1A95E09281
:109C00006707F09268070093690710936A078091CD
:109C10006F0790917007A0917107B0917207B7FF1D
:109C200004C081509F4FAF4FBF4F892F9A2FAB2F4A
:109C3000BB27A7FDBA958D879E87AF87B88B80938A
:109C40006F0790937007A0937107B093720780918C
:109C5000C805A82EBB24CC24DD242091F502309128
:109C6000F6024091F7025091F802C601B5010E9438
:109C7000DD7697FF04C061507F4F8F4F9F4F672E57
:109C8000782E892E992487FC9A946092F50270921E
:109C9000F6028092F7029092F8022091F102309140
:109CA000F2024091F3025091F402C601B5010E9404
:109CB000DD7697FF04C061507F4F8F4F9F4F272E57
:109CC000382E492E552447FC5A942092F1023092A6
:109CD000F2024092F3025092F4028091ED029091D0
:109CE000EE02A091EF02B091F002B7FF04C08150E4
:109CF0009F4FAF4FBF4F892F9A2FAB2FBB27A7FD89
:109D0000BA958093ED029093EE02A093EF02B09388
:109D1000F002D801C70186199709A809B9098093EB
:109D2000420390934303A0934403B09345032091CF
:109D3000EF05E22EFF2400271127BC01CD01A80169
:109D400097010E94517759016A0120935103309382
:109D5000520340935303509354038D859E85AF85E2
:109D6000B88982199309A409B50980934603909391
:109D70004703A0934803B0934903BC01CD01A80158
:109D800097010E94517720935503309356034093D7
:109D9000570350935803D601C501D7FE04C0815024
:109DA0009F4FAF4FBF4F892F9A2FAB2FBB27A7FDD8
:109DB000BA9590939C0280939B0257FF04C0215058
:109DC0003F4F4F4F5F4FBB2757FDBA95A52F942F9D
:109DD000832F90939E0280939D02809182029091A6
:109DE000830281349105DCF480918002909181029C
:109DF00081349105A4F48091B005E82FFF27EE0F80
:109E0000FF1FE952F94F808191810190F081E02D8F
:109E1000F7FF03C0F095E195FF4F7A97E4F080914A
:109E20000F088F3FC1F480919B0290919C0297FD97
:109E300001969595879590939C0280939B028091C3
:109E40009D0290919E0297FD01969595879590931E
:109E50009E0280939D0280915E0790915F07A09182
:109E60006007B0916107B7FF04C081509F4FAF4FAB
:109E7000BF4F892F9A2FAB2FBB27A7FDBA95809391
:109E80005E0790935F07A0936007B093610780918E
:109E9000500790915107A0915207B0915307B7FF17
:109EA00004C081509F4FAF4FBF4F892F9A2FAB2FC8
:109EB000BB27A7FDBA958093500790935107A093B5
:109EC0005207B09353078091050390910603A09128
:109ED0000703B09108032B813C814D815E81281BD3
:109EE000390B4A0B5B0B20933A0330933B034093AF
:109EF0003C0350933D038091FD029091FE02A0919E
:109F0000FF02B0910003EF80F88409851A85E81AF2
:109F1000F90A0A0B1B0BE0923E03F0923F030093F9
:109F20004003109341032093420330934303409333
:109F3000440350934503E0924603F0924703009395
:109F40004803109349038091E1029091E202A091AD
:109F5000E302B091E402821B930BA40BB50B809338
:109F6000E1029093E202A093E302B093E4028091B5
:109F7000D9029091DA02A091DB02B091DC028E1935
:109F80009F09A00BB10B8093D9029093DA02A093A2
:109F9000DB02B093DC02FC85FF23E1F02091BB02E1
:109FA0003091BC02213831054CF08091160390911C
:109FB00017030196909317038093160320583F4F81
:109FC0004CF4809116039091170301979093170317
:109FD000809316031092BC021092BB0281E090E0C5
:109FE00090935E0380935D03E0904203F0904303FF
:109FF0000091440310914503D801C70117FF07C022
:10A0000088279927DC018E199F09A00BB10B81507D
:10A010009240A040B04034F084E090E090935E0322
:10A0200080935D038091630390916403A091650325
:10A03000B0916603209167073091680740916907E6
:10A0400050916A07821B930BA40BB50B815E914B59
:10A05000AF4FBF4F8F539C49A040B04028F0809134
:10A06000100889310CF4FFC041E0E41640E1F40629
:10A0700040E0040740E014070CF473C080915F03D4
:10A08000882309F46AC0D801C70117FF07C08827D1
:10A090009927DC018E199F09A00BB10B9C01AD0122
:10A0A000B7FF04C021503E4F4F4F5F4FF9E0559529
:10A0B000479537952795FA95D1F780915D03909153
:10A0C0005E03820F931F90935E0380935D03D8011C
:10A0D000C70117FF03C00796A11DB11DE3E0B595A9
:10A0E000A79597958795EA95D1F78093510390931B
:10A0F0005203A0935303B093540389589341A04053
:10A10000B04064F088E893E1A0E0B0E080935103B0
:10A1100090935203A0935303B0935403209151039F
:10A1200030915203409153035091540357FF04C0A0
:10A1300021503F4F4F4F5F4F232F342F452F55272F
:10A1400047FD5A9580919B0290919C02820F931F2C
:10A1500090939C0280939B0206C081E080935F03F2
:10A1600002C010925F0360E0E61660EFF6066FEF44
:10A1700006076FEF16070CF073C080916003882309
:10A1800009F46AC0D801C70117FF07C088279927BB
:10A19000DC018E199F09A00BB10B9C01AD01B7FF2B
:10A1A00004C021503E4F4F4F5F4F69E05595479592
:10A1B000379527956A95D1F780915D0390915E035D
:10A1C000820F931F90935E0380935D03D801C701B4
:10A1D00017FF03C00796A11DB11D23E0B595A795F4
:10A1E000979587952A95D1F78093510390935203C1
:10A1F000A0935303B093540388579C4EAF4FBF4F67
:10A2000064F488E79CEEAFEFBFEF80935103909327
:10A210005203A0935303B093540320915103309100
:10A220005203409153035091540357FF04C02150EF
:10A230003F4F4F4F5F4F232F342F452F552747FD5B
:10A240005A9580919B0290919C02820F931F90934C
:10A250009C0280939B0211C081E0809360030DC03B
:10A26000109260030AC010925E0310925D0388EEA4
:10A2700093E09093DA018093D9018C85282F3327BE
:10A2800080915D0390915E032817390724F4309381
:10A290005E0320935D0310911008112379F0212FA4
:10A2A000332727FD309580915D0390915E03281739
:10A2B000390724F430935E0320935D0340914203F9
:10A2C0005091430360914403709145034138510517
:10A2D0006105710574F080911A0390911B03209120
:10A2E0005D0330915E03820F931F90931B03809355
:10A2F0001A0340585F4F6F4F7F4F74F480911A03D9
:10A3000090911B0320915D0330915E03821B930BA0
:10A3100090931B0380931A0381E090E090935E0377
:10A3200080935D03C0904603D0904703E0904803BC
:10A33000F0904903D701C601F7FE07C08827992787
:10A34000DC018C199D09AE09BF0981509240A040E3
:10A35000B04034F084E090E090935E0380935D031E
:10A360008091670390916803A0916903B0916A039B
:10A3700020916F07309170074091710750917207DB
:10A38000821B930BA40BB50B815E914BAF4FBF4F5C
:10A390008F539C49A040B04018F019310CF4FFC015
:10A3A00001E0C01600E1D00600E0E00600E0F006A3
:10A3B0000CF473C080916103882309F46AC0D7014B
:10A3C000C601F7FE07C088279927DC018C199D0973
:10A3D000AE09BF099C01AD01B7FF04C021503E4F3B
:10A3E0004F4F5F4F09E055954795379527950A954B
:10A3F000D1F780915D0390915E03820F931F90933C
:10A400005E0380935D03D701C601F7FE03C0079684
:10A41000A11DB11D13E0B595A795979587951A9540
:10A42000D1F78093550390935603A0935703B093AD
:10A43000580389589341A040B04064F088E893E104
:10A44000A0E0B0E08093550390935603A093570388
:10A45000B093580320915503309156034091570310
:10A460005091580357FF04C021503F4F4F4F5F4F4B
:10A47000232F342F452F552747FD5A9580919D0254
:10A4800090919E02820F931F90939E0280939D0253
:10A4900006C081E08093610302C01092610320E056
:10A4A000C21620EFD2062FEFE2062FEFF2060CF0D5
:10A4B00073C080916203882309F46AC0D701C60182
:10A4C000F7FE07C088279927DC018C199D09AE0982
:10A4D000BF099C01AD01B7FF04C021503E4F4F4F53
:10A4E0005F4FE9E05595479537952795EA95D1F760
:10A4F00080915D0390915E03820F931F90935E03A2
:10A5000080935D03D701C601F7FE03C00796A11D26
:10A51000B11D73E0B595A795979587957A95D1F775
:10A520008093550390935603A0935703B093580319
:10A5300088579C4EAF4FBF4F64F488E79CEEAFEF57
:10A54000BFEF8093550390935603A0935703B093A6
:10A550005803209155033091560340915703509171
:10A56000580357FF04C021503F4F4F4F5F4F232FD9
:10A57000342F452F552747FD5A9580919D02909184
:10A580009E02820F931F90939E0280939D0211C0A2
:10A5900081E0809362030DC0109262030AC01092A2
:10A5A0005E0310925D0388EE93E09093DA0180934E
:10A5B000D9014C85242F332780915D0390915E0350
:10A5C0002817390724F430935E0320935D038091AC
:10A5D0001008882379F0282F332727FD30958091A4
:10A5E0005D0390915E032817390724F430935E03CE
:10A5F00020935D03409146035091470360914803C7
:10A6000070914903413851056105710574F08091DD
:10A6100018039091190320915D0330915E03820F1E
:10A62000931F909319038093180340585F4F6F4F07
:10A630007F4FCCF4809118039091190320915D0312
:10A6400030915E03821B930B909319038093180340
:10A650000AC010929E0210929D0210929C021092CB
:10A660009B021092BD0280917407882341F41092DE
:10A670009E0210929D0210929C0210929B02809169
:10A68000670790916807A0916907B0916A07809366
:10A69000630390936403A0936503B0936603809172
:10A6A0006F0790917007A0917107B0917207809326
:10A6B000670390936803A0936903B0936A031092B1
:10A6C000F5021092F6021092F7021092F802109220
:10A6D000F1021092F2021092F3021092F402109220
:10A6E000ED021092EE021092EF021092F002109220
:10A6F0006707109268071092690710926A07109214
:10A700006F071092700710927107109272071092E3
:10A710005E0710925F071092600710926107109217
:10A72000500710925107109252071092530710923F
:10A73000340210923302E090AB02F090AC02C701F9
:10A74000F7FE04C0882799278E199F0940976CF05F
:10A7500088EE93E09093DA018093D9018091B90556
:10A7600084FD03C081E0809350031091C505A12EA4
:10A77000BB24CC24DD24B701882777FD8095982F52
:10A780009701F7FE04C0222733272E193F094427DB
:10A7900037FD4095542F0E94DD769B01AC01C60128
:10A7A000B5010E94DD7697FF04C061507E4F8F4F48
:10A7B0009F4F59E095958795779567955A95D1F76D
:10A7C0009B01812F99278E9DD0018F9DB00D9E9D5D
:10A7D000B00D1124CD01B7FD0396959587959595FC
:10A7E0008795280F391F442737FD4095542F209314
:10A7F00036033093370340933803509339038091E5
:10A80000D5029091D602A091D702B091D802821BB6
:10A81000930BA40BB50B8093D5029093D602A09313
:10A82000D702B093D8028155934CA040B04064F059
:10A8300080E593ECA0E0B0E08093D5029093D6023F
:10A84000A093D702B093D8028091D5029091D602FE
:10A85000A091D702B091D802805B9C43AF4FBF4F0D
:10A8600064F480EB9CE3AFEFBFEF8093D50290934D
:10A87000D602A093D702B093D8024090C302509062
:10A88000C4024114510409F478C18091B90583FFD1
:10A8900074C18091050390910603A0910703B091C4
:10A8A0000803B7FF04C081509E4FAF4FBF4F39E040
:10A8B000B595A795979587953A95D1F76C0197FF30
:10A8C00004C0D094C194D108D3948091FD0290919A
:10A8D000FE02A091FF02B0910003B7FF04C08150B7
:10A8E0009E4FAF4FBF4F29E0B595A7959795879598
:10A8F0002A95D1F7BC0197FF03C0709561957F4FF2
:10A90000C616D7060CF46B01B601D7FE02C0695F0C
:10A910007F4F3B0183E0759467948A95E1F702E0ED
:10A92000E02EF12C6E0C7F1C0CE112E0400E511E4B
:10A9300072010027F7FC0095102F24EE3DEF420E28
:10A94000531E80919D0790919E07A0919F07B09103
:10A95000A0078090960190909701A0909801B090E8
:10A960009901BC01CD01A50194010E945177E21A21
:10A97000F30A040B150BC801B70128E631E040E0EB
:10A9800050E00E945177DC01CB011CE4E12E1FEF67
:10A99000F12EE80EF91E0091D9011091DA0101158E
:10A9A000110589F539E1C316D1046CF58091BB021C
:10A9B0009091BC028E0D9F1D9093BC028093BB02B0
:10A9C000809150038823F9F0C201AA2797FDA09532
:10A9D000BA2FBC01CD01A50194010E94DD76DC01F6
:10A9E000CB0180939D0790939E07A0939F07B09300
:10A9F000A007BC01CD010E9451773093C202209381
:10AA0000C10210925003C701B4E0880F991FBA9594
:10AA1000E1F7B3010E941C77CB01AA2797FDA0950F
:10AA2000BA2F20919D0730919E0740919F0750912A
:10AA3000A007280F391F4A1F5B1F20939D073093E3
:10AA40009E0740939F075093A007F090CA016F2D77
:10AA50007727C69EC001C79E900DD69E900D1124EB
:10AA600097FD4F966C01A5E0D594C794AA95E1F7A0
:10AA70006C197D096B0177FD7AC00115110509F08C
:10AA80006FC00091820210918302809180029091A8
:10AA90008102080F191F17FF02C0095F1F4FF3E063
:10AAA00015950795FA95E1F7005C1F4FCA01B901AA
:10AAB000A50194010E945177DA01C9012091C102D8
:10AAC0003091C202442737FD4095542F821B930BCF
:10AAD000A40BB50B845E9D4FAF4FBF4FBC01CD01A2
:10AAE00028E631E040E050E00E945177DC01CB01E4
:10AAF000845B90408C9DA0018D9D500D9C9D500DC0
:10AB00001124CA01B8010E941C7783E0F89E6001FD
:10AB10001124C616D70614F4B60108C08827992751
:10AB20008C199D09681779070CF4BC019B01442717
:10AB300037FD4095542F8091D5029091D602A09177
:10AB4000D702B091D802820F931FA41FB51F809324
:10AB5000D5029093D602A093D702B093D8020DC02D
:10AB6000015010401093DA010093D90106C084EF20
:10AB700091E09093DA018093D9018091BD028823FE
:10AB800081F01092C9021092CA021092CB02109268
:10AB9000CC021092CD021092CE021092CF021092EF
:10ABA000D002F0909802FF20F1F480917407282FD2
:10ABB0003327442755278091050390910603A091E0
:10ABC0000703B0910803BC01CD010E94DD76DC01D2
:10ABD000CB01BC01CD0128EF3AE240E050E00E94F9
:10ABE0005177390102C066247724E0909702EE2065
:10ABF000F1F480917407282F33274427552780913B
:10AC0000FD029091FE02A091FF02B0910003BC01F1
:10AC1000CD010E94DD76DC01CB01BC01CD0128EF26
:10AC20003AE240E050E00E945177290102C04424FA
:10AC3000552480914A0790914B07893C91051CF05F
:10AC400088EC90E005C088539F4F34F488E39FEF71
:10AC500090934B0780934A07809155079091560730
:10AC6000893C91051CF088EC90E005C088539F4F0B
:10AC700034F488E39FEF90935607809355078091B3
:10AC8000570790915807AA2797FDA095BA2F2091B2
:10AC90009B07A22EBB24CC24DD24BC01CD01A60140
:10ACA00095010E94DD769B01AC0180914A0790914D
:10ACB0004B07AA2797FDA095BA2FE7E0880F991FA9
:10ACC000AA1FBB1FEA95D1F7280F391F4A1F5B1F28
:10ACD00057FF04C0215C3F4F4F4F5F4F76E05595C3
:10ACE0004795379527957A95D1F78301020F131F62
:10ACF0001093580700935707809148079091490790
:10AD0000AA2797FDA095BA2FBC01CD01A6019501F8
:10AD10000E94DD769B01AC0180915507909156070A
:10AD2000AA2797FDA095BA2F67E0880F991FAA1F41
:10AD3000BB1F6A95D1F7280F391F4A1F5B1F57FFAA
:10AD400004C0215C3F4F4F4F5F4F96E055954795AC
:10AD5000379527959A95D1F74201820E931E9092CE
:10AD60004907809248078091960790919707880F2E
:10AD7000991FAA2797FDA095BA2F20914F07332737
:10AD800044275527BC01CD010E94DD765B016C0193
:10AD900097FF08C08FE390E0A0E0B0E0A80EB91ED6
:10ADA000CA1EDB1E86E0D594C794B794A7948A95F3
:10ADB000D1F780916407282F3327442755278091A6
:10ADC000E9029091EA02A091EB02B091EC02BC0181
:10ADD000CD010E94DD76DC01CB01BC01CD0120EF6D
:10ADE00035E540E050E00E945177B501620F731FD6
:10ADF00070939707609396070150104134F080E0FC
:10AE000090E190935807809357078091570790914E
:10AE100058078050904F34F480E090EF909358079B
:10AE200080935707B1E08B16B0E19B0634F080E0C9
:10AE300090E190934907809348078091480790914B
:10AE400049078050904F34F480E090EF9093490789
:10AE5000809348076150704134F080E090E1909316
:10AE60009707809396078091960790919707805057
:10AE7000904F34F480E090EF90939707809396077B
:10AE800080910001482F552780911E0190911F014C
:10AE90004817590794F420911E0130911F016981D0
:10AEA0007A81649FC001659F900D749F900D11245D
:10AEB000B9010E9408777A83698389819A81880F12
:10AEC000991F880F991F9A8389834091B90540FF84
:10AED000BDC6EE2009F0BAC6FF2009F0B7C6AA2405
:10AEE000BB2445018091990290919A02909382052A
:10AEF0008093810520911C0330911D03211531059C
:10AF000009F03FC080911401909115018959934037
:10AF100058F087B5803F20F480913702815011C0EE
:10AF200081E0809376034EC08091140190911501C9
:10AF30008436910508F587B58031D0F080913702CD
:10AF40008F5F809337029FE08902900111248091E6
:10AF5000A805821B87BD8CE291E090932502809327
:10AF600024028EE591E090931D0380931C032AC078
:10AF700081E08093750326C0F0927503F09276030A
:10AF800021C08091A3029091A402A091A502B0914A
:10AF9000A60214E0880F991FAA1FBB1F1A95D1F7AC
:10AFA0008093380290933902A0933A02B0933B0207
:10AFB000B0923602A09235022150304030931D03EA
:10AFC00020931C032091CD0141FF24C02233D8F4EB
:10AFD0008091DF0181508093DF018F3FD9F510927E
:10AFE000BE028091A3029091A402A091A502B0910B
:10AFF000A60280939F029093A002A093A102B09317
:10B00000A20281E004C081E08093BE0288EC8093BC
:10B01000DF0120C080919A0190919B01820F911DC8
:10B020002091BE053327829FF001839FF00D929FF0
:10B03000F00D1124CF01AA2797FDA095BA2F809378
:10B040009F029093A002A093A102B093A20281E07C
:10B050008093BE028091050390910603A09107039F
:10B06000B0910803E0909601F0909701009198014B
:10B0700010919901BC01CD01A80197010E9451775F
:10B0800059016A018091FD029091FE02A091FF0298
:10B09000B0910003BC01CD01A80197010E94517736
:10B0A000B901C5010E9406758C01CC9714F00CE320
:10B0B00010E0C8010E9427698C0180E2809395010D
:10B0C0008091BE02882309F447C480917D029927AC
:10B0D0009C012071307084FD3FC46091120660FDB8
:10B0E00004C08091B90581FD0CC0C980DA8030931D
:10B0F0006C0320936B0380917D02806C80937D02B2
:10B1000099C180917D0281FF6BC14091DB0150911B
:10B11000DC01CA010F962091A9023091AA02821780
:10B120009307BCF580917503882399F580917D0282
:10B1300087FF15C080917D028F7780937D0280917B
:10B14000A3029091A402A091A502B091A6028093BF
:10B150009F029093A002A093A102B093A2028091BB
:10B160007D02806480937D02241B350B2F5030407C
:10B1700037FF03C0309521953F4F80916B0390912D
:10B180006C03820F931F90936C0380936B038BE28D
:10B190006EC0CA010F9728173907BCF58091760356
:10B1A000882399F580917D0286FF15C080917D02EC
:10B1B0008F7B80937D028091A3029091A402A09145
:10B1C000A502B091A60280939F029093A002A09343
:10B1D000A102B093A20280917D02806880937D02DB
:10B1E000241B350B215F3F4F37FF03C0309521955E
:10B1F0003F4F80916B0390916C03821B930B909354
:10B200006C0380936B038DE232C080917D02807C61
:10B2100069F180917D028F7380937D0210926C039F
:10B2200010926B032091A3023091A4024091A502D9
:10B230005091A60220939F023093A0024093A10256
:10B240005093A20261FF06C084EF91E09093250223
:10B25000809324028091A702882341F4233331058F
:10B26000410551051CF081E08093A7028DE3809396
:10B27000950120916B0330916C03C90137FF04C025
:10B2800088279927821B930B815092400CF491C020
:10B290008091BE059927289F7001299FF00C389F47
:10B2A000F00C1124C70160E075E00E941C77CB010F
:10B2B000AA2797FDA095BA2F20919F023091A00256
:10B2C0004091A1025091A202280F391F4A1F5B1F13
:10B2D00020939F023093A0024093A1025093A202B8
:10B2E00010926C0310926B03C090A302D090A40242
:10B2F000E090A502F090A602D701C60180509440CC
:10B30000A040B04082179307A407B5075CF4D701AB
:10B31000C60180509C4FAF4FBF4F281739074A07CF
:10B320005B0744F080939F029093A002A093A10238
:10B33000B093A2028091120681FF06C084E690E0DD
:10B3400090932502809324028091C205882389F579
:10B350004091990250919A0257FF02C04D5F5F4F92
:10B36000559547955595479580911E0190911F01E0
:10B37000209100013327489FB001499F700D589FCD
:10B38000700D1124CB01B9010E941C777093DC0170
:10B390006093DB01663471051CF486E490E005C01F
:10B3A0006739710534F086E990E09093DC01809371
:10B3B000DB0180911C0390911D03892BB9F18091D1
:10B3C000A3029091A402A091A502B091A60280933D
:10B3D0009F029093A002A093A102B093A20226C064
:10B3E0008091A3029091A402A091A502B091A6021F
:10B3F00080599140A040B04080939F029093A0025A
:10B40000A093A102B093A2028091C205882311F0FB
:10B41000992702C088E790E09093DC018093DB01DC
:10B4200089819A8190939A0280939902C09099029F
:10B43000D0909A022091A3023091A4024091A502DB
:10B440005091A6022B8B3C8B4D8B5E8B20919F02E3
:10B450003091A0024091A1025091A2026B897C8997
:10B460008D899E89261737074807590724F0809150
:10B47000120680FDB8C280911C0390911D03892B98
:10B4800039F0C0909902D0909A02AA24BB24D9C066
:10B490008B899C89AD89BE89821B930BA40BB50B4C
:10B4A00080933A0390933B03A0933C03B0933D03F6
:10B4B000823070E897077FEFA7077FEFB7072CF47C
:10B4C00081E090E8AFEFBFEF09C08F5F9F47A040DA
:10B4D000B04064F08FEF9FE7A0E0B0E080933A03C4
:10B4E00090933B03A0933C03B0933D03A0903A0399
:10B4F000B0903B038091CC01282F33274427552758
:10B5000080913A0390913B03A0913C03B0913D039D
:10B51000BC01CD010E94DD7697FF04C0615E7F4FC4
:10B520008F4F9F4FA5E09595879577956795AA953D
:10B53000D1F760933A0370933B0380933C0390935D
:10B540003D036530FEEF7F07FFEF8F07FFEF9F079B
:10B550002CF484E09EEFAFEFBFEF09C06050744061
:10B560008040904064F080E094E0A0E0B0E0809300
:10B570003A0390933B03A0933C03B0933D03809028
:10B580003A0390903B03209135023091360237FF09
:10B5900002C0295F3F4FF3E035952795FA95E1F713
:10B5A0004FEF223834071CF421E83FEF05C0203864
:10B5B000310514F020E830E0C901AA2797FDA095D5
:10B5C000BA2F2091CE01332744275527BC01CD0146
:10B5D0000E94DD7697FF04C06D5F7F4F8F4F9F4FB6
:10B5E000E2E09595879577956795EA95D1F79B0168
:10B5F0005FEF613075071CF420E03FEF06C06F3F3E
:10B60000710519F014F020E031E080917D02807C1A
:10B6100049F0C90137FD03969C013595279535956D
:10B6200027950DC08091120680FF09C0C90137FD22
:10B6300007969C0143E0359527954A95E1F7820EE0
:10B64000931E2091CB01222309F454C06091C502BE
:10B650007091C6028091C7029091C80297FF04C002
:10B6600061587F4F8F4F9F4F37E09595879577951E
:10B6700067953A95D1F73327442755270E94DD7601
:10B6800097FF04C0615E7F4F8F4F9F4FB5E0959548
:10B69000879577956795BA95D1F760933A0370933C
:10B6A0003B0380933C0390933D036138AFEF7A07EF
:10B6B000AFEF8A07AFEF9A072CF480E89FEFAFEF68
:10B6C000BFEF0AC06F3F71058105910569F064F015
:10B6D00080E091E0A0E0B0E080933A0390933B03D8
:10B6E000A0933C03B0933D0380913A0390913B03B8
:10B6F000880E991E8091C901282F33278091130845
:10B70000992787FD9095289FF001299FF00D389F7C
:10B71000F00D11249F01F7FF02C021583F4F220F67
:10B72000232F221F330BFFEF21383F071CF420E8A3
:10B730003FEF06C02F3F310519F014F020E031E053
:10B74000820E931EC401AA2797FDA095BA2FE09000
:10B750009902F0909A029701442737FD4095542FA3
:10B76000BC01CD010E94DD7697FF04C061507E4F81
:10B770008F4F9F4FF9E09595879577956795FA9547
:10B78000D1F7C61AD70A80916B0390916C03892B6D
:10B7900009F060C01E141F040CF05CC09501B7FED8
:10B7A00003C0309521953F4F2D33310540F48091F2
:10B7B0006F03909170038C159D0574F526C02C5372
:10B7C0003040E5E036952795EA95E1F720313105DF
:10B7D00010F02FE030E040916F03509170031A1485
:10B7E0001B04E4F480E190E0821B930B489F9001DE
:10B7F000499F300D589F300D112474E036952795E0
:10B800007A95E1F72C153D0520F58091DD019091A9
:10B81000DE01C816D906F4F06C011CC0205F3F4F52
:10B820008091DD019091DE01829FB001839F700DB8
:10B83000929F700D11249B0164E0369527956A95BF
:10B84000E1F74C155D0514F06A0104C0C216D30679
:10B8500008F06901C601AA2797FDA095BA2F2DE02F
:10B86000880F991FAA1FBB1F2A95D1F7980144275B
:10B8700037FD4095542FBC01CD010E945177209394
:10B880003E0330933F034093400350934103C090E5
:10B890003E03D0903F0380916D0390916E039C0115
:10B8A000220F331F280F391F2C0D3D1D37FF02C0FB
:10B8B0002D5F3F4FA9015595479555954795509355
:10B8C0006E0340936D038091BA05282F3327220F12
:10B8D000331F220F331F241735076CF4809195070F
:10B8E000282F3327220F331F220F331F20553040BC
:10B8F0004217530724F030936E0320936D03809119
:10B90000120680FF14C080916D0390916E03A9818F
:10B91000BA818A179B0724F0B0936E03A0936D033E
:10B92000E0916D03F0916E03FA83E9835CC0298195
:10B930003A812E193F0937FF02C02D5F3F4F3595E1
:10B94000279535952795E0906D03F0906E03E20EF4
:10B95000F31EFA82E98247C08091C205882301F56F
:10B960006091990270919A0277FF02C06D5F7F4FDC
:10B97000759567957595679540911E0150911F01CA
:10B9800080910001282F3327649FC001659F900D8F
:10B99000749F900D1124B9010E941C77CB0101C046
:10B9A00099279093DC018093DB018091DB019091DA
:10B9B000DC01873491051CF486E490E005C08639EB
:10B9C000910534F086E990E09093DC018093DB01EF
:10B9D00029813A8130936E0320936D0380917D021B
:10B9E000806C80937D0280917D0299279C0122705A
:10B9F000307081FF1CC18091710390917203A091FE
:10BA00007303B09174030097A105B10521F08091F3
:10BA1000A7028130B1F449815A81CA01AA2797FD52
:10BA2000A095BA2F2EE0880F991FAA1FBB1F2A9539
:10BA3000D1F78093710390937203A0937303B09333
:10BA400074038091A702813019F482E08093A702E9
:10BA500069817A81CB01AA2797FDA095BA2F980119
:10BA6000442737FD4095542FBC01CD010E94DD765F
:10BA7000DC01CB0180933E0390933F03A0934003EE
:10BA8000B0934103B7FF04C08150904EAF4FBF4FFA
:10BA90007C018D01FDE015950795F794E794FA95E3
:10BAA000D1F7E0923E03F0923F03009340031093DE
:10BAB000410360917E0270917F028FE0603A7807C7
:10BAC00050F58091710390917203A0917303B0912E
:10BAD00074039C01AD01EAE056954795379527958B
:10BAE000EA95D1F7821B930BA40BB50BA801970124
:10BAF000F4E0220F331F441F551FFA95D1F7820F30
:10BB0000931FA41FB51F8093710390937203A0939A
:10BB10007303B093740360547F4118F580917103EF
:10BB200090917203A0917303B09174039C01AD01D5
:10BB3000ECE05695479537952795EA95D1F7821B06
:10BB4000930BA40BB50BA801970172E0220F331FD2
:10BB5000441F551F7A95D1F7820F931FA41FB51F5D
:10BB600029C08091350290913602809135029091E2
:10BB7000360297FF03C0909581959F4F84369105BB
:10BB80000CF58091710390917203A0917303B091B1
:10BB900074039C01AD016EE0569547953795279546
:10BBA0006A95D1F7821B930BA40BB50B8E0D9F1DCD
:10BBB000A01FB11F8093710390937203A09373032E
:10BBC000B09374038091710390917203A0917303F9
:10BBD000B09174031EE0B695A795979587951A9531
:10BBE000D1F790939A02809399024091C005442323
:10BBF00099F055279C01BA010E941C77C901861B48
:10BC0000970B9093700380936F03260F371F309329
:10BC1000DE012093DD011FC01092700310926F03AC
:10BC20008FEF93E09093DE018093DD0114C01092BA
:10BC3000A702109271031092720310927303109274
:10BC4000740330939A022093990205C080917D027B
:10BC5000806C80937D0220905C07222D3327220F79
:10BC6000331F220F331F285D3F4FA981BA812A1746
:10BC70003B0714F03A83298330909507832D992749
:10BC8000880F991F880F991F80559040E981FA818C
:10BC90008E179F0714F49A83898380916D028823FD
:10BCA00021F480911A088F3FA1F080917E0290913B
:10BCB0007F020297C09768F4E980FA801E141F047F
:10BCC00044F481E090E090937F0280937E023A8377
:10BCD000298309811A811093660500936505809177
:10BCE000360390913703A0913803B0913903F2E005
:10BCF000880F991FAA1FBB1FFA95D1F700919607CD
:10BD000010919707081B190B29813A81213A3105B7
:10BD10008CF0C90137FD019695958795801791079D
:10BD20000CF48C01909581959F4F081719076CF4BE
:10BD30008C010BC00135110514F000E510E03FEF58
:10BD4000003B130714F400EB1FEF232D3327220FC2
:10BD5000331F220F331FC90149815A81841B950B60
:10BD6000801791070CF48C0169817A81621B730B37
:10BD7000061717070CF48B0180915707909158070D
:10BD80006091AF027091B002861B970B909366078B
:10BD900080936507D09074072091CD023091CE0238
:10BDA0004091CF025091D002DD2041F0661A770A0F
:10BDB000C301AA2797FDA095BA2F04C0AA2797FD13
:10BDC000A095BA2F280F391F4A1F5B1F2093CD0261
:10BDD0003093CE024093CF025093D0028091CD0297
:10BDE0009091CE02A091CF02B091D00281509A4F93
:10BDF000A040B04064F080E09AEFA0E0B0E0809313
:10BE0000CD029093CE02A093CF02B093D002809146
:10BE1000CD029091CE02A091CF02B091D00280507D
:10BE20009640AF4FBF4F64F480E096E0AFEFBFEFB6
:10BE30008093CD029093CE02A093CF02B093D00214
:10BE4000C090CF052091650730916607F8E0FC159A
:10BE500098F08C2D9927829F7001839FF00C929F00
:10BE6000F00C1124C701F7FC07967C0163E0F59400
:10BE7000E7946A95E1F712C08C2D86959927829FE9
:10BE8000A001839F500D929F500D1124CA0157FDB0
:10BE900003967C01F594E794F594E794A090CF0184
:10BEA000B090D0019501442737FD4095542F8091E3
:10BEB000CD029091CE02A091CF02B091D002BC01F0
:10BEC000CD010E945177E20EF31E9090BB01692DC7
:10BED000772788279927980117FF04C0222733273F
:10BEE000201B310B37FF02C02F5F3F4F3595279541
:10BEF000A981BA812A0F3B1F442737FD4095542F53
:10BF00000E94DD7697FF04C0615C7F4F8F4F9F4F8B
:10BF100026E095958795779567952A95D1F79B01AA
:10BF20006E157F050CF47B01309521953F4FE2168D
:10BF3000F3060CF4790180914807909149076091CC
:10BF4000AD027091AE02861B970B909347078093CA
:10BF500046072091C9023091CA024091CB0250910C
:10BF6000CC02DD2041F0461A570AC201AA2797FDEC
:10BF7000A095BA2F04C0AA2797FDA095BA2F280F25
:10BF8000391F4A1F5B1F2093C9023093CA02409396
:10BF9000CB025093CC028091C9029091CA02A09129
:10BFA000CB02B091CC0281509A4FA040B04064F0D7
:10BFB00080E09AEFA0E0B0E08093C9029093CA02BB
:10BFC000A093CB02B093CC028091C9029091CA0297
:10BFD000A091CB02B091CC0280509640AF4FBF4FA2
:10BFE00064F480E096E0AFEFBFEF8093C9029093D6
:10BFF000CA02A093CB02B093CC02209146073091A5
:10C00000470748E04C1598F08C2D9927829FB00186
:10C01000839F700D929F700D1124CB0177FD0796C1
:10C020006C01B3E0D594C794BA95E1F712C0C694F9
:10C030008C2D9927829FD001839FB00D929FB00DC8
:10C040001124CD01B7FD03966C01D594C794D59406
:10C05000C7949501442737FD4095542F8091C9021C
:10C060009091CA02A091CB02B091CC02BC01CD014B
:10C070000E945177C20ED31E692D772788279927F2
:10C08000980117FF04C022273327201B310B37FFED
:10C0900002C02F5F3F4F35952795E981FA812E0F1A
:10C0A0003F1F442737FD4095542F0E94DD7697FFB0
:10C0B00004C0615C7F4F8F4F9F4FE6E09595879559
:10C0C00077956795EA95D1F79B016C157D050CF482
:10C0D0006B01309521953F4FC216D3060CF46901D0
:10C0E00066E7862E66E0962E5DE2A52E56E0B52E1A
:10C0F0004BE0542E35E7632E37E0732ED5012C919B
:10C1000012160CF014C1203429F4E981FA81F88F59
:10C11000EF8B1FC049815A81CA01AA2797FDA095BC
:10C12000BA2F332727FD3095432F532FBC01CD0164
:10C130000E94DD7697FF04C0615C7F4F8F4F9F4F59
:10C1400026E095958795779567952A95D1F7788F0D
:10C150006F8BF5012181203439F42F89388D2E0D14
:10C160003F1D388F2F8B2AC0203C39F44F89588DC2
:10C170004E195F09588F4F8B21C0C701AA2797FD21
:10C18000A095BA2F332727FD3095432F532FBC019D
:10C19000CD010E94DD7697FF04C0615C7F4F8F4F19
:10C1A0009F4FB6E09595879577956795BA95D1F7A6
:10C1B000AF89B88DA60FB71FB88FAF8BF50122815D
:10C1C000203439F42F89388D2C0D3D1D388F2F8B5D
:10C1D0002AC0203C39F44F89588D4C195D09588F7D
:10C1E0004F8B21C0C601AA2797FDA095BA2F3327F0
:10C1F00027FD3095432F532FBC01CD010E94DD76E2
:10C2000097FF04C0615C7F4F8F4F9F4FA6E09595CD
:10C21000879577956795AA95D1F7AF89B88DA60FC1
:10C22000B71FB88FAF8BF5012381203439F42F89E4
:10C23000388D200F311F388F2F8B2AC0203C39F4C6
:10C240004F89588D401B510B588F4F8B21C0C8010F
:10C25000AA2797FDA095BA2F332727FD3095432FA6
:10C26000532FBC01CD010E94DD7697FF04C0615CB5
:10C270007F4F8F4F9F4FF6E0959587957795679500
:10C28000FA95D1F7AF89B88DA60FB71FB88FAF8BCE
:10C29000F301808191812F89388D8217930764F48F
:10C2A000B901680F791F77FF02C06F5F7F4F7595E7
:10C2B0006795788F6F8B08C04F89588D440F551F35
:10C2C000481B590B588F4F8B822D9927880F991F28
:10C2D000880F991F6F89788D861797075CF4832DD7
:10C2E0009927880F991F880F991FAF89B88DA817B4
:10C2F000B90714F0988F8F8B8F89988D97FD0396CF
:10C300009595879595958795F4018183880F991F59
:10C31000880F991F2F89388D281B390BC901880F69
:10C320008283EF89F88DD301ED93FC9303C0F40170
:10C33000118212825A9422E030E0620E731E44E0B1
:10C3400050E0A40EB51E68E070E0860E971E57FE02
:10C35000D5CEE2E1C85E0C948877809183039091FA
:10C360008403A0918503B091860380937B0390930F
:10C370007C03A0937D03B0937E0380917F03909113
:10C380008003A0918103B0918203809377039093FF
:10C390007803A0937903B0937A03089510928E03E3
:10C3A00010928D0310928C0310928B03089584B128
:10C3B000806A84B93D9A82E58CBD1DBC459A81E0B6
:10C3C0008093A7078AEA8093B80783E88093B90728
:10C3D0008AE08093BA071092BC071092BB071092B4
:10C3E000BE071092BD07109212081092DA07089546
:10C3F0003091A707332309F085C00DB407FE82C032
:10C4000084E080932302459A2EB580919203992768
:10C410008130910589F0823091051CF4892B21F03F
:10C420003EC00297B9F03BC03093D90720939303E5
:10C430002138A9F581E008C0253549F4809193039E
:10C44000820F8093930382E08093920328C03093FD
:10C45000920325C08091D907E82FFF27EB50F84FB2
:10C4600020838F5F8093D907909193038A31A0F046
:10C47000291769F48AE1A5EFB7E0EBEDF7E00D903D
:10C4800001928A95E1F781E08093DA0702C0309348
:10C49000DA071092920303C0920F909393032091B6
:10C4A000B707203208F028C04598000000000000BF
:10C4B000000000000000000000000000000000007C
:10C4C000000000000000000000000000000000006C
:10C4D00000000000000000000000E091B007F091B3
:10C4E000B107E20FF11D80818EBD8091D707908149
:10C4F000890F8093D70703C081E08093A7072F5F40
:10C500002093B7070895EF92FF920F931F938091A6
:10C51000C8059927880F991F880F991F7C0100274C
:10C52000F7FC0095102F8091050390910603A091D0
:10C530000703B0910803BC01CD01A80197010E9437
:10C5400051773093BC072093BB078091FD029091F7
:10C55000FE02A091FF02B0910003BC01CD01A80131
:10C5600097010E9451773093BE072093BD07209119
:10C570009D0730919E0740919F075091A007DA01D7
:10C58000C901E3E0880F991FAA1FBB1FEA95D1F7E5
:10C59000820F931FA41FB51F820F931FA41FB51FE7
:10C5A0002091960130919701409198015091990105
:10C5B000BC01CD010E9451773093C4072093C3077B
:10C5C0008091160390911703209143023091440209
:10C5D000821B930B9093CA078093C907E0910C03C9
:10C5E000F0910D0380916C0790916D07BF010E943F
:10C5F0001C77CB019B01220F331F220F331F280F03
:10C60000391F280F391F37FF02C02D5F3F4F359567
:10C610002795359527953093C0072093BF078091C4
:10C62000990790919A07BF010E941C779B01220FE6
:10C63000331F220F331F260F371F260F371F37FFD9
:10C6400002C02D5F3F4F359527953595279530933F
:10C65000C2072093C10710920D0310920C03109291
:10C660006D0710926C0710929A07109299078091AB
:10C67000BA0799278D30910509F466C08E3091056F
:10C680005CF48B30910509F48EC08C3091050CF070
:10C690000FC10A9761F0ADC18F30910509F481C1D6
:10C6A0008F3091050CF45CC1409799F1A2C1809143
:10C6B00092028093CB07809191028093CC07809166
:10C6C00090028093CD0780918F028093CE07809156
:10C6D0008E028093CF0780918D028093D007809146
:10C6E0008C028093D10780918B028093D207809136
:10C6F0007D028093D30780917D02837F80937D02AA
:10C700000E94262E8093D407809109038093D50739
:10C7100070C180911408909115089093CC07809374
:10C72000CB0780911808909119089093CE078093B9
:10C73000CD0780911E0190911F018093CF078091BA
:10C7400000018093D00755C18091FC058093CB07F1
:10C750008091FD058093CC078091FE058093CD07E5
:10C760008091FF058093CE07809100068093CF07CC
:10C77000809104068093D007809105068093D107AD
:10C78000809106068093D207809109068093D30793
:10C79000809107068093D407809108068093D5077F
:10C7A00080910A06DAC0F8948091AF05E82FFF2740
:10C7B000EE0FFF1FE952F94F0190F081E02DE038B4
:10C7C000F1051CF0EFE7F0E006C02FEFE138F207CB
:10C7D00014F4E1E8FFEFE093CB078091B005E82F78
:10C7E000FF27EE0FFF1FE952F94F0190F081E02D76
:10C7F000E038F1051CF0EFE7F0E006C06FEFE1383C
:10C80000F60714F4E1E8FFEFE093CC078091AE0562
:10C81000E82FFF27EE0FFF1FE952F94F0190F0813B
:10C82000E02DE038F1051CF0EFE7F0E006C08FEFF7
:10C83000E138F80714F4E1E8FFEFE093CD078091C9
:10C84000AD05E82FFF27EE0FFF1FE952F94F0190CA
:10C85000F081E02DE038F1051CF0EFE7F0E006C0D4
:10C860002FEFE138F20714F4E1E8FFEF7894E0935A
:10C87000CE078091B2028093CF078091B30280935C
:10C88000D0078091B4028093D1078091B502809344
:10C89000D2078091B6028093D3078091B70280932C
:10C8A000D4078091B8028093D5078091B90255C012
:10C8B0008091F003863018F01092F00385E08093A9
:10C8C000CB0780910B068093CC078091A3029091B7
:10C8D000A402A091A502B091A602BC01CD0125E061
:10C8E00030E040E050E00E9451773093CE07209333
:10C8F000CD0780919F029091A002A091A102B091DA
:10C90000A202BC01CD0125E030E040E050E00E94F1
:10C9100051773093D0072093CF0780910106809301
:10C92000D107809102068093D207809103068093FD
:10C93000D3078091B1028093D4078091D70690915C
:10C94000D8068093D507809165059091660597FD7F
:10C95000039695958795959587958093D60749C0B9
:10C960001092CB0782E58093CC071092CD0780E12F
:10C970008093CE07809102018093CF078091D503E9
:10C980008093D0078091D6038093D1078091D703FD
:10C990008093D2078091D8038093D3078091D903E5
:10C9A00026C08091E1058093CB078091110680938A
:10C9B000CC078091C1018093CD078091DA058093E7
:10C9C000CE078091DB058093CF078091DC058093B3
:10C9D000D0078091C0018093D1078091DE058093BC
:10C9E000D2078091DF058093D3078091E005809383
:10C9F000D4078091DA07882309F4D8C08AEF80939E
:10CA0000E9014091DC075091DD07CA0181509E4F3A
:10CA10008F5F9340B0F42091DE073091DF07C901AA
:10CA200081509E4F8F5F934060F48091B90585FFE0
:10CA300008C050938E0340938D0330938C03209352
:10CA40008B038091E2079091E30721E089369207FA
:10CA500024F49093C4028093C3028091C302909106
:10CA6000C4022091C1023091C202821B930B845EEA
:10CA70009D4F68E671E00E941C77845B9040909324
:10CA8000C0028093BF022091E6073091E7078091B2
:10CA90002402909125028217930740F48091F003BD
:10CAA000882321F430932502209324028091DB0710
:10CAB00099278836910549F18936910524F48736FE
:10CAC000910531F07BC08936910509F445C076C0E7
:10CAD0008091E80780930F088091E90780931108FF
:10CAE0008091EA07809310088091EB0780931208E9
:10CAF0008091EC07809313088091ED078093EA0101
:10CB00008091EE078093910359C08091E80780934C
:10CB1000B2078091E9078093B3078091EA07809379
:10CB2000B4078091EB078093B5078091EC07809361
:10CB3000B607809155059091ED07892B8093550597
:10CB40009091EE0790938F038091560583709C70AF
:10CB5000892B8093560532C08091E8078093A807FF
:10CB60008091E9078093A9078091EA078093AA073B
:10CB70008091EB078093AB078091EC079091ED07D4
:10CB80009093AD078093AC078091EE079091EF07EB
:10CB90009093AF078093AE078091F007992787FDA8
:10CBA000909590930A078093090708C010928E030E
:10CBB00010928D0310928C0310928B031F910F9192
:10CBC000FF90EF9008958091A707882309F43BC058
:10CBD000459888EB97E09093B1078093B0079091C8
:10CBE0009003E92FFF27E052FE4F9F5F9093900341
:10CBF00080818093BA07993010F0109290031092C0
:10CC0000A7070E94836281E08093B70700000000BD
:10CC10000000000000000000000000000000000014
:10CC20000000000000000000000000000000000004
:10CC30000000000000000000000000008091B80724
:10CC40008093D7078EBD089587B18C6087B94298CD
:10CC500043981092950380E88093EC01109294031E
:10CC60008093EB01089580919A03815080939A03F9
:10CC70008F3F09F0FBC024E020939A0380917D024E
:10CC8000992780739070892B21F48091D60380FFBF
:10CC90001CC08091FA05882349F080919D03882368
:10CCA00011F42093950381E080939D038091FB050F
:10CCB0008823B9F080919E03882319F484E080933F
:10CCC000940381E080939E030CC010929D03109208
:10CCD0009E038091F60580939B038091F8058093D5
:10CCE0009C0380919D03882309F040C08091100629
:10CCF000282F332724FF07C08091A802882319F426
:10CD000025FD4DC04EC09091F705983F50F08091A1
:10CD10006E078D3D30F080919B0388230CF43FC05B
:10CD200040C0983F48F080916E078A3028F4809187
:10CD30009B038823B4F133C0809195038150809385
:10CD400095038F3F79F580916E078150809395030D
:10CD50008091EC01813011F480E801C086958093C8
:10CD6000EC018091EC0190919B0317C08091950399
:10CD70008150809395038F3FA9F489E080939503B8
:10CD80008091EC01813011F480E801C08695809398
:10CD9000EC018091EC019091FA05892311F0429AFF
:10CDA00001C0429880919E03882309F043C080917E
:10CDB0001006282F332724FF07C08091A80288235C
:10CDC00019F426FD50C034C09091F905983F50F0F9
:10CDD000809194078D3D30F080919C0388230CF462
:10CDE00042C026C0983F48F0809194078A3028F4CA
:10CDF00080919C038823E4F036C080919403815095
:10CE0000809394038F3F91F5809194078150809394
:10CE100094038091EB01813011F480E801C0869584
:10CE20008093EB018091EB0190919C038923D9F4CD
:10CE300043980895809194038150809394038F3F89
:10CE4000A9F489E0809394038091EB01813011F47F
:10CE500080E801C086958093EB018091EB01909171
:10CE6000FB05892311F0439A0895439808954FB71D
:10CE700024E130E0F8948091C9008F778093C90055
:10CE80008091C9008F7B8093C9008091C9008F7DFC
:10CE90008093C9005A9A52985B9A539A832F992784
:10CEA0008093CD002093CC008091C8008260809355
:10CEB000C80080E18093C9008091CA008F77809379
:10CEC000CA008091CA008F7B8093CA008091CA00FB
:10CED0008F7D8093CA008091CA008F7E8093CA00A4
:10CEE0008091CA00877F8093CA008091C9008B7FA0
:10CEF0008093C9008091CA0084608093CA008091A9
:10CF0000CA0082608093CA008091C80087FF03C076
:10CF10008091CE00F9CF8091C90080688093C900CC
:10CF20004FBF0895EF92FF920F931F93CF93DF931C
:10CF3000482F00E010E08091ED01813061F4109203
:10CF4000ED0184E480939F031092A1031092A0034B
:10CF50001092A2032BC180919F03882319F421E032
:10CF600030E001C098019091A003992371F4232B24
:10CF700011F081E010C084E480939F039093A1039B
:10CF80009093A0039093A203FAC0913069F4232BED
:10CF900009F0EBC082E08093A0038091A1038F5F32
:10CFA0008093A10383E0E9C09230D1F4232B09F0F0
:10CFB000DCC083E080939F034093A2039091A10380
:10CFC000923039F41092A30347FF03C081E08093AD
:10CFD000A30383E08093A0039F5F9093A103CFC03E
:10CFE000933009F0C2C0232B09F0BFC090939F0378
:10CFF00082E08093A0038091A1038F5F8093A103BF
:10D000002091A203822F9927782F6627842F9927B2
:10D01000682B792B8091D305813049F47370CB0153
:10D020008050924063E070E00E941C7717C082300D
:10D0300061F47770CB018050944066E070E00E940C
:10D040001C772695269526950BC0737068567140FF
:10D05000CB0177FD0196BC017595679526952695C0
:10D06000022F11270F7010700F5F1F4F0D30110529
:10D0700008F074C07801E00EF11EF701E952F94F93
:10D08000808191819B01281B390BC90137FF03C0A7
:10D09000909581959F4F069794F48091B102883CBA
:10D0A00030F48091B102865F8093B10208C088ECB1
:10D0B0008093B10280916F008F7D80936F00F701A4
:10D0C000E952F94F808191819C01220F331F280F73
:10D0D000391F260F371F37FF02C02D5F3F4FE90171
:10D0E000D595C795D595C795CB0101968C179D070A
:10D0F00014F4219706C061507040C617D7070CF48E
:10D1000021968091B102843BD0F0F701E952F94FAA
:10D1100080819181FE01E81BF90BCF0163E070E093
:10D120000E941C77CB01880F991F860F971F2BE059
:10D1300037E0E20EF31EF7019183808307C02BE0F6
:10D1400037E0E20EF31EF70111821082000F111F6B
:10D150000952194FF801D183C08311C00231110562
:10D1600070F081E08093ED010AC081E08093ED01D1
:10D170001092A1031092A30384E480939F038091F3
:10D18000A103803198F08091A303882331F480912A
:10D19000ED01882311F4809394011092A103109261
:10D1A000A3031092A00384E480939F03E6E0CDB72D
:10D1B000DEB70C949477CF93FC0197FF05C0CFEFB7
:10D1C000F095E195FF4F01C0C1E028E631E0CF01C5
:10D1D000B9010E941C77FC018B35910554F08B55E9
:10D1E00090408A35910538F484EB90E08E1B9F0BBC
:10D1F000FC0141E00DC0CF01855B90408A3591056F
:10D2000018F4E45BF04003C02E1B3F0BF9014FEF15
:10D21000EE0FFF1FEF5BF54F259134918C2F99276F
:10D2200087FD9095289FB001299F700D389F700D44
:10D230001124842F992787FD9095689FA001699FED
:10D24000500D789F500D1124CA01CF9108952AE501
:10D2500030E0281B390BC9010E94DB680895CF9389
:10D26000DF9380E00E94926E80911E0190911F01D9
:10D270006AE070E00E941C779F938F9380911E015B
:10D2800090911F016AE070E00E941C777F936F937A
:10D290008FE09BE09F938F93C5E8DEE6DF93CF930B
:10D2A000E091BC03F091BD0309952DB73EB7285F0F
:10D2B0003F4F2DBF8091E9018823B9F186E00E949C
:10D2C000926E8091AC079091AD076AE070E00E9489
:10D2D00008777F936F938FED90E09F938F9380916A
:10D2E0009D0790919E07A0919F07B091A007209164
:10D2F0009601309197014091980150919901BC019C
:10D30000CD010E9451773F932F9388E19BE09F933B
:10D310008F93DF93CF93E091BC03F091BD03099508
:10D320008DB79EB70A968DBF12C086E00E94926E9E
:10D3300084E29BE09F938F93DF93CF93E091BC03B4
:10D34000F091BD0309950F900F900F900F90809171
:10D350008F038823C1F086E00E94926E80918F0334
:10D3600099279F938F938BE29BE09F938F93DF93FB
:10D37000CF93E091BC03F091BD0309952DB73EB763
:10D380002A5F3F4F2DBF80E10E94926E8091F30192
:10D390009091F4016CE370E00E9408779F938F9363
:10D3A0008091F3019091F4016CE370E00E940877A2
:10D3B0007F936F9380911808909119089F938F9392
:10D3C00086E39BE09F938F93C5E8DEE6DF93CF93E0
:10D3D000E091BC03F091BD0309958091B9052DB78B
:10D3E0003EB7265F3F4F2DBF80FF29C08AE10E94D4
:10D3F000926E8091950199279F938F938091A302BC
:10D400009091A402A091A502B091A602BC01CD0109
:10D4100024E630E040E050E00E9451773F932F93A4
:10D4200083E49BE09F938F93DF93CF93E091BC03C2
:10D43000F091BD0309958DB79EB708968DBFDF911A
:10D44000CF910895CF93DF9380E00E94926E8091F8
:10D450009506992787FD90959F938F9380918D06D0
:10D46000992787FD90959F938F93809185069927A3
:10D4700087FD90959F938F9380917D06992787FDD7
:10D4800090959F938F938AE49BE09F938F93C5E839
:10D49000DEE6DF93CF93E091BC03F091BD030995E5
:10D4A00080E10E94926E2DB73EB7245F3F4F2DBFA3
:10D4B0008091B506992787FD90959F938F938091D2
:10D4C000AD06992787FD90959F938F938091A50630
:10D4D000992787FD90959F938F9380919D0699271B
:10D4E00087FD90959F938F938AE59BE09F938F9301
:10D4F000DF93CF93E091BC03F091BD030995809138
:10D50000AB052DB73EB7245F3F4F2DBF853098F454
:10D5100080E10E94926E8AE69BE09F938F93DF9357
:10D52000CF93E091BC03F091BD0309950F900F904C
:10D530000F900F9018C08730B0F488E10E94926E6F
:10D540008FED90E09F938F938BE79BE09F938F935A
:10D55000DF93CF93E091BC03F091BD0309958DB7A4
:10D560009EB706968DBFDF91CF9108950F931F93BD
:10D5700080E00E94926E2AE030E080911408909141
:10D580001508B9010E9408779F938F938091140822
:10D5900090911508B9010E9408777F936F9380914D
:10D5A0001E0190911F01B9010E941C779F938F93D8
:10D5B00080911E0190911F01B9010E941C777F93F9
:10D5C0006F9384E89BE09F938F9305E81EE61F937B
:10D5D0000F93E091BC03F091BD03099580E10E9497
:10D5E000926E8DB79EB70C968DBF80911808909162
:10D5F00019089F938F9380911608909117089F9315
:10D600008F9387E99BE09F938F931F930F93E091F4
:10D61000BC03F091BD0309958DB79EB708968DBFE9
:10D620001F910F9108950F931F93CF93DF938091D4
:10D63000E901C5E8DEE6882309F478C080E00E94AD
:10D64000926E8091A90799279F938F938091AB0742
:10D6500099279F938F9383EA9BE09F938F938E01EB
:10D66000DF93CF93E091BC03F091BD0309958DB793
:10D670009EB708968DBF8091AA07833031F48CE065
:10D680000E94926E82EB9BE005C08CE00E94926E3D
:10D6900087EB9BE09F938F93DF93CF93E091BC0345
:10D6A000F091BD0309950F900F900F900F9080910E
:10D6B000A80781FF12C08CE00E94926E8CEB9BE069
:10D6C0009F938F931F930F93E091BC03F091BD0341
:10D6D00009950F900F900F900F9080E10E94926E2D
:10D6E0008FED90E09F938F938091AE079091AF075D
:10D6F0009F938F938091AC079091AD076AE070E0A3
:10D700000E9408777F936F9381EC9BE09F938F93A8
:10D7100085E89EE69F938F93E091BC03F091BD0353
:10D7200009958DB79EB70A968DBF12C082E00E9400
:10D73000926E81ED9BE09F938F93DF93CF93E09167
:10D74000BC03F091BD0309950F900F900F900F90BF
:10D75000DF91CF911F910F910895CF93C82F209102
:10D76000A4032093A50399278F32910509F18033F3
:10D7700091051CF44F97A1F02CC08F34910501F155
:10D780008F38910531F5222319F481E090E038C0FB
:10D7900086E0289FF0011124E950F54F849117C0CD
:10D7A00086E0289FF0011124E850F54F84910FC0C6
:10D7B00086E0289FF0011124E750F54F849107C0BF
:10D7C00086E0289FF0011124E650F54F8491809364
:10D7D000A4039091A4038091A5039813C0E00E9434
:10D7E000986E9091A40386E0989FF0011124E55073
:10D7F000F54F259134918C2FF901099580E090E047
:10D80000CF910895109215081092140810921908DB
:10D8100010921808109217081092160810921A0801
:10D820008AE090E00E9416179093A7038093A603C6
:10D830000895CF93DF938091A6039091A7030E9450
:10D840001F17882309F4AFC08091A6039091A70306
:10D850000A969093A7038093A603E0E0F0E09F016F
:10D8600090E05FEFA6E7B6E04BE0ED018B8187FF2C
:10D870000BC09F5F8D81E80FF11D8981280F311D3D
:10D880008E81851708F4582F4150189647FFEDCF29
:10D8900050931A08232B41F52091AC033091AD032E
:10D8A0004091AE035091AF03BB27A52F942F832F38
:10D8B0009093AB038093AA03AA27BB27281B390B9D
:10D8C0004A0B5B0BCF01AA27BB27280F391F4A1F22
:10D8D0005B1F2093AC033093AD034093AE03509392
:10D8E000AF03E5E0F0E013C02091AA033091AB0351
:10D8F0002E173F0718F4E21BF30B02C0E0E0F0E044
:10D90000892F9927880F991FE80FF91F3596F093F3
:10D910001508E0931408EF3FF10578F480911E019B
:10D9200090911F018E9F90018F9F300D9E9F300D13
:10D930001124C90164E670E013C0CF019695879564
:10D940009695879520911E0130911F01289FA00177
:10D95000299F500D389F500D1124CA0169E170E0D4
:10D960000E94087770931708609316082091A80307
:10D970003091A9032E0F3F1F3093A9032093A803D2
:10D980005EE02131350778F08091180890911908F0
:10D990000196909319088093180820513E403093C7
:10D9A000A9032093A803DF91CF9108954FB720E4F6
:10D9B00030E0F8948091C9008F778093C9008091FE
:10D9C000C9008F7B8093C9008091C9008F7D8093AF
:10D9D000C9005A9A52985B9A539A832F9927809339
:10D9E000CD002093CC008091C80082608093C80055
:10D9F00088E18093C9008091CA008F778093CA0024
:10DA00008091CA008F7B8093CA008091CA008F7D6D
:10DA10008093CA008091CA008F7E8093CA00809153
:10DA2000CA00877F8093CA008091C9008B7F809352
:10DA3000C9008091CA0084608093CA008091CA00A6
:10DA400082608093CA008091C80087FF03C08091E4
:10DA5000CE00F9CF8091C90080688093C9004FBF84
:10DA600008950F931F93CF93DF93482F4F5F893112
:10DA700008F08BC08091D606841720F44F5F409346
:10DA8000D6064150CB0183539B4268E170E00E946F
:10DA90001C77A42FBB27FD01EA0FFB1FE952F94FAA
:10DAA000808191819B01281B390BC90137FF03C07D
:10DAB000909581959F4F069794F48091B102883C90
:10DAC00030F48091B102865F8093B10208C088EC87
:10DAD0008093B10280916F008F7D80936F00FD0174
:10DAE000EA0FFB1FE952F94F808191819C01220FBF
:10DAF000331F280F391F260F371F37FF02C02D5F36
:10DB00003F4FE901D595C795D595C795CB010196AE
:10DB10008C179D0714F4219706C061507040C617FA
:10DB2000D7070CF421968091B102843BD8F08D0187
:10DB30000A0F1B1FF801E952F94F80819181FE0104
:10DB4000E81BF90BCF0163E070E00E941C77CB016A
:10DB5000880F991F860F971F055F184FF801918353
:10DB6000808307C0AA0FBB1FA55FB84F11961C92F8
:10DB70001E92E42FFF27EE0FFF1FE952F94FD183CA
:10DB8000C083443011F410929401DF91CF911F9122
:10DB90000F910895CF93DF9320911B08822F99272F
:10DBA000807F9070409709F06CC02F3109F046C01B
:10DBB00080911C088093B40320911E082093B60323
:10DBC00080911F088093B503822F99279093D806E0
:10DBD0008093D706222309F054C08091AD05282FE9
:10DBE0003327220F331FF901E55FF84F11821082AE
:10DBF0008091AE05A82FBB27AA0FBB1FFD01E55FD3
:10DC0000F84F118210828091B005E82FFF27EE0FA8
:10DC1000FF1FCF01855F984FEC01198218822952AE
:10DC2000394FE90119821882A952B94F11961C92F5
:10DC30001E92E952F94F1182108223C0C22FCF7079
:10DC4000CA30F8F480911C088093450880911D0823
:10DC50008093440880911E088093470880911F0894
:10DC60008093460860914408709145088C2F0E946B
:10DC7000316D60914608709147088C2F8F5F0E942C
:10DC8000316DDF91CF910895CF93C82F8F3F49F425
:10DC90008091B7038F3F29F41092B9031092B80313
:10DCA00032C02091B903222339F4CF3111F485E039
:10DCB00001C084E08093BA038091BA039091B803C5
:10DCC0008217A0F4892F80958093B8038F3F19F4B1
:10DCD0008EEF8093B8038091B803C81711F40E94A7
:10DCE000CA6D1092B9031092B8030BC0E22FFF2740
:10DCF000E55EF74FC0832F5F2093B9039C0F90938D
:10DD0000B803C093B703CF9108959091B3039332B2
:10DD100040F4E92FFF27EF5DF74F80839F5F9093DB
:10DD2000B3030895833218F48D5F8093B30308958D
:10DD300090E2E4E2F8E08FE19193815087FFFCCF1D
:10DD40000895CF93CFB723E031E0F8948091C900D4
:10DD50008F778093C9008091C9008F7B8093C90021
:10DD60008091C9008F7D8093C9005A9A52985B9A1E
:10DD7000539A832F99278093CD002093CC008091D4
:10DD8000C80082608093C80088E18093C9008091B8
:10DD9000CA008F778093CA008091CA008F7B8093DE
:10DDA000CA008091CA0080628093CA008091CA0034
:10DDB00080618093CA008091CA0088608093CA0005
:10DDC0008091C90084608093C9008091CA008460FA
:10DDD0008093CA008091CA0082608093CA008091BB
:10DDE000C80087FF03C08091CE00F9CF8091C900A1
:10DDF00080688093C9008091C90080648093C900C5
:10DE00000E94986ECFBFCF910895282F99278F70C9
:10DE10009070892B31F420958091B203822B8093EE
:10DE2000B20308958091F001882309F441C08091E4
:10DE30007D0285FF0AC082E98093210883E28093F6
:10DE4000220885E58093230802C010922108809162
:10DE5000F1018F3071F48091B2030E94AD6B882381
:10DE600041F081E9809321088093220881E3809327
:10DE700023081092F0018091C80085FFFCCF8091AB
:10DE8000C9008F7E8093C9008091C9008E7F8093E6
:10DE9000C90080912108882311F48EEF01C08EE71C
:10DEA0008093CE008091B2038093F1011092B2036F
:10DEB00008951F920F920FB60F9211248F939F9384
:10DEC000EF93FF939091F001992309F040C0809166
:10DED000BB03882361F480912108882311F483E037
:10DEE00003C0813999F481E08093BB030FC0833074
:10DEF00099F480912108882349F09093210880911A
:10DF0000C9008E7F8093C9008EEF1EC08091C9002A
:10DF100081608093C9000EC0833261F48091C90092
:10DF20008E7F8093C9008FEF8093CE0081E0809335
:10DF3000F00114C08091BB03E82FFF27EF5DF74F7E
:10DF40008F5F8093BB0380818093CE0007C01092C7
:10DF5000BB038091C90080618093C900FF91EF915C
:10DF60009F918F910F900FBE0F901F901895EF9279
:10DF7000FF920F931F93CF93DF937C018B01EA01F4
:10DF8000452B39F0F80181918F01F701099521970F
:10DF9000C9F7E6E0CDB7DEB70C949477EF92FF9225
:10DFA0000F931F93CF93DF937C018B01EA01452BE5
:10DFB00041F0F8010F5F1F4F8491F70109952197F8
:10DFC000C1F7E6E0CDB7DEB70C9494770F931F93BB
:10DFD000CF938C01C62F161634F480E2F801099510
:10DFE000C1501C16D4F3CF911F910F9108950F9338
:10DFF0001F93CF938C01C62F161634F480E3F801DB
:10E000000995C1501C16D4F3CF911F910F9108951B
:10E01000A5E3B0E0EEE0F0E70C946C772E96EEAD61
:10E02000FFAD2E978824992454018091B103882351
:10E0300021F42C961FAE1EAE2C975EE4452E512C7B
:10E040004C0E5D1E6F01B60105C0153239F0089403
:10E05000C11CD11CF60114911123B9F7A601461B6E
:10E06000570B31F02C968EAD9FAD2C970E94CE6F42
:10E07000112309F46AC20894C11CD11CFF24FDA617
:10E08000FCA64FEFE42EF9A6F6010894C11CD11CA2
:10E090001491153721F0812F80628837B1F4F0FE9A
:10E0A0000AC0F20124E030E0420E531E80809180CD
:10E0B000A280B3800AC0F20142E050E0440E551E37
:10E0C000808191814C01AA24BB24103221F489A5BE
:10E0D0008823D1F61DC0133219F458E0F52AD4CFA5
:10E0E0001A3211F01D3291F41A3259F4F20182E021
:10E0F00090E0480E591EE081ECA7EE232CF6E19546
:10E10000ECA790E1F92AAFEDFA22BECF1B3211F451
:10E1100019A7BACF1E32C1F5F6010894C11CD11C53
:10E1200014911A3279F4F20122E030E0420E531ECB
:10E13000408151813FEF4F3F530714F44FEF5FEFA2
:10E14000E42EA2CF40E050E0812F80538A30A0F42B
:10E15000CA0133E0880F991F3A95E1F7840F951FA4
:10E16000480F591F410F511D40535040F60108946C
:10E17000C11CD11C1491E8CF8FEF4F3F580714F406
:10E180004FEF5FEFE42E85CF103329F4F4FC7CCF02
:10E1900090E2F92A79CF812F81538930D8F440E079
:10E1A00050E0CA0123E0880F991F2A95E1F7840FF8
:10E1B000951F480F591F410F511D40535040F60104
:10E1C0000894C11CD11C1491812F80538A3048F3CC
:10E1D0004CA75FCF183619F4A4E0FA2A55CF1C36A5
:10E1E00019F4B1E0FB2A50CF133661F43E010894D4
:10E1F000611C711CF20122E030E0420E531E80814E
:10E2000089833CC1143421F0143611F0193651F5CC
:10E21000143411F431E0F32AF0FE0AC0F20144E0B4
:10E2200050E0440E551E80809180A280B3800CC0C7
:10E23000F20182E090E0480E591E808191814C01EC
:10E24000AA2497FCA094BA2CB7FE0AC0B094A0945C
:10E2500090948094811C911CA11CB11C8DE289A713
:10E260000AE06FC01F3411F01F3631F41F3411F46F
:10E2700091E0F92A08E064C0103779F4F201A2E0D5
:10E28000B0E04A0E5B1E808191814C01AA24BB2420
:10E2900000E1B0E4FB2A18E753C01337C1F5F201DF
:10E2A00022E030E0420E531E6080718061147104E0
:10E2B00089F43E010894611C711C88E289838EE612
:10E2C000F301818385E78B838CE68C838D8389E2E0
:10E2D0008E831F82E7FC13C08E2D992787FD9095B2
:10E2E000AC0160E070E0C3010E943975009729F02D
:10E2F000382E3618E3140CF0C3C03E2CC1C0F30115
:10E3000001900020E9F731973E2E3618B9C0153537
:10E3100011F0153731F4153511F4F1E0FF2A0AE058
:10E320000FC0183519F0183709F0A0C000E1F3FE4E
:10E3300007C081149104A104B10411F020E4F22A71
:10E3400019A6EDA6E7FC02C03FEDF32289E2682E94
:10E35000712C6C0E7D1E81149104A104B10421F472
:10E360004DA5442309F47BC0802F9927AA27BB27FA
:10E370008EA79FA7A8ABB9AB202E332490E08916B7
:10E3800090E0990691E0A90690E0B90648F0C50131
:10E39000B4012EA53FA548A959A90E942F7717C0FF
:10E3A000AFEF8A169104A104B10449F040F0C40112
:10E3B000B1010E9408779B014427552708C0882D8A
:10E3C000602F0E94FC76282F3327442755272AAB3D
:10E3D0003BAB4CAB5DAB0A3059F48AA9880F880F70
:10E3E000880F9AA9990F890F382D381B832F10C0D9
:10E3F000003139F48AA98295807F482D481B842FEB
:10E4000007C08AA9880F880F880F582D581B852FA1
:10E4100090E02EA53FA548A959A982169306A40607
:10E42000B50608F091E08AA89BA8ACA8BDA88A30E0
:10E4300010F4805D04C0895A183509F48F7DD3012A
:10E440008E933D01992309F099CF083041F4F3FEF2
:10E4500006C0803321F080E3FD0182933F01CE01AD
:10E460000196382E3618F8E23F0E0BC0112309F43E
:10E470006CC03E010894611C711C1983B1E03B2EF5
:10E4800019A6032D2DA4231827FC222489A588234F
:10E4900011F00F5F02C0F6FC0E5F020DEF2CFF249F
:10E4A000C70180739070892B49F48CA5801B682F5D
:10E4B0002C968EAD9FAD2C970E94E66F89A5882380
:10E4C00031F041E050E0BE01675D7F4F0AC0E6FEDB
:10E4D0000EC080E38AA71BA742E050E0BE01665D44
:10E4E0007F4F2C968EAD9FAD2C970E94B76FC701C2
:10E4F00080739070809749F48CA5801B682F2C96B0
:10E500008EAD9FAD2C970E94F76F622D2C968EAD2D
:10E510009FAD2C970E94F76F832D992787FD9095CB
:10E52000AC01B3012C968EAD9FAD2C970E94B76FB6
:10E53000E4FE89CD2CA5201B2CA7622F2C968EAD36
:10E540009FAD2C970E94E66F7ECDE2E1CB5C0C94F0
:10E5500088772FB740E0F894E0E0F0E081E2809324
:10E5600057009491E2E0F0E0809357003491E4E0AA
:10E57000F0E08093570084912FBF9E3199F4363993
:10E5800041F4893011F441E00DC08A3059F442E081
:10E5900009C0373939F4863011F443E003C08530BF
:10E5A00009F444E0842F992708959FB7F894809147
:10E5B000C900877F8093C9008091C9008F7E8093B6
:10E5C000C9008091C9008F778093C9008091C900EC
:10E5D0008F7B8093C9008091C9008F7D8093C90093
:10E5E00052985A9A53985B9A9FBF08951F93CF935E
:10E5F000DF93182F8091B103882309F48DC0809197
:10E60000EF01181709F488C08091B003882321F422
:10E610000E94A9728093B0038AEC9CE09F938F9331
:10E62000C0EFD2E1DF93CF93E091BC03F091BD0343
:10E6300009950F900F900F900F90812F992782309E
:10E64000910501F1833091052CF4009761F0019759
:10E6500069F024C084309105D9F084309105ACF084
:10E660000597C9F01BC08AEB9CE002C088EA9CE0D9
:10E670009F938F93DF93CF93E091BC03F091BD0301
:10E68000099518C08FE89CE0F3CF8CE69CE0F0CFB2
:10E690008EE59CE0EDCF86E59CE0EACF87ED9CE03F
:10E6A0009F938F93DF93CF93E091BC03F091BD03D1
:10E6B000099510E00F900F900F900F908091B0038C
:10E6C000843011F0823099F40E94D572812F8150EC
:10E6D000833018F40E9437671DC0143019F40E946B
:10E6E000A16E18C01530B1F40E94D66C13C011236E
:10E6F00089F08DEE9CE09F938F9380EF92E19F9342
:10E700008F93E091BC03F091BD0309950F900F909A
:10E710000F900F901093EF01DF91CF911F9108950B
:10E720000F931F9381E08093B1034091EE01E6E0E7
:10E73000FCE020E030E05FE4849199272F5F3F4FB9
:10E74000829FB001839F700D929F700D1124462708
:10E750005150319657FFF0CF4093EE01EEEDFBE0C4
:10E7600020E030E057E2849199272F5F3F4F829F4E
:10E77000B001839F700D929F700D11244627515058
:10E78000319657FFF0CF4093EE018091B00388237C
:10E7900021F40E94A9728093B0038091EE0183342A
:10E7A00059F088E190E029E20FB6F894A89580939B
:10E7B00060000FBE2093600088E090E79093BD0357
:10E7C0008093BC0388E09DE09F938F9300EF12E15C
:10E7D0001F930F93E091BC03F091BD0309950F9037
:10E7E0000F900F900F9081E690E09F938F9382E5BA
:10E7F00090E09F938F931F921F92809102016AE095
:10E800000E94FC76892F99279F938F938091020114
:10E810000E94FC7699279F938F938EE29DE09F93B1
:10E820008F931F930F93E091BC03F091BD03099563
:10E8300086E09CE09F938F931F930F93E091BC031E
:10E84000F091BD0309958EED9BE09F938F931F93ED
:10E850000F93E091BC03F091BD0309958DB79EB76E
:10E8600046968DBF82E69DE09F938F931F930F93F3
:10E87000E091BC03F091BD03099582EC8093810087
:10E8800080916F00806280936F000F900F900F90C7
:10E890000F901F910F9108958091B103882361F02B
:10E8A0008091EF01843011F40E94126F8091EE018B
:10E8B000833411F01092B10308951F920F920FB696
:10E8C0000F9211242F933F934F935F936F937F93F6
:10E8D0008F939F93AF93BF93EF93FF932091CE00BD
:10E8E0008091FA018823B1F02093C6008091FA014B
:10E8F000823029F52F3F19F58FEF94E3ACE0B0E0BB
:10E90000C297A109B109B7FFFBCF8091FF038093A4
:10E91000CE0015C09091EF01892F8150833020F4F3
:10E92000822F0E9492670BC0943021F4822F0E94A4
:10E93000056F05C0953019F4822F0E94446EFF9137
:10E94000EF91BF91AF919F918F917F916F915F9167
:10E950004F913F912F910F900FBE0F901F901895E0
:10E96000002422273327442751E0BB27EE27FF2727
:10E97000A0E1660F771F881F991F001C221F331FFD
:10E98000441F660F771F881F991F001C221F331F0B
:10E99000441F2AF4050E2B1F3E1F4F1F04C0051AEB
:10E9A0002B0B3E0B4F0B550FBB1FEE1F587F5560B7
:10E9B00047FD5250AA95E9F6E695B7955795E69525
:10E9C000B7955795852F9B2F08952227332741E030
:10E9D000552768E0880F991F221F331F880F991F42
:10E9E000221F331F1AF4240F351F02C0241B350BBE
:10E9F000440F551F487F456037FD42506A9551F7D7
:10EA00005695479556954795842F0895AA2797FFC1
:10EA100004C0809590958A1F9A1F77FF04C0609567
:10EA200070956A1F7A1F669F9001779FA001679F6C
:10EA3000300D411D5A1F300D411D5A1F889FF00196
:10EA4000999F2E0F3F1F401D511D899F300D411D65
:10EA50005A1F300D411D5A1FCA01B901112480CF20
:10EA6000FB01DC0102C005900D9241505040D8F7E7
:10EA70000895FC014150504030F001900616D1F746
:10EA80003197CF010895882799270895A0E0B0E035
:10EA9000ECE4F5E70C9474776C017B01EA01590111
:10EAA00021978FEFCF3FD80789F086010894C11CCA
:10EAB000D11CC7010894E11CF11CF5010995F8016E
:10EAC00080832197FFEFCF3FDF0779F7EAE0CDB7EB
:10EAD000DEB70C949077CF92DF92EF92FF920F9374
:10EAE0001F937C016B01FB010995082FC70101965B
:10EAF000F6010995182FC8011F910F91FF90EF9013
:10EB0000DF90CF900895A0E0B0E0E9E8F5E70C943D
:10EB100076778C017B01EA01690121978FEFCF3F66
:10EB2000D80771F0F70121917F01C8010F5F1F4FD6
:10EB3000622FF60109952197FFEFCF3FDF0791F78D
:10EB4000E8E0CDB7DEB70C949277CF92DF92EF92E8
:10EB5000FF920F931F936C018B017A01FA010995C3
:10EB6000812F9927682FC6010196F70109951F91FA
:10EB70000F91FF90EF90DF90CF9008955058BB27F2
:10EB8000AA270ED0E0C0D1D030F0D6D020F031F49A
:10EB90009F3F11F41EF4C6C00EF4E095E7FBBCC025
:10EBA000E92FE2D080F3BA1762077307840795074D
:10EBB00018F071F49EF5FAC00EF4E0950B2EBA2F02
:10EBC000A02D0B01B90190010C01CA01A001112473
:10EBD000FF27591B99F0593F50F4503E68F11A161F
:10EBE000F040A22F232F342F4427585FF3CF4695B0
:10EBF00037952795A795F0405395C9F77EF41F16D2
:10EC0000BA0B620B730B840BBAF09150A1F0FF0F9B
:10EC1000BB1F661F771F881FC2F70EC0BA0F621F87
:10EC2000731F841F48F4879577956795B795F79577
:10EC30009E3F08F0B3CF9395880F08F09927EE0F09
:10EC400097958795089598D088F09F5790F0B92FA1
:10EC50009927B751A0F0D1F0660F771F881F991F31
:10EC60001AF0BA95C9F712C0B13081F09FD0B1E067
:10EC700008959CC0672F782F8827B85F39F0B93F77
:10EC8000CCF3869577956795B395D9F73EF4909533
:10EC90008095709561957F4F8F4F9F4F0895E894B1
:10ECA00009C097FB3EF490958095709561957F4FD4
:10ECB0008F4F9F4F9923A9F0F92F96E9BB27939582
:10ECC000F695879577956795B795F111F8CFFAF492
:10ECD000BB0F11F460FF1BC06F5F7F4F8F4F9F4FC3
:10ECE00016C0882311F096E911C0772321F09EE821
:10ECF000872F762F05C0662371F096E8862F70E087
:10ED000060E02AF09A95660F771F881FDAF7880F60
:10ED10009695879597F9089597F99F6780E870E031
:10ED200060E008959FEF80EC089500240A94161681
:10ED3000170618060906089500240A9412161306E9
:10ED4000140605060895092E0394000C11F4882377
:10ED500052F0BB0F40F4BF2B11F460FF04C06F5F93
:10ED60007F4F8F4F9F4F089557FD9058440F551F69
:10ED700059F05F3F71F04795880F97FB991F61F03D
:10ED80009F3F79F087950895121613061406551FB4
:10ED9000F2CF4695F1DF08C0161617061806991F20
:10EDA000F1CF86957105610508940895E894BB2715
:10EDB00066277727CB0197F90895629FD001739F4B
:10EDC000F001829FE00DF11D649FE00DF11D929F07
:10EDD000F00D839FF00D749FF00D659FF00D992746
:10EDE000729FB00DE11DF91F639FB00DE11DF91F6A
:10EDF000BD01CF0111240895991B79E004C0991F2A
:10EE0000961708F0961B881F7A95C9F78095089584
:10EE1000AA1BBB1B51E107C0AA1FBB1FA617B70740
:10EE200010F0A61BB70B881F991F5A95A9F780955C
:10EE30009095BC01CD01089597FB092E07260AD0B5
:10EE400077FD04D0E5DF06D000201AF470956195B7
:10EE50007F4F0895F6F7909581959F4F0895A1E211
:10EE60001A2EAA1BBB1BFD010DC0AA1FBB1FEE1F44
:10EE7000FF1FA217B307E407F50720F0A21BB30B8F
:10EE8000E40BF50B661F771F881F991F1A9469F70B
:10EE900060957095809590959B01AC01BD01CF0167
:10EEA000089597FB092E05260ED057FD04D0D7DF15
:10EEB0000AD0001C38F450954095309521953F4F6D
:10EEC0004F4F5F4F0895F6F7909580957095619537
:10EED0007F4F8F4F9F4F08952F923F924F925F9297
:10EEE0006F927F928F929F92AF92BF92CF92DF925A
:10EEF000EF92FF920F931F93CF93DF93CDB7DEB7BF
:10EF0000CA1BDB0B0FB6F894DEBF0FBECDBF099452
:10EF10002A88398848885F846E847D848C849B84A9
:10EF2000AA84B984C884DF80EE80FD800C811B81B7
:10EF3000AA81B981CE0FD11D0FB6F894DEBF0FBEE6
:10EF4000CDBFED010895EE0FFF1F0590F491E02D68
:04EF50000994FFCF52
:10EF54005E010A010164FF01FFFFC01FC01F010120
:10EF640001737373FF03007D0000C409C4096400C6
:10EF74001148656C6C6F20576F726C640000000060
:10EF8400000000000000000000000000000000007D
:10EF9400000000000000000000000000000000006D
:10EFA400000000000000000000000000000000005D
:10EFB400000000000000000000000000000000004D
:10EFC4000053706F727400004E6F726D616C0000BC
:10EFD400426567696E6E6572000051756164726F97
:10EFE4000000640001200B050000ECFF0002040691
:10EFF400070808080706040200FEFCFAF9F8F8F806
:10F00400F9FAFCFE000204060708086440415A4667
:10F0140064640A02969696960840403A10FB30388B
:10F024000190D0030090D00300F4017800FF036442
:10F034000B0A0D0B0C0E0B0F10FA2001010170FFCF
:02F04400010FBA
:00000001FF
/branches/metro/v0.82a metro_Akku+/Hex-Files/Flight-Ctrl_MEGA644_V0_82a.hex
0,0 → 1,3892
:100000000C94BB060C9401070C9401070C94010797
:100010000C9401070C9401070C9401070C94010740
:100020000C9401070C9441190C9401070C940107DE
:100030000C9404340C9401070C9401070C940107F0
:100040000C9401070C9401070C9411160C940107F1
:100050000C942C0C0C9401070C94F60B0C940107D7
:100060000C94FD1B0C9401070C94972F0C94010722
:100070000C94C4750C9401070C94C070281C2D1CA2
:10008000321C3B1C521C691C791C891CA61C921E2C
:10009000691C541D651D941DB21DCF1D291E841E93
:1000A0006220F420B12131229A224A235125AE2523
:1000B0001B266526B026FD264E27B0270F28A92827
:1000C00044293E2AB62FEA2F2D309D30B530F63028
:1000D000AD317432743274327432743274327432B8
:1000E000743274327432743229322B3230324832E4
:1000F0004A320A0D426174743A0020256420436537
:100100006C6C732000204C6F77207761726E696E83
:1001100067206C6576656C3A2025642E2564000A9C
:100120000D466F756E6420424C2D4374726C3A20FC
:10013000002564000A0D0A0D2121204D4953534921
:100140004E4720424C2D4354524C3A2025642021E6
:1001500021000A0D3D3D3D3D3D3D3D3D3D3D3D3D8B
:100160003D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3DBF
:100170003D3D3D3D3D3D3D000A0D43616C69627270
:100180006174696E67207072657373757265207330
:10019000656E736F722E2E004F4B0A0D000A0D46CE
:1001A0006C696768742D74696D65202575206D69AB
:1001B0006E2020546F74616C3A2575206D696E0055
:1001C0000A0D436F6E74726F6C3A2000486561646B
:1001D000696E67486F6C64004E6F726D616C2028A9
:1001E0004143432D4D6F646529000A0D3D3D3D3D62
:1001F0003D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D2F
:100200003D3D3D3D3D3D3D3D3D3D3D3D3D3D3D0A51
:100210000D00416E676C654E69636B2020202020C5
:100220002020416E676C65526F6C6C20202020206E
:1002300020204163634E69636B2020202020202012
:100240002020416363526F6C6C20202020202020EE
:1002500020205961774779726F20202020202020AC
:1002600020204865696768742056616C7565202098
:1002700020204163635A202020202020202020209D
:1002800020204761732020202020202020202020B3
:100290002020436F6D706173732056616C7565200B
:1002A0002020566F6C74616765205B302E31565D7F
:1002B00020205265636569766572204C6576656CB1
:1002C00020204779726F20436F6D70617373202017
:1002D00020204D6F746F722031202020202020209C
:1002E00020204D6F746F722032202020202020208B
:1002F00020204D6F746F722033202020202020207A
:1003000020204D6F746F7220342020202020202068
:1003100020203136202020202020202020202020B6
:1003200020203137202020202020202020202020A5
:100330002020313820202020202020202020202094
:100340002020313920202020202020202020202083
:100350002020536572766F2020202020202020202E
:100360002020486F7665726761732020202020204E
:10037000202043757272656E74205B302E31415DB2
:1003800020204361706163697479205B6D41685D11
:100390002020323420202020202020202020202037
:1003A0002020323520202020202020202020202026
:1003B0002020323620202020202020202020202015
:1003C0002020323720202020202020202020202004
:1003D00020204932432D4572726F72202020202048
:1003E0002020424C204C696D697420202020202060
:1003F00020204750535F4E69636B2020202020202F
:1004000020204750535F526F6C6C2020202020200A
:10041000202021212120494E434F4D504154494233
:100420004C4520212121002E000A0D20444143206B
:100430006F7220493243204552524F522120436867
:1004400065636B204932432C2033567265662C203D
:1004500044414320616E6420424C2D4374726C0011
:100460005B25695D005B25695D002B204D696B7222
:100470006F4B6F70746572202B0048573A56256495
:100480002E25642053573A25642E25642563005396
:10049000657474696E673A2564202573004861723B
:1004A0006477617265204572726F7220313A2564FB
:1004B000202121004D697373696E6720424C2D43E2
:1004C00074726C3A25642121004D6978657220456B
:1004D00072726F722100493243204552524F5221AD
:1004E0002121004865696768743A20202535690034
:1004F000536574706F696E743A2535690050726582
:1005000073737572653A253569004F666673657455
:100510003A20202535690048656967687420636F53
:100520006E74726F6C0044495341424C454400481C
:10053000656967687420636F6E74726F6C004449FC
:100540005341424C4544006163742E2062656172E0
:10055000696E67004E69636B3A20202020202025B9
:10056000356900526F6C6C3A202020202020253500
:100570006900436F6D706173733A202020253569DF
:10058000004B313A25346920204B323A253469201A
:10059000004B333A25346920204B343A2534692006
:1005A000004B353A25346920204B363A25346920F2
:1005B000004B373A25346920204B383A25346920DE
:1005C000004E693A2534692020526F3A253469205B
:1005D0000047733A253469202047693A2534692059
:1005E0000050313A253469202050323A25346920B0
:1005F0000050333A253469202050343A253469209C
:10060000004779726F202D2053656E736F72004E14
:1006100069636B25346920282533692E25692900F3
:10062000526F6C6C25346920282533692E25692981
:100630000047696572253469202825336929004EF1
:1006400069636B2025346920282533692E25782994
:1006500000526F6C6C2025346920282533692E25C3
:1006600078290059617720202534692028253369AD
:1006700029004E69636B20253469202825336929B8
:10068000282533692900526F6C6C20253469202895
:1006900025336929282533692900596177202025C8
:1006A00034692028253369292825336929004143E5
:1006B00043202D2053656E736F72004E69636B206B
:1006C00025346920282533692900526F6C6C202558
:1006D0003469202825336929005A20202020253418
:1006E0006920282533692900566F6C746167653A63
:1006F0002020202533692E253169560043757272FA
:10070000656E743A2020202533692E253169410019
:10071000506F7765723A20202020202534695700D9
:100720004469736368617267653A202535696D4174
:10073000680052656365697665720052432D5253B5
:1007400053493A202020202534690052432D517509
:10075000616C6974793A202534690052432D4368ED
:10076000616E6E656C733A25346900436F6D70611C
:1007700073730048656164696E673A2020253569A6
:100780000056616C75653A2020202025356900539C
:10079000746172743A2020202025356900506F74EE
:1007A00069313A202025336900506F7469323A204C
:1007B0002025336900506F7469333A20202533694E
:1007C00000506F7469343A202025336900506F74EB
:1007D00069353A202025336900506F7469363A2014
:1007E0002025336900506F7469373A20202533691A
:1007F00000506F7469383A202025336900536572C0
:10080000766F202000536574706F696E7420202508
:10081000336900506F736974696F6E3A20253369CC
:100820000052616E67653A2533692D2533690045AD
:10083000787465726E436F6E74726F6C2020004E18
:10084000693A2534692020526F3A253469200047DF
:10085000733A253469202047693A253469200048D5
:10086000693A253469202043663A253469200042DC
:100870004C2D4374726C204572726F727320002588
:10088000336420253364202533642025336420001D
:1008900025336420253364202533642025336420E8
:1008A00000253364202533642025336420253364F8
:1008B0002000424C2054656D7065726174757265DC
:1008C00000253369202533692025336920253369C4
:1008D00020002533692025336920253369202533FD
:1008E00069200025336920253369202533692025B7
:1008F00033692000424C2D4374726C20666F756E14
:1009000064200020256320202025632020202563EB
:10091000202020256320002025632020202563201F
:10092000202025632020202563200020256320200F
:10093000202D2020202D2020202D2000313000319E
:100940003100313200466C696768742D54696D65F9
:10095000202000546F74616C3A2535756D696E0006
:100960004163743A20202535756D696E00287265E3
:1009700073657429000A0D47656E65726174696E4E
:10098000672064656661756C7420506172616D6585
:1009900074657220536574202564000A0D557369CF
:1009A0006E6720506172616D657465722053657465
:1009B000202564000A0D47656E65726174696E6773
:1009C0002064656661756C74204D69786572205489
:1009D00061626C65000A0D4D697865722D436F6E1A
:1009E0006669673A202725732720282575204D6FD3
:1009F000746F727329000A0D3D3D3D3D3D3D3D3D07
:100A00003D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D16
:100A10003D3D3D3D3D3D000A0D414343206E6F7419
:100A20002063616C69627261746564210D0A000063
:100A3000008F001E01AD013B02CA025803E6037499
:100A40000402058F051B06A7063307BE074808D218
:100A5000085B09E3096B0AF20A780BFD0B810C04B1
:100A60000D860D070E870E060F840F00107B10F504
:100A7000106E11E5115B12CF124213B313231492BF
:100A800014FE146A15D3153B16A11605176717C86F
:100A90001727188318DE1837198E19E319361A87A5
:100AA0001AD61A231B6E1BB61BFD1B411C831CC3CD
:100AB0001C001D3C1D751DAB1DE01D121E421E6F4E
:100AC0001E9A1EC31EE91E0D1F2E1F4D1F691F8477
:100AD0001F9B1FB01FC31FD31FE11FEC1FF51FFB80
:100AE0001FFF1F002003010000966A000201018918
:100AF0006B010302021D6C020003037A6C2532694C
:100B00002E25316956002533642563202530336452
:100B10006D00537461747573004552524F523A2000
:100B200025326400253469202532693A253032693E
:100B3000002534696D25630025336920253369203C
:100B40002533692025336900253369202533692041
:100B5000253369202533690054656D7065726174B1
:100B600075726573202020200025634320202020FB
:100B700020002532692E2531695620202533692E23
:100B8000253169410025346957202536696D416852
:100B9000002532756D2F73205361743A256420004F
:100BA00020203344004E6F4678004447505300489D
:100BB0006F6D653A2533646D202533642563004EDF
:100BC0006F204E6176694374726C21000A0D77774D
:100BD000772E4D696B726F4B6F707465722E646502
:100BE0002028632920486953797374656D73204701
:100BF0006D6248000A0D74686520757365206F6624
:100C0000207468697320736F6674776172652069F8
:100C100073206F6E6C79207065726D697474656491
:100C2000200A0D6F6E206F726967696E616C204DCE
:100C3000696B726F4B6F707465722D486172647767
:100C4000617265004143542044534C004A65746905
:100C500020736174656C6C6974005370656B747299
:100C6000756D20736174656C6C697420284C6F77A6
:100C7000207265736F6C7574696F6E2900537065AF
:100C80006B7472756D20736174656C6C6974202867
:100C90003230343829005370656B7472756D20736F
:100CA0006174656C6C6974004D756C746973696707
:100CB0006E616C2050504D000A0D52656365697677
:100CC00065723A2000756E6B6E6F776E2E205573CD
:100CD000696E672050504D2E2E2E006E6F7420735B
:100CE0007570706F727465642062792068617264D7
:100CF0007761726521000A0D3D3D3D3D3D3D3D3D25
:100D00003D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D13
:100D10003D3D3D3D3D3D3D3D3D3D3D000A0D466C6B
:100D200069676874436F6E74726F6C0A0D48617204
:100D300064776172653A25642E25640A0D536F66E7
:100D400074776172653A5625642E25642563200008
:100D50000A0D3D3D3D3D3D3D3D3D3D3D3D3D3D3D26
:100D60003D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3DB3
:100D70003D3D3D3D3D0011241FBECFEFD0E1DEBF24
:100D8000CDBF11E0A0E0B1E0E2E2F2EF02C00590D9
:100D90000D92A23FB107D9F718E0A2EFB1E001C070
:100DA0001D92A43BB107E1F76AEAE2E0F0E081E2DC
:100DB000809357007491AE014F5F5F4F20EF37EF84
:100DC000DA019FE0F9012F5F3F4F84918D9391509D
:100DD00097FFF8CF773911F40000FECFFA019EE0BB
:100DE000819168276095915097FFFACF888968179D
:100DF00021F0773911F40000FECF0E94C2070C9455
:100E000010790C94000080911906E82FFF27EE0F4F
:100E1000FF1FED5BF84F808191818D5E9F4F14F035
:100E200010920301808191818A5B9F4FCCF4809165
:100E300003018823A9F481E08093030180915C047D
:100E40008F5F80935C04853038F088EE93E0909358
:100E500025028093240204C066E970E00E946E3788
:100E600080915C0499279093EA058093E9050895A1
:100E70001F93CF93DF93182F882389F082EF90E0A0
:100E80009F938F9386EF92E19F938F93E091280435
:100E9000F091290409950F900F900F900F90809179
:100EA0003C06823308F044C084EF91E00E941C1796
:100EB000EC01112329F0CE010E9425178823D9F3D4
:100EC000C2E0D0E026E530E080911E0190911F0144
:100ED0008217930730F02196255D3F4FC730D1052B
:100EE00098F380913C069927C89F9001C99F300DC7
:100EF000D89F300D1124209300011123D9F068EC04
:100F000070E08C2F0E946E37DF93CF938AEF90E0D2
:100F10009F938F9386EF92E19F938F93E0912804A4
:100F2000F091290409958DB79EB706968DBF02C032
:100F300080930001112311F1809100016AE00E9469
:100F40006378892F99279F938F93809100010E9446
:100F5000637899279F938F9385E091E09F938F9378
:100F600086EF92E19F938F93E0912804F0912904FA
:100F700009952DB73EB7285F3F4F2DBFDF91CF9129
:100F80001F910895CFEFD0E1DEBFCDBF8824992413
:100F900014B815B807EE13E00253104017FFFCCF4A
:100FA000189B06C0199B02C08DE007C08BE005C0EE
:100FB000199B02C084E101C08AE08093020181E8AC
:100FC00087B93E9A8FEF88B98BE184B981E085B902
:100FD0008EE38AB987E48BB9469A84B7877F84BF4A
:100FE000809160008861809360001092600084ECC2
:100FF00099E0909325028093240210921803109296
:101000001703109248071092470710921A03109284
:10101000190310921C0310921B032091020124312A
:1010200028F084EC94E0A0E0B0E004C08BE095E010
:10103000A0E0B0E08093960190939701A09398016F
:10104000B09399012A3011F0243110F0289801C092
:10105000289A0E9485170E9456170E94FE120E942D
:10106000E8330E94B51A81E00E944B2F0E943E6334
:101070000E94696D0E94F774809102018C3010F417
:10108000299A01C0299878940E94652E80916C025B
:10109000826080936C0210926F020E94904284EFF3
:1010A00091E00E941C178C0180916C0280FD05C0AC
:1010B000C8010E9425178823B9F38FE191E09F931F
:1010C0008F93B6EFAB2EB2E1BB2EBF92AF92E09101
:1010D0002804F0912904099580EA9FE00E941C17DA
:1010E0008C01C0E0D0E00F900F900F900F90A5EE14
:1010F000EA2EA6E0FA2EF9E9CF2EF6E0DF2E0E94C6
:10110000904280916C0280FD05C0C8010E942517A5
:101110008823B9F3F60180811816ACF40BC00E9445
:10112000904280916C0280FD05C0C8010E94251785
:101130008823B9F3C8010E942517882321F4F701F9
:101140008081882364F7F701808187FF18C021968A
:10115000DF93CF93219781E391E09F938F93BF9289
:10116000AF92E0912804F091290409958091F20151
:101170008F5F8093F2018DB79EB706968DBF219643
:10118000E4E0F0E0CE0EDF1E88E090E0E80EF91E0D
:10119000CC30D10508F4B3CFC0E0D0E002EE16E0C9
:1011A000E9E9EE2EE6E0FE2EF801838187FD1CC002
:1011B000F70180811816C4F42196DF93CF9321970D
:1011C00084E391E09F938F9386EF92E19F938F93B7
:1011D000E0912804F0912904099582E0809322028D
:1011E0008DB79EB706968DBFF80183818078838383
:1011F000219684E090E0E80EF91E085F1F4FCC3086
:10120000D10590F282E591E09F938F93C6EFD2E1F2
:10121000DF93CF93E0912804F091290409959091F0
:1012200017068091F2010F900F900F900F90981772
:1012300028F48091420480618093420488E791E021
:101240009F938F93DF93CF93E0912804F09129042B
:10125000099588EE93E00E941C178C010E94BB1A2E
:101260000F900F900F900F90C8010E9425178823B0
:10127000D9F388E991E09F938F93DF93CF93E09127
:101280002804F0912904099580E00E94303880916B
:1012900002010F900F900F900F908A3011F084315F
:1012A00010F0289801C0289A80ED97E090932502CD
:1012B0008093240285E580935E048EE090E00E9496
:1012C0009A2C9927182F00278FE090E00E949A2CE3
:1012D000080F111D1093F8010093F7018AE090E0C8
:1012E0000E949A2C9927182F00278BE090E00E94EB
:1012F0009A2C080F111D1093F6010093F5010F5F52
:101300001F4F39F08091F7019091F8018F5F9F4F47
:1013100041F41092F8011092F7011092F601109228
:10132000F5018091F5019091F6019F938F93809143
:10133000F7019091F8019F938F938DE991E09F932E
:101340008F93DF93CF93E0912804F09129040995BE
:101350008DB79EB708968DBF80EC91E09F938F93D9
:10136000DF93CF93E0912804F091290409958091AF
:1013700025060F900F900F900F90E0912804F091A8
:10138000290482FF07C08CEC91E09F938F93DF9339
:10139000CF9308C088ED91E09F938F9386EF92E101
:1013A0009F938F9309950F900F900F900F900E942D
:1013B000D91F88E893E1909393018093920181E093
:1013C00080935D040E94380780913F060E945D74FF
:1013D0008AEE91E09F938F93DF93CF93E09128045F
:1013E000F0912904099580ED97E00E941C178C016B
:1013F0008AEF90E00E941C17EC0183E08093C10506
:101400000F900F900F900F908091FA018111FFCFF4
:10141000CE010E942517882339F084E690E00E94CF
:101420001C17EC010E94B37580912802882309F4EF
:10143000D5C180911001882309F4D0C110922802EF
:1014400080915C04882319F00E94030702C00E9467
:101450006A450E949042209102012A3011F0243105
:1014600010F0289801C0289A80911D0390914204A1
:10147000882339F080911D03815080931D03977F4D
:101480000AC080916F00806280936F0010924407C1
:10149000109243079860909342048091920190913A
:1014A000930101979093930180939201809192010F
:1014B00090919301892B21F080916D028823C9F1CD
:1014C0008091920190919301892BD9F40E94752FFC
:1014D00085E090E090939301809392018091FB05C9
:1014E0009091FC0501969093FC058093FB058091FB
:1014F00042048160809342048091C205826080939F
:10150000C20580910801909109018F5F9F4F19F5E5
:10151000809114038823F9F080E197E290932502EB
:101520008093240280E890E0909309018093080161
:1015300012C02A3011F0243110F0289801C0289AE6
:101540008091240290912502892B29F480914204F4
:101550008E7F8093420480912802882309F03EC147
:1015600080910E01882311F00E949C170E94411364
:101570000E947C0EC8010E942517882309F42AC105
:101580000C5E1F4F80916D0290914204882339F0C8
:101590009260909342048091C20582600CC09D7F4E
:1015A000909342048091920190919301079728F0C3
:1015B0008091C2058D7F8093C205809192019091A8
:1015C0009301079728F0809142048E7F8093420414
:1015D00080910501882321F081508093050125C069
:1015E000809368041092F5021092F4021092F302B4
:1015F0001092F2021092F1021092F0028091080112
:10160000909109018F5F9F4F81F480911D03882382
:1016100061F488E99AE3909325028093240280E0A4
:101620009CE090930901809308018091E901893C35
:1016300048F081508093E901809142048B7F809330
:10164000420430C0809121088823E1F08091420457
:1016500084608093420480910801909109018F5F1A
:101660009F4F81F480911403882361F088E99AE305
:10167000909325028093240280E098EA90930901D8
:10168000809308011092FA031092F9031092F80364
:101690001092F7038FEF9FEF90934F0880934E08BF
:1016A0001092E90180910001282F332780911E01BB
:1016B00090911F0182179307CCF48091E902806218
:1016C0008093E90280910801909109018F5F9F4FFB
:1016D000C1F480E797E1909325028093240280E093
:1016E00093E090930901809308010BC0809124023C
:1016F00090912502892B29F48091E9028F7D8093B6
:10170000E9020E944A6784E08093230280911403D7
:10171000882329F45AEA852E55E0952E12C080912F
:10172000F9018F5F8093F901813359F41092F90127
:101730008091F3019091F40101969093F4018093CC
:10174000F3010894811C911CF2E78F16FBE09F06C1
:1017500009F040C0882499242091F7013091F801C4
:101760002F5F3F4F3093F8012093F7018091F501EF
:101770009091F60101969093F6018093F501832FE5
:101780009927682F8EE090E00E94A22C8091F701AB
:101790009091F8019070682F8FE090E00E94A22C49
:1017A0008091F5019091F601892F9927682F8AE0A1
:1017B00090E00E94A22C8091F5019091F60190702A
:1017C000682F8BE090E00E94A22C84E190E00E94C0
:1017D0001C178C010E949A670E94806D80912302E1
:1017E000882309F011CE0E945F630ECE1F920F92E4
:1017F0000FB60F9211248F939F93EF93FF938091D5
:1018000007018823E1F4809114029091150201965A
:101810009093150280931402FC01E95EFA4FE08177
:10182000ED3019F08A3A910539F4109215021092B0
:10183000140281E080930701E093C60004C0109277
:10184000150210921402FF91EF919F918F910F90CA
:101850000FBE0F901F9018951F920F920FB60F9208
:1018600011242F933F934F935F936F937F938F93A5
:101870009F93AF93BF93CF93EF93FF9390E08091AB
:10188000FA01813029F48091C6008093CE00CCC04B
:101890008091FA01823029F48091C60080936B0414
:1018A000C3C08091C60080930C0250911A025A3A2C
:1018B00010F090931B0280910C028D3009F065C0EE
:1018C00080911B02823009F060C090931B02852F2B
:1018D000992785599B4FFC01329740812091160230
:1018E00030911702241B3109DC0111978C91281BC0
:1018F0003109C9019F70909317028093160246E048
:10190000969587954A95E1F7982F935C90931802E6
:101910002F733070235C209319028081981729F46B
:101920008C91281711F491E006C090E08091090293
:101930008F5F80930902C0910B02CC2309F074C021
:10194000992309F471C081E080930B02580F5093E2
:1019500008025150E52FFF27E559FB4F8DE08083AA
:1019600080916D04823509F05FC00E94D91F88E123
:1019700090E02CE00FB6F894A895809360000FBE1D
:1019800020936000C09322024FC020911B02822F3F
:10199000992781309105F9F0823091051CF4892B4B
:1019A00021F040C0029711F13DC080910C028332BA
:1019B00039F480910B02882319F481E080931B0293
:1019C00080910C0280936B0481E080931A028091D5
:1019D0000C02992722C02F5F20931B02E52FFF27BF
:1019E000E559FB4F80910C02808309C0E52FFF274A
:1019F000E559FB4F80910C0280835A3A20F45F5FD7
:101A000050931A0202C010921B0220910C02809186
:101A1000160290911702820F911D909317028093E6
:101A2000160202C010921B02FF91EF91CF91BF915D
:101A3000AF919F918F917F916F915F914F913F9166
:101A40002F910F900FBE0F901F901895AC01A0E042
:101A5000B0E09D01A817B90748F4E7E1F5E08191EE
:101A6000280F311D1196A417B507C8F33F70FD016B
:101A7000E95EFA4FC90156E0969587955A95E1F7C8
:101A8000835C80831196FD01E95EFA4F2F733070FD
:101A9000822F835C8083A85EBA4F8DE08C93109276
:101AA0000701809117058093C6000895A0E0B0E07B
:101AB000ECE5FDE00C94DC782C859D850E85BB243F
:101AC00083E2809317059F59909318052093190579
:101AD00033E0E32EF12C002309F49EC0CF84D88894
:101AE000BE016D5E7F4FA989BA890150109709F434
:101AF00093C01097B9F0F601EB0DF11DB3949081EE
:101B0000119791F4002349F1FB016E5F7F4FDB01D8
:101B1000C080D1806E5F7F4F0D90BC91A02DBB2403
:101B2000015002C090E019C01097B9F0F601EB0D1A
:101B3000F11DB3944081119791F4002341F1FB0111
:101B40006E5F7F4FDB01C080D1806E5F7F4F0D9055
:101B5000BC91A02DBB24015002C040E018C01097DA
:101B6000B1F0F601EB0DF11DB3941081119781F4E2
:101B7000002371F0FB013296DB01CD90DC90BF01B8
:101B80006E5F7F4FA081B181BB24015001C010E086
:101B9000F701E95EFA4F892F86958695835C8083ED
:101BA0000894E11CF11CF701E95EFA4F892F99278F
:101BB0008370907024E0880F991F2A95E1F75527CC
:101BC0009A0194E0369527959A95E1F7822B835CEC
:101BD00080830894E11CF11CF701E95EFA4F4F7015
:101BE0005070440F551F440F551F812F992726E031
:101BF000969587952A95E1F7842B835C80830894DA
:101C0000E11CF11CF701E95EFA4F1F73135C1083AE
:101C10000894E11CF11C6ACFC7010E94260DE9E07F
:101C20000C94F878A3E07A2F4091080246504423A0
:101C300009F458C0E72FFF27E559FB4F80818D53EA
:101C40007F5FE72FFF27E559FB4F20812D537F5FF3
:101C5000E72FFF27E559FB4F30813D537F5FE72F8B
:101C6000FF27E559FB4F60816D537F5F9927880FF0
:101C7000991F880F991F522F52955F70582B822FF2
:101C800099278F709070F4E0880F991FFA95E1F70B
:101C9000232F26952695282B832F992783709070C4
:101CA000E6E0880F991FEA95E1F7682B41504F3F16
:101CB000C9F0EA2FFF27E559FB4F5083AF5F415032
:101CC0004F3F81F0EA2FFF27E559FB4F2083AF5F9D
:101CD00041504F3F39F0EA2FFF27E559FB4F608312
:101CE000AF5FA5CF8EE694E0909307028093060243
:101CF000A350A09305020895A2E0B0E0E2E8FEE060
:101D00000C94E27880910B02882309F46BC40E9442
:101D1000120E80916C04823609F025C380916D0407
:101D200099278037910509F4C1C081379105C4F422
:101D30008A36910509F48DC28B36910544F48B34B3
:101D4000910571F18636910509F46CC10CC38D368D
:101D5000910509F47BC08E36910509F45FC003C379
:101D600084379105D1F1853791054CF48137910580
:101D700009F4A3C08337910509F4F1C0F4C2873791
:101D8000910509F428C2883791052CF4853791050F
:101D900009F4E4C1E8C28937910509F47AC1E3C2C4
:101DA000E0910602F09107028081918190933003C7
:101DB00080932F0320912D0330912E03821B930BD0
:101DC000845E9D4F68E671E00E948378845B90405A
:101DD00090932C0380932B03C6C280910802A0919C
:101DE0000602B0910702853140F080E1E6E4F4E0BC
:101DF0000D9001928A95E1F70DC08D919D910D9006
:101E0000BC91A02D8093460490934704A09348046E
:101E1000B093490480EF809303024BC08091070187
:101E20008823E1F38DE490E09F938F938CE896E014
:101E30009F938F9381E08F938F938EE48F930E9473
:101E4000560D8DB79EB707968DBF8DC2A091060225
:101E5000B09107021C91113081F48DE4ECE8F6E0BA
:101E60000D9001928A95E1F70E94A22D198380912D
:101E700042048F7E8093420401C019828091070141
:101E80008823E1F381E090E09F938F93CE01019648
:101E90009F938F9381E08F938F938DE48F930E9414
:101EA000560DADB7BEB71796ADBF5DC281E080934A
:101EB0000E028FEF8093050156C2E0910602F09169
:101EC0000702E0818E2F8A508A3058F48983882354
:101ED00011F481E003C0863010F085E0898361E071
:101EE0000EC08E2F84518A3070F48983882311F4B8
:101EF00081E003C0863010F085E0898360E089814D
:101F00000E94222E12C0E983EF3F19F40E94052E91
:101F100089838981882311F481E003C0863010F021
:101F200085E0898389810E94B82C809107018823EC
:101F3000E1F383E790E09F938F9388E196E09F938E
:101F40008F9381E090E09F938F93CE0101969F93B2
:101F50008F9382E08F9381E08F9381E572C120910E
:101F6000060230910702D9018C918150853008F02A
:101F700040C0F90181818535E1F52F5F3F4F83E74F
:101F8000E8E1F6E0D9010D9001928A95E1F7F901B7
:101F900082910E94212D809159069927AA27BB275B
:101FA000BC01CD0124EC39E040E050E00E944478CF
:101FB000DC01CB018093D5019093D601A093D7018A
:101FC000B093D80180915A069927AA27BB27BC0154
:101FD000CD010E944478DC01CB018093D101909324
:101FE000D201A093D301B093D4010E94052E89831E
:101FF00001C01982809107018823E1F381E090E01C
:102000009F938F93CE0101969F938F9381E08F933F
:102010008F9383E58F930E94560D8DB79EB70796D9
:102020008DBF26C0E0910602F0910702E0818E2F5D
:102030008150853018F48E2F0E94B82C0E94052EF6
:102040008983809107018823E1F381E090E09F93E9
:102050008F93CE0101969F938F9381E08F938F93FF
:1020600086E48F930E94560DADB7BEB71796ADBFED
:1020700080911403882329F46EE670E089810E9420
:102080006E3780E00E94380780913F060E945D74A1
:102090006AC1E0910602F09107028081992787FDCD
:1020A000909590935E0780935D078181992787FDC6
:1020B00090959093600780935F078281992787FDB1
:1020C000909590936207809361078381992787FD9C
:1020D000909590936407809363078481992787FD87
:1020E000909590936607809365078581992787FD72
:1020F000909590936807809367078681992787FD5D
:10210000909590936A07809369078781992787FD47
:10211000909590936C0780936B078085992787FD36
:10212000909590936E0780936D078185992787FD21
:1021300090959093700780936F078285992787FD0C
:10214000909590937207809371078385992787FDF7
:102150009095909374078093730705C1E0910602F0
:10216000F091070280810E9441338A83882319F409
:1021700081E0898301C01982809107018823E1F3FE
:1021800088E090E09F938F938AED96E09F938F93E2
:1021900021E030E03F932F93809106029091070257
:1021A0009F938F933F932F93CE0102969F938F938C
:1021B0003F932F93CE01820F931F9F938F9384E0C1
:1021C0008F9381E08F9385E58F930E94560DEDB735
:1021D000FEB773963CC080910502893008F4C3C0F5
:1021E00020910602309107022F5F3F4F88E0AAED51
:1021F000B6E0F90101900D928A95E1F7D9018E912F
:102200000E9497328A83882319F481E0898301C070
:102210001982809107018823E1F321E030E03F93A8
:102220002F93CE0102969F938F933F932F93CE01CE
:10223000820F931F9F938F9382E08F9381E08F9300
:1022400087E58F930E94560DEDB7FEB73B96EDBF25
:102250008AC00E9410748983823019F0843009F09A
:1022600082C0F8948091C1008F738093C1008091E7
:10227000C9008F738093C9008091C100877E8093CD
:10228000C1008091C900877E8093C9008091C800F9
:1022900087FF03C08091CE00F9CF8091C00087FFF7
:1022A00003C08091C600F9CFE0910602F0910702C9
:1022B0008081882359F581E08093FA011092CD0046
:1022C00080E490E08093CC008091CD008093C500A5
:1022D0008091CC008093C4008091CA008F7D809350
:1022E000CA008091CA008F7E8093CA008091C90085
:1022F0008B7F8093C9008091CA0084608093CA005C
:102300008091CA0082608093CA0003C082E08093FB
:10231000FA018091CA00877F8093CA008091C20031
:10232000877F8093C2008091C9008E7F8093C9000F
:102330008091C10088618093C1008091C90088614B
:102340008093C9008091C10080688093C100809112
:10235000C90080688093C90010926E0010926F00CF
:1023600010927000789480916D04992784369105BD
:1023700009F4CDC085369105ACF48136910509F498
:1023800081C0823691052CF48B34910509F45DC02F
:1023900021C18236910509F482C08336910509F482
:1023A00091C018C18C36910509F4FFC08D36910596
:1023B0004CF48736910509F40AC18836910509F471
:1023C000C4C008C18437910529F08637910509F406
:1023D000FAC000C180910802A0910602B0910702E4
:1023E000803140F080E1E6E4F4E00D9001928A95BE
:1023F000E1F70DC08D919D910D90BC91A02D809322
:10240000460490934704A0934804B09349048091F4
:1024100007018823E1F31F92809104018F9384E5E3
:102420008F930E94560D8AEF809303028FEF809363
:10243000050180EA9FE00E941C179093FC018093A5
:10244000FB010F900F900F90C5C0E0910602F09134
:102450000702808191819093300380932F03209114
:102460002D0330912E03821B930B845E9D4F68E6F3
:1024700071E00E948378845B904090932C0380935A
:102480002B03A8C0E0910602F0910702808180939F
:102490000601803298F08FE1809306010FC0A09171
:1024A0000602B09107028BE0EEE5F4E00D90019298
:1024B0008A95E1F780916704809303068FEF8093FC
:1024C000050188C08091FF0190910002892B89F459
:1024D000E0910602F0910702E081EE2351F08AE0DC
:1024E000E89FC00111240E941C1790933904809327
:1024F0003804E0910602F091070290818AE0989FEB
:10250000C0011124909300028093FF0115C08FEF4A
:1025100080930501E0910602F091070290818AE024
:10252000989FC00111249093020280930102892B8D
:1025300019F081E08093100280EA9FE00E941C174E
:102540009093FC018093FB0145C08FEF80930501C0
:10255000E0910602F0910702908197FD08C082E0A9
:1025600080930D021092FE011092FD011AC0909509
:1025700080916502892B8093650291818AE0989F02
:10258000C00111249093FE018093FD0184E08093AB
:102590000D0280EA9FE00E941C179093FC0180933B
:1025A000FB0181E08093110215C08FEF809305013C
:1025B000E0910602F091070280818093660281E03B
:1025C0008093120207C081E080930F0203C081E074
:1025D0008093130210920B021092070210920602CF
:1025E00010920502E3E0CE5F0C94FE78982F809164
:1025F000C00085FFFCCF9093C60008950F931F93F2
:1026000088E18093C1008091C00082608093C00007
:102610008091C10080688093C1008091C100806476
:102620008093C10000E010E00093C5008AE290E0D2
:102630008093C40080910102909102020E941C17B5
:1026400090933B0480933A048CED90E00E941C1719
:1026500090936A048093690410923C0482E580930D
:102660003D04109240048BE080933E0410923F049E
:102670001093070200930602109205021F910F911A
:102680000895A0E1B0E0E7E4F3E10C94DF788091F5
:102690000701882309F4C1C28091FB019091FC01DC
:1026A0000E942517882361F01092FE011092FD010F
:1026B0001092020210920102109200021092FF0189
:1026C0008091FD019091FE01892B41F080911505CB
:1026D000909116050E942517882329F480911102F4
:1026E000882309F460C080910701882309F45BC046
:1026F00080910D0201E211E08430A8F00E94ED1FEC
:1027000080E590E09F938F931F930F9381E08F93C9
:102710008F9388E48F930E94560D2DB73EB7295FA3
:102720003F4F2DBF34C01092670282E194E09F9327
:102730008F9382EE9FE19F938F93E0912804F09115
:102740002904099584E190E09F938F931F930F9341
:1027500081E090E09F938F938DE092E09F938F9321
:1027600082E08F9381E08F9388E48F930E94560DCF
:1027700080910D02982F8F5F80930D022DB73EB789
:10278000215F3F4F2DBF943010F010920D028091C9
:10279000FD019091FE010E941C17909316058093F5
:1027A00015051092110280911202882351F1809137
:1027B0000701882331F10E94ED1F80E590E09F938F
:1027C0008F9381E291E09F938F9321E030E03F93DC
:1027D0002F9380E291E09F938F933F932F9386E610
:1027E00092E09F938F9383E08F9381E08F938CE4AB
:1027F0008F930E94560D109212028DB79EB70F96BE
:102800008DBF80910F028823D1F08091070188232A
:10281000B1F08AE090E09F938F938CE394E09F93D4
:102820008F9381E08F938F9386E58F930E94560D4F
:1028300010920F022DB73EB7295F3F4F2DBF8091F9
:1028400013028823D9F0809107018823B9F08BE027
:1028500090E09F938F938EE594E09F938F9381E018
:102860008F93809104018F9387E48F930E94560D7C
:10287000109213028DB79EB707968DBF80916904A1
:1028800090916A040E942517882309F461C0809101
:102890000701882309F45CC0809134069927880FCA
:1028A000991F880F991F7C010027F7FC0095102FB6
:1028B0008091710390917203A0917303B09174039E
:1028C000BC01CD01A80197010E94B878309357044C
:1028D000209356048091690390916A03A0916B0341
:1028E000B0916C03BC01CD01A80197010E94B8789A
:1028F00030935904209358048091FE0280935A0427
:102900008091FD0280935B0488E090E09F938F9319
:1029100086E594E09F938F9381E08F9383E08F937C
:102920008BE68F930E94560D80915C042DB73EB7C5
:10293000295F3F4F2DBF853018F086E080935C04FF
:1029400083E690E00E941C1790936A0480936904C8
:102950008091010290910202892B41F080913A040A
:1029600090913B040E942517882321F48091100246
:10297000882339F180910701882319F10E94643678
:1029800082E490E09F938F9381EC95E09F938F93E7
:1029900081E08F938F9384E48F930E94560D109261
:1029A00010028DB79EB707968DBF8091010290915E
:1029B0000202009731F00E941C1790933B04809311
:1029C0003A048091FF0190910002892B09F4B8C06C
:1029D00080913804909139040E942517882309F4C6
:1029E000AFC080910701882309F4AAC08091340602
:1029F0009927880F991F880F991F7C010027F7FCE2
:102A00000095102F8091710390917203A091730330
:102A1000B0917403BC01CD01A80197010E94B87860
:102A200030932B0420932A048091690390916A03C8
:102A3000A0916B03B0916C03BC01CD01A80197017B
:102A40000E94B87830932D0420932C04209109081B
:102A500030910A0840910B0850910C08DA01C90125
:102A600063E0880F991FAA1FBB1F6A95D1F7820FD9
:102A7000931FA41FB51F820F931FA41FB51F209182
:102A80009601309197014091980150919901BC01B4
:102A9000CD010E94B87830932F0420932E048091AA
:102AA000390390913A03A0913B03B0913C0339E084
:102AB000B595A795979587953A95D1F7809330046A
:102AC0008091350390913603A0913703B09138037C
:102AD00029E0B595A795979587952A95D1F7809385
:102AE00031048091410390914203A0914303B0913E
:102AF000440309E0B595A795979587950A95D1F771
:102B0000809332048EE090E09F938F938AE294E06A
:102B10009F938F9381E08F938F9383E48F930E9491
:102B2000560D8091FF01909100020E941C17909316
:102B30003904809338042DB73EB7295F3F4F2DBF2E
:102B4000809106018F3F71F1992714E0880F991F3A
:102B50001A95E1F78E5E9D4F40E150E0BC01CE0139
:102B600001960E94977680E190E09F938F93CE012B
:102B700001969F938F9381E090E09F938F9386E0DF
:102B800091E09F938F9382E08F9381E08F9381E414
:102B90008F930E94560D8FEF809306018DB79EB7DD
:102BA0000B968DBF809103068823D1F08091070199
:102BB0008823B1F081E090E09F938F9383E096E0CB
:102BC0009F938F9381E08F938F9382E48F930E94E2
:102BD000560D109203062DB73EB7295F3F4F2DBF0C
:102BE00080910E028823C9F0809107018823A9F003
:102BF00084E390E09F938F9383E497E09F938F9378
:102C000081E08F938F9380E58F930E94560D1092F1
:102C10000E028DB79EB707968DBFE6E0C05F0C949D
:102C2000FB781F920F920FB60F9211242F933F93B0
:102C30005F936F937F938F939F93AF93BF93EF9324
:102C4000FF9320E080912302882329F080912302C2
:102C500081508093230280910B04882319F08150C6
:102C600080930B0480912B02815080932B028F3F25
:102C700009F05BC089E080932B028091290290913A
:102C80002A02019690932A028093290280910F01D3
:102C90008F5F817080930F01882319F481E0809306
:102CA0002802349903C081E080932C028091240291
:102CB00090912502892B21F1809124029091250287
:102CC0000B9750F080912402909125020A979093DF
:102CD00025028093240204C010922502109224023F
:102CE00080912402909125022091080130910901E0
:102CF00082239323892B11F021E008C020E006C035
:102D00008FEF9FEF9093090180930801809102015A
:102D1000222331F08A3011F45A9A07C0479A05C02D
:102D20008A3011F45A9801C0479880912C02882368
:102D300009F472C02091E901222309F06DC080914D
:102D4000250683FF69C086B19927FC01E071F07008
:102D500084FF14C0809126029091270201969093DF
:102D60002702809326028091260290912702895E95
:102D7000934008F451C020932C024EC0809126024B
:102D800090912702892B09F443C0809126029091EB
:102D900027028A569140E0F5809126029091270201
:102DA00069E270E00E946F7880912602909127027C
:102DB000860F971F90932702809326028091260208
:102DC000909127020B9750F0809126029091270254
:102DD0000A979093300380932F0304C0F09330033D
:102DE000E0932F0380912F039091300320912D03C6
:102DF00030912E03821B930B845E9D4F68E671E039
:102E00000E948378845B904090932C0380932B03E3
:102E10001092270210922602FF91EF91BF91AF917D
:102E20009F918F917F916F915F913F912F910F9023
:102E30000FBE0F901F9018952091290230912A0201
:102E4000280F391FC9010196089520912902309158
:102E50002A02821B930B892F992786958074907084
:102E60000895CF93DF930E941C17EC01CE010E94BE
:102E700025178823D9F3DF91CF910895CF93DF935E
:102E80000E941C17EC0109C080911001882329F0D1
:102E9000909310018FEC80937A00CE010E94251749
:102EA000982F882389F3DF91CF9108959FB7F894E5
:102EB0005F983E9A469A8091B0008F708093B000E0
:102EC0008091B00083608093B0008091B1008B73DB
:102ED0008093B1008091B1008B608093B10010921B
:102EE000B2008FEF8093B3008091B0008068809330
:102EF000B000809170008A7F809370008091700094
:102F00008260809370009FBF08958AE090E00E94E5
:102F10001C17909332028093310282E085BD83EAD0
:102F200084BD17BC84EB88BD86E086BD80916E00B1
:102F3000816080936E000895A0E0B0E0E2EAF7E1DE
:102F40000C94DE7880914F06E82FFF27E456FE4F61
:102F50009681D08080910E01A92FBB27A7FDB09547
:102F6000CB2FDB2F813009F0C9C020917103309144
:102F700072034091730350917403BD01CE010E940E
:102F8000447897FF04C061587F4F8F4F9F4F7B015C
:102F90008C0167E015950795F794E7946A95D1F74A
:102FA0008D2D992787FD9095A92FB92F2091690321
:102FB00030916A0340916B0350916C03BC01CD01C9
:102FC0000E94447897FF04C061587F4F8F4F9F4FF6
:102FD00057E095958795779567955A95D1F7F801BC
:102FE000E701C61BD70BE80BF90B80914606992722
:102FF000AA27BB27BC01CD019E01AF010E944478E6
:1030000097FF04C061507E4F8F4F9F4FFC01EB0133
:1030100049E0F595E795D795C7954A95D1F7809101
:10302000C101992736E0880F991F3A95E1F7409141
:103030000C0150910D0120914E063327841B950BF6
:10304000B9010E94837880910C0190910D01860F47
:10305000971F90930D0180930C0180910C0190912A
:103060000D0197FD0F9624E0959587952A95E1F738
:1030700090931F0280931E0280917D0680FF07C0FF
:1030800080911E0290911F028C0F9D1F06C080919F
:103090001E0290911F028C1B9D0B90931F02809328
:1030A0001E0280914706282F3327220F331F220F3D
:1030B000331F80911E0290911F02821793077CF0AC
:1030C00080914806282F3327220F331F220F331FEA
:1030D00080911E0290911F022817390724F4309323
:1030E0001F0220931E0280910201843108F4C2C0A5
:1030F00080910E018F5F80930E01BEC02091690305
:1031000030916A0340916B0350916C03BD01CE0175
:103110000E94447897FF04C061587F4F8F4F9F4FA4
:103120007B018C01C7E015950795F794E794CA9544
:10313000D1F78D2D992787FD9095A92FB92F209133
:103140007103309172034091730350917403BC0179
:10315000CD010E9444789B01AC0197FF04C0215827
:103160003F4F4F4F5F4FB7E05595479537952795A0
:10317000BA95D1F72E0D3F1D401F511F80914A0671
:103180009927AA27BB27BC01CD010E94447897FF4D
:1031900004C061507E4F8F4F9F4FFC01EB01A9E0AF
:1031A000F595E795D795C795AA95D1F78091C00178
:1031B000992776E0880F991F7A95E1F740910A01E7
:1031C00050910B0120914E063327841B950BB901BA
:1031D0000E94837880910A0190910B01860F971FBE
:1031E00090930B0180930A0180910A0190910B0149
:1031F00097FD0F9664E0959587956A95E1F7909312
:103200001D0280931C0280917D0681FF07C0809182
:103210001C0290911D028C0F9D1F06C080911C0204
:1032200090911D028C1B9D0B90931D0280931C029C
:1032300080914B06282F3327220F331F220F331F75
:1032400080911C0290911D02821793077CF080915F
:103250004C06282F3327220F331F220F331F809154
:103260001C0290911D022817390724F430931D0287
:1032700020931C0210920E01E7E0CDB7DEB70C944C
:10328000FA781F920F920FB60F9211242F933F934B
:103290004F935F938F939F93EF93FF9380910201DE
:1032A00090912D02843108F04CC0992309F01CC183
:1032B0008091B00086FF24C08091B0008F7B809306
:1032C000B00080911E0290911F0287559E4F9093EF
:1032D00021028093200225E08D3D920718F08CEDAD
:1032E00095E005C08757914030F487E791E09093CF
:1032F0002102809320028091200290912102BAC085
:103300008091B00080648093B00080914D06282F9A
:1033100033278DED96E0289FA001299F500D389FFF
:10332000500D1124CA0120912E0230912F02821BD0
:10333000930B909321028093200281E080930E01F1
:10334000D0C0992309F0D0C08091B00086FF97C00B
:103350008091B0008F7B8093B000E0913002EE232B
:10336000F1F480914D06282F33278DED96E0289FAC
:10337000A001299F500D389F500D1124CA012091A2
:103380002E0230912F02821B930B90932102809387
:10339000200210922F0210922E02469AA2C089EAB1
:1033A00093E090932102809320028E2F99278330FF
:1033B0009105D9F08430910534F48130910549F0BC
:1033C000029761F020C08430910591F0059799F043
:1033D0001AC080911E0290911F0204C080911C02AD
:1033E00090911D0287559E4F1DC08091D70705C043
:1033F0008091B10702C08091DF079927880F991F3C
:10340000880F991FEFCFFF27EE0FFF1FED5BF84FDF
:1034100020813181220F331F80912002909121025F
:10342000820F931F909321028093200280912002AB
:103430009091210255E08D3D950718F08CED95E0B7
:1034400005C08757914030F487E791E090932102BF
:103450008093200220912002309121022C5B304089
:10346000309321022093200280912E0290912F020E
:10347000820F931F90932F0280932E0232C080916F
:10348000B00080648093B0008CEB90E090932102B8
:103490008093200280912E0290912F0284549F4F9E
:1034A00090932F0280932E0280912202882321F094
:1034B00080911D03833320F480912202823011F425
:1034C000469801C0469A809130028F5F8093300207
:1034D00090914D06981728F481E080930E01109288
:1034E000300281E080932D02209120023091210250
:1034F00041E02F37340730F08FEF8093B3002F5F18
:1035000030400FC02F3F3105C9F0C0F0A9014F5F17
:1035100050404F37510550F480E88093B300205855
:103520003040309321022093200212C08FEF80930D
:10353000B30050932102409320020AC080912002E0
:103540008093B300109221021092200210922D025B
:10355000FF91EF919F918F915F914F913F912F91AB
:103560000F900FBE0F901F90189510927C008FEC5B
:1035700080937A000895CF93DF931092370283E00F
:1035800090E00E949A2CC82FDD27C531D10508F0A4
:103590002A97C7BD84E690E00E943E1780911401EF
:1035A000909115018052934010F4C0E0D0E0CA3FE2
:1035B000D105F8F4C7BD82E390E00E943E1787E290
:1035C00094E09F938F9386EF92E19F938F93E09186
:1035D0002804F09129040995809114019091150116
:1035E0000F900F900F900F908052934010F0219603
:1035F000DECFC09314066C2F83E090E00E94A22CD3
:103600008091250680FF0AC0809114068A508B3E67
:1036100028F080914104806480934104C7BD8CE20E
:1036200091E00E943E17DF91CF910895EF92FF92B3
:103630001F93CF9310E080ED97E00E941C177C0150
:10364000CCE8133019F4CB3008F0C9E010E08091D9
:103650004702909148028C5F934024F480911301BB
:1036600081500AC08091470290914802875094404F
:1036700034F0809113018F5F8093130101C011E03A
:1036800080914502909146028C5F934024F4809192
:10369000120181500AC080914502909146028750E4
:1036A000944034F0809112018F5F8093120101C029
:1036B0001F5F80914302909144028C5F934024F4F9
:1036C0008091110181500AC080914302909144027F
:1036D00087509440C4F0809111018F5F8093110155
:1036E00013C089E294E09F938F9386EF92E19F93BA
:1036F0008F93E0912804F091290409950F900F9081
:103700000F900F905FC01F5F82E1809372028091E3
:103710006C028E7F80936C0285EA8093BC0080915E
:1037200013018A3040F48091410481608093410408
:103730008AE08093130180911301863F40F08091CD
:10374000410481608093410485EF8093130180914F
:1037500012018A3040F480914104826080934104D8
:103760008AE08093120180911201863F40F080919F
:10377000410482608093410485EF8093120180911F
:1037800011018A3040F480914104846080934104A7
:103790008AE08093110180911101863F40F0809171
:1037A000410484608093410485EF809311018091EE
:1037B0007202882339F0C7010E942517882309F077
:1037C00090CFF5CF109210018FEC80937A0080910A
:1037D00010018823E1F3CA3020F48AE090E00E94CF
:1037E0003E17C15009F02DCF86E490E00E943E17AD
:1037F000CF911F91FF90EF9008951F920F920FB6F7
:103800000F921124AF92BF92CF92DF92EF92FF926C
:103810000F931F932F933F934F935F936F937F93D8
:103820008F939F93AF93BF93EF93FF938091500239
:10383000282F3327442755278F5F80935002F901A3
:103840002231310508F08CC3E25CFF4F0C940A79F9
:10385000809178009091790046C080917800909195
:1038600079002CC180917800909179009093530257
:103870008093520257C180917A0390917B032091EB
:10388000780030917900821B930B9093050680930A
:103890000406809104069091050690935D02809342
:1038A0005C025EC1809178009091790020917C0348
:1038B00030917D03821B930B909313068093120625
:1038C000809112069091130690935F0280935E029E
:1038D00049C380915602909157022091780030910F
:1038E0007900820F931F909357028093560281E0D4
:1038F0003AC3809154029091550220917800309102
:103900007900820F931F909355028093540284E0B4
:103910002AC380911E0190911F019C01220F331F29
:10392000280F391F809178009091790063E070E052
:103930000E946F78260F371F369527953695279565
:1039400030931F0120931E0185E00DC38091780004
:10395000909179004091760350917703841B950BE9
:1039600090933E0280933D0280913D0290913E02F1
:10397000029704F122E04E3E520784F42091510256
:103980002B5F2093510225508091EA029091EB0227
:10399000845F914018F4215F20935102809151027D
:1039A000853684F14F5F5F4F5093770340937603E2
:1039B000845626C080913D0290913E028F5F9F4FBA
:1039C0000CF532E047325307ECF0209151022550BC
:1039D000209351022B5F8091EA029091EB02845F69
:1039E000914018F42F5020935102809151028C394C
:1039F0004CF44150504050937703409376038C59D8
:103A00008093510281E080933C02809178009091F4
:103A1000790090930B0680930A0680913D02909165
:103A20003E029C01442737FD4095542F809131037D
:103A300090913203A0913303B0913403820F931F0E
:103A4000A41FB51F8093310390933203A0933303D7
:103A5000B09334032091310330913203409133030A
:103A60005091340357FF04C021503C4F4F4F5F4FDC
:103A70000AE055954795379527950A95D1F7809196
:103A8000310390913203A0913303B0913403821B30
:103A9000930BA40BB50B8093310390933203A09347
:103AA0003303B09334032EC1809154029091550298
:103AB0002091780030917900820F931F90935502E6
:103AC0008093540210924F0250C2809102018A30BA
:103AD00071F4809178009091790020915202309198
:103AE0005302820F931F01969695879517C04091B8
:103AF000520250915302843158F020917800309155
:103B00007900240F351F8FEF97E0821B930B06C0BF
:103B10008091780090917900840F951F90934402D2
:103B20008093430286E01FC280917A0390917B03C9
:103B30002091780030917900821B930B90930506B9
:103B400080930406809104069091050620915C0202
:103B500030915D02820F931F909342028093410245
:103B600087E001C2809178009091790020917C03D8
:103B700030917D03821B930B909313068093120662
:103B8000809112069091130620915E0230915F029F
:103B9000820F931F9093400280933F02E3C12091D4
:103BA0005602309157028091780090917900280F49
:103BB000391F3093570220935602809102018A30B8
:103BC00019F4220F331F04C0220F331F220F331F9B
:103BD000309357022093560220915602309157029B
:103BE000C90137FD0796A3E095958795AA95E1F75A
:103BF0009093480280934702809158029091590215
:103C0000820F931F97FD0196959587959093590282
:103C1000809358022091860330918703821B930B77
:103C200090931D0180931C0120914D0230914E0212
:103C300080911C0190911D01280F391F37FF02C090
:103C40002F5F3F4F3595279530934E0220934D02BD
:103C50004ECE20915402309155028091780090917F
:103C60007900280F391F3093550220935402809118
:103C700002018A3019F4220F331F04C0220F331FB0
:103C8000220F331F30935502209354022091540287
:103C900030915502C90137FD079663E095958795E8
:103CA0006A95E1F7909346028093450280915A020B
:103CB00090915B02820F931F97FD019695958795D2
:103CC00090935B0280935A02209184033091850384
:103CD000821B930B90931B0180931A0120914B023E
:103CE00030914C0280911A0190911B01280F391FCD
:103CF00037FF02C02F5F3F4F3595279530934C0219
:103D000020934B0283E02FC11092500281E08093F8
:103D10001001809133029091340201969093340205
:103D200080933302809178009091790090931501EF
:103D3000809314018091140190911501AA27BB274B
:103D4000A0906002B0906102C0906202D0906302C5
:103D5000A80EB91ECA1EDB1EA0926002B0926102BC
:103D6000C0926202D0926302809164028F5F80935E
:103D70006402823108F4F6C0809116019091170117
:103D8000A0911801B09119017C018D0123E0EE0C86
:103D9000FF1C001F111F2A95D1F7E81AF90A0A0B18
:103DA0001B0BEA0CFB1C0C1D1D1D80913702992773
:103DB00087FD9095A92FB92FBC01CD0126EC34E2E7
:103DC00040E050E00E944478DC01CB01E81AF90A97
:103DD0000A0B1B0BD801C7010496A11DB11DB7FF2B
:103DE00005C0D801C7010B96A11DB11D13E0B59503
:103DF000A795979587951A95D1F78093160190937B
:103E00001701A0931801B093190180910C069091AD
:103E10000D067C010027F7FC0095102F80911601FC
:103E200090911701A0911801B0911901E81AF90AAF
:103E30000A0B1B0BE0920F03F09210030093110387
:103E400010931203209138023091390240913A02C6
:103E500050913B0257FF04C0215F3F4F4F4F5F4FD0
:103E6000F4E05595479537952795FA95D1F78091C8
:103E7000380290913902A0913A02B0913B02821B24
:103E8000930BA40BB50B8093380290933902A09347
:103E90003A02B0933B028091380290913902A0918E
:103EA0003A02B0913B028E0D9F1DA01FB11F80935F
:103EB000380290933902A0933A02B0933B0280916A
:103EC000350290913602AC01E5E0440F551FEA95AA
:103ED000E1F7481B590B8091380290913902A0916B
:103EE0003A02B0913B02B7FF03C00F96A11DB11D6E
:103EF00074E0B595A795979587957A95D1F7209118
:103F00000F0330911003281B390B63E0220F331F7E
:103F10006A95E1F7240F351F37FF02C0215E3F4F3E
:103F200045E0359527954A95E1F730933602209381
:103F30003502D601C501D7FE03C00196A11DB11DF2
:103F4000B595A795979587958093600290936102A8
:103F5000A0936202B093630289E08093640202C07E
:103F60001092500282E080934F0280914F02809322
:103F70007C0080915002882319F08FEC80937A00A6
:103F8000FF91EF91BF91AF919F918F917F916F9131
:103F90005F914F913F912F911F910F91FF90EF9063
:103FA000DF90CF90BF90AF900F900FBE0F901F90FB
:103FB000189590E2E1E2F1E08FE49193815087FF60
:103FC000FCCF089590916702E1E2F1E0E90FF11D65
:103FD00080839F5F909367020895EF92FF920F9303
:103FE0001F93CF93DF932091650220FF0AC0809139
:103FF0006602882311F0815002C0809120018093D5
:10400000660221FF0CC090916602809120019817F2
:1040100019F41092660203C09F5F90936602822F8C
:10402000992780FF04C081FF02C0109266020E949F
:10403000D91F80916602282F332752EEE52E5FE1CB
:10404000F52EC0912804D09129048A3098F481E19A
:10405000809367023F932F9380E694E09F938F9322
:10406000FF92EF92FE0109952DB73EB72A5F3F4FB1
:104070002DBF11C080E1809367023F932F9385E6A7
:1040800094E09F938F93FF92EF92FE0109958DB775
:104090009EB706968DBF20916602822F9927AA2788
:1040A000BB27FC01429710F00C949E2AE05BFF4F67
:1040B00042EEE42E4FE1F42EC0912804D091290461
:1040C0000C940A79109267028AE694E09F938F938A
:1040D00002EE1FE1FF92EF92FE01099584E18093C9
:1040E00067020F900F900F900F9081E690E09F93E2
:1040F0008F9382E590E09F938F931F921F92809100
:1041000002016AE00E946378892F99279F938F9319
:10411000809102010E94637899279F938F938AE789
:1041200094E09F938F93FF92EF92E0912804F09197
:104130002904099588E2809367022DB73EB7225F74
:104140003F4F2DBF8DE896E09F938F930E94052EE1
:1041500099279F938F938FE894E09F938F93FF927B
:10416000EF92E0912804F091290409958DB79EB74C
:1041700008968DBF90914104992351F08CE3809370
:104180006702892F99279F938F938DE994E081C6C9
:1041900090916D02992371F08CE380936702892FCF
:1041A00099279F938F9384EB94E09F938F931F9312
:1041B0000F9391C08091420484FF07C08CE38093E9
:1041C000670289EC94E00C94302A809192019091DE
:1041D0009301069710F00C94A72A8CE38093670252
:1041E00086ED94E00C94302A8091250632EEE32E81
:1041F0003FE1F32EC0912804D091290480FF74C0C0
:104200001092670280910F0390911003A091110307
:10421000B0911203BC01CD0125E030E040E050E058
:104220000E94B8783F932F9383EE94E09F938F93EF
:10423000FF92EF92FE01099584E1809367022DB70A
:104240003EB72A5F3F4F2DBF80910B0390910C0327
:10425000A0910D03B0910E03BC01CD0125E030E02B
:1042600040E050E00E94B8783F932F9380EF94E0B5
:104270009F938F93FF92EF92E0912804F09129048D
:10428000099588E2809367028DB79EB706968DBF29
:1042900080911401909115019F938F938DEF94E07D
:1042A0009F938F93FF92EF92E0912804F09129045D
:1042B00009958CE3809367022DB73EB72A5F3F4F85
:1042C0002DBF87B599279F938F938AE095E09F93A1
:1042D0008F93FF92EF92E0912804F09129040995C1
:1042E0008DB79EB7069633C71092670287E195E0B7
:1042F0009F938F93FF92EF92FE01099584E1809343
:1043000067020F900F900F900F9086E295E09F93B9
:104310008F93FF92EF92E0912804F0912904099580
:1043200088E2809367020F900F900F900F908FE2BA
:1043300095E09F938F93FF92EF92E0912804F09184
:10434000290409958CE3809367020F900F900F90DA
:104350000F908EE395E09F938F93FF92EF920C94D2
:10436000342A1092670287E495E09F938F9302EEC0
:104370001FE1FF92EF92FE01099584E180936702AD
:104380000F900F900F900F90809171039091720396
:10439000A0917303B0917403B7FF04C081509C4F88
:1043A000AF4FBF4F2AE0B595A795979587952A956A
:1043B000D1F7BF93AF939F938F9384E595E09F933D
:1043C0008F931F930F93E0912804F091290409958E
:1043D00088E2809367022DB73EB7285F3F4F2DBF1D
:1043E0008091690390916A03A0916B03B0916C0373
:1043F000B7FF04C081509C4FAF4FBF4FCAE0B59587
:10440000A79597958795CA95D1F7BF93AF939F933B
:104410008F9383E695E09F938F931F930F93E09183
:104420002804F091290409958CE3809367028DB7E5
:104430009EB708968DBF80912F03909130039F9374
:104440008F9382E795E09F938F931F930F93E09153
:104450002804F091290409952DB73EB72A5F3F4FF4
:1044600011C71092670280914707909148079F9368
:104470008F9380914507909146079F938F9381E892
:1044800095E09F938F93FF92EF92FE01099584E14F
:10449000809367028DB79EB708968DBF80914B07BA
:1044A00090914C079F938F938091490790914A0771
:1044B0009F938F9381E995E09F938F93FF92EF9263
:1044C000E0912804F0912904099588E2809367021D
:1044D0002DB73EB7285F3F4F2DBF80914F0790917A
:1044E00050079F938F9380914D0790914E079F9314
:1044F0008F9381EA95E09F938F93FF92EF92E091E3
:104500002804F091290409958CE3809367028DB704
:104510009EB708968DBF80915307909154079F9343
:104520008F9380915107909152079F938F9381EBC6
:1045300095E0A2C01092670280911A06E82FFF272B
:10454000EE0FFF1FED5BF84F808191819F938F935A
:1045500080911906E82FFF27EE0FFF1FED5BF84F44
:10456000808191819F938F9381EC95E09F938F93AE
:10457000FF92EF92FE01099584E1809367028DB767
:104580009EB708968DBF80911C06E82FFF27EE0F7F
:10459000FF1FED5BF84F808191819F938F938091F6
:1045A0001B06E82FFF27EE0FFF1FED5BF84F808102
:1045B000918188589F4F9F938F9381ED95E09F93B2
:1045C0008F93FF92EF92E0912804F09129040995CE
:1045D00088E2809367022DB73EB7285F3F4F2DBF1B
:1045E00080911E06E82FFF27EE0FFF1FED5BF84FAF
:1045F0008081918182599F4F9F938F9380911D0657
:10460000E82FFF27EE0FFF1FED5BF84F80819181B0
:1046100082599F4F9F938F9381EE95E09F938F9345
:10462000FF92EF92E0912804F091290409958CE320
:10463000809367028DB79EB708968DBF8091200644
:10464000E82FFF27EE0FFF1FED5BF84F8081918170
:1046500082599F4F9F938F9380911F06E82FFF27CA
:10466000EE0FFF1FED5BF84F8081918182599F4FC4
:104670009F938F9381EF95E09F938F93FF92EF929B
:10468000E0912804F091290409952DB73EB7285FE1
:104690003F4FF8C51092670281E096E09F938F9399
:1046A00002EE1FE1FF92EF92FE0109958091020157
:1046B0000F900F900F900F908A3009F09DC084E109
:1046C0008093670280918603909187039C0197FFF6
:1046D00002C0295F3F4F287F821B930B9F938F93CC
:1046E000809186039091870397FD0796A3E09595A7
:1046F0008795AA95E1F79F938F9320918603309138
:10470000870337FF02C0295F3F4FF3E035952795B8
:10471000FA95E1F78091470290914802821B930B32
:104720009F938F938FE096E09F938F931F930F93A8
:10473000E0912804F0912904099588E280936702AA
:104740008DB79EB70A968DBF8091840390918503A3
:104750009C0197FF02C0295F3F4F287F821B930B6C
:104760009F938F93809184039091850397FD079683
:10477000E3E095958795EA95E1F79F938F932091D4
:1047800084033091850337FF02C0295F3F4F73E0F8
:10479000359527957A95E1F78091450290914602EB
:1047A000821B930B9F938F9380E296E09F938F934E
:1047B0001F930F93E0912804F091290409958CE34D
:1047C000809367022DB73EB7265F3F4F2DBF809184
:1047D0008203909183039F938F93809182039091A2
:1047E00083032091430230914402821B930B9F93D9
:1047F0008F9381E396E0A7C38B3019F0843108F4DE
:10480000ADC084E180936702809186039091870315
:104810009C0197FF02C0215F3F4F207F821B930BBB
:1048200097FD0196959587959F938F938091860329
:104830009091870397FD0F9654E0959587955A952B
:10484000E1F79F938F93209186033091870337FF81
:1048500002C0295F3F4F43E0359527954A95E1F720
:104860008091470290914802821B930B9F938F93F4
:104870008FE396E09F938F931F930F93E09128040B
:10488000F0912904099588E2809367022DB73EB71D
:10489000265F3F4F2DBF80918403909185039C013B
:1048A00097FF02C0215F3F4F207F821B930B97FD34
:1048B0000196959587959F938F938091840390910E
:1048C000850397FD0F96C4E095958795CA95E1F706
:1048D0009F938F93209184033091850337FF02C00B
:1048E000295F3F4FB3E035952795BA95E1F7809161
:1048F000450290914602821B930B9F938F9381E513
:1049000096E09F938F931F930F93E0912804F0916B
:10491000290409958CE3809367028DB79EB70A96A8
:104920008DBF809182039091830397FD01969595A9
:1049300087959F938F938091820390918303209119
:10494000430230914402821B930B9F938F9383E623
:1049500096E09F938F931F930F9392CE8D3009F023
:10496000F6C584E1809367028091130199279F9394
:104970008F93809186039091870397FD0F96F4E0C3
:1049800095958795FA95E1F79F938F9320918603EC
:104990003091870337FF02C0295F3F4FE3E0359531
:1049A0002795EA95E1F78091470290914802821B92
:1049B000930B9F938F9382E796E09F938F931F9320
:1049C0000F93E0912804F0912904099588E28093DF
:1049D00067028DB79EB70A968DBF80911201992705
:1049E0009F938F93809184039091850397FD0F96F9
:1049F00074E0959587957A95E1F79F938F93209131
:104A000084033091850337FF02C0295F3F4F63E085
:104A1000359527956A95E1F7809145029091460278
:104A2000821B930B9F938F9386E896E09F938F93BF
:104A30001F930F93E0912804F091290409958CE3CA
:104A4000809367022DB73EB7265F3F4F2DBF809101
:104A5000110199279F938F938091820390918303F3
:104A600097FD0196959587959F938F9380918203EB
:104A7000909183032091430230914402821B930B57
:104A80009F938F938AE996E09F938F931F930F9341
:104A9000E0912804F091290409958DB79EB70A96F4
:104AA00056C3109267028EEA96E09F938F93FF920F
:104AB000EF92FE01099584E1809367020F900F90B9
:104AC0000F900F9080917C0390917D039F938F9323
:104AD00080913F02909140029F938F938BEB96E0E1
:104AE0009F938F93FF92EF92E0912804F091290415
:104AF000099588E2809367022DB73EB7285F3F4F44
:104B00002DBF80917A0390917B039F938F93809127
:104B10004102909142029F938F938AEC96E09F937B
:104B20008F93FF92EF92E0912804F0912904099568
:104B30008CE3809367028DB79EB708968DBF8091F6
:104B40007603909177039F938F9380913D0290918C
:104B50003E029F938F9389ED96E08ECD109267026F
:104B600080911E0190911F016AE070E00E9483789D
:104B70009F938F9380911E0190911F016AE070E0D6
:104B80000E9483787F936F9388EE96E09F938F9334
:104B9000FF92EF92FE01099584E1809367028DB741
:104BA0009EB708968DBF80918008909181086AE039
:104BB00070E00E946F789F938F938091800890910E
:104BC00081086AE070E00E946F787F936F938CEFAA
:104BD00096E09F938F93FF92EF92E0912804F091DB
:104BE0002904099588E2809367022DB73EB7285FB4
:104BF0003F4F2DBF80918208909183089F938F93A0
:104C000080E197E09F938F93FF92EF92E0912804C9
:104C1000F091290409958CE3809367028DB79EB7C4
:104C200006968DBF80918408909185089F938F93FD
:104C300080E297E02EC11092670282E397E09F9393
:104C40008F93FF92EF92FE01099584E180936702B2
:104C50000F900F900F900F90809143079091440711
:104C60009F938F938BE397E09F938F93FF92EF92A5
:104C7000E0912804F0912904099588E28093670265
:104C80008DB79EB706968DBF80911D0399279F9380
:104C90008F938BE497E09F938F93FF92EF92E09135
:104CA0002804F091290409958CE3809367022DB7BD
:104CB0003EB72A5F3F4F2DBF80914207992701974A
:104CC0009F938F938BE597E002CB109267028BE660
:104CD00097E09F938F93FF92EF92FE01099584E1F5
:104CE000809367020F900F900F900F9080912B038D
:104CF00090912C039F938F9383E797E09F938F93DB
:104D0000FF92EF92E0912804F0912904099588E23E
:104D1000809367022DB73EB72A5F3F4F2DBF80912A
:104D20002F03909130039F938F9381E897E09F9397
:104D30008F93FF92EF92E0912804F0912904099556
:104D40008CE3809367028DB79EB706968DBF8091E6
:104D50002D0390912E039F938F938FE897E099C036
:104D60001092670280911E0399279F938F938DE97C
:104D700097E09F938F93FF92EF92FE01099584E154
:104D8000809367028DB79EB706968DBF80911F03F3
:104D900099279F938F9389EA97E09F938F93FF9230
:104DA000EF92E0912804F0912904099588E280931C
:104DB00067022DB73EB72A5F3F4F2DBF809120037A
:104DC00099279F938F9385EB97E09F938F93FF9203
:104DD000EF92E0912804F091290409958CE38093E7
:104DE00067028DB79EB706968DBF809121039927E4
:104DF0009F938F9381EC97E04CC010926702809153
:104E0000220399279F938F938DEC97E09F938F9325
:104E1000FF92EF92FE01099584E1809367028DB7BE
:104E20009EB706968DBF8091230399279F938F93FA
:104E300089ED97E09F938F93FF92EF92E091280482
:104E4000F0912904099588E2809367022DB73EB757
:104E50002A5F3F4F2DBF8091240399279F938F9303
:104E600085EE97E09F938F93FF92EF92E091280455
:104E7000F091290409958CE3809367028DB79EB762
:104E800006968DBF8091250399279F938F9381EF7D
:104E900097E09F938F93FF92EF92D9CA1092670287
:104EA0008DEF97E09F938F9302EE1FE1FF92EF92B9
:104EB000FE01099584E1809367020F900F900F9097
:104EC0000F908091C10199279F938F9385E098E07F
:104ED0009F938F93FF92EF92E0912804F091290421
:104EE000099588E2809367028DB79EB706968DBFBD
:104EF00080911E0290911F0297FD039695958795CC
:104F0000959587959F938F9383E198E09F938F93D7
:104F10001F930F93E0912804F091290409958CE3E5
:104F2000809367022DB73EB72A5F3F4F2DBF809118
:104F3000480699279F938F938091470699279F93BF
:104F40008F9381E298E09F938F931F930F93E0914B
:104F50002804F091290409958DB79EB70896F7C0EB
:104F6000109267028FE298E09F938F93FF92EF92E7
:104F7000FE01099584E1809367020F900F900F90D6
:104F80000F9080916204992787FD90959F938F934E
:104F900080916104992787FD90959F938F938FE36C
:104FA00098E09F938F93FF92EF92E0912804F09105
:104FB0002904099588E2809367022DB73EB7285FE0
:104FC0003F4F2DBF80916304992787FD90959F9354
:104FD0008F938091640499279F938F938FE498E037
:104FE0009F938F93FF92EF92E0912804F091290410
:104FF00009958CE3809367028DB79EB708968DBFA5
:105000008091680499279F938F93809165049927D5
:1050100087FD90959F938F938FE598E02DCB10920D
:1050200067028FE698E09F938F93FF92EF92FE01C5
:10503000099584E1809367020F900F900F900F9075
:105040008091FD0699278F7790709F938F93809121
:10505000F50699278F7790709F938F938091ED0637
:1050600099278F7790709F938F938091E50699276A
:105070008F7790709F938F938FE798E09F938F9394
:10508000FF92EF92E0912804F0912904099588E2BB
:10509000809367028DB79EB70C968DBF80911D07D8
:1050A00099278F7790709F938F93809115079927F9
:1050B0008F7790709F938F9380910D0799278F77AB
:1050C00090709F938F938091050799278F779070A9
:1050D0009F938F9380E998E09F938F93FF92EF9235
:1050E000E0912804F091290409958CE380936702EC
:1050F0002DB73EB7245F3F4F2DBF80913D079927C5
:105100008F7790709F938F938091350799278F7732
:1051100090709F938F9380912D0799278F77907030
:105120009F938F938091250799278F7790709F93F6
:105130008F9381EA98E09F938F93FF92EF92E09193
:105140002804F091290409958DB79EB70C968DBF60
:10515000FEC11092670282EB98E09F938F93FF92BB
:10516000EF92FE01099584E1809367020F900F9002
:105170000F900F9080910107992787FD90959F933D
:105180008F938091F906992787FD90959F938F9330
:105190008091F106992787FD90959F938F93809139
:1051A000E906992787FD90959F938F9381EC98E06E
:1051B0009F938F93FF92EF92E0912804F09129043E
:1051C000099588E2809367022DB73EB7245F3F4F71
:1051D0002DBF80912107992787FD90959F938F93ED
:1051E00080911907992787FD90959F938F938091C0
:1051F0001107992787FD90959F938F9380910907B9
:10520000992787FD90959F938F9382ED98E09F93C8
:105210008F93FF92EF92E0912804F0912904099571
:105220008CE3809367028DB79EB70C968DBF8091FB
:105230004107992787FD90959F938F938091390718
:10524000992787FD90959F938F9380913107992798
:1052500087FD90959F938F9380912907992787FDCC
:1052600090959F938F9383EE98E09F938F93FF92F7
:10527000EF92E0912804F091290409952DB73EB7EB
:10528000245F3F4F2DBF63C11092670284EF98E007
:105290009F938F9302EE1FE1FF92EF92FE0109951B
:1052A00084E1809367020F900F900F900F90809190
:1052B000FD06881F8827881F97E0899FC001112459
:1052C0008D969F938F938091F506881F8827881F5E
:1052D00096E0899FC00111248D969F938F938091B2
:1052E000ED06881F8827881F95E0899FC00111243B
:1052F0008D969F938F938091E506881F8827881F3E
:105300009927880F991F880F991F8D969F938F93C8
:1053100083E099E09F938F93FF92EF92E0912804AE
:10532000F0912904099588E2809367028DB79EB7B2
:105330000C968DBF80911D07881F8827881F9BE0D2
:10534000899FC00111248D969F938F93809115079B
:10535000881F8827881F9AE0899FC00111248D9695
:105360009F938F9380910D07881F8827881F99E04E
:10537000899FC00111248D969F938F93809105077B
:10538000881F8827881F992723E0880F991F2A954F
:10539000E1F78D969F938F9387E199E09F938F9389
:1053A000FF92EF92E0912804F091290409958CE393
:1053B000809367022DB73EB7245F3F4F2DBF80918A
:1053C0002507881F8827881F9CE0899FC00111241A
:1053D0008D969F938F938BE299E09F938F93FF928B
:1053E000EF92E0912804F0912904099580912D070E
:1053F0002DB73EB72A5F3F4F2DBF87FF12C080E415
:10540000809367028CE399E09F938F93FF92EF92D2
:10541000E0912804F091290409950F900F900F90C6
:105420000F908091350787FF12C084E48093670254
:105430008FE399E09F938F931F930F93E09128043C
:10544000F091290409950F900F900F900F90809183
:105450003D0787FF7CC088E48093670282E499E07F
:105460009F938F931F930F93E0912804F091290449
:1054700009950F900F900F900F9069C010926702DE
:1054800085E499E09F938F93FF92EF92FE01099537
:1054900084E1809367020F900F900F900F9080919E
:1054A000F5019091F6019F938F9383E599E09F9387
:1054B0008F93FF92EF92E0912804F09129040995CF
:1054C00088E2809367028DB79EB706968DBF809164
:1054D000F7019091F8019F938F9380E699E09F9355
:1054E0008F93FF92EF92E0912804F091290409959F
:1054F00089E4809367022DB73EB72A5F3F4F2DBFE7
:105500008DE699E09F938F93FF92EF92E0912804AC
:10551000F09129040995809165020F900F900F90EA
:105520000F9083FF14C01092F8011092F70160E011
:1055300070E08EE090E00E94B32C09C080912001C1
:10554000281719F42150209320011092660210921E
:105550006502E6E0CDB7DEB70C94FB78F999FECF93
:1055600092BD81BDF89A80B599270895F999FECF2B
:105570001FBA92BD81BD60BD0FB6F894FA9AF99A30
:105580000FBE08954AEA20E030E02617370740F4BE
:10559000FC018191480F2F5F3F4F26173707C8F353
:1055A000842F99270895EAEA40E050E0461757070C
:1055B00078F49C01F999FECF32BD21BDF89A80B5EF
:1055C000E80F4F5F5F4F2F5F3F4F4617570790F32E
:1055D0008E2F9927089581E080931B0682E08093A7
:1055E0001A0683E08093190684E080931C0685E008
:1055F00080931D0686E080931E0687E080931F0639
:1056000088E08093200689E0809321068AE08093D9
:1056100022068BE0809323068CE080932406089575
:1056200095E59093180680910201843170F08AE02C
:105630008093380610925C068BE1809334068EE4EA
:105640008093590680935A060DC083E080933806F4
:1056500080E280935C068EE1809334069093590635
:1056600090935A068AE68093250683E080937E060F
:1056700081E080933F0610927B061092780668E0E6
:105680006093320686EE8093330680E88093350679
:105690005EE1509326068FEF809328069FE090935B
:1056A00029065093270610922B0660932C0680E45F
:1056B00080932D0610922E0690932A061092410692
:1056C00010924206109243061092440610925E0613
:1056D00010925F06109260061092610638E73093D0
:1056E000450648E24093460672E070937D0690932B
:1056F000470627EF2093480685E080934D068DE707
:105700008093500680935106809352063093490649
:105710009AE590934A0610924B0620934C064093CC
:105720004E0610924F068FE58093620683EF8093BA
:1057300064068AEA809366068093670684E1809314
:1057400063068093650682E3809353069093540624
:105750008093550610927C068EEF8093680624E6AF
:105760002093690690936A0690936B0690936C065B
:105770008BE480936D0680936E0680936F06109283
:10578000700686E0809371066093720690937306AC
:1057900050937406209375062093760670937706CF
:1057A0001092790610927A0681E280933C068DE28F
:1057B00080933D0690933E060895CF93DF930E9419
:1057C000102B8EE080932F0620E1209330063CE0E2
:1057D0003093310690E59093360686E9809337063C
:1057E0009093390680933A0686E080933B0680E2E8
:1057F000809340068AE5809356069093570681E091
:105800008093580620935B0684E680935D06AFE79D
:10581000B6E0E1E7F1E0ED01019009923A95E1F798
:1058200063E770E0CD01875690400E94C22A8093C2
:105830008B06DF91CF910895CF93DF930E94102BB9
:105840008AE080932F0680E18093300626E0209343
:1058500031069AE59093360688E780933706909351
:10586000390680933A0620933B0620E220934006B7
:105870009093560680E5809357068CE380935806F4
:1058800020935B068BE480935D06AFE7B6E08CE087
:10589000E8E7F1E0ED01019009928A95E1F763E70D
:1058A00070E0CD01875690400E94C22A80938B06FB
:1058B000DF91CF910895CF93DF930E94102B88E062
:1058C00080932F0630E13093300626E02093310696
:1058D00094E69093360688E78093370690933906CE
:1058E00080933A0620933B06309340068AE58093E6
:1058F000560680E58093570696E49093580680E21A
:1059000080935B0690935D06AFE7B6E08CE0E0E83D
:10591000F1E0ED01019009928A95E1F763E770E00B
:10592000CD01875690400E94C22A80938B06DF915A
:10593000CF910895F999FECF92BD81BDF89A80B5B7
:1059400099270895F999FECF1FBA92BD81BD60BD18
:105950000FB6F894FA9AF99A0FBE08956EEA7AE2B1
:105960000E94D276089546EB5AE20E940C77089581
:10597000EF92FF920F931F93CF93C82F81508530E2
:1059800008F0C3E084E7C89F8001112480EFE82E6F
:105990008FEFF82EE00EF11E63E770E0C7010E9462
:1059A000D32A682F98012D593F4F8FB39927AC0107
:1059B0004270507081FDF9CF32BD21BDF89A80B59B
:1059C000861711F0CA0121C08FB399279C0122705C
:1059D000307081FDF9CFF2BCE1BCF89A80B5853515
:1059E00011F0C90112C084E7C89FC001112440977B
:1059F0002EEA3AE244E750E0BC0188E196E00E94DA
:105A0000AD760E948B6781E090E0CF911F910F915E
:105A1000FF90EF900895282F863010F025E003C006
:105A2000882309F421E0F999FECF1FBA82E090E0C3
:105A300092BD81BD20BD0FB6F894FA9AF99A0FBEB7
:105A40000895CF93C82F80911806853509F042C07C
:105A5000C63010F0C5E003C0CC2309F43BC063E7B7
:105A600070E088E196E00E94C22A80938B0684E76A
:105A7000C89FC001112426EB3AE244E750E068E1F8
:105A800076E040970E94EA7626EB3AE24CE050E05E
:105A900069E176E080E590E00E94EA766CE070E0F3
:105AA00089E196E00E94C22A282FF999FECF1FBAF9
:105AB0008CE590E092BD81BD20BD0FB6F894FA9AB6
:105AC000F99A0FBE8C2F0E940B2D0E948B6781E0EC
:105AD00090E002C080E090E0CF9108956DE470E026
:105AE00088EE93E00E94D32A482F8FB399279C0118
:105AF0002270307081FDF9CF85E394E092BD81BDC5
:105B0000F89A80B5841779F48FB399279C01227095
:105B1000307081FDF9CF88EE93E092BD81BDF89A97
:105B200080B5813011F0C90108952EEA3AE24EE4C1
:105B300050E068EE73E08CE896E00E94AD7681E07C
:105B400090E0089580918C068130A9F46DE470E0B6
:105B50008CE896E00E94C22A8093D90626EB3AE2AE
:105B60004EE450E06CE876E088EE93E00E94EA763E
:105B700081E090E0089580E090E00895CF93DF9376
:105B800081E080938C06ECE8F6E08FE015861686BF
:105B90001786108A8150349687FFF8CF80E480936F
:105BA000990680939A0610929B0680939C06809398
:105BB0009D0690EC90939E0610929F068093A006FF
:105BC0008093A1061092A2069093A3069093A40638
:105BD0008093A5061092A6068093A7069093A80628
:105BE000ADE8B6E087E0EAE8F1E0ED010190099266
:105BF0008A95E1F76DE470E0CD0101970E94C22A19
:105C00008093D906DF91CF910895F999FECF82E074
:105C100090E092BD81BDF89A80B5282F863078F04B
:105C200023E0322FF999FECF1FBA82E090E092BDB7
:105C300081BD30BD0FB6F894FA9AF99A0FBE822F43
:105C4000992708951F93CF93C82F162F863010F0F1
:105C5000C5E003C0882309F4C1E08C2F9927823066
:105C6000910541F08330910544F4019731F40E948D
:105C7000DD2B05C00E941C2C02C00E945B2C11234E
:105C8000E1F06CE070E080E590E00E94D32A282FDC
:105C9000F999FECF8CE590E092BD81BDF89A80B570
:105CA000821759F42EEA3AE24CE050E060E570E0E9
:105CB00089E196E00E94AD7602C00E94EB2A8C2F0B
:105CC0000E94212DCF911F910895DF92EF92FF92B4
:105CD0000F931F93CF93FF24DF2CEF2C81E090E0F4
:105CE0000E949A2C853539F031E0E32E65E581E09C
:105CF00090E00E94A22C6CE070E080E590E00E94B1
:105D0000D32AC82FF999FECF8CE590E092BD81BDD2
:105D1000F89A80B58C1711F421E0D22EC1E001E091
:105D200010E0EE2029F48C2F0E94B82C8823C1F5B6
:105D300091E0F92E1F930F9385E799E09F938F933E
:105D400086EF92E19F938F93E0912804F0912904CC
:105D500009958DB79EB706968DBF0230110549F0A3
:105D6000033011054CF40130110531F40E94DD2B94
:105D700005C00E941C2C02C00E945B2CDD2059F043
:105D80002EEA3AE24CE050E060E570E089E196E00E
:105D90000E94AD7602C00E94EB2A8C2F0E94212D1A
:105DA000CF5F0F5F1F4FC63008F4BBCFFF2019F045
:105DB00083E00E940B2D0E94052EC82F0E94B82C54
:105DC0008C2F99279F938F938BE999E09F938F93C3
:105DD00006EF12E11F930F93E0912804F09129043C
:105DE00009958DB79EB706968DBFEE2021F40E94CF
:105DF0006E2D882399F484EB99E09F938F931F93E2
:105E00000F93E0912804F091290409950E94BE2D7A
:105E10000E94A22D0F900F900F900F9010921706D6
:105E200090E0E9E9F6E0CFE08081349618160CF4B2
:105E30009F5FC150C7FFF8CF90931706892F99270E
:105E40009F938F938DE896E09F938F9385ED99E0D4
:105E50009F938F931F930F93E0912804F09129044F
:105E600009958DB79EB708968DBF86EF99E09F93F1
:105E70008F931F930F93E0912804F09129040995C3
:105E80000F900F900F900F90CF911F910F91FF9057
:105E9000EF90DF900895982F2FB7F8943998389A9B
:105EA00088B1836088B98091B9008C7F8093B900F4
:105EB0008AE28093B80010927202109270021092DF
:105EC0006F02992379F0E2EEF6E08BE01082118206
:105ED000128213821482158216821782815038969C
:105EE00087FFF4CF78942FBF08951092720284E94F
:105EF0008093BC0080E88093BC001092BD0010929B
:105F0000BA001092BB001092B9001092B800109223
:105F10006E0280E00E944B2F1092BB0085E88093B8
:105F2000BC0080916C02826080936C0208951F9285
:105F30000F920FB60F9211242F933F934F935F93BD
:105F40008F939F93EF93FF9380917202282F3327B3
:105F5000442755278F5F80937202F901273131055D
:105F600008F0C2C2EE59FF4F0C940A7981E0809389
:105F70006E0209C0809170028C3090F480917002A2
:105F80008F5F8093700280917002E82FFF27EE0FE1
:105F9000FF1FEE0FFF1FE457F94F8585181654F7C2
:105FA000809170028C3070F010926B0210926A0235
:105FB0001092700285E08093720280916F02880FC8
:105FC0008D5A04C080917002880F8E5A8093BB0056
:105FD00085E87FC280917002E82FFF2783E0EE0FF3
:105FE000FF1F8A95E1F7EE51F94F81818093BB0045
:105FF00085E88093BC0080917002E82FFF27EE0FA8
:10600000FF1FEE0FFF1FEE0FFF1FEE51F94F8081B4
:1060100080FF91C080917002E82FFF27EE0FFF1FD5
:10602000EE0FFF1FEE0FFF1FEE51F94F8281882305
:1060300029F080911706873008F46CC280916A02BB
:1060400090916B02892B09F065C280916802909152
:106050006902892B09F05EC26EC08091700221E056
:1060600030E002C0220F331F8A95E2F78091680268
:106070009091690228233923232B79F080917002B3
:10608000E82FFF27EE0FFF1FEE0FFF1FEE0FFF1F82
:10609000EE51F94F80E184830DC080917002E82FAA
:1060A000FF27EE0FFF1FEE0FFF1FEE0FFF1FEE513A
:1060B000F94F148280917002E82FFF2753E0EE0F12
:1060C000FF1F5A95E1F7EE51F94F8481282F3327AE
:1060D00043E0220F331F4A95E1F780917002E82FC9
:1060E000FF2793E0EE0FFF1F9A95E1F7EE51F94F6E
:1060F00082818770822B8093BB0085E88093BC00EF
:106100002091700281E090E002C0880F991F2A95CB
:10611000E2F720916A0230916B0282239323892B4C
:1061200051F08AED96E0909376028093750288E0B4
:1061300080937702EFC184E089C1E0917502F0910C
:10614000760281918093BB0085E88093BC00F09338
:106150007602E093750280917702815080937702F6
:10616000882309F4D7C183E071C18091B9008033DD
:1061700051F580917302882329F4809170028F5F1A
:106180008093730280917002E82FFF2783E0EE0F67
:10619000FF1F8A95E1F7EE51F94F838199278F7799
:1061A00090708F3791057CF480917002E82FFF2763
:1061B000EE0FFF1FEE0FFF1FEE0FFF1FEE51F94F07
:1061C00083818F5F83831092720284E98093BC0085
:1061D0008AE090E090939301809392018091700205
:1061E0008F5F80937002109272026DC18091B9002E
:1061F0008034C9F180916F02E82FFF27EE0FFF1F57
:10620000EE0FFF1FEE0FFF1FEE51F94F83818F77C7
:10621000838380916F028F5F80936F0280916F0202
:106220008C30A0F010926F021092690210926802F6
:10623000809174028F5F809374028C3038F01092DA
:10624000740280916C028D7F80936C0280916C024D
:10625000816080936C021092720284E98093BC008A
:1062600010926E0273C080916F02E82FFF27EE0F2D
:10627000FF1FEE0FFF1FEE0FFF1FEE51F94F83813F
:106280008068838380916F02E82FFF27EE0FFF1F46
:10629000EE0FFF1FEE0FFF1FEE51F94F808180FFC1
:1062A0002FC080916F02E82FFF2753E0EE0FFF1FF2
:1062B0005A95E1F7EE51F94F84819927009751F0F3
:1062C0004097D9F58AED96E0909376028093750217
:1062D00088E031C080916F02992743E0880F991FB1
:1062E0004A95E1F78951994F909376028093750210
:1062F00090916F02809174029817E1F483E01BC0C3
:1063000080916F02992733E0880F991F3A95E1F742
:106310008951994F909376028093750280916C0217
:1063200081FD06C090916F0280917402981711F45C
:1063300082E001C081E08093770280917702813012
:1063400011F485E801C085EC8093BC008091730254
:1063500080936D0210927302DDC0E0917502F0919E
:1063600076028091BB0080838091750290917602C5
:106370000196909376028093750280917702815006
:1063800080937702823010F085EC5DC0813011F48B
:1063900085E859C080916C0281FF2DC08091E9028F
:1063A00080FD1DC080916F02E82FFF2723E0EE0FD4
:1063B000FF1F2A95E1F7EE51F94F86818A3F79F464
:1063C00080916F02E82FFF2793E0EE0FFF1F9A9551
:1063D000E1F7EE51F94F8081816080830CC080919C
:1063E0006F02E82FFF2783E0EE0FFF1F8A95E1F78A
:1063F000EE51F94F108280916F028F5F80936F0290
:1064000080916F028C30A0F010926F02109269029E
:1064100010926802809174028F5F809374028C30B6
:1064200038F01092740280916C028D7F80936C0220
:106430001092720284E98093BC0080916C028160AA
:1064400080936C0265C08093BC0086E080937202EA
:1064500061C088E9BBCD80917102880F805FB6CDA5
:106460008091710299278130910561F08230910508
:106470001CF4892B21F04EC0029739F04BC080915B
:106480001301A4CD80911201A1CD809111019ECD67
:1064900080E89CCD1092720284E98093BC00109237
:1064A0006E028AE090E09093930180939201809134
:1064B0007102823088F4809171028F5F8093710243
:1064C00082E18093720280916C028E7F80936C02D5
:1064D00085EA8093BC001EC01092710280916C020C
:1064E000816080936C0216C01092720284E98093DE
:1064F000BC0080916C02816080936C028AE090E025
:1065000090939301809392011092700210926F0207
:1065100010926E02FF91EF919F918F915F914F9139
:106520003F912F910F900FBE0F901F9018951F93C2
:10653000CF93DF93182F80911403882321F4809147
:106540000302882319F081E090E097C01D3008F025
:1065500092C01123B1F0E12FFF2723E0EE0FFF1FC0
:106560002A95E1F7EE51F94F3597808135968823CA
:106570000CF081C03897808180FD03C083E090E0FB
:106580007CC08091DA06823019F084E090E075C01A
:1065900067E070E08AED96E00E94C22A9091E106E1
:1065A000891719F085E090E068C080ED97E00E94BF
:1065B0001C17EC0180916C0280FD05C0CE010E9489
:1065C00025178823B9F3112319F48FEF90E00BC03E
:1065D000212F33272150304081E090E002C0880F06
:1065E000991F2A95E2F790936B0280936A02A1E0CB
:1065F000B0E0E2EEF6E040E050E06BE0CD01042ECA
:1066000002C0880F991F0A94E2F720916A02309124
:106610006B0282239323892B11F011821282615025
:106620004F5F5F4F389667FFE9CF1092700210926C
:10663000720280916C028E7F80936C0285EA809357
:10664000BC0080916C0280FD05C0CE010E94251720
:106650008823B9F380916A0290916B02892B29F00B
:10666000CE010E942517882311F380916A02909130
:106670006B02009711F082E090E0DF91CF911F91C3
:1066800008950F931F93CF93DF93982F8091140356
:10669000882321F480910302882319F081E090E09F
:1066A00092C09D30A0F4992319F486E090E08BC04D
:1066B000C92FDD27FE0133E0EE0FFF1F3A95E1F70A
:1066C000EE51F94F35978081359687FD03C082E002
:1066D00090E079C03897808180FD03C083E090E02E
:1066E00072C080ED97E00E941C178C0180916C02B3
:1066F00080FD05C0C8010E9425178823B9F32197A2
:1067000021E030E0C90102C0880F991FCA95E2F765
:106710009093690280936802D901E2EEF6E040E0CE
:1067200050E06BE0CD01042E02C0880F991F0A943F
:10673000E2F7209168023091690282239323892B2A
:1067400011F01182128261504F5F5F4F389667FFE0
:10675000E9CF10926F021092DA061092E1061092C1
:10676000720280916C028E7F80936C0285EA809326
:10677000BC0080916C0280FD05C0C8010E942517F5
:106780008823B9F38091680290916902892B29F0DE
:10679000C8010E942517882311F38091DA06823000
:1067A00019F084E090E00FC067E070E08AED96E0B9
:1067B0000E94C22A9091E106891719F085E090E0C5
:1067C00002C080E090E0DF91CF911F910F9108957A
:1067D00089E1A7E7B7E0E3E4F7E01182108232969F
:1067E00011961C921E921296815087FFF6CF10923E
:1067F00083031092820310928503109284031092F7
:1068000087031092860308951F920F920FB60F927E
:1068100011240F931F932F933F934F935F936F9385
:106820007F938F939F93AF93BF93CF93DF93EF9318
:10683000FF9380917E0682FDCFC0409186005091EB
:1068400087008091790290917A02481B590B8091C0
:1068500086009091870090937A0280937902CA0112
:106860008D549440A0917B02B0917C02835F9A4149
:1068700078F480917B0280934207149714F0109271
:10688000940181E090E090937C0280937B0207C2A8
:10689000AD30B1050CF003C2CA018B5F9040845B40
:1068A000914008F074C0425D5140FD01EA0FFB1FAA
:1068B000ED5BF84F80819181FA01E81BF90BCF0164
:1068C000F7FF03C0909581959F4F06975CF48091E8
:1068D0001D03883C20F480911D03865F01C088EC75
:1068E00080931D03FD01EA0FFB1FED5BF84F8081D4
:1068F00091819C01220F331F280F391F240F351F50
:1069000037FF02C02D5F3F4FE901D595C795D5955B
:10691000C795CA0101968C179D0714F4219706C0EC
:1069200041505040C417D5070CF4219680911D03A7
:10693000833CE0F08D010A0F1B1FF801ED5BF84F5F
:10694000808191819E01281B390BC90163E070E0B1
:106950000E948378CB01880F991F860F971F0958D3
:10696000184FD80111969C938E9307C0AA0FBB1F96
:10697000A958B84F11961C921E92E0917B02F0919B
:106980007C02EE0FFF1FED5BF84FD183C083209197
:106990007B0230917C022F5F3F4F30937C0220932B
:1069A0007B0280910201843108F079C125303105E4
:1069B00011F45D9A01C05D9880917B0290917C02F8
:1069C0008630910511F45C9A01C05C98079711F428
:1069D0005B9A65C15B9863C14091860050918700C6
:1069E00080917D0290917E02481B590B8091860018
:1069F0009091870090937E0280937D02CA018D540E
:106A000094406091E702835F9A4108F07AC06093F6
:106A1000780280917802843008F453C09091420744
:106A200080917802981709F04CC05091E8025B30D1
:106A300008F43FC0109294011092E70240E05F31E9
:106A4000C0F0E42FFF27EE0FFF1F9F012D543D4F95
:106A5000DF01AD5BB84F8D919C91D9018D939C93D3
:106A6000DF01A958B84F8D919C91E353FD4F91835D
:106A70008083E42FFF27EE0FFF1F9F012D5B384F10
:106A8000DF01A158BD4F8D919C91D90111969C9326
:106A90008E93DF01A756BD4F8D919C91E958F84F19
:106AA00091838083842F8F5F482F8D3040F28093B5
:106AB000E7028091E8028F3FB9F08F5F8093E80290
:106AC00013C08091E802853620F08AE08093E802C6
:106AD00002C01092E802809102018A3011F08431E4
:106AE00010F0289A01C0289881E08093E7028091F5
:106AF0001403882309F0D3C0809178028093420761
:106B0000CEC06D3008F0A3C0CA018B5F9040845B9B
:106B1000914008F07EC0425D5140E62FFF27EE0F06
:106B2000FF1FE158FD4F80819181FA01E81BF90BAD
:106B3000CF0105960B97B0F48091E8028A3120F0DE
:106B400080911D03865F05C08B3028F080911D0366
:106B50008E5F80931D0380911D03893C18F088ECA3
:106B600080931D03E62FFF27EE0FFF1FE158FD4F17
:106B7000808191819C01220F331F280F391F240F20
:106B8000351F37FF02C02D5F3F4FE901D595C795EF
:106B9000D595C795CA0101968C179D0714F42197C6
:106BA00006C041505040C417D5070CF4219680917F
:106BB0001D038E3BD8F0E62FFF27EE0FFF1FDF01EE
:106BC000A158BD4F8D919C919E01281B390BC90185
:106BD00063E070E00E948378CB01880F991F860FD5
:106BE000971FE756FD4F9183808308C0E62FFF274C
:106BF000EE0FFF1FE756FD4F118210828091E702D2
:106C0000E82FFF27EE0FFF1FE158FD4FD183C08310
:106C100009C0809102018A3011F0843110F0289A65
:106C200001C0289880910201843188F48091E702A4
:106C3000853011F45D9A05C05D98863011F45C9A38
:106C400005C05C98873011F45B9A01C05B98809115
:106C5000E702843120F48F5F8093E70220C0843103
:106C6000F1F4809102018A3011F0843110F0289AF9
:106C700001C028988EE18093E7022CE0C7E7D7E0B7
:106C8000A3EBB2E0E3E4F7E08D919D9191838083E3
:106C90003296198218822296215027FFF5CFFF9154
:106CA000EF91DF91CF91BF91AF919F918F917F91A4
:106CB0006F915F914F913F912F911F910F910F9085
:106CC0000FBE0F901F901895EF92FF920F931F9396
:106CD000809134069927880F991F880F991F7C018E
:106CE0000027F7FC0095102F80917103909172039B
:106CF000A0917303B0917403BC01CD01A801970169
:106D00000E94B8783093C4052093C305809169032D
:106D100090916A03A0916B03B0916C03BC01CD010B
:106D2000A80197010E94B8783093C6052093C50545
:106D30008091FD079091FE0797FD039695958795A5
:106D4000959587959093C8058093C70580910D0808
:106D500090910E0897FD0396959587959595879543
:106D60009093CA058093C905809182039091830313
:106D70002091430230914402821B930B9093CC05E7
:106D80008093CB0580910F0390911003A091110384
:106D9000B0911203BC01CD0125E030E040E050E0AD
:106DA0000E94B8783093CE052093CD0580913D02A6
:106DB00090913E029093D0058093CF0580912F0350
:106DC000909130039093D4058093D30580911E0158
:106DD00090911F019093D6058093D50580911D0356
:106DE00099279093D8058093D705809109089091B1
:106DF0000A08A0910B08B0910C08209196013091DF
:106E000097014091980150919901BC01CD010E94D8
:106E1000B8783093DA052093D9058091E306992755
:106E20009093DC058093DB058091EB069927909386
:106E3000DE058093DD058091F30699279093E005A8
:106E40008093DF058091FB0699279093E20580935C
:106E5000E10580911E0290911F029093EC058093B2
:106E6000EB0580918008909181089093F0058093C4
:106E7000EF0580918408909185089093F2058093A6
:106E8000F1058091860899279093FE058093FD0572
:106E90008091F9039091FA03909300068093FF0587
:106EA0008091F7039091F803909302068093010676
:106EB00080914104882321F480914204882321F0A9
:106EC0008091C205816003C08091C2058E7F80934E
:106ED000C2051F910F91FF90EF9008951F93CF93DC
:106EE000DF93182FEB01809114038823A1F4115034
:106EF0001F3F89F0D0932502C09324028091240281
:106F000090912502892BD1F7CE018C0F9D1F0E94F5
:106F10003117115078F7DF91CF911F910895CF93DA
:106F2000DF93809102018D3011F40E94161B1092A4
:106F30007A0080914702909148029093C407809311
:106F4000C30780914502909146029093B5078093C4
:106F5000B407809143029091440290930308809378
:106F6000020820913F0230914002C901880F991F09
:106F7000880F991F820F931F820F931F9093FE0714
:106F80008093FD072091410230914202C901880F90
:106F9000991F880F991F820F931F820F931F909341
:106FA0000E0880930D088FEC80937A00AEE1B3E079
:106FB000CDE1D6E097E08991E82FFF27EE0FFF1F84
:106FC000ED5BF84F0190F081E02DE259FF4F1E1666
:106FD0001F061CF0E0E0F0E005C0EF3FF10514F003
:106FE000EFEFF0E08C91282F3327E217F30714F42A
:106FF000815004C02E173F0714F48F5F8C9391507B
:10700000119697FFD8CF809159069927AA27BB27B9
:10701000BC01CD0124EC39E040E050E00E9444780E
:10702000DC01CB018093D5019093D601A093D701C9
:10703000B093D80180915A069927AA27BB27BC0193
:10704000CD010E944478DC01CB018093D101909363
:10705000D201A093D301B093D401DF91CF910895D1
:10706000A0E0B0E0E6E3F8E30C94D978882EC0E025
:10707000D0E07E016E0110924104469AD0937D03C8
:10708000C0937C03D0937B03C0937A03D0937703A0
:10709000C0937603D0938703C0938603D093850370
:1070A000C0938403D0938303C09382031092BE01E4
:1070B0001092BD01109237020E948F3784E690E053
:1070C0000E943E170E948F378091250680FF10C0D6
:1070D0008091140190911501875B934038F4809161
:1070E0001401909115018E5E924010F40E94BB1A1B
:1070F0000FE18AE090E00E943E1780914302909158
:107100004402C80FD91F8091470290914802E80EAF
:10711000F91E8091450290914602C80ED91E015079
:1071200007FFE7CF9701205F3F4F369527953695AC
:1071300027953093870320938603C6014096969542
:1071400087959695879590938503809384036096A1
:10715000F5E0D695C795FA95E1F7D0938303C093F0
:107160008203909381038093800330937F03209365
:107170007E03882009F441C08091FD079091FE07AD
:1071800097FF03C0909581959F4F6CE070E00E943F
:1071900083789B0170937D0360937C0380910D083D
:1071A00090910E0897FF03C0909581959F4F6CE0DA
:1071B00070E00E94837870937B0360937A038091E0
:1071C0000A0690910B069093770380937603B9019A
:1071D00084E090E00E94B32C60917A0370917B036D
:1071E00086E090E00E94B32C609176037091770363
:1071F00088E090E00E94B32C65C084E090E00E949B
:10720000AE2C90937D0380937C0386E090E00E94F7
:10721000AE2C90937B0380937A0388E090E00E94E9
:10722000AE2C9C01909377038093760380917C032E
:1072300090917D038150984050F480917A03909111
:107240007B038150984018F421503440D8F187E1F5
:107250009AE09F938F9386EF92E19F938F93E091B3
:107260002804F091290409958091FD079091FE076B
:1072700097FF03C0909581959F4F6CE070E00E944E
:10728000837870937D0360937C0380910D089091C7
:107290000E0897FF03C0909581959F4F6CE070E0BA
:1072A0000E94837870937B0360937A0380910A062F
:1072B00090910B0690937703809376030F900F9035
:1072C0000F900F901092C4071092C3071092B50749
:1072D0001092B407109203081092020884E690E01E
:1072E0000E943E1780913F02909140029C01220F24
:1072F000331F220F331F280F391F280F391F3093D8
:10730000FE072093FD0780914102909142028C017B
:10731000000F111F000F111F080F191F080F191F51
:1073200010930E0800930D0880913406C82EDD24BA
:10733000EE24FF24442737FD4095542FC701B601A2
:107340000E9444784B015C01609371037093720357
:1073500080937303909374039801442737FD4095FD
:10736000542FC701B6010E944478DC01CB01809301
:10737000690390936A03A0936B03B0936C038092AC
:107380004D0390924E03A0924F03B092500380930E
:10739000450390934603A0934703B093480310928C
:1073A00041031092420310924303109244038091D0
:1073B000160190911701A0911801B09119019093B5
:1073C0000D0680930C061092360210923502109230
:1073D00031031092320310923303109234038091E0
:1073E0002F039091300390932E0380932D030E94DE
:1073F000146382E390E090932502809324028091AD
:1074000059069927AA27BB27BC01CD0124EC39E0F6
:1074100040E050E00E944478DC01CB018856954C56
:10742000AF4FBF4F8093D5019093D601A093D70162
:10743000B093D80180915A069927AA27BB27BC018F
:10744000CD010E944478DC01CB018856954CAF4FAA
:10745000BF4F8093D1019093D201A093D301B093F9
:10746000D40110929B0110929A0180912F03909168
:107470003003AA2797FDA095BA2F2091960130914D
:1074800097014091980150919901BC01CD010E9452
:107490004478DC01CB018093090890930A08A093FB
:1074A0000B08B0930C08109228031092270381E078
:1074B000809301010E948B678091E9028460809330
:1074C000E9028FEF80937B0810927C0880E2809322
:1074D0007D08CEE1D3E0ADE1B6E007E08D91E82F85
:1074E000FF27EE0FFF1FED5BF84F808191818259DE
:1074F0008993015007FFF2CF84E680931D038091AA
:107500002202882311F0469A579A8091860390911F
:10751000870380569940815C9B4228F0809141040A
:10752000816080934104809184039091850380560B
:107530009940815C9B4228F0809141048260809355
:10754000410480918203909183038C52914089572A
:10755000954028F08091410484608093410480919B
:107560007C0390917D038C529140835C914028F084
:107570008091410488608093410480917A039091C6
:107580007B038C529140835C914028F080914104B0
:1075900080618093410480917603909177038050BD
:1075A00092408355914028F08091410480628093FD
:1075B0004104ECE0CDB7DEB70C94F578A3E1B0E080
:1075C000E4EEFAE30C94D3788091820390918303E4
:1075D0002091430230914402821B930B9093030845
:1075E0008093020880914D0290914E0297FD07967C
:1075F0009C0113E0359527951A95E1F73093C40760
:107600002093C30780914B0290914C0297FD0796FF
:10761000B3E095958795BA95E1F79093B507809378
:10762000B4073093CF072093CE079093C70780937A
:10763000C6078091FD079091FE07AC01440F551FCE
:10764000480F591F20913F0230914002C901880F15
:10765000991F880F991F820F931F820F931F480F46
:10766000591F57FF02C04D5F5F4F55954795559580
:1076700047955093FE074093FD0780910D08909128
:107680000E08AC01440F551F480F591F20914102AD
:1076900030914202C901880F991F880F991F820FEC
:1076A000931F820F931F480F591F57FF02C04D5F52
:1076B0005F4F559547955595479550930E084093C4
:1076C0000D0820913F0230914002C901880F991F97
:1076D000880F991F820F931F820F931F9C014427CD
:1076E00037FD4095542F8091610390916203A091E2
:1076F0006303B0916403820F931FA41FB51F80938F
:10770000610390936203A0936303B0936403209199
:10771000410230914202C901880F991F880F991FB9
:10772000820F931F820F931F9C01442737FD4095C2
:10773000542F80915D0390915E03A0915F03B091FF
:107740006003820F931FA41FB51F80935D03909366
:107750005E03A0935F03B09360038091D80790917C
:10776000D90720913F0230914002820F931F9093DE
:10777000D9078093D8078091050890910608209139
:10778000410230914202820F931F9093060880932A
:10779000050880917803909179030196909379037D
:1077A0008093780380910A0690910B0620917603CE
:1077B00030917703821B930B9C01442737FD409542
:1077C000542F8091590390915A03A0915B03B0917B
:1077D0005C03820F931FA41FB51F809359039093DE
:1077E0005A03A0935B03B0935C038FEC80937A0001
:1077F000109210012091490330914A0340914B03AC
:1078000050914C0329873A874B875C8729543B4624
:10781000414050402CF028E43BE641E050E00DC0F0
:1078200089859A85AB85BC85885B9449AE4FBF4FEF
:107830004CF428EB34E94EEF5FEF2D833E834F830A
:10784000588708C089859A85AB85BC858D839E83C2
:10785000AF83B88720915103309152034091530375
:10786000509154032D873E874F87588B29543B46B0
:10787000414050402CF028E43BE641E050E00DC090
:107880008D859E85AF85B889885B9449AE4FBF4F83
:107890004CF428EB34E94EEF5FEF29833A834B83B6
:1078A0005C8308C08D859E85AF85B88989839A835E
:1078B000AB83BC83A0910208B0910308BB8BAA8B59
:1078C000FD01CF01AA2797FDA095BA2FA0904103F3
:1078D000B0904203C0904303D0904403A80EB91E59
:1078E000CA1EDB1EA0924103B0924203C092430322
:1078F000D0924403E0900908F0900A0800910B0828
:1079000010910C08E80EF91E0A1F1B1FE0920908CF
:10791000F0920A0800930B0810930C08F0910403EE
:10792000F98BFF2309F098C180910303882309F0A4
:1079300093C18091250686FF8FC18091B4079091F5
:10794000B507AA2797FDA095BA2FBC01CD012981C3
:107950003A814B815C810E9444789B01AC0197FF86
:1079600004C02150384F4F4F5F4FBBE055954795AE
:1079700037952795BA95D1F78091BD01682E772468
:1079800088249924CA01B901A40193010E94447872
:10799000DC01CB018093920390939303A093940313
:1079A000B0939503B7FF04C08150904FAF4FBF4FC6
:1079B0001C012D01ACE05594479437942794AA9567
:1079C000D1F7209292033092930340929403509205
:1079D00095038091C3079091C407AA2797FDA095AE
:1079E000BA2FBC01CD012D813E814F8158850E9467
:1079F000447897FF04C06150784F8F4F9F4FFBE052
:107A00009595879577956795FA95D1F7A401930198
:107A10000E944478DC01CB018093960390939703F6
:107A2000A0939803B0939903B7FF04C08150904F7F
:107A3000AF4FBF4F9C01AD01ECE055954795379591
:107A40002795EA95D1F720939603309397034093B7
:107A5000980350939903809192039091930390938C
:107A6000AC078093AB078091960390919703909316
:107A7000B0078093AF0722193309440955092093B1
:107A80009603309397034093980350939903E20E23
:107A9000F31E041F151FE0920908F0920A080093D4
:107AA0000B0810930C088091BC018823B1F457FF98
:107AB00004C02F5F3F4F4F4F5F4F55954795379508
:107AC0002795A21AB30AC40AD50AA0924103B0921C
:107AD0004203C0924303D09244032A893B8979012F
:107AE0000027F7FC0095102F809196039091970343
:107AF000A0919803B0919903E80EF91E0A1F1B1F6D
:107B0000C801B70129813A814B815C810E94447888
:107B10009B01AC0197FF04C02150384F4F4F5F4F7E
:107B20006BE055954795379527956A95D1F78091E4
:107B3000BE01A82EBB24CC24DD24CA01B901A601B4
:107B400095010E944478DC01CB0180938A039093D5
:107B50008B03A0938C03B0938D03B7FF04C08150B7
:107B6000904FAF4FBF4F3C014D013CE0959487943F
:107B7000779467943A95D1F760928A0370928B0359
:107B800080928C0390928D03C801B7012D813E81B4
:107B90004F8158850E94447897FF04C06150784F08
:107BA0008F4F9F4F2BE095958795779567952A95F1
:107BB000D1F7A60195010E944478DC01CB018093A6
:107BC0008E0390938F03A0939003B0939103B7FF1C
:107BD00004C08150904FAF4FBF4FAC01BD018CE04E
:107BE00075956795579547958A95D1F740938E037C
:107BF00050938F0360939003709391032A893B897C
:107C000037FF03C0309521953F4F21343105E4F112
:107C1000D401C30197FE07C0B095A09590958195BA
:107C20009F4FAF4FBF4F81389105A105B10584F437
:107C3000DB01CA0177FF07C0B095A09590958195AB
:107C40009F4FAF4FBF4F81389105A105B105E4F0BB
:107C500081E08093290318C01092B0071092AF07FB
:107C60001092AC071092AB0710928E0310928F0304
:107C7000109290031092910310928A0310928B033A
:107C800010928C0310928D0380918E0390918F033C
:107C9000A0919003B0919103BC01CD0124E630E0A6
:107CA00040E050E00E94B878E0908A03F0908B03A7
:107CB000E21AF30AF092C207E092C10780918A03A8
:107CC00090918B03A0918C03B0918D03BC01CD01E9
:107CD00024E630E040E050E00E94B878DA01C901C3
:107CE00020918E0330918F038C01021B130B109394
:107CF000B7070093B6078091960190919701A091E4
:107D00009801B0919901BC01CD0128E631E040E035
:107D100050E00E9444782091090830910A0840916F
:107D20000B0850910C08261737074807590764F0CD
:107D3000261B370B480B590B2093090830930A0870
:107D400040930B0850930C082091090830910A08C1
:107D500040910B0850910C0857FF0CC0260F371F9D
:107D6000481F591F2093090830930A0840930B08B5
:107D700050930C086091B4077091B5076E0D7F1D8C
:107D80009B01442737FD4095542F809145039091E6
:107D90004603A0914703B0914803820F931FA41F8D
:107DA000B51F8093450390934603A0934703B09378
:107DB00048038091090390910A03681B790BCB015A
:107DC000AA2797FDA095BA2F29853A854B855C8512
:107DD000820F931FA41FB51F8093490390934A03FA
:107DE000A0934B03B0934C03C090D101D090D2012B
:107DF000E090D301F090D401C816D906EA06FB063C
:107E0000C4F488EA91E6A0E0B0E08C199D09AE09BF
:107E1000BF098093490390934A03A0934B03B09307
:107E20004C038093450390934603A0934703B0937C
:107E3000480322273327A9012C193D094E095F0960
:107E40008091490390914A03A0914B03B0914C0358
:107E500082179307A407B507B4F4D701C601885A5F
:107E60009146A040B0408093490390934A03A09369
:107E70004B03B0934C038093450390934603A09328
:107E80004703B09348036091C3077091C407600F24
:107E9000711F9B01442737FD4095542F80914D035E
:107EA00090914E03A0914F03B0915003820F931F06
:107EB000A41FB51F80934D0390934E03A0934F03CF
:107EC000B09350038091070390910803681B790BCE
:107ED000CB01AA2797FDA095BA2F2D853E854F850A
:107EE0005889820F931FA41FB51F8093510390934D
:107EF0005203A0935303B0935403E090D501F09044
:107F0000D6010091D7011091D801E816F9060A07A9
:107F10001B07C4F488EA91E6A0E0B0E08E199F093F
:107F2000A00BB10B8093510390935203A093530382
:107F3000B093540380934D0390934E03A0934F034B
:107F4000B093500322273327A9012E193F09400B74
:107F5000510B8091510390915203A0915303B09122
:107F6000540382179307A407B507B4F4D801C701D7
:107F7000885A9146A040B040809351039093520399
:107F8000A0935303B093540380934D0390934E03F7
:107F9000A0934F03B093500380914103909142030B
:107FA000A0914303B09144038093550390935603EB
:107FB000A0935703B09358038091510390915203BB
:107FC000A0915303B0915403809371039093720373
:107FD000A0937303B09374038091490390914A0373
:107FE000A0914B03B0914C038093690390936A0373
:107FF000A0936B03B0936C0380914D0390914E035B
:10800000A0914F03B091500380936D0390936E0342
:10801000A0936F03B0937003809145039091460342
:10802000A0914703B0914803809365039093660342
:10803000A0936703B093680380911C0190911D0188
:1080400097FD079603E0959587950A95E1F790933C
:10805000C4078093C30780911A0190911B0197FD7B
:10806000079613E0959587951A95E1F79093B507D4
:108070008093B40780914702909148020F9734F49F
:1080800088E19CEF9093C4078093C30780914702D7
:1080900090914802079734F480E398EF9093C407D7
:1080A0008093C307209102012A30A9F480914702EE
:1080B00090914802835F934034F088EE93E0909370
:1080C000C4078093C30780914702909148028A5F5A
:1080D0009340DCF014C08091470290914802815D8A
:1080E000974034F088EE93E09093C4078093C307E1
:1080F0008091470290914802805E974034F080ED75
:1081000097E09093C4078093C307809145029091B4
:1081100046020F9734F488E19CEF9093B507809363
:10812000B4078091450290914602079734F480E3AA
:1081300098EF9093B5078093B4072A30A9F4809103
:10814000450290914602835F934034F088EE93E0BD
:108150009093B5078093B4078091450290914602B1
:108160008A5F9340DCF014C08091450290914602F2
:10817000815D974034F088EE93E09093B50780934B
:10818000B4078091450290914602805E974034F09A
:1081900080ED97E09093B5078093B4076091C80194
:1081A000662309F4AFC040911C0150911D018091DC
:1081B0009A0390919B03481B590B5093A103409342
:1081C000A00320911C0130911D01280F391F37FF9A
:1081D00002C02F5F3F4F3595279530939B03209327
:1081E0009A03413851051CF080E890E005C04058E2
:1081F0005F4F34F480E89FEF9093A1038093A00336
:1082000040911A0150911B0180919C0390919D0314
:10821000481B590B50939F0340939E0320911A01D2
:1082200030911B01280F391F37FF02C02F5F3F4FCE
:108230003595279530939D0320939C034138510534
:108240001CF080E890E005C040585F4F34F480E8AF
:108250009FEF90939F0380939E03462F5527809115
:10826000A0039091A103849FB001859F700D949FFE
:10827000700D11249B0177FF02C0215F3F4FF4E096
:1082800035952795FA95E1F78091C3079091C4073A
:10829000820F931F9093C4078093C30780919E031E
:1082A00090919F03849FD001859FB00D949FB00D46
:1082B0001124AD019D01B7FF02C0215F3F4FE4E0F3
:1082C00035952795EA95E1F78091B4079091B50728
:1082D000820F931F9093B5078093B40780911C0180
:1082E00090911D01860F971F90931D0180931C0193
:1082F00080911A0190911B01840F951F90931B018F
:1083000080931A010091C6071091C7078091AB07AF
:108310009091AC07101611065CF59C0197FF04C004
:1083200022273327281B390BC901AA2797FDA095BF
:10833000BA2F2091BC01332744275527BC01CD011A
:108340000E9444789B01AC0197FF04C0215C3F4F21
:108350004F4F5F4F76E055954795379527957A951E
:10836000D1F78091C1079091C207820F931F27C058
:1083700097FF03C0909581959F4FAA2797FDA095E1
:10838000BA2F2091BC01332744275527BC01CD01CA
:108390000E9444789B01AC0197FF04C0215C3F4FD1
:1083A0004F4F5F4F66E055954795379527956A95EE
:1083B000D1F78091C1079091C207821B930B9093D4
:1083C000C2078093C107E090CE07F090CF0780915D
:1083D000AF079091B0071E141F045CF59C0197FF36
:1083E00004C022273327281B390BC901AA2797FD70
:1083F000A095BA2F2091BC01332744275527BC01F3
:10840000CD010E9444789B01AC0197FF04C0215C20
:108410003F4F4F4F5F4F96E05595479537952795BE
:108420009A95D1F78091B6079091B707820F931F65
:1084300027C097FF03C0909581959F4FAA2797FD6E
:10844000A095BA2F2091BC01332744275527BC01A2
:10845000CD010E9444789B01AC0197FF04C0215CD0
:108460003F4F4F4F5F4F86E055954795379527957E
:108470008A95D1F78091B6079091B707821B930B2D
:108480009093B7078093B6078091250687FF44C075
:10849000B989BB2309F040C0809103038823E1F52B
:1084A000E1E0EE16E1E0FE064CF08091C30790910A
:1084B000C4078E0D9F1D805091400DC0F0E0EF1657
:1084C000FFEFFF0664F48091C3079091C4078E0DFF
:1084D0009F1D80509F4F9093C4078093C30721E056
:1084E000013012074CF08091B4079091B507800FCE
:1084F000911F805091400CC03FEF0030130764F48F
:108500008091B4079091B507800F911F80509F4FC5
:108510009093B5078093B407E2E1CD5E0C94EF78B9
:1085200080911403882301F58091E9028C7F809368
:10853000E902A6E4B4E0E2EEF6E09BE080910302FB
:10854000882309F48C938D918183128291503896FF
:1085500097FFF4CF80910302882359F080910302A2
:1085600081508093030205C08091E902816080936D
:10857000E90280916E02882319F010926E0208952C
:10858000809370028093720280916C028E7F809340
:108590006C0285EA8093BC000895CF93DF93AEE12F
:1085A000B3E0CDE1D6E057E08991E82FFF27EE0F49
:1085B000FF1FED5BF84F0190F081E02DE259FF4F76
:1085C000EF3FF10521F01CF0EFEFF0E004C0F7FF02
:1085D00002C0E0E0F0E04C91242F3327E217F307CC
:1085E000A9F0CF01821B930B97FD03969595879574
:1085F00095958795242F280F2C93822F9927E8177C
:10860000F90714F4215001C02F5F2C93515011969B
:1086100057FFCACF80912706883F38F0EFEFF0E090
:10862000E81BF109E25EFC4F80818093CE018091CE
:10863000CE01882329F0843618F084E68093CE0199
:1086400080912906883F38F0EFEFF0E0E81BF10950
:10865000E25EFC4F80818093CC018091CC01882325
:1086600029F0843618F084E68093CC018091360698
:10867000883F38F0EFEFF0E0E81BF109E25EFC4FD5
:1086800080818093C7018091C7018B3010F48AE00C
:1086900002C08F3F11F48093C70180916306883F29
:1086A00038F0EFEFF0E0E81BF109E25EFC4F80816B
:1086B0008093DA078091DA07823010F481E002C0FB
:1086C0008F3F11F48093DA0780916506883F38F078
:1086D000EFEFF0E0E81BF109E25EFC4F8081809350
:1086E000000880910008823010F481E002C08F3FC2
:1086F00011F48093000880915006883F38F0EFEF26
:10870000F0E0E81BF109E25EFC4F80818093D7071F
:1087100080915106883F38F0EFEFF0E0E81BF10957
:10872000E25EFC4F80818093B10780915206883FC2
:1087300038F0EFEFF0E0E81BF109E25EFC4F8081DA
:108740008093DF0790912806983F18F49093CD010D
:1087500009C0EFEFF0E0E91BF109E25EFC4F808118
:108760008093CD01983F18F49093CD0109C0EFEFAD
:10877000F0E0E91BF109E25EFC4F80818093CD01BE
:1087800080912B06883F38F0EFEFF0E0E81BF1090D
:10879000E25EFC4F80818093CB0180912D06883F63
:1087A00038F0EFEFF0E0E81BF109E25EFC4F80816A
:1087B0008093C90180913506883F38F0EFEFF0E0F3
:1087C000E81BF109E25EFC4F80818093CA01809131
:1087D0003706883F38F0EFEFF0E0E81BF109E25E82
:1087E000FC4F80818093C60180913806883F38F025
:1087F000EFEFF0E0E81BF109E25EFC4F808180932F
:10880000C80180913906883F38F0EFEFF0E0E81BAF
:10881000F109E25EFC4F80818093C50180913A06A8
:10882000883F38F0EFEFF0E0E81BF109E25EFC4F23
:1088300080818093C40180914006883F38F0EFEF3B
:10884000F0E0E81BF109E25EFC4F80818093C201F9
:1088500080914106883F38F0EFEFF0E0E81BF10926
:10886000E25EFC4F80818093FE0280914206883F49
:1088700038F0EFEFF0E0E81BF109E25EFC4F808199
:108880008093FD0280914306883F38F0EFEFF0E0DF
:10889000E81BF109E25EFC4F80818093FC0280912D
:1088A0004406883F38F0EFEFF0E0E81BF109E25EA4
:1088B000FC4F80818093FB0280915E06883F38F0F8
:1088C000EFEFF0E0E81BF109E25EFC4F808180935E
:1088D000FA0280915F06883F38F0EFEFF0E0E81B86
:1088E000F109E25EFC4F80818093F902809160067D
:1088F000883F38F0EFEFF0E0E81BF109E25EFC4F53
:1089000080818093F80280916106883F38F0EFEF14
:10891000F0E0E81BF109E25EFC4F80818093F702F2
:1089200080914506883F38F0EFEFF0E0E81BF10951
:10893000E25EFC4F80818093C10180914906883FAF
:1089400038F0EFEFF0E0E81BF109E25EFC4F8081C8
:108950008093C00180915306883F38F0EFEFF0E03C
:10896000E81BF109E25EFC4F80818093BF0180919A
:108970005606883F38F0EFEFF0E0E81BF109E25EC1
:10898000FC4F80818093BE0180915706883F38F06C
:10899000EFEFF0E0E81BF109E25EFC4F808180938D
:1089A000BD0180915806883F38F0EFEFF0E0E81BFA
:1089B000F109E25EFC4F80818093BC0180915D06ED
:1089C000883F38F0EFEFF0E0E81BF109E25EFC4F82
:1089D00080818093BB0180917806883F38F0EFEF6B
:1089E000F0E0E81BF109E25EFC4F80818093100803
:1089F0008091C201282F33272F5F3F4F8CE398E2ED
:108A0000B9010E9483787093D0016093CF01809167
:108A1000330680930108809132068093C8079091B5
:108A20007A06933320F181E08093F602983F58F064
:108A3000EFEFF0E0E91BF109E25EFC4F8081823349
:108A400010F41092F60280914E0890914F0897FF13
:108A500008C08091F602882321F08091410480684B
:108A600003C0809141048F778093410402C010922B
:108A7000F60280914E0890914F0897FF1DC080919B
:108A800014038823C9F08091F6028823A9F080910D
:108A90000801909109018F5F9F4F71F488E99AE373
:108AA000909325028093240280E094EA9093090138
:108AB000809308011092F6028091F602882339F023
:108AC0008091BE01823D18F4825E8093BE01DF91E9
:108AD000CF910895A8E1B0E0E0E7F5E40C94D378F5
:108AE0000E94DE3A309102013C3010F4299A01C014
:108AF0002998E0901503F0901603FA82E98280919C
:108B0000C80799270A96E816F90614F49A83898308
:108B100080911D03843608F05CC08091B60390916B
:108B2000B703009731F001979093B7038093B60392
:108B300007C0109214038091E9028F7E8093E902AE
:108B40003A3011F0343110F0289A01C02898809101
:108B5000EA029091EB02895E9340C0F180913D065C
:108B6000282F33273A8329838091E90280618093FB
:108B7000E90280911906A82FBB27AA0FBB1FFD0190
:108B8000E958F84F1182108280911A06282F332756
:108B9000220F331FC9018958984FFC01118210829E
:108BA000AD5BB84F11961C921E922D5B384FD901C8
:108BB00011961C921E9280911C06E82FFF27EE0F43
:108BC000FF1FED5BF84F11821082C9C2109214038F
:108BD000C6C280911D038D3808F4C1C28091E9029C
:108BE0008F7E8093E90290913E0682E3989FC001B8
:108BF00011249093B7038093B603E981FA81B99762
:108C00008CF080911403882369F08091EA0290919E
:108C1000EB02FFEF8F3F9F0729F001969093EB0245
:108C20008093EA028091EA029091EB028F3F9105D6
:108C300009F038F51092390310923A0310923B0371
:108C400010923C03109235031092360310923703B2
:108C5000109238031092A2031092A3031092A4035F
:108C60001092A50310924103109242031092430305
:108C7000109244038A3F910549F481E08093BC033C
:108C800005C08091E90282608093E90280911B0611
:108C9000E82FFF27EE0FFF1FED5BF84F80819181DA
:108CA000813591050CF441C120911403222309F070
:108CB0003CC180911C06E82FFF27EE0FFF1FED5BE4
:108CC000F84F808191818C3491050CF406C180911C
:108CD000B8038F5F8093B803893C08F426C13C3009
:108CE00010F4299801C0299A109214031092B80325
:108CF0001092EB021092EA0230911906E32FFF273F
:108D0000EE0FFF1FED5BF84F808191818734910555
:108D1000B4F480911A06E82FFF27EE0FFF1FED5BDA
:108D2000F84F808191810190F081E02DF7FF03C021
:108D3000F095E195FF4FE734F1050CF478C041E080
:108D400020911A06A22FBB27AA0FBB1FAD5BB84FFD
:108D50008D919C9111978734910544F0E32FFF2763
:108D6000EE0FFF1FED5BF84F808191818D919C91FB
:108D70008734910574F080911906E82FFF27EE0FD4
:108D8000FF1FED5BF84F80819181873491050CF0D6
:108D900042E0E22FFF27EE0FFF1FED5BF84F8081CF
:108DA00091818634910574F480911906E82FFF278C
:108DB000EE0FFF1FED5BF84F8081918187349105A5
:108DC0000CF043E0E22FFF27EE0FFF1FED5BF84FA3
:108DD000808191818A5B9F4F74F480911906E82FFE
:108DE000FF27EE0FFF1FED5BF84F808191818734E5
:108DF00091050CF044E0E22FFF27EE0FFF1FED5B23
:108E0000F84F808191818A5B9F4F74F4809119069D
:108E1000E82FFF27EE0FFF1FED5BF84F8081918158
:108E2000863491050CF445E0842F0E940B2D80912F
:108E30001A06E82FFF27EE0FFF1FED5BF84F80812A
:108E400091810190F081E02DF7FF03C0F095E1954D
:108E5000FF4F7E97BCF480911906E82FFF27EE0F95
:108E6000FF1FED5BF84F808191818A5B9F4F54F427
:108E700081E080935C0488EE93E0909325028093D8
:108E8000240253C00E94052E0E94B82C80E00E944C
:108E9000380780913F060E945D748091250680FF0F
:108EA00010C08091140190911501875B934038F4B4
:108EB00080911401909115018E5E924010F40E94F1
:108EC000BB1A1092220280E00E94303881E0809329
:108ED000BB0380932202579A1FC080819181855BDA
:108EE0009F4F0CF58091B8038F5F8093B803893C46
:108EF000E0F03C3010F4299801C0299A1092140334
:108F00001092B8031092EB021092EA0281E00E94E4
:108F1000303881E08093BB030E94052E68E770E043
:108F20000E946E3702C02093B80380911B06E82F81
:108F3000FF27EE0FFF1FED5BF84F808191818B5A69
:108F40009F4F0CF00CC130911403E0911C063323A9
:108F500009F0DAC0FF27EE0FFF1FED5BF84F8081AD
:108F60009181855B9F4F0CF0CCC020917B06E22F56
:108F7000FF27EE0FFF1FED5BF84F80819181855B2E
:108F80009F4F1CF0222309F0BCC08091B9038F5F72
:108F90008093B903893C08F4E2C03093B90380910F
:108FA0004104882309F0A6C08091BB03882309F4FB
:108FB000A1C081E090E09093EB028093EA0281E00F
:108FC000809314031092A2031092A3031092A4039F
:108FD0001092A50310924103109242031092430392
:108FE0001092440310923D0310923E0310923F03EF
:108FF0001092400380913406E82EFF2400271127A9
:109000008091FD079091FE079C01442737FD409514
:10901000542FC801B7010E944478DC01CB01809332
:10902000510390935203A0935303B0935403809140
:109030000D0890910E089C01442737FD4095542F50
:10904000C801B7010E944478DC01CB018093490339
:1090500090934A03A0934B03B0934C038091710308
:1090600090917203A0917303B091740380934D03A8
:1090700090934E03A0934F03B093500380916903E4
:1090800090916A03A0916B03B0916C0380934503A8
:1090900090934603A0934703B0934803109239037B
:1090A00010923A0310923B0310923C031092350346
:1090B0001092360310923703109238038091E90220
:1090C00088608093E902909179068FE0989F9001E3
:1090D000112480912F0390913003820F931F68E633
:1090E00071E00E94837897FD01969595879580930E
:1090F000750335C08CED95E0909325028093240292
:109100002EC01092B9032BC0FF27EE0FFF1FED5B9F
:10911000F84F808191818C349105FCF020917B0681
:10912000E22FFF27EE0FFF1FED5BF84F808191814B
:10913000855B9F4F14F0222381F48091BA038F5FE7
:109140008093BA03893C58F0109214031092BA032A
:109150001092EB021092EA0202C01092BA038091C0
:109160009401815080939401809194018F3F21F06C
:109170008091E90284FF72C30E94CD428091C503B1
:109180009091C6039C01220F331F280F391FC090F6
:109190001906AC2DBB27AA0FBB1FFD01ED5BF84FD5
:1091A000B0902F064B2D552780819181849FF0012F
:1091B000859FF00D949FF00D11242E0F3F1F37FF58
:1091C00002C02D5F3F4FB9017595679575956795FD
:1091D000A958B84F80913006082F11278D919C9186
:1091E000809F7001819FF00C909FF00C11246E0DF8
:1091F0007F1D7093C6036093C5038091C703909150
:10920000C8039C01220F331F280F391FD0901A0664
:10921000AD2DBB27AA0FBB1FFD01ED5BF84F808171
:109220009181849FF001859FF00D949FF00D112492
:109230002E0F3F1F37FF02C02D5F3F4FA9015595ED
:10924000479555954795A958B84F8D919C91809F0A
:109250007001819FF00C909FF00C11244E0D5F1D4A
:109260005093C8034093C7038091F602882309F402
:1092700048C0CB0177FD0396DC01B595A795B59560
:10928000A795CA0157FD0396FC01F595E795F5955D
:10929000E7958091EA01682F772767FD70956A9FAF
:1092A00090016B9F300D7A9F300D11248091FD034A
:1092B000482F552747FD50954E9FC0014F9F900D59
:1092C0005E9F900D1124280F391F37FF02C0295FC0
:1092D0003F4F03E0359527950A95E1F730931C033E
:1092E00020931B036E9F90016F9F300D7E9F300D6A
:1092F00011244A9FC0014B9F900D5A9F900D11243D
:109300003FC080917906E82FFF27E456FE4F868103
:109310008093EA0190819093FD03A82FBB27A7FDBE
:10932000B095A69F9001A79F300DB69F300D1124D8
:10933000E92FFF27E7FDF095E49FC001E59F900D21
:10934000F49F900D1124280F391F37FF02C0295FA9
:109350003F4F13E0359527951A95E1F730931C039D
:1093600020931B03A49F9001A59F300DB49F300D47
:109370001124E69FC001E79F900DF69F900D1124E8
:10938000281B390B37FF02C0295F3F4FF3E03595AB
:109390002795FA95E1F730931A03209319038091EA
:1093A0001C06E82FFF27EE0FFF1FED5BF84F8081B3
:1093B0009181909581959F4F909318038093170307
:1093C0008330910514F0029705C00FEF8E3F900790
:1093D00034F40296909318038093170304C01092FC
:1093E0001803109217038091F9039091FA032091CA
:1093F000F5033091F603820F931F00911B03109128
:109400001C03081B190B10931C0300931B03809172
:10941000F7039091F8032091F3033091F403820F46
:10942000931F8090190390901A03881A990A9092BA
:109430001A038092190380911B06E82FFF27EE0F75
:10944000FF1FED5BF84FE080F18028E730E0E20E8F
:10945000F31EF0921603E09215038091C70199273D
:10946000AA2797FDA095BA2FBC01CD010E94B8771D
:10947000DC01CB0120E030E040E251E4BC01CD0151
:109480000E942677DC01CB01BC01CD010E948A77C6
:10949000DC01CB01809307088091C6018093E0072F
:1094A0008091C5019927AA2797FDA095BA2FBC01E5
:1094B000CD010E94B877DC01CB0120E030E040E232
:1094C00051E4BC01CD010E942677DC01CB01BC0137
:1094D000CD010E948A77DC01CB018093BB0780918C
:1094E000C4018093D0078091680480FF59C08091A7
:1094F0001008813808F454C080916104992787FDD1
:1095000090952B2D3327829FA001839F500D929F12
:10951000500D1124040F151F10931C0300931B03FF
:1095200080916204992787FD9095829FB001839F67
:10953000700D929F700D1124860E971E90921A0343
:109540008092190380916304282F332727FD3095DB
:109550008091170390911803820F931F9093180323
:109560008093170380916504282F332727FD3095BA
:1095700080912A069927289FD001299FB00D389FF6
:10958000B00D1124B0939B01A0939A0180916404C3
:1095900099278E159F0524F4909316038093150345
:1095A000809115039091160397FF04C01092160343
:1095B000109215038091250682FF02C01092E007E9
:1095C00040911B0350911C03CA0157FD03969C0157
:1095D000359527953595279537FF03C0309521950B
:1095E0003F4F8091EE029091EF0282179307B4F4FF
:1095F000CA0157FF03C0909581959F4F97FD039631
:1096000095958795959587959093EF028093EE02B7
:109610008536910544F084E690E001C0019790936F
:10962000EF028093EE024091190350911A03CA0190
:1096300057FD03969C01359527953595279537FF5E
:1096400003C0309521953F4F8091EC029091ED023F
:1096500082179307B4F4CA0157FF03C09095819510
:109660009F4F97FD03969595879595958795909330
:10967000ED028093EC028536910544F084E690E09B
:1096800001C001979093ED028093EC028091E90272
:1096900084FF08C01092EF021092EE021092ED02C9
:1096A0001092EC02ED2DFF27EE0FFF1FED5BF84F40
:1096B00040915406242F3327808191812817390740
:1096C00044F480917C0682FF04C081E08093020311
:1096D00013C0ED2DFF27EE0FFF1FED5BF84F842F1A
:1096E000992720915506821B9109208131812817E5
:1096F000390714F41092020340911A06E42FFF2751
:10970000EE0FFF1FED5BF84F50915406852F992700
:1097100022273327281B390B8081918182179307D9
:1097200044F480917C0683FF04C081E080930103B0
:1097300016C080910103882391F0E42FFF27EE0FDC
:10974000FF1FED5BF84F809155069927851B910906
:10975000208131818217930714F410920103EC2DBC
:10976000FF27EE0FFF1FED5BF84F40915406242FAB
:109770003327808191812817390744F480917C0632
:1097800080FF04C081E08093FF0217C08091FF0238
:10979000882399F0EC2DFF27EE0FFF1FED5BF84FAC
:1097A000842F992720915506821B910920813181B0
:1097B0002817390714F41092FF0240911906E42F7C
:1097C000FF27EE0FFF1FED5BF84F50915406852FDA
:1097D000992722273327281B390B808191818217F3
:1097E000930744F480917C0681FF04C081E080935C
:1097F000000316C080910003882391F0E42FFF2717
:10980000EE0FFF1FED5BF84F809155069927851BE2
:109810009109208131818217930714F4109200037B
:1098200080910203882319F480910103811181E062
:10983000809303038091FF02882321F48091000329
:10984000882351F081E08093040310920303109267
:1098500002031092010302C080930403809103036A
:10986000882321F480910403882369F080915306B2
:109870009927E981FA818E179F0714F49A838983C7
:1098800081E0809329038091E90284FF1AC010923D
:1098900018031092170310921C0310921B031092CE
:1098A0001A03109219039AE59093070888E78093AA
:1098B000E0079093BB078093D007109203031092A8
:1098C00004038091D3079091D407A091D507B0915C
:1098D000D607209171033091720340917303509128
:1098E0007403820F931FA41FB51F8093D307909317
:1098F000D407A093D507B093D6078091DB0790914A
:10990000DC07A091DD07B091DE072090690330905D
:109910006A0340906B0350906C03820D931DA41D4D
:10992000B51D8093DB079093DC07A093DD07B09310
:10993000DE078091CA079091CB07A091CC07B09128
:10994000CD07E0906D03F0906E0300916F031091CE
:109950007003EB82FC820D831E838E0D9F1DA01F62
:10996000B11F8093CA079093CB07A093CC07B09305
:10997000CD078091BC079091BD07A091BE07B09123
:10998000BF07E0906503F0906603009167031091B4
:109990006803EF82F88609871A878E0D9F1DA01F26
:1099A000B11F8093BC079093BD07A093BE07B093EF
:1099B000BF07F0900403FB86FF2029F48091030386
:1099C000882309F460C01092610310926203109220
:1099D00063031092640310925D0310925E03109271
:1099E0005F03109260031092D3071092D407109275
:1099F000D5071092D6071092DB071092DC07109261
:109A0000DD071092DE071092CA071092CB07109262
:109A1000CC071092CD071092BC071092BD07109290
:109A2000BE071092BF078091510390915203A091FD
:109A30005303B091540380934D0390934E03A0932E
:109A40004F03B09350038091490390914A03A09132
:109A50004B03B0914C038093450390934603A0932E
:109A60004703B093480310923402109233021092CD
:109A700008031092070310920A03109209030B8542
:109A8000002309F0F2C180910303882309F0EDC19E
:109A900080910A0690910B06815092402CF480919F
:109AA0001403882309F4E1C190907B08A090340648
:109AB0006091FD077091FE07788F6F8B80910D0884
:109AC00090910E089A8B898B9FEF991609F4D9C053
:109AD000BB24CC24DD24CA01B901A60195010E9452
:109AE000B87879018A01EF89F88DCF01AA2797FD0F
:109AF000A095BA2FE81AF90A0A0B1B0BC201B10193
:109B0000A60195010E94B87859016A0129893A890C
:109B1000C901AA2797FDA095BA2FA81AB90ACA0A9F
:109B2000DB0A292C332427FC3094432C532CC80106
:109B3000B701A20191010E94447897FF04C06150CF
:109B40007E4F8F4F9F4F3B014C0109E095948794C6
:109B5000779467940A95D1F7C601B501A2019101E6
:109B60000E94447897FF04C061507E4F8F4F9F4FF3
:109B70005B016C0119E0D594C794B794A7941A952A
:109B8000D1F78091EE029091EF02813491053CF47F
:109B90008091EC029091ED0281349105D4F0D401D2
:109BA000C30197FE03C00196A11DB11D3C014D01EB
:109BB0009594879477946794D601C501D7FE03C026
:109BC0000196A11DB11D5C016D01D594C794B79498
:109BD000A79480911C06E82FFF27EE0FFF1FED5B77
:109BE000F84F808191810190F081E02DF7FF03C053
:109BF000F095E195FF4F7A97A4F0C401B30123E0FB
:109C000030E040E050E00E94B87839014A01C601D6
:109C1000B50123E030E040E050E00E94B8785901FF
:109C20006A0180917D08282F332727FD3095432F27
:109C3000532F261537054805590514F439014A01F3
:109C4000992787FD9095909581959F4FAA2797FD1D
:109C5000A095BA2F681679068A069B0614F43C0173
:109C60004D012A153B054C055D0514F459016A01A7
:109C7000A816B906CA06DB060CF0CFC05C016D0160
:109C8000CCC0EA2CFF2400271127CA01B901A80182
:109C900097010E94B87839014A014F89588DCA014D
:109CA000AA2797FDA095BA2F681A790A8A0A9B0AF3
:109CB000C201B101A80197010E94B87859016A0157
:109CC00069897A89CB01AA2797FDA095BA2FA81A8E
:109CD000B90ACA0ADB0AD401C30197FE03C00F9672
:109CE000A11DB11D3C014D01F4E09594879477943A
:109CF0006794FA95D1F7D601C501D7FE03C00F9638
:109D0000A11DB11D5C016D01E4E0D594C794B79429
:109D1000A794EA95D1F78091EE029091EF028134F9
:109D200091053CF48091EC029091ED028134910513
:109D3000A4F0C401B30123E030E040E050E00E9411
:109D4000B87839014A01C601B50123E030E040E0AE
:109D500050E00E94B87859016A0180911C06E82FF2
:109D6000FF27EE0FFF1FED5BF84F8081918101907F
:109D7000F081E02DF7FF03C0F095E195FF4F7A9752
:109D8000A4F0C401B30123E030E040E050E00E94C1
:109D9000B87839014A01C601B50123E030E040E05E
:109DA00050E00E94B87859016A0171E267167104A7
:109DB000810491042CF070E2672E712C812C912C7F
:109DC00080EE68168FEF78068FEF88068FEF980683
:109DD00044F460EE662E6FEF762E6FEF862E6FEFF7
:109DE000962E91E2A916B104C104D1042CF050E2E0
:109DF000A52EB12CC12CD12CA0EEAA16AFEFBA061D
:109E0000AFEFCA06AFEFDA0644F440EEA42E4FEFF0
:109E1000B42E4FEFC42E4FEFD42E8091510390916A
:109E20005203A0915303B091540386199709A809CE
:109E3000B9098093510390935203A0935303B093B5
:109E400054038091490390914A03A0914B03B09130
:109E50004C038A199B09AC09BD098093490390936F
:109E60004A03A0934B03B0934C038091330290912B
:109E700034028F3F910509F008F4C4C5BB85BB23AC
:109E800009F04EC580910303882309F049C58091EC
:109E90002903882309F044C5E0915C06EC87EE2392
:109EA00009F43EC58091D3079091D407A091D507BE
:109EB000B091D607B7FF04C081509F4FAF4FBF4F3F
:109EC000E92EFA2E0B2F112707FD1A95E092D307E2
:109ED000F092D4070093D5071093D6078091DB0743
:109EE0009091DC07A091DD07B091DE07B7FF04C0B9
:109EF00081509F4FAF4FBF4F892F9A2FAB2FBB275A
:109F0000A7FDBA958D879E87AF87B88B8093DB07B7
:109F10009093DC07A093DD07B093DE0780913406B1
:109F2000A82EBB24CC24DD24209161033091620350
:109F30004091630350916403C601B5010E944478C7
:109F400097FF04C061507F4F8F4F9F4F672E782E31
:109F5000892E992487FC9A9460926103709262031F
:109F6000809263039092640320915D0330915E03BD
:109F700040915F0350916003C601B5010E9444788F
:109F800097FF04C061507F4F8F4F9F4F272E382E71
:109F9000492E552447FC5A9420925D0330925E036B
:109FA00040925F03509260038091590390915A034D
:109FB000A0915B03B0915C03B7FF04C081509F4F39
:109FC000AF4FBF4F892F9A2FAB2FBB27A7FDBA9555
:109FD0008093590390935A03A0935B03B0935C035F
:109FE000D801C70186199709A809B9098093AE035A
:109FF0009093AF03A093B003B093B10320915B069D
:10A00000E22EFF2400271127BC01CD01A8019701F2
:10A010000E94B87859016A012093BD033093BE03B2
:10A020004093BF035093C0038D859E85AF85B8894B
:10A0300082199309A409B5098093B2039093B303DD
:10A04000A093B403B093B503BC01CD01A80197015F
:10A050000E94B8782093C1033093C2034093C30396
:10A060005093C403D601C501D7FE04C081509F4F51
:10A07000AF4FBF4F892F9A2FAB2FBB27A7FDBA95A4
:10A08000909308038093070357FF04C021503F4F6C
:10A090004F4F5F4FBB2757FDBA95A52F942F832FA6
:10A0A00090930A03809309038091EE029091EF024E
:10A0B00081349105DCF48091EC029091ED028134C1
:10A0C0009105A4F480911C06E82FFF27EE0FFF1FD7
:10A0D000ED5BF84F808191810190F081E02DF7FFD9
:10A0E00003C0F095E195FF4F7A97E4F080917B08EB
:10A0F0008F3FC1F4809107039091080397FD01966B
:10A1000095958795909308038093070380910903A1
:10A1100090910A0397FD01969595879590930A0370
:10A12000809309038091CA079091CB07A091CC0737
:10A13000B091CD07B7FF04C081509F4FAF4FBF4FC5
:10A14000892F9A2FAB2FBB27A7FDBA958093CA07FB
:10A150009093CB07A093CC07B093CD078091BC0719
:10A160009091BD07A091BE07B091BF07B7FF04C093
:10A1700081509F4FAF4FBF4F892F9A2FAB2FBB27D7
:10A18000A7FDBA958093BC079093BD07A093BE0727
:10A19000B093BF078091710390917203A0917303F4
:10A1A000B09174032B813C814D815E81281B390B5A
:10A1B0004A0B5B0B2093A6033093A7034093A8039D
:10A1C0005093A9038091690390916A03A0916B0356
:10A1D000B0916C03EF80F88409851A85E81AF90AB2
:10A1E0000A0B1B0BE092AA03F092AB030093AC03A3
:10A1F0001093AD032093AE033093AF034093B003AD
:10A200005093B103E092B203F092B3030093B4030E
:10A210001093B50380914D0390914E03A0914F038D
:10A22000B0915003821B930BA40BB50B80934D038D
:10A2300090934E03A0934F03B09350038091450336
:10A2400090914603A0914703B09148038E199F094E
:10A25000A00BB10B8093450390934603A093470353
:10A26000B0934803FC85FF23E1F020912703309150
:10A270002803213831054CF08091820390918303AB
:10A280000196909383038093820320583F4F4CF4B0
:10A29000809182039091830301979093830380932D
:10A2A0008203109228031092270381E090E090939C
:10A2B000CA038093C903E090AE03F090AF0300910E
:10A2C000B0031091B103D801C70117FF07C0882759
:10A2D0009927DC018E199F09A00BB10B8150924088
:10A2E000A040B04034F084E090E09093CA038093A3
:10A2F000C9038091CF039091D003A091D103B09175
:10A30000D2032091D3073091D4074091D5075091C3
:10A31000D607821B930BA40BB50B815E914BAF4FFD
:10A32000BF4F8F539C49A040B04028F080917C08DB
:10A3300089310CF4FFC041E0E41640E1F40640E04E
:10A34000040740E014070CF473C08091CB0388230A
:10A3500009F46AC0D801C70117FF07C088279927E9
:10A36000DC018E199F09A00BB10B9C01AD01B7FF59
:10A3700004C021503E4F4F4F5F4FF9E05595479530
:10A3800037952795FA95D1F78091C9039091CA0323
:10A39000820F931F9093CA038093C903D801C7010A
:10A3A00017FF03C00796A11DB11DE3E0B595A79562
:10A3B00097958795EA95D1F78093BD039093BE0357
:10A3C000A093BF03B093C00389589341A040B0400D
:10A3D00064F088E893E1A0E0B0E08093BD0390933F
:10A3E000BE03A093BF03B093C0032091BD0330917F
:10A3F000BE034091BF035091C00357FF04C02150DA
:10A400003F4F4F4F5F4F232F342F452F552747FD89
:10A410005A958091070390910803820F931F9093A0
:10A4200008038093070306C081E08093CB0302C03A
:10A430001092CB0360E0E61660EFF6066FEF0607BA
:10A440006FEF16070CF073C08091CC03882309F4DA
:10A450006AC0D801C70117FF07C088279927DC0108
:10A460008E199F09A00BB10B9C01AD01B7FF04C071
:10A4700021503E4F4F4F5F4F69E0559547953795B7
:10A4800027956A95D1F78091C9039091CA03820FED
:10A49000931F9093CA038093C903D801C70117FF84
:10A4A00003C00796A11DB11D23E0B595A79597950B
:10A4B00087952A95D1F78093BD039093BE03A0930F
:10A4C000BF03B093C00388579C4EAF4FBF4F64F497
:10A4D00088E79CEEAFEFBFEF8093BD039093BE0380
:10A4E000A093BF03B093C0032091BD033091BE037E
:10A4F0004091BF035091C00357FF04C021503F4F0C
:10A500004F4F5F4F232F342F452F552747FD5A9527
:10A510008091070390910803820F931F9093080383
:10A520008093070311C081E08093CC030DC010928B
:10A53000CC030AC01092CA031092C90388EE93E0BC
:10A540009093DA018093D9018C85282F332780914D
:10A55000C9039091CA032817390724F43093CA031A
:10A560002093C90310917C08112379F0212F332700
:10A5700027FD30958091C9039091CA0328173907A8
:10A5800024F43093CA032093C9034091AE03509141
:10A59000AF036091B0037091B1034138510561057B
:10A5A000710574F080918603909187032091C9030F
:10A5B0003091CA03820F931F909387038093860381
:10A5C00040585F4F6F4F7F4F74F480918603909196
:10A5D00087032091C9033091CA03821B930B909388
:10A5E00087038093860381E090E09093CA03809371
:10A5F000C903C090B203D090B303E090B403F090CD
:10A60000B503D701C601F7FE07C088279927DC01EB
:10A610008C199D09AE09BF0981509240A040B040FD
:10A6200034F084E090E09093CA038093C903809152
:10A63000D3039091D403A091D503B091D603209178
:10A64000DB073091DC074091DD075091DE07821B6C
:10A65000930BA40BB50B815E914BAF4FBF4F8F5344
:10A660009C49A040B04018F019310CF4FFC001E043
:10A67000C01600E1D00600E0E00600E0F0060CF4B1
:10A6800073C08091CD03882309F46AC0D701C60145
:10A69000F7FE07C088279927DC018C199D09AE09B0
:10A6A000BF099C01AD01B7FF04C021503E4F4F4F81
:10A6B0005F4F09E055954795379527950A95D1F74E
:10A6C0008091C9039091CA03820F931F9093CA038C
:10A6D0008093C903D701C601F7FE03C00796A11DE9
:10A6E000B11D13E0B595A795979587951A95D1F764
:10A6F0008093C1039093C203A093C303B093C40398
:10A7000089589341A040B04064F088E893E1A0E00C
:10A71000B0E08093C1039093C203A093C303B093AE
:10A72000C4032091C1033091C2034091C3035091EF
:10A73000C40357FF04C021503F4F4F4F5F4F232F9B
:10A74000342F452F552747FD5A9580910903909145
:10A750000A03820F931F90930A038093090306C094
:10A7600081E08093CD0302C01092CD0320E0C21699
:10A7700020EFD2062FEFE2062FEFF2060CF073C0A7
:10A780008091CE03882309F46AC0D701C601F7FE81
:10A7900007C088279927DC018C199D09AE09BF09DC
:10A7A0009C01AD01B7FF04C021503E4F4F4F5F4F9A
:10A7B000E9E05595479537952795EA95D1F780912A
:10A7C000C9039091CA03820F931F9093CA03809389
:10A7D000C903D701C601F7FE03C00796A11DB11D2D
:10A7E00073E0B595A795979587957A95D1F780935E
:10A7F000C1039093C203A093C303B093C4038857CB
:10A800009C4EAF4FBF4F64F488E79CEEAFEFBFEFB5
:10A810008093C1039093C203A093C303B093C40376
:10A820002091C1033091C2034091C3035091C403EE
:10A8300057FF04C021503F4F4F4F5F4F232F342FFE
:10A84000452F552747FD5A958091090390910A039A
:10A85000820F931F90930A038093090311C081E034
:10A860008093CE030DC01092CE030AC01092CA038B
:10A870001092C90388EE93E09093DA018093D90196
:10A880004C85242F33278091C9039091CA03281740
:10A89000390724F43093CA032093C90380917C08BC
:10A8A000882379F0282F332727FD30958091C9031D
:10A8B0009091CA032817390724F43093CA032093D0
:10A8C000C9034091B2035091B3036091B4037091F6
:10A8D000B503413851056105710574F08091840319
:10A8E000909185032091C9033091CA03820F931F71
:10A8F000909385038093840340585F4F6F4F7F4F41
:10A90000CCF480918403909185032091C903309108
:10A91000CA03821B930B90938503809384030AC020
:10A9200010920A0310920903109208031092070371
:10A93000109229038091E007882341F410920A03C2
:10A940001092090310920803109207038091D30715
:10A950009091D407A091D507B091D6078093CF03EB
:10A960009093D003A093D103B093D2038091DB07DF
:10A970009091DC07A091DD07B091DE078093D303AF
:10A980009093D403A093D503B093D60310926103A0
:10A9900010926203109263031092640310925D039D
:10A9A00010925E0310925F0310926003109259039D
:10A9B00010925A0310925B0310925C031092D3071B
:10A9C0001092D4071092D5071092D6071092DB0789
:10A9D0001092DC071092DD071092DE071092CA0772
:10A9E0001092CB071092CC071092CD071092BC07A3
:10A9F0001092BD071092BE071092BF07109234024A
:10AA000010923302E0901703F0901803C701F7FE8D
:10AA100004C0882799278E199F0940976CF088EE0B
:10AA200093E09093DA018093D9018091250684FD0B
:10AA300003C081E08093BC0310913106A12EBB249A
:10AA4000CC24DD24B701882777FD8095982F9701C6
:10AA5000F7FE04C0222733272E193F09442737FD6C
:10AA60004095542F0E9444789B01AC01C601B5016A
:10AA70000E94447897FF04C061507E4F8F4F9F4FD4
:10AA800059E095958795779567955A95D1F79B01EC
:10AA9000812F99278E9DD0018F9DB00D9E9DB00D69
:10AAA0001124CD01B7FD03969595879595958795CA
:10AAB000280F391F442737FD4095542F2093A203B8
:10AAC0003093A3034093A4035093A50380914103C3
:10AAD00090914203A0914303B0914403821B930BD6
:10AAE000A40BB50B8093410390934203A0934303BF
:10AAF000B09344038155934CA040B04064F080E58E
:10AB000093ECA0E0B0E08093410390934203A093C4
:10AB10004303B09344038091410390914203A09179
:10AB20004303B0914403805B9C43AF4FBF4F64F439
:10AB300080EB9CE3AFEFBFEF809341039093420320
:10AB4000A0934303B093440340902F0350903003ED
:10AB50004114510409F478C18091250683FF74C122
:10AB60008091710390917203A0917303B09174036B
:10AB7000B7FF04C081509E4FAF4FBF4F39E0B5952E
:10AB8000A795979587953A95D1F76C0197FF04C0E3
:10AB9000D094C194D108D3948091690390916A03B1
:10ABA000A0916B03B0916C03B7FF04C081509E4F1E
:10ABB000AF4FBF4F29E0B595A795979587952A95F3
:10ABC000D1F7BC0197FF03C0709561957F4FC61602
:10ABD000D7060CF46B01B601D7FE02C0695F7F4F48
:10ABE0003B0183E0759467948A95E1F702E0E02EDB
:10ABF000F12C6E0C7F1C0CE112E0400E511E720114
:10AC00000027F7FC0095102F24EE3DEF420E531E57
:10AC10008091090890910A08A0910B08B0910C0846
:10AC20008090960190909701A0909801B090990122
:10AC3000BC01CD01A50194010E94B878E21AF30A83
:10AC4000040B150BC801B70128E631E040E050E0E5
:10AC50000E94B878DC01CB011CE4E12E1FEFF12E3D
:10AC6000E80EF91E0091D9011091DA0101151105C4
:10AC700089F539E1C316D1046CF5809127039091D1
:10AC800028038E0D9F1D90932803809327038091A6
:10AC9000BC038823F9F0C201AA2797FDA095BA2F1B
:10ACA000BC01CD01A50194010E944478DC01CB01D7
:10ACB0008093090890930A08A0930B08B0930C089E
:10ACC000BC01CD010E94B87830932E0320932D0350
:10ACD0001092BC03C701B4E0880F991FBA95E1F741
:10ACE000B3010E948378CB01AA2797FDA095BA2FC4
:10ACF0002091090830910A0840910B0850910C08E6
:10AD0000280F391F4A1F5B1F2093090830930A0838
:10AD100040930B0850930C08F090CA016F2D7727D1
:10AD2000C69EC001C79E900DD69E900D112497FD22
:10AD30004F966C01A5E0D594C794AA95E1F76C19DC
:10AD40007D096B0177FD7AC00115110509F06FC00F
:10AD50000091EE021091EF028091EC029091ED02D1
:10AD6000080F191F17FF02C0095F1F4FF3E0159569
:10AD70000795FA95E1F7005C1F4FCA01B901A501DB
:10AD800094010E94B878DA01C90120912D03309115
:10AD90002E03442737FD4095542F821B930BA40BA1
:10ADA000B50B845E9D4FAF4FBF4FBC01CD0128E670
:10ADB00031E040E050E00E94B878DC01CB01845BD8
:10ADC00090408C9DA0018D9D500D9C9D500D112497
:10ADD000CA01B8010E94837883E0F89E60011124C3
:10ADE000C616D70614F4B60108C0882799278C190F
:10ADF0009D09681779070CF4BC019B01442737FDB6
:10AE00004095542F8091410390914203A0914303B8
:10AE1000B0914403820F931FA41FB51F8093410379
:10AE200090934203A0934303B09344030DC0015099
:10AE300010401093DA010093D90106C084EF91E02D
:10AE40009093DA018093D90180912903882381F0BE
:10AE50001092350310923603109237031092380384
:10AE60001092390310923A0310923B0310923C0364
:10AE7000F0900403FF20F1F48091E007282F33279E
:10AE8000442755278091710390917203A091730319
:10AE9000B0917403BC01CD010E944478DC01CB0168
:10AEA000BC01CD0128EF3AE240E050E00E94B878C2
:10AEB000390102C066247724E0900303EE20F1F408
:10AEC0008091E007282F3327442755278091690375
:10AED00090916A03A0916B03B0916C03BC01CD010A
:10AEE0000E944478DC01CB01BC01CD0128EF3AE29D
:10AEF00040E050E00E94B878290102C04424552463
:10AF00008091B6079091B707893C91051CF088ECB9
:10AF100090E005C088539F4F34F488E39FEF9093EF
:10AF2000B7078093B6078091C1079091C207893C0B
:10AF300091051CF088EC90E005C088539F4F34F4D5
:10AF400088E39FEF9093C2078093C1078091C30766
:10AF50009091C407AA2797FDA095BA2F20910708C2
:10AF6000A22EBB24CC24DD24BC01CD01A601950179
:10AF70000E9444789B01AC018091B6079091B7077D
:10AF8000AA2797FDA095BA2FE7E0880F991FAA1F5F
:10AF9000BB1FEA95D1F7280F391F4A1F5B1F57FFC8
:10AFA00004C0215C3F4F4F4F5F4F76E0559547956A
:10AFB000379527957A95D1F78301020F131F1093C8
:10AFC000C4070093C3078091B4079091B507AA27DF
:10AFD00097FDA095BA2FBC01CD01A60195010E9455
:10AFE00044789B01AC018091C1079091C207AA27C8
:10AFF00097FDA095BA2F67E0880F991FAA1FBB1F66
:10B000006A95D1F7280F391F4A1F5B1F57FF04C0ED
:10B01000215C3F4F4F4F5F4F96E0559547953795D1
:10B0200027959A95D1F74201820E931E9092B5070B
:10B030008092B4078091020890910308880F991FAD
:10B04000AA2797FDA095BA2F2091BB073327442745
:10B050005527BC01CD010E9444785B016C0197FF2C
:10B0600008C08FE390E0A0E0B0E0A80EB91ECA1EB1
:10B07000DB1E86E0D594C794B794A7948A95D1F740
:10B080008091D007282F33274427552780915503D7
:10B0900090915603A0915703B0915803BC01CD0184
:10B0A0000E944478DC01CB01BC01CD0120EF35E5E5
:10B0B00040E050E00E94B878B501620F731F7093B2
:10B0C0000308609302080150104134F080E090E1E1
:10B0D0009093C4078093C3078091C3079091C407DE
:10B0E0008050904F34F480E090EF9093C4078093A9
:10B0F000C307B1E08B16B0E19B0634F080E090E12D
:10B100009093B5078093B4078091B4079091B507E9
:10B110008050904F34F480E090EF9093B507809387
:10B12000B4076150704134F080E090E190930308DF
:10B130008093020880910208909103088050904FFC
:10B1400034F480E090EF909303088093020880919C
:10B150000001482F552780911E0190911F0148172B
:10B16000590794F420911E0130911F0169817A8161
:10B17000649FC001659F900D749F900D1124B901CB
:10B180000E946F787A83698389819A81880F991FD9
:10B19000880F991F9A8389834091250640FFBDC679
:10B1A000EE2009F0BAC6FF2009F0B7C6AA24BB24D6
:10B1B000450180910503909106039093EE058093DD
:10B1C000ED0520918803309189032115310509F09F
:10B1D0003FC080911401909115018959934058F016
:10B1E00087B5853F20F480913702815011C081E0FE
:10B1F0008093E2034EC08091140190911501843632
:10B20000910508F587B58B30D0F0809137028F5FBC
:10B21000809337029AE089029001112480911406EC
:10B22000821B87BD8CE291E09093250280932402DB
:10B230008EE591E090938903809388032AC081E092
:10B240008093E10326C0F092E103F092E20321C073
:10B2500080910F0390911003A0911103B0911203FC
:10B2600014E0880F991FAA1FBB1F1A95D1F780936E
:10B27000380290933902A0933A02B0933B02B09205
:10B280003602A0923502215030403093890320933A
:10B2900088032091CD0141FF24C02233D8F480914E
:10B2A000DF0181508093DF018F3FD9F510922A038F
:10B2B00080910F0390911003A0911103B09112039C
:10B2C00080930B0390930C03A0930D03B0930E0394
:10B2D00081E004C081E080932A0388EC8093DF0141
:10B2E00020C080919A0190919B01820F911D209125
:10B2F0002A063327829FF001839FF00D929FF00D65
:10B300001124CF01AA2797FDA095BA2F80930B0394
:10B3100090930C03A0930D03B0930E0381E08093F0
:10B320002A038091710390917203A0917303B091ED
:10B330007403E0909601F0909701009198011091AC
:10B340009901BC01CD01A80197010E94B87859016B
:10B350006A018091690390916A03A0916B03B09197
:10B360006C03BC01CD01A80197010E94B878B90116
:10B37000C5010E946D768C01CC9714F00CE310E0AF
:10B38000C8010E948E6A8C0180E2809395018091B1
:10B390002A03882309F447C48091E90299279C0174
:10B3A0002071307084FD3FC460917E0660FD04C052
:10B3B0008091250681FD0CC0C980DA803093D803C6
:10B3C0002093D7038091E902806C8093E90299C1B0
:10B3D0008091E90281FF6BC14091DB015091DC015A
:10B3E000CA010F9620911503309116038217930717
:10B3F000BCF58091E103882399F58091E90287FFEC
:10B4000015C08091E9028F778093E90280910F0344
:10B4100090911003A0911103B091120380930B033C
:10B4200090930C03A0930D03B0930E038091E90257
:10B4300080648093E902241B350B2F50304037FF86
:10B4400003C0309521953F4F8091D7039091D80349
:10B45000820F931F9093D8038093D7038BE26EC023
:10B46000CA010F9728173907BCF58091E20388239A
:10B4700099F58091E90286FF15C08091E9028F7BE2
:10B480008093E90280910F0390911003A091110322
:10B49000B091120380930B0390930C03A0930D03C0
:10B4A000B0930E038091E90280688093E902241B27
:10B4B000350B215F3F4F37FF03C0309521953F4F3C
:10B4C0008091D7039091D803821B930B9093D8035C
:10B4D0008093D7038DE232C08091E902807C69F1CC
:10B4E0008091E9028F738093E9021092D803109241
:10B4F000D70320910F033091100340911103509115
:10B50000120320930B0330930C0340930D035093CD
:10B510000E0361FF06C084EF91E0909325028093B3
:10B52000240280911303882341F42333310541051C
:10B5300051051CF081E0809313038DE38093950106
:10B540002091D7033091D803C90137FF04C0882761
:10B550009927821B930B815092400CF491C08091EB
:10B560002A069927289F7001299FF00C389FF00C1C
:10B570001124C70160E075E00E948378CB01AA27FF
:10B5800097FDA095BA2F20910B0330910C034091A9
:10B590000D0350910E03280F391F4A1F5B1F209384
:10B5A0000B0330930C0340930D0350930E03109242
:10B5B000D8031092D703C0900F03D0901003E090EF
:10B5C0001103F0901203D701C60180509440A040AF
:10B5D000B04082179307A407B5075CF4D701C601F2
:10B5E00080509C4FAF4FBF4F281739074A075B0762
:10B5F00044F080930B0390930C03A0930D03B0933E
:10B600000E0380917E0681FF06C084E690E0909351
:10B6100025028093240280912E06882389F540918B
:10B6200005035091060357FF02C04D5F5F4F5595CC
:10B6300047955595479580911E0190911F01209146
:10B6400000013327489FB001499F700D589F700D2E
:10B650001124CB01B9010E9483787093DC016093BF
:10B66000DB01663471051CF486E490E005C067399F
:10B67000710534F086E990E09093DC018093DB0162
:10B680008091880390918903892BB9F180910F03F0
:10B6900090911003A0911103B091120380930B03BA
:10B6A00090930C03A0930D03B0930E0326C08091DA
:10B6B0000F0390911003A0911103B09112038059D0
:10B6C0009140A040B04080930B0390930C03A09353
:10B6D0000D03B0930E0380912E06882311F0992755
:10B6E00002C088E790E09093DC018093DB018981C0
:10B6F0009A819093060380930503C0900503D09030
:10B70000060320910F0330911003409111035091D3
:10B7100012032B8B3C8B4D8B5E8B20910B03309156
:10B720000C0340910D0350910E036B897C898D8928
:10B730009E89261737074807590724F080917E060F
:10B7400080FDB8C28091880390918903892B39F0DC
:10B75000C0900503D0900603AA24BB24D9C08B89CE
:10B760009C89AD89BE89821B930BA40BB50B80937A
:10B77000A6039093A703A093A803B093A9038230D4
:10B7800070E897077FEFA7077FEFB7072CF481E0FA
:10B7900090E8AFEFBFEF09C08F5F9F47A040B04078
:10B7A00064F08FEF9FE7A0E0B0E08093A603909352
:10B7B000A703A093A803B093A903A090A603B090F9
:10B7C000A7038091CC01282F332744275527809148
:10B7D000A6039091A703A091A803B091A903BC016F
:10B7E000CD010E94447897FF04C0615E7F4F8F4F68
:10B7F0009F4FA5E09595879577956795AA95D1F781
:10B800006093A6037093A7038093A8039093A90362
:10B810006530FEEF7F07FFEF8F07FFEF9F072CF4E8
:10B8200084E09EEFAFEFBFEF09C0605074408040EE
:10B83000904064F080E094E0A0E0B0E08093A60344
:10B840009093A703A093A803B093A9038090A603A5
:10B850009090A703209135023091360237FF02C045
:10B86000295F3F4FF3E035952795FA95E1F74FEFC4
:10B87000223834071CF421E83FEF05C02038310599
:10B8800014F020E830E0C901AA2797FDA095BA2F4F
:10B890002091CE01332744275527BC01CD010E94BA
:10B8A000447897FF04C06D5F7F4F8F4F9F4FE2E05A
:10B8B0009595879577956795EA95D1F79B015FEF09
:10B8C000613075071CF420E03FEF06C06F3F710543
:10B8D00019F014F020E031E08091E902807C49F019
:10B8E000C90137FD03969C01359527953595279518
:10B8F0000DC080917E0680FF09C0C90137FD079603
:10B900009C0143E0359527954A95E1F7820E931EF9
:10B910002091CB01222309F454C06091310370912E
:10B920003203809133039091340397FF04C0615830
:10B930007F4F8F4F9F4F37E0959587957795679508
:10B940003A95D1F73327442755270E94447897FF2B
:10B9500004C0615E7F4F8F4F9F4FB5E095958795EF
:10B9600077956795BA95D1F76093A6037093A7036F
:10B970008093A8039093A9036138AFEF7A07AFEFE4
:10B980008A07AFEF9A072CF480E89FEFAFEFBFEF85
:10B990000AC06F3F71058105910569F064F080E090
:10B9A00091E0A0E0B0E08093A6039093A703A0935A
:10B9B000A803B093A9038091A6039091A703880ED2
:10B9C000991E8091C901282F332780917F089927DC
:10B9D00087FD9095289FF001299FF00D389FF00D6D
:10B9E00011249F01F7FF02C021583F4F220F232F40
:10B9F000221F330BFFEF21383F071CF420E83FEFF5
:10BA000006C02F3F310519F014F020E031E0820E1E
:10BA1000931EC401AA2797FDA095BA2FE0900503B5
:10BA2000F09006039701442737FD4095542FBC0141
:10BA3000CD010E94447897FF04C061507E4F8F4F24
:10BA40009F4FF9E09595879577956795FA95D1F78A
:10BA5000C61AD70A8091D7039091D803892B09F091
:10BA600060C01E141F040CF05CC09501B7FE03C03B
:10BA7000309521953F4F2D33310540F48091DB0304
:10BA80009091DC038C159D0574F526C02C53304035
:10BA9000E5E036952795EA95E1F72031310510F07C
:10BAA0002FE030E04091DB035091DC031A141B04BB
:10BAB000E4F480E190E0821B930B489F9001499F42
:10BAC000300D589F300D112474E0369527957A95E6
:10BAD000E1F72C153D0520F58091DD019091DE0107
:10BAE000C816D906F4F06C011CC0205F3F4F80914E
:10BAF000DD019091DE01829FB001839F700D929FC6
:10BB0000700D11249B0164E0369527956A95E1F745
:10BB10004C155D0514F06A0104C0C216D30608F086
:10BB20006901C601AA2797FDA095BA2F2DE0880FBD
:10BB3000991FAA1FBB1F2A95D1F79801442737FDEB
:10BB40004095542FBC01CD010E94B8782093AA03E0
:10BB50003093AB034093AC035093AD03C090AA0362
:10BB6000D090AB038091D9039091DA039C01220F0E
:10BB7000331F280F391F2C0D3D1D37FF02C02D5FCD
:10BB80003F4FA90155954795559547955093DA0331
:10BB90004093D90380912606282F3327220F331F85
:10BBA000220F331F241735076CF480910108282FCA
:10BBB0003327220F331F220F331F205530404217E7
:10BBC000530724F03093DA032093D90380917E0643
:10BBD00080FF14C08091D9039091DA03A981BA81C2
:10BBE0008A179B0724F0B093DA03A093D903E0915E
:10BBF000D903F091DA03FA83E9835CC029813A81A1
:10BC00002E193F0937FF02C02D5F3F4F359527950D
:10BC100035952795E090D903F090DA03E20EF31EF4
:10BC2000FA82E98247C080912E06882301F560914F
:10BC300005037091060377FF02C06D5F7F4F759516
:10BC400067957595679540911E0150911F018091F0
:10BC50000001282F3327649FC001659F900D749FBA
:10BC6000900D1124B9010E948378CB0101C099275E
:10BC70009093DC018093DB018091DB019091DC01EA
:10BC8000873491051CF486E490E005C0863991055F
:10BC900034F086E990E09093DC018093DB01298108
:10BCA0003A813093DA032093D9038091E902806CC2
:10BCB0008093E9028091E90299279C0122703070FB
:10BCC00081FF1CC18091DD039091DE03A091DF0311
:10BCD000B091E0030097A105B10521F08091130315
:10BCE0008130B1F449815A81CA01AA2797FDA095F4
:10BCF000BA2F2EE0880F991FAA1FBB1F2A95D1F7D4
:10BD00008093DD039093DE03A093DF03B093E00301
:10BD100080911303813019F482E0809313036981C9
:10BD20007A81CB01AA2797FDA095BA2F98014427C5
:10BD300037FD4095542FBC01CD010E944478DC01B1
:10BD4000CB018093AA039093AB03A093AC03B09371
:10BD5000AD03B7FF04C08150904EAF4FBF4F7C0181
:10BD60008D01FDE015950795F794E794FA95D1F7C5
:10BD7000E092AA03F092AB030093AC031093AD03DF
:10BD80006091EA027091EB028FE0603A780750F51B
:10BD90008091DD039091DE03A091DF03B091E00379
:10BDA0009C01AD01EAE05695479537952795EA95B0
:10BDB000D1F7821B930BA40BB50BA8019701F4E0FC
:10BDC000220F331F441F551FFA95D1F7820F931F7F
:10BDD000A41FB51F8093DD039093DE03A093DF03C0
:10BDE000B093E00360547F4118F58091DD0390919A
:10BDF000DE03A091DF03B091E0039C01AD01ECE014
:10BE00005695479537952795EA95D1F7821B930B61
:10BE1000A40BB50BA801970172E0220F331F441F3A
:10BE2000551F7A95D1F7820F931FA41FB51F29C004
:10BE300080913502909136028091350290913602C0
:10BE400097FF03C0909581959F4F843691050CF51F
:10BE50008091DD039091DE03A091DF03B091E003B8
:10BE60009C01AD016EE056954795379527956A95EB
:10BE7000D1F7821B930BA40BB50B8E0D9F1DA01F3A
:10BE8000B11F8093DD039093DE03A093DF03B09393
:10BE9000E0038091DD039091DE03A091DF03B09178
:10BEA000E0031EE0B695A795979587951A95D1F76B
:10BEB000909306038093050340912C06442399F048
:10BEC00055279C01BA010E948378C901861B970BF4
:10BED0009093DC038093DB03260F371F3093DE0142
:10BEE0002093DD011FC01092DC031092DB038FEF63
:10BEF00093E09093DE018093DD0114C01092130350
:10BF00001092DD031092DE031092DF031092E00323
:10BF1000309306032093050305C08091E902806CED
:10BF20008093E9022090C807222D3327220F331F68
:10BF3000220F331F285D3F4FA981BA812A173B0783
:10BF400014F03A83298330900108832D9927880FB4
:10BF5000991F880F991F80559040E981FA818E17AB
:10BF60009F0714F49A83898380916D02882321F4BA
:10BF7000809186088F3FA1F08091EA029091EB02B8
:10BF80000297C09768F4E980FA801E141F0444F4F5
:10BF900081E090E09093EB028093EA023A83298358
:10BFA00009811A811093D2050093D1058091A203D3
:10BFB0009091A303A091A403B091A503F2E0880F90
:10BFC000991FAA1FBB1FFA95D1F700910208109183
:10BFD0000308081B190B29813A81213A31058CF09D
:10BFE000C90137FD019695958795801791070CF447
:10BFF0008C01909581959F4F081719076CF48C015F
:10C000000BC00135110514F000E510E03FEF003BD7
:10C01000130714F400EB1FEF232D3327220F331FD8
:10C02000220F331FC90149815A81841B950B801748
:10C0300091070CF48C0169817A81621B730B0617DE
:10C0400017070CF48B018091C3079091C40760918E
:10C050001B0370911C03861B970B9093D207809350
:10C06000D107D090E0072091390330913A034091F5
:10C070003B0350913C03DD2041F0661A770AC3016F
:10C08000AA2797FDA095BA2F04C0AA2797FDA095CF
:10C09000BA2F280F391F4A1F5B1F20933903309393
:10C0A0003A0340933B0350933C03809139039091B2
:10C0B0003A03A0913B03B0913C0381509A4FA040BA
:10C0C000B04064F080E09AEFA0E0B0E080933903E4
:10C0D00090933A03A0933B03B0933C0380913903C0
:10C0E00090913A03A0913B03B0913C03805096405D
:10C0F000AF4FBF4F64F480E096E0AFEFBFEF8093A7
:10C10000390390933A03A0933B03B0933C03C09050
:10C110003B062091D1073091D207F8E0FC1598F04A
:10C120008C2D9927829F7001839FF00C929FF00CB9
:10C130001124C701F7FC07967C0163E0F594E794AE
:10C140006A95E1F712C08C2D86959927829FA001F0
:10C15000839F500D929F500D1124CA0157FD0396E5
:10C160007C01F594E794F594E794A090CF01B0900A
:10C17000D0019501442737FD4095542F8091390314
:10C1800090913A03A0913B03B0913C03BC01CD01D7
:10C190000E94B878E20EF31E9090BB01692D7727BC
:10C1A00088279927980117FF04C022273327201BCF
:10C1B000310B37FF02C02F5F3F4F35952795A9817F
:10C1C000BA812A0F3B1F442737FD4095542F0E9408
:10C1D000447897FF04C0615C7F4F8F4F9F4F26E0EC
:10C1E00095958795779567952A95D1F79B016E155B
:10C1F0007F050CF47B01309521953F4FE216F30645
:10C200000CF479018091B4079091B50760911903FE
:10C2100070911A03861B970B9093B3078093B20714
:10C220002091350330913603409137035091380304
:10C23000DD2041F0461A570AC201AA2797FDA095B2
:10C24000BA2F04C0AA2797FDA095BA2F280F391F2F
:10C250004A1F5B1F20933503309336034093370307
:10C26000509338038091350390913603A0913703A2
:10C27000B091380381509A4FA040B04064F080E004
:10C280009AEFA0E0B0E08093350390933603A0933B
:10C290003703B09338038091350390913603A09112
:10C2A0003703B091380380509640AF4FBF4F64F4CE
:10C2B00080E096E0AFEFBFEF8093350390933603B5
:10C2C000A0933703B09338032091B2073091B3079E
:10C2D00048E04C1598F08C2D9927829FB001839FE0
:10C2E000700D929F700D1124CB0177FD07966C01A4
:10C2F000B3E0D594C794BA95E1F712C0C6948C2DDB
:10C300009927829FD001839FB00D929FB00D112479
:10C31000CD01B7FD03966C01D594C794D594C7940D
:10C320009501442737FD4095542F80913503909116
:10C330003603A0913703B0913803BC01CD010E94B0
:10C34000B878C20ED31E692D7727882799279801C0
:10C3500017FF04C022273327201B310B37FF02C0F1
:10C360002F5F3F4F35952795E981FA812E0F3F1FAB
:10C37000442737FD4095542F0E94447897FF04C00E
:10C38000615C7F4F8F4F9F4FE6E09595879577953E
:10C390006795EA95D1F79B016C157D050CF46B014F
:10C3A000309521953F4FC216D3060CF4690162EE19
:10C3B000862E66E0962E59E9A52E56E0B52E4BE066
:10C3C000542E31EE632E37E0732ED5012C911216C8
:10C3D0000CF014C1203429F4E981FA81F88FEF8B35
:10C3E0001FC049815A81CA01AA2797FDA095BA2F7B
:10C3F000332727FD3095432F532FBC01CD010E94D9
:10C40000447897FF04C0615C7F4F8F4F9F4F26E0B9
:10C4100095958795779567952A95D1F7788F6F8B46
:10C42000F5012181203439F42F89388D2E0D3F1DDF
:10C43000388F2F8B2AC0203C39F44F89588D4E19E4
:10C440005F09588F4F8B21C0C701AA2797FDA09580
:10C45000BA2F332727FD3095432F532FBC01CD0131
:10C460000E94447897FF04C0615C7F4F8F4F9F4FBD
:10C47000B6E09595879577956795BA95D1F7AF8989
:10C48000B88DA60FB71FB88FAF8BF501228120346E
:10C4900039F42F89388D2C0D3D1D388F2F8B2AC0F4
:10C4A000203C39F44F89588D4C195D09588F4F8BBA
:10C4B00021C0C601AA2797FDA095BA2F332727FDD3
:10C4C0003095432F532FBC01CD010E94447897FF34
:10C4D00004C0615C7F4F8F4F9F4FA6E09595879575
:10C4E00077956795AA95D1F7AF89B88DA60FB71F35
:10C4F000B88FAF8BF5012381203439F42F89388D23
:10C50000200F311F388F2F8B2AC0203C39F44F89E0
:10C51000588D401B510B588F4F8B21C0C801AA2743
:10C5200097FDA095BA2F332727FD3095432F532F22
:10C53000BC01CD010E94447897FF04C0615C7F4F2D
:10C540008F4F9F4FF6E09595879577956795FA956C
:10C55000D1F7AF89B88DA60FB71FB88FAF8BF30196
:10C56000808191812F89388D8217930764F4B901F6
:10C57000680F791F77FF02C06F5F7F4F75956795D2
:10C58000788F6F8B08C04F89588D440F551F481BFB
:10C59000590B588F4F8B822D9927880F991F880F21
:10C5A000991F6F89788D861797075CF4832D9927DB
:10C5B000880F991F880F991FAF89B88DA817B907E1
:10C5C00014F0988F8F8B8F89988D97FD0396959592
:10C5D000879595958795F4018183880F991F880F1A
:10C5E000991F2F89388D281B390BC901880F828329
:10C5F000EF89F88DD301ED93FC9303C0F401118210
:10C6000012825A9422E030E0620E731E44E050E041
:10C61000A40EB51E68E070E0860E971E57FED5CEBC
:10C62000E2E1C85E0C94EF788091EF039091F00303
:10C63000A091F103B091F2038093E7039093E80394
:10C64000A093E903B093EA038091EB039091EC038C
:10C65000A091ED03B091EE038093E3039093E40384
:10C66000A093E503B093E60308951092FA031092A5
:10C67000F9031092F8031092F703089584B1806AC9
:10C6800084B93D9A82E58CBD1DBC459A81E08093BA
:10C6900013088AEA8093240883E8809325088AE0B7
:10C6A00080932608109228081092270810922A08D2
:10C6B0001092290810927E08109246080895309131
:10C6C0001308332309F085C00DB407FE82C084E04F
:10C6D00080932302459A2EB58091FE0399278130DD
:10C6E000910589F0823091051CF4892B21F03EC020
:10C6F0000297B9F03BC0309345082093FF032138DF
:10C70000A9F581E008C0253549F48091FF03820F27
:10C710008093FF0382E08093FE0328C03093FE03E2
:10C7200025C080914508E82FFF27EF59F74F208358
:10C730008F5F809345089091FF038A31A0F02917FD
:10C7400069F48AE1A1E6B8E0E7E4F8E00D9001922F
:10C750008A95E1F781E08093460802C0309346084D
:10C760001092FE0303C0920F9093FF0320912308C1
:10C77000203208F028C045980000000000000000AA
:10C7800000000000000000000000000000000000A9
:10C790000000000000000000000000000000000099
:10C7A0000000000000000000E0911C08F0911D084E
:10C7B000E20FF11D80818EBD809143089081890F29
:10C7C0008093430803C081E0809313082F5F209378
:10C7D00023080895EF92FF920F931F9380913406E0
:10C7E0009927880F991F880F991F7C010027F7FC54
:10C7F0000095102F8091710390917203A0917303A3
:10C80000B0917403BC01CD01A80197010E94B878D2
:10C8100030932808209327088091690390916A0338
:10C82000A0916B03B0916C03BC01CD01A8019701ED
:10C830000E94B87830932A0820932908209109088B
:10C8400030910A0840910B0850910C08DA01C90197
:10C85000E3E0880F991FAA1FBB1FEA95D1F7820F4B
:10C86000931FA41FB51F820F931FA41FB51F2091F4
:10C870009601309197014091980150919901BC0126
:10C88000CD010E94B8783093300820932F08809112
:10C890008203909183032091430230914402821BD2
:10C8A000930B9093360880933508E0917803F091CC
:10C8B00079038091D8079091D907BF010E948378AE
:10C8C000CB019B01220F331F220F331F280F391F6B
:10C8D000280F391F37FF02C02D5F3F4F3595279531
:10C8E0003595279530932C0820932B0880910508C7
:10C8F00090910608BF010E9483789B01220F331F8D
:10C90000220F331F260F371F260F371F37FF02C096
:10C910002D5F3F4F359527953595279530932E08F8
:10C9200020932D0810927903109278031092D90762
:10C930001092D807109206081092050880912608D8
:10C9400099278D30910509F466C08E3091055CF40D
:10C950008B30910509F48EC08C3091050CF00FC11D
:10C960000A9761F0ADC18F30910509F481C18F3014
:10C9700091050CF45CC1409799F1A2C18091FE022F
:10C98000809337088091FD02809338088091FC02E3
:10C99000809339088091FB0280933A088091FA02D3
:10C9A00080933B088091F90280933C088091F802C3
:10C9B00080933D088091F70280933E088091E902C0
:10C9C00080933F088091E902837F8093E9020E946F
:10C9D000052E80934008809175038093410870C1B3
:10C9E000809180089091810890933808809337084F
:10C9F000809184089091850890933A088093390833
:10CA000080911E0190911F0180933B08809100014D
:10CA100080933C0855C180916806809337088091C7
:10CA200069068093380880916A068093390880915E
:10CA30006B0680933A0880916C0680933B08809146
:10CA4000700680933C088091710680933D08809128
:10CA5000720680933E088091750680933F0880910E
:10CA600073068093400880917406809341088091FA
:10CA70007606DAC0F89480911B06E82FFF27EE0FA8
:10CA8000FF1FED5BF84F0190F081E02DE038F105DC
:10CA90001CF0EFE7F0E006C02FEFE138F20714F4E6
:10CAA000E1E8FFEFE093370880911C06E82FFF27AD
:10CAB000EE0FFF1FED5BF84F0190F081E02DE038A5
:10CAC000F1051CF0EFE7F0E006C06FEFE138F60784
:10CAD00014F4E1E8FFEFE093380880911A06E82F9C
:10CAE000FF27EE0FFF1FED5BF84F0190F081E02D67
:10CAF000E038F1051CF0EFE7F0E006C08FEFE13819
:10CB0000F80714F4E1E8FFEFE09339088091190683
:10CB1000E82FFF27EE0FFF1FED5BF84F0190F0812C
:10CB2000E02DE038F1051CF0EFE7F0E006C02FEF54
:10CB3000E138F20714F4E1E8FFEF7894E0933A0863
:10CB400080911E0380933B0880911F0380933C08D3
:10CB50008091200380933D088091210380933E08BB
:10CB60008091220380933F088091230380934008A3
:10CB700080912403809341088091250355C08091C2
:10CB80005C04863018F010925C0485E080933708CE
:10CB9000809177068093380880910F03909110035D
:10CBA000A0911103B0911203BC01CD0125E030E04A
:10CBB00040E050E00E94B87830933A08209339085A
:10CBC00080910B0390910C03A0910D03B0910E0383
:10CBD000BC01CD0125E030E040E050E00E94B87893
:10CBE00030933C0820933B0880916D0680933D086C
:10CBF00080916E0680933E0880916F0680933F0877
:10CC000080911D03809340088091430790914407D1
:10CC1000809341088091D1059091D20597FD0396AC
:10CC200095958795959587958093420849C0109270
:10CC3000370882E5809338081092390880E18093A4
:10CC40003A088091020180933B08809141048093CF
:10CC50003C088091420480933D0880914304809376
:10CC60003E088091440480933F088091450426C08B
:10CC700080914D068093370880917D068093380817
:10CC80008091C101809339088091460680933A08CB
:10CC90008091470680933B088091480680933C082A
:10CCA0008091C00180933D0880914A0680933E08A0
:10CCB00080914B0680933F0880914C0680934008FA
:10CCC00080914608882309F4D8C08AEF8093E9014F
:10CCD0004091480850914908CA0181509E4F8F5F8A
:10CCE0009340B0F420914A0830914B08C90181501B
:10CCF0009E4F8F5F934060F48091250685FF08C0AA
:10CD00005093FA034093F9033093F8032093F70309
:10CD100080914E0890914F0821E08936920724F4C3
:10CD20009093300380932F0380912F0390913003D1
:10CD300020912D0330912E03821B930B845E9D4F17
:10CD400068E671E00E948378845B904090932C03A6
:10CD500080932B0320915208309153088091240234
:10CD6000909125028217930740F480915C048823F8
:10CD700021F43093250220932402809147089927BB
:10CD80008836910549F18936910524F48736910555
:10CD900031F07BC08936910509F445C076C0809199
:10CDA000540880937B088091550880937D0880917A
:10CDB000560880937C088091570880937E08809164
:10CDC000580880937F08809159088093EA018091E8
:10CDD0005A088093FD0359C08091540880931E081F
:10CDE0008091550880931F088091560880932008F1
:10CDF00080915708809321088091580880932208D9
:10CE00008091C10590915908892B8093C10590911B
:10CE10005A089093FB038091C20583709C70892B04
:10CE20008093C20532C08091540880931408809189
:10CE300055088093150880915608809316088091B4
:10CE4000570880931708809158089091590890933B
:10CE500019088093180880915A0890915B08909364
:10CE60001B0880931A0880915C08992787FD90958C
:10CE7000909376078093750708C01092FA0310927A
:10CE8000F9031092F8031092F7031F910F91FF908E
:10CE9000EF90089580911308882309F43BC04598CA
:10CEA00084E298E090931D0880931C089091FC0305
:10CEB000E92FFF27E052FE4F9F5F9093FC03808194
:10CEC00080932608993010F01092FC0310921308FA
:10CED0000E94EA6381E080932308000000000000C4
:10CEE0000000000000000000000000000000000042
:10CEF0000000000000000000000000000000000032
:10CF000000000000000000000000809124088093D1
:10CF100043088EBD089587B18C6087B942984398C5
:10CF20001092010480E88093EC0110920004809339
:10CF3000EB010895809106048150809306048F3F91
:10CF400009F0FBC024E0209306048091E9029927B0
:10CF500080739070892B21F48091420480FF1CC063
:10CF600080916606882349F080910904882311F492
:10CF70002093010481E0809309048091670688234F
:10CF8000B9F080910A04882319F484E080930004A6
:10CF900081E080930A040CC01092090410920A04E4
:10CFA0008091620680930704809164068093080450
:10CFB00080910904882309F040C080917C06282FC5
:10CFC000332724FF07C080911403882319F425FD1B
:10CFD0004DC04EC090916306983F50F08091DA07A3
:10CFE0008D3D30F08091070488230CF43FC040C091
:10CFF000983F48F08091DA078A3028F4809107043E
:10D000008823B4F133C080910104815080930104DE
:10D010008F3F79F58091DA078150809301048091E8
:10D02000EC01813011F480E801C086958093EC0119
:10D030008091EC019091070417C080910104815008
:10D04000809301048F3FA9F489E0809301048091CB
:10D05000EC01813011F480E801C086958093EC01E9
:10D060008091EC0190916606892311F0429A01C0EB
:10D07000429880910A04882309F043C080917C067D
:10D08000282F332724FF07C080911403882319F425
:10D0900026FD50C034C090916506983F50F08091B5
:10D0A00000088D3D30F08091080488230CF442C0C4
:10D0B00026C0983F48F0809100088A3028F480917B
:10D0C00008048823E4F036C08091000481508093E6
:10D0D00000048F3F91F580910008815080930004F7
:10D0E0008091EB01813011F480E801C08695809336
:10D0F000EB018091EB01909108048923D9F44398C6
:10D100000895809100048150809300048F3FA9F41A
:10D1100089E0809300048091EB01813011F480E874
:10D1200001C086958093EB018091EB019091670699
:10D13000892311F0439A0895439808954FB724E145
:10D1400030E0F8948091C9008F778093C900809176
:10D15000C9008F7B8093C9008091C9008F7D809327
:10D16000C9005A9A52985B9A539A832F99278093B1
:10D17000CD002093CC008091C80082608093C800CD
:10D1800080E18093C9008091CA008F778093CA00A4
:10D190008091CA008F7B8093CA008091CA008F7DE6
:10D1A0008093CA008091CA008F7E8093CA008091CC
:10D1B000CA00877F8093CA008091C9008B7F8093CB
:10D1C000C9008091CA0084608093CA008091CA001F
:10D1D00082608093CA008091C80087FF03C080915D
:10D1E000CE00F9CF8091C90080688093C9004FBFFD
:10D1F0000895EF92FF920F931F93CF93DF93482FE1
:10D2000000E010E08091ED01813061F41092ED01B9
:10D2100084E480930B0410920D0410920C0410927D
:10D220000E042BC180910B04882319F421E030E017
:10D2300001C0980190910C04992371F4232B11F0F3
:10D2400081E010C084E480930B0490930D049093CC
:10D250000C0490930E04FAC0913069F4232B09F06A
:10D26000EBC082E080930C0480910D048F5F80936B
:10D270000D0483E0E9C09230D1F4232B09F0DCC027
:10D2800083E080930B0440930E0490910D04923040
:10D2900039F410920F0447FF03C081E080930F041C
:10D2A00083E080930C049F5F90930D04CFC0933074
:10D2B00009F0C2C0232B09F0BFC090930B0482E099
:10D2C00080930C0480910D048F5F80930D04209156
:10D2D0000E04822F9927782F6627842F9927682B91
:10D2E000792B80913F06813049F47370CB018050D7
:10D2F000924063E070E00E94837817C0823061F44E
:10D300007770CB018050944066E070E00E94837893
:10D310002695269526950BC0737068567140CB01F3
:10D3200077FD0196BC017595679526952695022F88
:10D3300011270F7010700F5F1F4F0D30110508F08F
:10D3400074C07801E00EF11EF701ED5BF84F8081AB
:10D3500091819B01281B390BC90137FF03C09095B0
:10D3600081959F4F069794F480911D03883C30F47B
:10D3700080911D03865F80931D0308C088EC809315
:10D380001D0380916F008F7D80936F00F701ED5B2F
:10D39000F84F808191819C01220F331F280F391F84
:10D3A000260F371F37FF02C02D5F3F4FE901D5958C
:10D3B000C795D595C795CB0101968C179D0714F499
:10D3C000219706C061507040C617D7070CF421960C
:10D3D00080911D03843BD0F0F701ED5BF84F808115
:10D3E0009181FE01E81BF90BCF0163E070E00E9420
:10D3F0008378CB01880F991F860F971F27E737E0A7
:10D40000E20EF31EF7019183808307C027E737E020
:10D41000E20EF31EF70111821082000F111F0D5B47
:10D42000184FF801D183C08311C00231110570F08B
:10D4300081E08093ED010AC081E08093ED011092BC
:10D440000D0410920F0484E480930B0480910D046A
:10D45000803198F080910F04882331F48091ED01A0
:10D46000882311F48093940110920D0410920F04FC
:10D4700010920C0484E480930B04E6E0CDB7DEB791
:10D480000C94FB78CF93FC0197FF05C0CFEFF0958C
:10D49000E195FF4F01C0C1E028E631E0CF01B901BD
:10D4A0000E948378FC018B35910554F08B55904098
:10D4B0008A35910538F484EB90E08E1B9F0BFC01BC
:10D4C00041E00DC0CF01855B90408A35910518F48D
:10D4D000E45BF04003C02E1B3F0BF9014FEFEE0F52
:10D4E000FF1FE15DF54F259134918C2F992787FD22
:10D4F0009095289FB001299F700D389F700D1124C1
:10D50000842F992787FD9095689FA001699F500DF2
:10D51000789F500D1124CA01CF9108952AE530E07B
:10D52000281B390BC9010E94426A0895CF93DF93EB
:10D5300080E00E94F96F80911E0190911F016AE0C6
:10D5400070E00E9483789F938F9380911E01909149
:10D550001F016AE070E00E9483787F936F938DEFE4
:10D560009AE09F938F93CCEEDFE6DF93CF93E09129
:10D570002804F091290409952DB73EB7285F3F4F45
:10D580002DBF8091E9018823B9F186E00E94F96FEF
:10D5900080911808909119086AE070E00E946F78F5
:10D5A0007F936F938FED90E09F938F938091090805
:10D5B00090910A08A0910B08B0910C082091960157
:10D5C000309197014091980150919901BC01CD0192
:10D5D0000E94B8783F932F9386E09BE09F938F93B0
:10D5E000DF93CF93E0912804F091290409958DB73A
:10D5F0009EB70A968DBF12C086E00E94F96F82E145
:10D600009BE09F938F93DF93CF93E0912804F09159
:10D61000290409950F900F900F900F908091FB03B4
:10D620008823C1F086E00E94F96F8091FB0399275F
:10D630009F938F9389E19BE09F938F93DF93CF9389
:10D64000E0912804F091290409952DB73EB72A5F8F
:10D650003F4F2DBF80E10E94F96F8091F3019091BF
:10D66000F4016CE370E00E946F789F938F93809138
:10D67000F3019091F4016CE370E00E946F787F9366
:10D680006F9380918408909185089F938F9384E293
:10D690009BE09F938F93CCEEDFE6DF93CF93E091F7
:10D6A0002804F09129040995809125062DB73EB7ED
:10D6B000265F3F4F2DBF80FF29C08AE10E94F96F8E
:10D6C0008091950199279F938F9380910F0390915B
:10D6D0001003A0911103B0911203BC01CD0124E607
:10D6E00030E040E050E00E94B8783F932F9381E310
:10D6F0009BE09F938F93DF93CF93E0912804F09169
:10D70000290409958DB79EB708968DBFDF91CF91FB
:10D710000895CF93DF9380E00E94F96F8091010715
:10D72000992787FD90959F938F938091F90699276C
:10D7300087FD90959F938F938091F106992787FDA0
:10D7400090959F938F938091E906992787FD9095F7
:10D750009F938F9388E39BE09F938F93CCEEDFE6BC
:10D76000DF93CF93E0912804F0912904099580E19B
:10D770000E94F96F2DB73EB7245F3F4F2DBF8091B8
:10D780002107992787FD90959F938F938091190783
:10D79000992787FD90959F938F93809111079927E3
:10D7A00087FD90959F938F9380910907992787FD17
:10D7B00090959F938F9388E49BE09F938F93DF9343
:10D7C000CF93E0912804F0912904099580911706E0
:10D7D0002DB73EB7245F3F4F2DBF853098F480E1D1
:10D7E0000E94F96F88E59BE09F938F93DF93CF931F
:10D7F000E0912804F091290409950F900F900F9063
:10D800000F9018C08730B0F488E10E94F96F8FED57
:10D8100090E09F938F9389E69BE09F938F93DF9394
:10D82000CF93E0912804F091290409958DB79EB714
:10D8300006968DBFDF91CF9108950F931F9380E0DF
:10D840000E94F96F2AE030E0809180089091810871
:10D85000B9010E946F789F938F9380918008909177
:10D860008108B9010E946F787F936F9380911E01A8
:10D8700090911F01B9010E9483789F938F938091AB
:10D880001E0190911F01B9010E9483787F936F93CD
:10D8900082E79BE09F938F930CEE1FE61F930F93FD
:10D8A000E0912804F0912904099580E10E94F96F24
:10D8B0008DB79EB70C968DBF809184089091850896
:10D8C0009F938F9380918208909183089F938F9369
:10D8D00085E89BE09F938F931F930F93E09128041B
:10D8E000F091290409958DB79EB708968DBF1F91B9
:10D8F0000F9108950F931F93CF93DF938091E901C8
:10D90000CCEEDFE6882309F478C080E00E94F96F4E
:10D910008091150899279F938F93809117089927D5
:10D920009F938F9381E99BE09F938F938E01DF9369
:10D93000CF93E0912804F091290409958DB79EB703
:10D9400008968DBF80911608833031F48CE00E94D8
:10D95000F96F80EA9BE005C08CE00E94F96F85EAD0
:10D960009BE09F938F93DF93CF93E0912804F091F6
:10D97000290409950F900F900F900F908091140833
:10D9800081FF12C08CE00E94F96F8AEA9BE09F93AE
:10D990008F931F930F93E0912804F0912904099528
:10D9A0000F900F900F900F9080E10E94F96F8FED14
:10D9B00090E09F938F9380911A0890911B089F93FA
:10D9C0008F9380911808909119086AE070E00E9486
:10D9D0006F787F936F938FEA9BE09F938F938CEE8A
:10D9E0009FE69F938F93E0912804F0912904099575
:10D9F0008DB79EB70A968DBF12C082E00E94F96F64
:10DA00008FEB9BE09F938F93DF93CF93E09128045C
:10DA1000F091290409950F900F900F900F90DF91CE
:10DA2000CF911F910F910895CF93C82F209110048B
:10DA30002093110499278F32910509F180339105C4
:10DA40001CF44F97A1F02CC08F34910501F18F3851
:10DA5000910531F5222319F481E090E038C086E089
:10DA6000289FF0011124EB51F54F849117C086E0F7
:10DA7000289FF0011124EA51F54F84910FC086E0F0
:10DA8000289FF0011124E951F54F849107C086E0E9
:10DA9000289FF0011124E851F54F849180931004E0
:10DAA00090911004809111049813C0E00E94FF6FC0
:10DAB0009091100486E0989FF0011124E751F54FF2
:10DAC000259134918C2FF901099580E090E0CF9158
:10DAD0000895109281081092800810928508109283
:10DAE00084081092830810928208109286088AE0B7
:10DAF00090E00E941C1790931304809312040895E1
:10DB0000CF93DF9380911204909113040E94251704
:10DB1000882309F4AFC080911204909113040A96EF
:10DB20009093130480931204E0E0F0E09F0190E0F2
:10DB30005FEFA2EEB6E04BE0ED018B8187FF0BC0FB
:10DB40009F5F8D81E80FF11D8981280F311D8E8126
:10DB5000851708F4582F4150189647FFEDCF509382
:10DB60008608232B41F52091180430911904409127
:10DB70001A0450911B04BB27A52F942F832F909339
:10DB8000170480931604AA27BB27281B390B4A0BBE
:10DB90005B0BCF01AA27BB27280F391F4A1F5B1F2A
:10DBA000209318043093190440931A0450931B04D3
:10DBB000E5E0F0E013C020911604309117042E1711
:10DBC0003F0718F4E21BF30B02C0E0E0F0E0892FFE
:10DBD0009927880F991FE80FF91F3596F093810850
:10DBE000E0938008EF3FF10578F480911E01909159
:10DBF0001F018E9F90018F9F300D9E9F300D11242D
:10DC0000C90164E670E013C0CF019695879596959B
:10DC1000879520911E0130911F01289FA001299F07
:10DC2000500D389F500D1124CA0169E170E00E9427
:10DC30006F78709383086093820820911404309168
:10DC400015042E0F3F1F30931504209314045EE03B
:10DC50002131350778F080918408909185080196EC
:10DC6000909385088093840820513E40309315049A
:10DC700020931404DF91CF9108954FB720E430E052
:10DC8000F8948091C9008F778093C9008091C90072
:10DC90008F7B8093C9008091C9008F7D8093C900DC
:10DCA0005A9A52985B9A539A832F99278093CD0062
:10DCB0002093CC008091C80082608093C80088E1E6
:10DCC0008093C9008091CA008F778093CA008091A9
:10DCD000CA008F7B8093CA008091CA008F7D809399
:10DCE000CA008091CA008F7E8093CA008091CA00CA
:10DCF000877F8093CA008091C9008B7F8093C90081
:10DD00008091CA0084608093CA008091CA008260BA
:10DD10008093CA008091C80087FF03C08091CE0025
:10DD2000F9CF8091C90080688093C9004FBF0895E2
:10DD30000F931F93CF93DF93482F4F5F893108F0E4
:10DD40008BC080914207841720F44F5F40934207B5
:10DD50004150CB0183539B4268E170E00E9483787D
:10DD6000A42FBB27FD01EA0FFB1FED5BF84F80815D
:10DD700091819B01281B390BC90137FF03C0909586
:10DD800081959F4F069794F480911D03883C30F451
:10DD900080911D03865F80931D0308C088EC8093EB
:10DDA0001D0380916F008F7D80936F00FD01EA0F4E
:10DDB000FB1FED5BF84F808191819C01220F331F87
:10DDC000280F391F260F371F37FF02C02D5F3F4F27
:10DDD000E901D595C795D595C795CB0101968C17C7
:10DDE0009D0714F4219706C061507040C617D707ED
:10DDF0000CF4219680911D03843BD8F08D010A0F0D
:10DE00001B1FF801ED5BF84F80819181FE01E81B3B
:10DE1000F90BCF0163E070E00E948378CB01880F9B
:10DE2000991F860F971F0958184FF8019183808317
:10DE300007C0AA0FBB1FA958B84F11961C921E927B
:10DE4000E42FFF27EE0FFF1FED5BF84FD183C08358
:10DE5000443011F410929401DF91CF911F910F91F2
:10DE60000895CF93DF9320918708822F9927807F91
:10DE70009070409709F06CC02F3109F046C0809136
:10DE800088088093200420918A082093220480919E
:10DE90008B0880932104822F9927909344078093C5
:10DEA0004307222309F054C080911906282F3327F5
:10DEB000220F331FF901E958F84F11821082809127
:10DEC0001A06A82FBB27AA0FBB1FFD01E958F84F60
:10DED0001182108280911C06E82FFF27EE0FFF1F92
:10DEE000CF018958984FEC01198218822D5B384F69
:10DEF000E90119821882AD5BB84F11961C921E92EF
:10DF0000ED5BF84F1182108223C0C22FCF70CA3050
:10DF1000F8F4809188088093B108809189088093F3
:10DF2000B00880918A088093B30880918B08809311
:10DF3000B2086091B0087091B1088C2F0E94986E61
:10DF40006091B2087091B3088C2F8F5F0E94986E19
:10DF5000DF91CF910895CF93C82F8F3F49F48091DF
:10DF600023048F3F29F4109225041092240432C018
:10DF700020912504222339F4CF3111F485E001C02A
:10DF800084E08093260480912604909124048217D3
:10DF9000A0F4892F8095809324048F3F19F48EEF8D
:10DFA0008093240480912404C81711F40E94316FD7
:10DFB00010922504109224040BC0E22FFF27E9578A
:10DFC000F74FC0832F5F209325049C0F9093240468
:10DFD000C0932304CF91089590911F04933240F48D
:10DFE000E92FFF27E357F74F80839F5F90931F042C
:10DFF0000895833218F48D5F80931F04089590E292
:10E00000E0E9F8E08FE19193815087FFFCCF08951C
:10E01000CF93CFB723E031E0F8948091C9008F7798
:10E020008093C9008091C9008F7B8093C900809143
:10E03000C9008F7D8093C9005A9A52985B9A539A6F
:10E04000832F99278093CD002093CC008091C80026
:10E0500082608093C80088E18093C9008091CA00E3
:10E060008F778093CA008091CA008F7B8093CA000B
:10E070008091CA0080628093CA008091CA0080614A
:10E080008093CA008091CA0088608093CA00809102
:10E09000C90084608093C9008091CA008460809325
:10E0A000CA008091CA0082608093CA008091C80033
:10E0B00087FF03C08091CE00F9CF8091C9008068AE
:10E0C0008093C9008091C90080648093C9000E9438
:10E0D000FF6FCFBFCF910895282F99278F70907031
:10E0E000892B31F4209580911E04822B80931E048D
:10E0F00008958091F001882309F441C08091E902DC
:10E1000085FF0AC082E980938D0883E280938E08A0
:10E1100085E580938F0802C010928D088091F101EF
:10E120008F3071F480911E040E94146D882341F099
:10E1300081E980938D0880938E0881E380938F0816
:10E140001092F0018091C80085FFFCCF8091C9003A
:10E150008F7E8093C9008091C9008E7F8093C90013
:10E1600080918D08882311F48EEF01C08EE7809393
:10E17000CE0080911E048093F10110921E04089538
:10E180001F920F920FB60F9211248F939F93EF93CC
:10E19000FF939091F001992309F040C080912704EA
:10E1A000882361F480918D08882311F483E003C0F3
:10E1B000813999F481E0809327040FC0833099F46A
:10E1C00080918D08882349F090938D088091C90033
:10E1D0008E7F8093C9008EEF1EC08091C900816040
:10E1E0008093C9000EC0833261F48091C9008E7F94
:10E1F0008093C9008FEF8093CE0081E08093F0017F
:10E2000014C080912704E82FFF27E357F74F8F5F53
:10E210008093270480818093CE0007C0109227044A
:10E220008091C90080618093C900FF91EF919F9117
:10E230008F910F900FBE0F901F901895EF92FF9245
:10E240000F931F93CF93DF937C018B01EA01452B42
:10E2500039F0F80181918F01F70109952197C9F7EC
:10E26000E6E0CDB7DEB70C94FB78EF92FF920F9308
:10E270001F93CF93DF937C018B01EA01452B41F083
:10E28000F8010F5F1F4F8491F70109952197C1F79E
:10E29000E6E0CDB7DEB70C94FB780F931F93CF93D6
:10E2A0008C01C62F161634F480E2F8010995C1508E
:10E2B0001C16D4F3CF911F910F9108950F931F93C4
:10E2C000CF938C01C62F161634F480E3F80109951C
:10E2D000C1501C16D4F3CF911F910F910895A5E35F
:10E2E000B0E0E5E7F1E70C94D3782E96EEADFFAD04
:10E2F0002E9788249924540180911D04882321F4A9
:10E300002C961FAE1EAE2C975EE4452E512C4C0E63
:10E310005D1E6F01B60105C0153239F00894C11CAD
:10E32000D11CF60114911123B9F7A601461B570B16
:10E3300031F02C968EAD9FAD2C970E943571112334
:10E3400009F46AC20894C11CD11CFF24FDA6FCA6D6
:10E350004FEFE42EF9A6F6010894C11CD11C1491CC
:10E36000153721F0812F80628837B1F4F0FE0AC0A2
:10E37000F20124E030E0420E531E80809180A280A2
:10E38000B3800AC0F20142E050E0440E551E808185
:10E3900091814C01AA24BB24103221F489A5882341
:10E3A000D1F61DC0133219F458E0F52AD4CF1A3231
:10E3B00011F01D3291F41A3259F4F20182E090E02A
:10E3C000480E591EE081ECA7EE232CF6E195ECA750
:10E3D00090E1F92AAFEDFA22BECF1B3211F419A752
:10E3E000BACF1E32C1F5F6010894C11CD11C14919C
:10E3F0001A3279F4F20122E030E0420E531E4081DD
:10E4000051813FEF4F3F530714F44FEF5FEFE42E7E
:10E41000A2CF40E050E0812F80538A30A0F4CA019F
:10E4200033E0880F991F3A95E1F7840F951F480F45
:10E43000591F410F511D40535040F6010894C11C13
:10E44000D11C1491E8CF8FEF4F3F580714F44FEFD2
:10E450005FEFE42E85CF103329F4F4FC7CCF90E2FB
:10E46000F92A79CF812F81538930D8F440E050E0E8
:10E47000CA0123E0880F991F2A95E1F7840F951FA1
:10E48000480F591F410F511D40535040F601089449
:10E49000C11CD11C1491812F80538A3048F34CA7A2
:10E4A0005FCF183619F4A4E0FA2A55CF1C3619F4B8
:10E4B000B1E0FB2A50CF133661F43E010894611C91
:10E4C000711CF20122E030E0420E531E80818983EC
:10E4D0003CC1143421F0143611F0193651F51434BE
:10E4E00011F431E0F32AF0FE0AC0F20144E050E0FA
:10E4F000440E551E80809180A280B3800CC0F20132
:10E5000082E090E0480E591E808191814C01AA243E
:10E5100097FCA094BA2CB7FE0AC0B094A094909433
:10E520008094811C911CA11CB11C8DE289A70AE07A
:10E530006FC01F3411F01F3631F41F3411F491E015
:10E54000F92A08E064C0103779F4F201A2E0B0E0E3
:10E550004A0E5B1E808191814C01AA24BB2400E1FC
:10E56000B0E4FB2A18E753C01337C1F5F20122E0EB
:10E5700030E0420E531E608071806114710489F492
:10E580003E010894611C711C88E289838EE6F301C8
:10E59000818385E78B838CE68C838D8389E28E83F0
:10E5A0001F82E7FC13C08E2D992787FD9095AC0143
:10E5B00060E070E0C3010E94A076009729F0382E39
:10E5C0003618E3140CF0C3C03E2CC1C0F301019017
:10E5D0000020E9F731973E2E3618B9C0153511F0F5
:10E5E000153731F4153511F4F1E0FF2A0AE00FC0B8
:10E5F000183519F0183709F0A0C000E1F3FE07C084
:10E6000081149104A104B10411F020E4F22A19A6A6
:10E61000EDA6E7FC02C03FEDF32289E2682E712CE3
:10E620006C0E7D1E81149104A104B10421F44DA54A
:10E63000442309F47BC0802F9927AA27BB278EA7E4
:10E640009FA7A8ABB9AB202E332490E0891690E0A9
:10E65000990691E0A90690E0B90648F0C501B40119
:10E660002EA53FA548A959A90E94967817C0AFEFDB
:10E670008A169104A104B10449F040F0C401B1012B
:10E680000E946F789B014427552708C0882D602F72
:10E690000E946378282F3327442755272AAB3BABAA
:10E6A0004CAB5DAB0A3059F48AA9880F880F880FEC
:10E6B0009AA9990F890F382D381B832F10C000316C
:10E6C00039F48AA98295807F482D481B842F07C082
:10E6D0008AA9880F880F880F582D581B852F90E026
:10E6E0002EA53FA548A959A982169306A406B506EA
:10E6F00008F091E08AA89BA8ACA8BDA88A3010F4C5
:10E70000805D04C0895A183509F48F7DD3018E933A
:10E710003D01992309F099CF083041F4F3FE06C07A
:10E72000803321F080E3FD0182933F01CE01019609
:10E73000382E3618F8E23F0E0BC0112309F46CC0D6
:10E740003E010894611C711C1983B1E03B2E19A68F
:10E75000032D2DA4231827FC222489A5882311F03A
:10E760000F5F02C0F6FC0E5F020DEF2CFF24C70105
:10E7700080739070892B49F48CA5801B682F2C9690
:10E780008EAD9FAD2C970E944D7189A5882331F0E5
:10E7900041E050E0BE01675D7F4F0AC0E6FE0EC05B
:10E7A00080E38AA71BA742E050E0BE01665D7F4F71
:10E7B0002C968EAD9FAD2C970E941E71C701807361
:10E7C0009070809749F48CA5801B682F2C968EAD95
:10E7D0009FAD2C970E945E71622D2C968EAD9FADE1
:10E7E0002C970E945E71832D992787FD9095AC012F
:10E7F000B3012C968EAD9FAD2C970E941E71E4FE46
:10E8000089CD2CA5201B2CA7622F2C968EAD9FADF9
:10E810002C970E944D717ECDE2E1CB5C0C94EF7899
:10E820002FB740E0F894E0E0F0E081E280935700F9
:10E830009491E2E0F0E0809357003491E4E0F0E05E
:10E840008093570084912FBF9E3199F4363941F45B
:10E85000893011F441E00DC08A3059F442E009C01A
:10E86000373939F4863011F443E003C0853009F4B8
:10E8700044E0842F992708959FB7F8948091C900A8
:10E88000877F8093C9008091C9008F7E8093C900E3
:10E890008091C9008F778093C9008091C9008F7BD8
:10E8A0008093C9008091C9008F7D8093C9005298E0
:10E8B0005A9A53985B9A9FBF08951F93CF93DF9303
:10E8C000182F80911D04882309F48DC08091EF01D9
:10E8D000181709F488C080911C04882321F40E9431
:10E8E000107480931C0488EB9CE09F938F93C6EF79
:10E8F000D2E1DF93CF93E0912804F09129040995A8
:10E900000F900F900F900F90812F992782309105D3
:10E9100001F1833091052CF4009761F0019769F0C3
:10E9200024C084309105D9F084309105ACF005976E
:10E93000C9F01BC088EA9CE002C086E99CE09F9376
:10E940008F93DF93CF93E0912804F09129040995E8
:10E9500018C08DE79CE0F3CF8AE59CE0F0CF8CE413
:10E960009CE0EDCF84E49CE0EACF85EC9CE09F93B3
:10E970008F93DF93CF93E0912804F09129040995B8
:10E9800010E00F900F900F900F9080911C04843036
:10E9900011F0823099F40E943C74812F81508330B1
:10E9A00018F40E949E681DC0143019F40E9408706B
:10E9B00018C01530B1F40E943D6E13C0112389F0C8
:10E9C0008BED9CE09F938F9386EF92E19F938F93C3
:10E9D000E0912804F091290409950F900F900F9071
:10E9E0000F901093EF01DF91CF911F9108950F9336
:10E9F0001F9381E080931D044091EE01E4EFFBE062
:10EA000020E030E05FE4849199272F5F3F4F829FA1
:10EA1000B001839F700D929F700D112446275150B5
:10EA2000319657FFF0CF4093EE01ECECFBE020E095
:10EA300030E057E2849199272F5F3F4F829FB001CA
:10EA4000839F700D929F700D11244627515031966F
:10EA500057FFF0CF4093EE0180911C04882321F4EE
:10EA60000E94107480931C048091EE01833459F04D
:10EA700088E190E029E20FB6F894A89580936000B1
:10EA80000FBE209360008FE691E790932904809356
:10EA9000280486EF9CE09F938F9306EF12E11F936B
:10EAA0000F93E0912804F091290409950F900F909D
:10EAB0000F900F9081E690E09F938F9382E590E016
:10EAC0009F938F931F921F92809102016AE00E9490
:10EAD0006378892F99279F938F93809102010E94D9
:10EAE000637899279F938F938CE19DE09F938F93F9
:10EAF0001F930F93E0912804F0912904099584EF66
:10EB00009BE09F938F931F930F93E0912804F091C4
:10EB1000290409958CEC9BE09F938F931F930F938F
:10EB2000E0912804F091290409958DB79EB7469687
:10EB30008DBF80E59DE09F938F931F930F93E0918E
:10EB40002804F0912904099583EC80938100809139
:10EB50006F00806280936F000F900F900F900F9066
:10EB60001F910F91089580911D04882361F0809179
:10EB7000EF01843011F40E9479708091EE018334AA
:10EB800011F010921D0408951F920F920FB60F926C
:10EB900011242F933F934F935F936F937F938F93A2
:10EBA0009F93AF93BF93EF93FF932091CE008091FB
:10EBB000FA018823B1F02093C6008091FA018230D7
:10EBC00029F52F3F19F58FEF94E3ACE0B0E0C29741
:10EBD000A109B109B7FFFBCF80916B048093CE00F0
:10EBE00015C09091EF01892F8150833020F4822F3E
:10EBF0000E94F9680BC0943021F4822F0E946C703F
:10EC000005C0953019F4822F0E94AB6FFF91EF91F0
:10EC1000BF91AF919F918F917F916F915F914F9134
:10EC20003F912F910F900FBE0F901F9018950024C9
:10EC300022273327442751E0BB27EE27FF27A0E1F7
:10EC4000660F771F881F991F001C221F331F441F48
:10EC5000660F771F881F991F001C221F331F441F38
:10EC60002AF4050E2B1F3E1F4F1F04C0051A2B0B45
:10EC70003E0B4F0B550FBB1FEE1F587F556047FDD6
:10EC80005250AA95E9F6E695B7955795E695B7954A
:10EC90005795852F9B2F08952227332741E055272D
:10ECA00068E0880F991F221F331F880F991F221FAA
:10ECB000331F1AF4240F351F02C0241B350B440FD9
:10ECC000551F487F456037FD42506A9551F756956C
:10ECD000479556954795842F0895AA2797FF04C016
:10ECE000809590958A1F9A1F77FF04C06095709554
:10ECF0006A1F7A1F669F9001779FA001679F300D62
:10ED0000411D5A1F300D411D5A1F889FF001999FC8
:10ED10002E0F3F1F401D511D899F300D411D5A1F51
:10ED2000300D411D5A1FCA01B901112480CFFB01CA
:10ED3000DC0102C005900D9241505040D8F7089573
:10ED4000FC014150504030F001900616D1F7319748
:10ED5000CF010895882799270895A0E0B0E0E3EB5C
:10ED6000F6E70C94DB786C017B01EA0159012197ED
:10ED70008FEFCF3FD80789F086010894C11CD11CC2
:10ED8000C7010894E11CF11CF5010995F801808385
:10ED90002197FFEFCF3FDF0779F7EAE0CDB7DEB786
:10EDA0000C94F778CF92DF92EF92FF920F931F931C
:10EDB0007C016B01FB010995082FC7010196F60143
:10EDC0000995182FC8011F910F91FF90EF90DF90C8
:10EDD000CF900895A0E0B0E0E0EFF6E70C94DD7886
:10EDE0008C017B01EA01690121978FEFCF3FD807A2
:10EDF00071F0F70121917F01C8010F5F1F4F622F52
:10EE0000F60109952197FFEFCF3FDF0791F7E8E083
:10EE1000CDB7DEB70C94F978CF92DF92EF92FF92E4
:10EE20000F931F936C018B017A01FA010995812FD1
:10EE30009927682FC6010196F70109951F910F9137
:10EE4000FF90EF90DF90CF9008955058BB27AA27EE
:10EE50000ED0E0C0D1D030F0D6D020F031F49F3FBA
:10EE600011F41EF4C6C00EF4E095E7FBBCC0E92F18
:10EE7000E2D080F3BA17620773078407950718F08A
:10EE800071F49EF5FAC00EF4E0950B2EBA2FA02D6A
:10EE90000B01B90190010C01CA01A0011124FF2747
:10EEA000591B99F0593F50F4503E68F11A16F04042
:10EEB000A22F232F342F4427585FF3CF4695379541
:10EEC0002795A795F0405395C9F77EF41F16BA0B06
:10EED000620B730B840BBAF09150A1F0FF0FBB1FB4
:10EEE000661F771F881FC2F70EC0BA0F621F731FFD
:10EEF000841F48F4879577956795B795F7959E3F5A
:10EF000008F0B3CF9395880F08F09927EE0F9795E7
:10EF10008795089598D088F09F5790F0B92F99273A
:10EF2000B751A0F0D1F0660F771F881F991F1AF014
:10EF3000BA95C9F712C0B13081F09FD0B1E0089501
:10EF40009CC0672F782F8827B85F39F0B93FCCF382
:10EF5000869577956795B395D9F73EF4909580950A
:10EF6000709561957F4F8F4F9F4F0895E89409C02A
:10EF700097FB3EF490958095709561957F4F8F4FEC
:10EF80009F4F9923A9F0F92F96E9BB279395F69502
:10EF9000879577956795B795F111F8CFFAF4BB0F80
:10EFA00011F460FF1BC06F5F7F4F8F4F9F4F16C0E4
:10EFB000882311F096E911C0772321F09EE8872F6E
:10EFC000762F05C0662371F096E8862F70E060E02A
:10EFD0002AF09A95660F771F881FDAF7880F9695A3
:10EFE000879597F9089597F99F6780E870E060E04A
:10EFF00008959FEF80EC089500240A9416161706D2
:10F0000018060906089500240A9412161306140619
:10F0100005060895092E0394000C11F4882352F07C
:10F02000BB0F40F4BF2B11F460FF04C06F5F7F4F34
:10F030008F4F9F4F089557FD9058440F551F59F01B
:10F040005F3F71F04795880F97FB991F61F09F3FD5
:10F0500079F087950895121613061406551FF2CFFE
:10F060004695F1DF08C0161617061806991FF1CF4E
:10F0700086957105610508940895E894BB27662775
:10F080007727CB0197F90895629FD001739FF00114
:10F09000829FE00DF11D649FE00DF11D929FF00D28
:10F0A000839FF00D749FF00D659FF00D9927729F5F
:10F0B000B00DE11DF91F639FB00DE11DF91FBD01EA
:10F0C000CF0111240895991B79E004C0991F961768
:10F0D00008F0961B881F7A95C9F780950895AA1B9A
:10F0E000BB1B51E107C0AA1FBB1FA617B70710F033
:10F0F000A61BB70B881F991F5A95A9F78095909565
:10F10000BC01CD01089597FB092E07260AD077FD93
:10F1100004D0E5DF06D000201AF4709561957F4F8A
:10F120000895F6F7909581959F4F0895A1E21A2EC4
:10F13000AA1BBB1BFD010DC0AA1FBB1FEE1FFF1F9B
:10F14000A217B307E407F50720F0A21BB30BE40BEB
:10F15000F50B661F771F881F991F1A9469F7609532
:10F160007095809590959B01AC01BD01CF010895EC
:10F1700097FB092E05260ED057FD04D0D7DF0AD005
:10F18000001C38F450954095309521953F4F4F4FD6
:10F190005F4F0895F6F790958095709561957F4F34
:10F1A0008F4F9F4F08952F923F924F925F926F9291
:10F1B0007F928F929F92AF92BF92CF92DF92EF9207
:10F1C000FF920F931F93CF93DF93CDB7DEB7CA1B88
:10F1D000DB0B0FB6F894DEBF0FBECDBF09942A88B3
:10F1E000398848885F846E847D848C849B84AA845B
:10F1F000B984C884DF80EE80FD800C811B81AA81E8
:10F20000B981CE0FD11D0FB6F894DEBF0FBECDBFB2
:10F21000ED010895EE0FFF1F0590F491E02D099484
:02F22000FFCF1E
:10F222005E010A010164FF01FFFFC01FC01F01014F
:10F2320001737373FF03007D0000C409C4096400F5
:10F242001148656C6C6F20576F726C64000000008F
:10F2520000000000000000000000000000000000AC
:10F26200000000000000000000000000000000009C
:10F27200000000000000000000000000000000008C
:10F28200000000000000000000000000000000007C
:10F292000053706F727400004E6F726D616C0000EB
:10F2A200426567696E6E6572000051756164726FC6
:10F2B2000000640001200B050000ECFF00020406C0
:10F2C200070808080706040200FEFCFAF9F8F8F835
:10F2D200F9FAFCFE000204060708086440415A4697
:10F2E20064640A02969696960840403A10FB3038BB
:10F2F2000190D0030090D00300F4017800FF036472
:10F302000B0A0D0B0C0E0B0F10FA2001010170FFFE
:02F31200010FE9
:00000001FF
/branches/metro/v0.82a metro_Akku+/Hex-Files/Flight-Ctrl_MEGA644_V0_82a_S3D.hex
0,0 → 1,3843
:100000000C94BB060C9401070C9401070C94010797
:100010000C9401070C9401070C9401070C94010740
:100020000C9401070C9441190C9401070C940107DE
:100030000C9404340C9401070C9401070C940107F0
:100040000C9401070C9401070C9411160C940107F1
:100050000C942C0C0C9401070C94F60B0C940107D7
:100060000C94FD1B0C9401070C94972F0C94010722
:100070000C943C740C9401070C94386F281C2D1CB4
:10008000321C3B1C521C691C791C891CA61C921E2C
:10009000691C541D651D941DB21DCF1D291E841E93
:1000A0006220F420B12131229A224A235125AE2523
:1000B0001B266526B026FD264E27B0270F28A92827
:1000C00044293E2AB62FEA2F2D309D30B530F63028
:1000D000AD317432743274327432743274327432B8
:1000E000743274327432743229322B3230324832E4
:1000F0004A320A0D426174743A0020256420436537
:100100006C6C732000204C6F77207761726E696E83
:1001100067206C6576656C3A2025642E2564000A9C
:100120000D466F756E6420424C2D4374726C3A20FC
:10013000002564000A0D0A0D2121204D4953534921
:100140004E4720424C2D4354524C3A2025642021E6
:1001500021000A0D3D3D3D3D3D3D3D3D3D3D3D3D8B
:100160003D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3DBF
:100170003D3D3D3D3D3D3D000A0D43616C69627270
:100180006174696E67207072657373757265207330
:10019000656E736F722E2E004F4B0A0D000A0D46CE
:1001A0006C696768742D74696D65202575206D69AB
:1001B0006E2020546F74616C3A2575206D696E0055
:1001C0000A0D436F6E74726F6C3A2000486561646B
:1001D000696E67486F6C64004E6F726D616C2028A9
:1001E0004143432D4D6F646529000A0D3D3D3D3D62
:1001F0003D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D2F
:100200003D3D3D3D3D3D3D3D3D3D3D3D3D3D3D0A51
:100210000D00416E676C654E69636B2020202020C5
:100220002020416E676C65526F6C6C20202020206E
:1002300020204163634E69636B2020202020202012
:100240002020416363526F6C6C20202020202020EE
:1002500020205961774779726F20202020202020AC
:1002600020204865696768742056616C7565202098
:1002700020204163635A202020202020202020209D
:1002800020204761732020202020202020202020B3
:100290002020436F6D706173732056616C7565200B
:1002A0002020566F6C74616765205B302E31565D7F
:1002B00020205265636569766572204C6576656CB1
:1002C00020204779726F20436F6D70617373202017
:1002D00020204D6F746F722031202020202020209C
:1002E00020204D6F746F722032202020202020208B
:1002F00020204D6F746F722033202020202020207A
:1003000020204D6F746F7220342020202020202068
:1003100020203136202020202020202020202020B6
:1003200020203137202020202020202020202020A5
:100330002020313820202020202020202020202094
:100340002020313920202020202020202020202083
:100350002020536572766F2020202020202020202E
:100360002020486F7665726761732020202020204E
:10037000202043757272656E74205B302E31415DB2
:1003800020204361706163697479205B6D41685D11
:100390002020323420202020202020202020202037
:1003A0002020323520202020202020202020202026
:1003B0002020323620202020202020202020202015
:1003C0002020323720202020202020202020202004
:1003D00020204932432D4572726F72202020202048
:1003E0002020424C204C696D697420202020202060
:1003F00020204750535F4E69636B2020202020202F
:1004000020204750535F526F6C6C2020202020200A
:10041000202021212120494E434F4D504154494233
:100420004C4520212121002E000A0D20444143206B
:100430006F7220493243204552524F522120436867
:1004400065636B204932432C2033567265662C203D
:1004500044414320616E6420424C2D4374726C0011
:100460005B25695D005B25695D002B204D696B7222
:100470006F4B6F70746572202B0048573A56256495
:100480002E25642053573A25642E25642563005396
:10049000657474696E673A2564202573004861723B
:1004A0006477617265204572726F7220313A2564FB
:1004B000202121004D697373696E6720424C2D43E2
:1004C00074726C3A25642121004D6978657220456B
:1004D00072726F722100493243204552524F5221AD
:1004E0002121004865696768743A20202535690034
:1004F000536574706F696E743A2535690050726582
:1005000073737572653A253569004F666673657455
:100510003A20202535690048656967687420636F53
:100520006E74726F6C0044495341424C454400481C
:10053000656967687420636F6E74726F6C004449FC
:100540005341424C4544006163742E2062656172E0
:10055000696E67004E69636B3A20202020202025B9
:10056000356900526F6C6C3A202020202020253500
:100570006900436F6D706173733A202020253569DF
:10058000004B313A25346920204B323A253469201A
:10059000004B333A25346920204B343A2534692006
:1005A000004B353A25346920204B363A25346920F2
:1005B000004B373A25346920204B383A25346920DE
:1005C000004E693A2534692020526F3A253469205B
:1005D0000047733A253469202047693A2534692059
:1005E0000050313A253469202050323A25346920B0
:1005F0000050333A253469202050343A253469209C
:10060000004779726F202D2053656E736F72004E14
:1006100069636B25346920282533692E25692900F3
:10062000526F6C6C25346920282533692E25692981
:100630000047696572253469202825336929004EF1
:1006400069636B2025346920282533692E25782994
:1006500000526F6C6C2025346920282533692E25C3
:1006600078290059617720202534692028253369AD
:1006700029004E69636B20253469202825336929B8
:10068000282533692900526F6C6C20253469202895
:1006900025336929282533692900596177202025C8
:1006A00034692028253369292825336929004143E5
:1006B00043202D2053656E736F72004E69636B206B
:1006C00025346920282533692900526F6C6C202558
:1006D0003469202825336929005A20202020253418
:1006E0006920282533692900566F6C746167653A63
:1006F0002020202533692E253169560043757272FA
:10070000656E743A2020202533692E253169410019
:10071000506F7765723A20202020202534695700D9
:100720004469736368617267653A202535696D4174
:10073000680052656365697665720052432D5253B5
:1007400053493A202020202534690052432D517509
:10075000616C6974793A202534690052432D4368ED
:10076000616E6E656C733A25346900436F6D70611C
:1007700073730048656164696E673A2020253569A6
:100780000056616C75653A2020202025356900539C
:10079000746172743A2020202025356900506F74EE
:1007A00069313A202025336900506F7469323A204C
:1007B0002025336900506F7469333A20202533694E
:1007C00000506F7469343A202025336900506F74EB
:1007D00069353A202025336900506F7469363A2014
:1007E0002025336900506F7469373A20202533691A
:1007F00000506F7469383A202025336900536572C0
:10080000766F202000536574706F696E7420202508
:10081000336900506F736974696F6E3A20253369CC
:100820000052616E67653A2533692D2533690045AD
:10083000787465726E436F6E74726F6C2020004E18
:10084000693A2534692020526F3A253469200047DF
:10085000733A253469202047693A253469200048D5
:10086000693A253469202043663A253469200042DC
:100870004C2D4374726C204572726F727320002588
:10088000336420253364202533642025336420001D
:1008900025336420253364202533642025336420E8
:1008A00000253364202533642025336420253364F8
:1008B0002000424C2054656D7065726174757265DC
:1008C00000253369202533692025336920253369C4
:1008D00020002533692025336920253369202533FD
:1008E00069200025336920253369202533692025B7
:1008F00033692000424C2D4374726C20666F756E14
:1009000064200020256320202025632020202563EB
:10091000202020256320002025632020202563201F
:10092000202025632020202563200020256320200F
:10093000202D2020202D2020202D2000313000319E
:100940003100313200466C696768742D54696D65F9
:10095000202000546F74616C3A2535756D696E0006
:100960004163743A20202535756D696E00287265E3
:1009700073657429000A0D47656E65726174696E4E
:10098000672064656661756C7420506172616D6585
:1009900074657220536574202564000A0D557369CF
:1009A0006E6720506172616D657465722053657465
:1009B000202564000A0D47656E65726174696E6773
:1009C0002064656661756C74204D69786572205489
:1009D00061626C65000A0D4D697865722D436F6E1A
:1009E0006669673A202725732720282575204D6FD3
:1009F000746F727329000A0D3D3D3D3D3D3D3D3D07
:100A00003D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D16
:100A10003D3D3D3D3D3D000A0D414343206E6F7419
:100A20002063616C69627261746564210D0A000063
:100A3000008F001E01AD013B02CA025803E6037499
:100A40000402058F051B06A7063307BE074808D218
:100A5000085B09E3096B0AF20A780BFD0B810C04B1
:100A60000D860D070E870E060F840F00107B10F504
:100A7000106E11E5115B12CF124213B313231492BF
:100A800014FE146A15D3153B16A11605176717C86F
:100A90001727188318DE1837198E19E319361A87A5
:100AA0001AD61A231B6E1BB61BFD1B411C831CC3CD
:100AB0001C001D3C1D751DAB1DE01D121E421E6F4E
:100AC0001E9A1EC31EE91E0D1F2E1F4D1F691F8477
:100AD0001F9B1FB01FC31FD31FE11FEC1FF51FFB80
:100AE0001FFF1F0020030100000E69000201010129
:100AF0006A01030202956A02000303F26A25326961
:100B00002E25316956002533642563202530336452
:100B10006D00537461747573004552524F523A2000
:100B200025326400253469202532693A253032693E
:100B3000002534696D25630025336920253369203C
:100B40002533692025336900253369202533692041
:100B5000253369202533690054656D7065726174B1
:100B600075726573202020200025634320202020FB
:100B700020002532692E2531695620202533692E23
:100B8000253169410025346957202536696D416852
:100B9000002532756D2F73205361743A256420004F
:100BA00020203344004E6F4678004447505300489D
:100BB0006F6D653A2533646D202533642563004EDF
:100BC0006F204E6176694374726C21000A0D77774D
:100BD000772E4D696B726F4B6F707465722E646502
:100BE0002028632920486953797374656D73204701
:100BF0006D6248000A0D74686520757365206F6624
:100C0000207468697320736F6674776172652069F8
:100C100073206F6E6C79207065726D697474656491
:100C2000200A0D6F6E206F726967696E616C204DCE
:100C3000696B726F4B6F707465722D486172647767
:100C4000617265004143542044534C004A65746905
:100C500020736174656C6C6974005370656B747299
:100C6000756D20736174656C6C697420284C6F77A6
:100C7000207265736F6C7574696F6E2900537065AF
:100C80006B7472756D20736174656C6C6974202867
:100C90003230343829005370656B7472756D20736F
:100CA0006174656C6C6974004D756C746973696707
:100CB0006E616C2050504D000A0D52656365697677
:100CC00065723A2000756E6B6E6F776E2E205573CD
:100CD000696E672050504D2E2E2E006E6F7420735B
:100CE0007570706F727465642062792068617264D7
:100CF0007761726521000A0D3D3D3D3D3D3D3D3D25
:100D00003D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D13
:100D10003D3D3D3D3D3D3D3D3D3D3D000A0D466C6B
:100D200069676874436F6E74726F6C0A0D48617204
:100D300064776172653A25642E25640A0D536F66E7
:100D400074776172653A5625642E25642563200008
:100D50000A0D3D3D3D3D3D3D3D3D3D3D3D3D3D3D26
:100D60003D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3DB3
:100D70003D3D3D3D3D0011241FBECFEFD0E1DEBF24
:100D8000CDBF11E0A0E0B1E0E2E1FFEE02C00590CE
:100D90000D92A23FB107D9F718E0A2EFB1E001C070
:100DA0001D92A834B107E1F76AEAE2E0F0E081E2DF
:100DB000809357007491AE014F5F5F4F20EF37EF84
:100DC000DA019FE0F9012F5F3F4F84918D9391509D
:100DD00097FFF8CF773911F40000FECFFA019EE0BB
:100DE000819168276095915097FFFACF888968179D
:100DF00021F0773911F40000FECF0E94C2070C9455
:100E000088770C9400008091AD05E82FFF27EE0F46
:100E1000FF1FE952F94F808191818D5E9F4F14F041
:100E200010920301808191818A5B9F4FCCF4809165
:100E300003018823A9F481E0809303018091F003EA
:100E40008F5F8093F003853038F088EE93E09093C5
:100E500025028093240204C066E970E00E94E63512
:100E60008091F003992790937E0580937D050895E6
:100E70001F93CF93DF93182F882389F082EF90E0A0
:100E80009F938F9386EF92E19F938F93E091BC03A2
:100E9000F091BD0309950F900F900F900F908091E6
:100EA000D005823308F044C084EF91E00E941C1703
:100EB000EC01112329F0CE010E9425178823D9F3D4
:100EC000C2E0D0E026E530E080911E0190911F0144
:100ED0008217930730F02196255D3F4FC730D1052B
:100EE00098F38091D0059927C89F9001C99F300D34
:100EF000D89F300D1124209300011123D9F068EC04
:100F000070E08C2F0E94E635DF93CF938AEF90E05C
:100F10009F938F9386EF92E19F938F93E091BC0311
:100F2000F091BD0309958DB79EB706968DBF02C09F
:100F300080930001112311F1809100016AE00E9469
:100F4000DB76892F99279F938F93809100010E94D0
:100F5000DB7699279F938F9385E091E09F938F9302
:100F600086EF92E19F938F93E091BC03F091BD03D4
:100F700009952DB73EB7285F3F4F2DBFDF91CF9129
:100F80001F910895CFEFD0E1DEBFCDBF8824992413
:100F900014B815B807EE13E00253104017FFFCCF4A
:100FA000189B06C0199B02C08DE007C08BE005C0EE
:100FB000199B02C084E101C08AE08093020181E8AC
:100FC00087B93E9A8FEF88B98BE184B981E085B902
:100FD0008EE38AB987E48BB9469A84B7877F84BF4A
:100FE000809160008861809360001092600084ECC2
:100FF00099E090932502809324021092AC02109203
:10100000AB021092DC061092DB061092AE02109238
:10101000AD021092B0021092AF0220910201243171
:1010200028F084EC94E0A0E0B0E004C08BE095E010
:10103000A0E0B0E08093960190939701A09398016F
:10104000B09399012A3011F0243110F0289801C092
:10105000289A0E9485170E9456170E94FE120E942D
:10106000E8330E94B51A81E00E944B2F0E94B661BE
:101070000E94E16B0E946F73809102018C3010F42A
:10108000299A01C0299878940E94652E80916C025B
:10109000826080936C0210926F020E94084184EF7C
:1010A00091E00E941C178C0180916C0280FD05C0AC
:1010B000C8010E9425178823B9F38FE191E09F931F
:1010C0008F93B6EFAB2EB2E1BB2EBF92AF92E09101
:1010D000BC03F091BD03099580EA9FE00E941C17B4
:1010E0008C01C0E0D0E00F900F900F900F90A9E717
:1010F000EA2EA6E0FA2EFDE2CF2EF6E0DF2E0E94C9
:10110000084180916C0280FD05C0C8010E9425172E
:101110008823B9F3F60180811816ACF40BC00E9445
:10112000084180916C0280FD05C0C8010E9425170E
:101130008823B9F3C8010E942517882321F4F701F9
:101140008081882364F7F701808187FF18C021968A
:10115000DF93CF93219781E391E09F938F93BF9289
:10116000AF92E091BC03F091BD0309958091F2012B
:101170008F5F8093F2018DB79EB706968DBF219643
:10118000E4E0F0E0CE0EDF1E88E090E0E80EF91E0D
:10119000CC30D10508F4B3CFC0E0D0E006E716E0CC
:1011A000EDE2EE2EE6E0FE2EF801838187FD1CC005
:1011B000F70180811816C4F42196DF93CF9321970D
:1011C00084E391E09F938F9386EF92E19F938F93B7
:1011D000E091BC03F091BD03099582E08093220267
:1011E0008DB79EB706968DBFF80183818078838383
:1011F000219684E090E0E80EF91E085F1F4FCC3086
:10120000D10590F282E591E09F938F93C6EFD2E1F2
:10121000DF93CF93E091BC03F091BD0309959091CA
:10122000AB058091F2010F900F900F900F909817DF
:1012300028F48091D60380618093D60388E791E0FB
:101240009F938F93DF93CF93E091BC03F091BD0305
:10125000099588EE93E00E941C178C010E94BB1A2E
:101260000F900F900F900F90C8010E9425178823B0
:10127000D9F388E991E09F938F93DF93CF93E09127
:10128000BC03F091BD03099580E00E94A8368091CF
:1012900002010F900F900F900F908A3011F084315F
:1012A00010F0289801C0289A80ED97E090932502CD
:1012B0008093240285E58093F2038EE090E00E9403
:1012C0009A2C9927182F00278FE090E00E949A2CE3
:1012D000080F111D1093F8010093F7018AE090E0C8
:1012E0000E949A2C9927182F00278BE090E00E94EB
:1012F0009A2C080F111D1093F6010093F5010F5F52
:101300001F4F39F08091F7019091F8018F5F9F4F47
:1013100041F41092F8011092F7011092F601109228
:10132000F5018091F5019091F6019F938F93809143
:10133000F7019091F8019F938F938DE991E09F932E
:101340008F93DF93CF93E091BC03F091BD03099598
:101350008DB79EB708968DBF80EC91E09F938F93D9
:10136000DF93CF93E091BC03F091BD030995809189
:10137000B9050F900F900F900F90E091BC03F09182
:10138000BD0382FF07C08CEC91E09F938F93DF93A6
:10139000CF9308C088ED91E09F938F9386EF92E101
:1013A0009F938F9309950F900F900F900F900E942D
:1013B000D91F88E893E1909393018093920181E093
:1013C0008093F1030E9438078091D3050E94D57263
:1013D0008AEE91E09F938F93DF93CF93E091BC03CC
:1013E000F091BD03099580ED97E00E941C178C01D8
:1013F0008AEF90E00E941C17EC0183E08093550572
:101400000F900F900F900F908091FA018111FFCFF4
:10141000CE010E942517882339F084E690E00E94CF
:101420001C17EC010E942B7480912802882309F478
:10143000D5C180911001882309F4D0C110922802EF
:101440008091F003882319F00E94030702C00E94D4
:10145000E2430E940841209102012A3011F0243118
:1014600010F0289801C0289A8091B1029091D6037B
:10147000882339F08091B10281508093B102977F27
:101480000AC080916F00806280936F001092D8062E
:101490001092D70698609093D60380919201909114
:1014A000930101979093930180939201809192010F
:1014B00090919301892B21F080916D028823C9F1CD
:1014C0008091920190919301892BD9F40E94752FFC
:1014D00085E090E0909393018093920180918F0535
:1014E0009091900501969093900580938F0580913F
:1014F000D60381608093D6038091560582608093E5
:10150000560580910801909109018F5F9F4F19F551
:101510008091A8028823F9F080E197E29093250258
:101520008093240280E890E0909309018093080161
:1015300012C02A3011F0243110F0289801C0289AE6
:101540008091240290912502892B29F48091D60361
:101550008E7F8093D60380912802882309F03EC1B4
:1015600080910E01882311F00E949C170E94411364
:101570000E947C0EC8010E942517882309F42AC105
:101580000C5E1F4F80916D029091D603882339F035
:1015900092609093D6038091560582600CC09D7F27
:1015A0009093D6038091920190919301079728F030
:1015B000809156058D7F8093560580919201909180
:1015C0009301079728F08091D6038E7F8093D603EE
:1015D00080910501882321F081508093050125C069
:1015E0008093FC0310928902109288021092870265
:1015F0001092860210928502109284028091080156
:10160000909109018F5F9F4F81F48091B1028823EF
:1016100061F488E99AE3909325028093240280E0A4
:101620009CE090930901809308018091E901893C35
:1016300048F081508093E9018091D6038B7F80939D
:10164000D60330C08091B5078823E1F08091D6039E
:1016500084608093D60380910801909109018F5F87
:101660009F4F81F48091A802882361F088E99AE372
:10167000909325028093240280E098EA90930901D8
:101680008093080110928E0310928D0310928C03A8
:1016900010928B038FEF9FEF9093E3078093E20705
:1016A0001092E90180910001282F332780911E01BB
:1016B00090911F0182179307CCF480917D02806284
:1016C00080937D0280910801909109018F5F9F4F67
:1016D000C1F480E797E1909325028093240280E093
:1016E00093E090930901809308010BC0809124023C
:1016F00090912502892B29F480917D028F7D809322
:101700007D020E94C26584E0809323028091A8023A
:10171000882329F45AEA852E55E0952E12C080912F
:10172000F9018F5F8093F901813359F41092F90127
:101730008091F3019091F40101969093F4018093CC
:10174000F3010894811C911CF2E78F16FBE09F06C1
:1017500009F040C0882499242091F7013091F801C4
:101760002F5F3F4F3093F8012093F7018091F501EF
:101770009091F60101969093F6018093F501832FE5
:101780009927682F8EE090E00E94A22C8091F701AB
:101790009091F8019070682F8FE090E00E94A22C49
:1017A0008091F5019091F601892F9927682F8AE0A1
:1017B00090E00E94A22C8091F5019091F60190702A
:1017C000682F8BE090E00E94A22C84E190E00E94C0
:1017D0001C178C010E9412660E94F86B80912302F4
:1017E000882309F011CE0E94D7610ECE1F920F926E
:1017F0000FB60F9211248F939F93EF93FF938091D5
:1018000007018823E1F4809114029091150201965A
:101810009093150280931402FC01E555FB4FE08183
:10182000ED3019F08A3A910539F4109215021092B0
:10183000140281E080930701E093C60004C0109277
:10184000150210921402FF91EF919F918F910F90CA
:101850000FBE0F901F9018951F920F920FB60F9208
:1018600011242F933F934F935F936F937F938F93A5
:101870009F93AF93BF93CF93EF93FF9390E08091AB
:10188000FA01813029F48091C6008093CE00CCC04B
:101890008091FA01823029F48091C6008093FF0381
:1018A000C3C08091C60080930C0250911A025A3A2C
:1018B00010F090931B0280910C028D3009F065C0EE
:1018C00080911B02823009F060C090931B02852F2B
:1018D000992781509C4FFC0132974081209116023C
:1018E00030911702241B3109DC0111978C91281BC0
:1018F0003109C9019F70909317028093160246E048
:10190000969587954A95E1F7982F935C90931802E6
:101910002F733070235C209319028081981729F46B
:101920008C91281711F491E006C090E08091090293
:101930008F5F80930902C0910B02CC2309F074C021
:10194000992309F471C081E080930B02580F5093E2
:1019500008025150E52FFF27E150FC4F8DE08083B6
:1019600080910104823509F05FC00E94D91F88E18F
:1019700090E02CE00FB6F894A895809360000FBE1D
:1019800020936000C09322024FC020911B02822F3F
:10199000992781309105F9F0823091051CF4892B4B
:1019A00021F040C0029711F13DC080910C028332BA
:1019B00039F480910B02882319F481E080931B0293
:1019C00080910C028093FF0381E080931A02809142
:1019D0000C02992722C02F5F20931B02E52FFF27BF
:1019E000E150FC4F80910C02808309C0E52FFF2756
:1019F000E150FC4F80910C0280835A3A20F45F5FE3
:101A000050931A0202C010921B0220910C02809186
:101A1000160290911702820F911D909317028093E6
:101A2000160202C010921B02FF91EF91CF91BF915D
:101A3000AF919F918F917F916F915F914F913F9166
:101A40002F910F900FBE0F901F901895AC01A0E042
:101A5000B0E09D01A817B90748F4EBEAF4E08191E2
:101A6000280F311D1196A417B507C8F33F70FD016B
:101A7000E555FB4FC90156E0969587955A95E1F7D4
:101A8000835C80831196FD01E555FB4F2F73307009
:101A9000822F835C8083A455BB4F8DE08C93109282
:101AA00007018091AB048093C6000895A0E0B0E0E8
:101AB000ECE5FDE00C9454772C859D850E85BB24C8
:101AC00083E28093AB049F599093AC042093AD04C0
:101AD00033E0E32EF12C002309F49EC0CF84D88894
:101AE000BE016D5E7F4FA989BA890150109709F434
:101AF00093C01097B9F0F601EB0DF11DB3949081EE
:101B0000119791F4002349F1FB016E5F7F4FDB01D8
:101B1000C080D1806E5F7F4F0D90BC91A02DBB2403
:101B2000015002C090E019C01097B9F0F601EB0D1A
:101B3000F11DB3944081119791F4002341F1FB0111
:101B40006E5F7F4FDB01C080D1806E5F7F4F0D9055
:101B5000BC91A02DBB24015002C040E018C01097DA
:101B6000B1F0F601EB0DF11DB3941081119781F4E2
:101B7000002371F0FB013296DB01CD90DC90BF01B8
:101B80006E5F7F4FA081B181BB24015001C010E086
:101B9000F701E555FB4F892F86958695835C8083F9
:101BA0000894E11CF11CF701E555FB4F892F99279B
:101BB0008370907024E0880F991F2A95E1F75527CC
:101BC0009A0194E0369527959A95E1F7822B835CEC
:101BD00080830894E11CF11CF701E555FB4F4F7021
:101BE0005070440F551F440F551F812F992726E031
:101BF000969587952A95E1F7842B835C80830894DA
:101C0000E11CF11CF701E555FB4F1F73135C1083BA
:101C10000894E11CF11C6ACFC7010E94260DE9E07F
:101C20000C947077A3E07A2F409108024650442329
:101C300009F458C0E72FFF27E150FC4F80818D53F6
:101C40007F5FE72FFF27E150FC4F20812D537F5FFF
:101C5000E72FFF27E150FC4F30813D537F5FE72F97
:101C6000FF27E150FC4F60816D537F5F9927880FFC
:101C7000991F880F991F522F52955F70582B822FF2
:101C800099278F709070F4E0880F991FFA95E1F70B
:101C9000232F26952695282B832F992783709070C4
:101CA000E6E0880F991FEA95E1F7682B41504F3F16
:101CB000C9F0EA2FFF27E150FC4F5083AF5F41503E
:101CC0004F3F81F0EA2FFF27E150FC4F2083AF5FA9
:101CD00041504F3F39F0EA2FFF27E150FC4F60831E
:101CE000AF5FA5CF82E094E0909307028093060255
:101CF000A350A09305020895A2E0B0E0E2E8FEE060
:101D00000C945A7780910B02882309F46BC40E94CB
:101D1000120E80910004823609F025C380910104DF
:101D200099278037910509F4C1C081379105C4F422
:101D30008A36910509F48DC28B36910544F48B34B3
:101D4000910571F18636910509F46CC10CC38D368D
:101D5000910509F47BC08E36910509F45FC003C379
:101D600084379105D1F1853791054CF48137910580
:101D700009F4A3C08337910509F4F1C0F4C2873791
:101D8000910509F428C2883791052CF4853791050F
:101D900009F4E4C1E8C28937910509F47AC1E3C2C4
:101DA000E0910602F0910702808191819093C40234
:101DB0008093C3022091C1023091C202821B930B17
:101DC000845E9D4F68E671E00E94FB76845B9040E4
:101DD0009093C0028093BF02C6C280910802A09176
:101DE0000602B0910702853140F080E1EAEDF3E0B0
:101DF0000D9001928A95E1F70DC08D919D910D9006
:101E0000BC91A02D8093DA039093DB03A093DC03B5
:101E1000B093DD0380EF809303024BC080910701F4
:101E20008823E1F38DE490E09F938F9380E296E026
:101E30009F938F9381E08F938F938EE48F930E9473
:101E4000560D8DB79EB707968DBF8DC2A091060225
:101E5000B09107021C91113081F48DE4E0E2F6E0CC
:101E60000D9001928A95E1F70E94A22D198380912D
:101E7000D6038F7E8093D60301C01982809107011B
:101E80008823E1F381E090E09F938F93CE01019648
:101E90009F938F9381E08F938F938DE48F930E9414
:101EA000560DADB7BEB71796ADBF5DC281E080934A
:101EB0000E028FEF8093050156C2E0910602F09169
:101EC0000702E0818E2F8A508A3058F48983882354
:101ED00011F481E003C0863010F085E0898361E071
:101EE0000EC08E2F84518A3070F48983882311F4B8
:101EF00081E003C0863010F085E0898360E089814D
:101F00000E94222E12C0E983EF3F19F40E94052E91
:101F100089838981882311F481E003C0863010F021
:101F200085E0898389810E94B82C809107018823EC
:101F3000E1F383E790E09F938F938CEA95E09F9382
:101F40008F9381E090E09F938F93CE0101969F93B2
:101F50008F9382E08F9381E08F9381E572C120910E
:101F6000060230910702D9018C918150853008F02A
:101F700040C0F90181818535E1F52F5F3F4F83E74F
:101F8000ECEAF5E0D9010D9001928A95E1F7F901AB
:101F900082910E94212D8091ED059927AA27BB27C8
:101FA000BC01CD0124EC39E040E050E00E94BC7659
:101FB000DC01CB018093D5019093D601A093D7018A
:101FC000B093D8018091EE059927AA27BB27BC01C1
:101FD000CD010E94BC76DC01CB018093D1019093AE
:101FE000D201A093D301B093D4010E94052E89831E
:101FF00001C01982809107018823E1F381E090E01C
:102000009F938F93CE0101969F938F9381E08F933F
:102010008F9383E58F930E94560D8DB79EB70796D9
:102020008DBF26C0E0910602F0910702E0818E2F5D
:102030008150853018F48E2F0E94B82C0E94052EF6
:102040008983809107018823E1F381E090E09F93E9
:102050008F93CE0101969F938F9381E08F938F93FF
:1020600086E48F930E94560DADB7BEB71796ADBFED
:102070008091A802882329F46EE670E089810E948D
:10208000E63580E00E9438078091D3050E94D57222
:102090006AC1E0910602F09107028081992787FDCD
:1020A00090959093F2068093F1068181992787FDA0
:1020B00090959093F4068093F3068281992787FD8B
:1020C00090959093F6068093F5068381992787FD76
:1020D00090959093F8068093F7068481992787FD61
:1020E00090959093FA068093F9068581992787FD4C
:1020F00090959093FC068093FB068681992787FD37
:1021000090959093FE068093FD068781992787FD21
:102110009095909300078093FF068085992787FD0F
:10212000909590930207809301078185992787FDF9
:10213000909590930407809303078285992787FDE4
:10214000909590930607809305078385992787FDCF
:102150009095909308078093070705C1E0910602C8
:10216000F091070280810E9441338A83882319F409
:1021700081E0898301C01982809107018823E1F3FE
:1021800088E090E09F938F938EE696E09F938F93E5
:1021900021E030E03F932F93809106029091070257
:1021A0009F938F933F932F93CE0102969F938F938C
:1021B0003F932F93CE01820F931F9F938F9384E0C1
:1021C0008F9381E08F9385E58F930E94560DEDB735
:1021D000FEB773963CC080910502893008F4C3C0F5
:1021E00020910602309107022F5F3F4F88E0AEE654
:1021F000B6E0F90101900D928A95E1F7D9018E912F
:102200000E9497328A83882319F481E0898301C070
:102210001982809107018823E1F321E030E03F93A8
:102220002F93CE0102969F938F933F932F93CE01CE
:10223000820F931F9F938F9382E08F9381E08F9300
:1022400087E58F930E94560DEDB7FEB73B96EDBF25
:102250008AC00E9488728983823019F0843009F024
:1022600082C0F8948091C1008F738093C1008091E7
:10227000C9008F738093C9008091C100877E8093CD
:10228000C1008091C900877E8093C9008091C800F9
:1022900087FF03C08091CE00F9CF8091C00087FFF7
:1022A00003C08091C600F9CFE0910602F0910702C9
:1022B0008081882359F581E08093FA011092CD0046
:1022C00080E490E08093CC008091CD008093C500A5
:1022D0008091CC008093C4008091CA008F7D809350
:1022E000CA008091CA008F7E8093CA008091C90085
:1022F0008B7F8093C9008091CA0084608093CA005C
:102300008091CA0082608093CA0003C082E08093FB
:10231000FA018091CA00877F8093CA008091C20031
:10232000877F8093C2008091C9008E7F8093C9000F
:102330008091C10088618093C1008091C90088614B
:102340008093C9008091C10080688093C100809112
:10235000C90080688093C90010926E0010926F00CF
:102360001092700078948091010499278436910529
:1023700009F4CDC085369105ACF48136910509F498
:1023800081C0823691052CF48B34910509F45DC02F
:1023900021C18236910509F482C08336910509F482
:1023A00091C018C18C36910509F4FFC08D36910596
:1023B0004CF48736910509F40AC18836910509F471
:1023C000C4C008C18437910529F08637910509F406
:1023D000FAC000C180910802A0910602B0910702E4
:1023E000803140F080E1EAEDF3E00D9001928A95B2
:1023F000E1F70DC08D919D910D90BC91A02D809322
:10240000DA039093DB03A093DC03B093DD038091A8
:1024100007018823E1F31F92809104018F9384E5E3
:102420008F930E94560D8AEF809303028FEF809363
:10243000050180EA9FE00E941C179093FC018093A5
:10244000FB010F900F900F90C5C0E0910602F09134
:102450000702808191819093C4028093C3022091EE
:10246000C1023091C202821B930B845E9D4F68E6CD
:1024700071E00E94FB76845B90409093C002809351
:10248000BF02A8C0E0910602F0910702808180930C
:102490000601803298F08FE1809306010FC0A09171
:1024A0000602B09107028BE0E2EFF3E00D9001929B
:1024B0008A95E1F78091FB03809397058FEF8093D6
:1024C000050188C08091FF0190910002892B89F459
:1024D000E0910602F0910702E081EE2351F08AE0DC
:1024E000E89FC00111240E941C179093CD03809394
:1024F000CC03E0910602F091070290818AE0989F58
:10250000C0011124909300028093FF0115C08FEF4A
:1025100080930501E0910602F091070290818AE024
:10252000989FC00111249093020280930102892B8D
:1025300019F081E08093100280EA9FE00E941C174E
:102540009093FC018093FB0145C08FEF80930501C0
:10255000E0910602F0910702908197FD08C082E0A9
:1025600080930D021092FE011092FD011AC0909509
:1025700080916502892B8093650291818AE0989F02
:10258000C00111249093FE018093FD0184E08093AB
:102590000D0280EA9FE00E941C179093FC0180933B
:1025A000FB0181E08093110215C08FEF809305013C
:1025B000E0910602F091070280818093660281E03B
:1025C0008093120207C081E080930F0203C081E074
:1025D0008093130210920B021092070210920602CF
:1025E00010920502E3E0CE5F0C947677982F8091ED
:1025F000C00085FFFCCF9093C60008950F931F93F2
:1026000088E18093C1008091C00082608093C00007
:102610008091C10080688093C1008091C100806476
:102620008093C10000E010E00093C5008AE290E0D2
:102630008093C40080910102909102020E941C17B5
:102640009093CF038093CE038CED90E00E941C17F3
:102650009093FE038093FD031092D00382E5809354
:10266000D1031092D4038BE08093D2031092D30352
:102670001093070200930602109205021F910F911A
:102680000895A0E1B0E0E7E4F3E10C94577780917E
:102690000701882309F4C1C28091FB019091FC01DC
:1026A0000E942517882361F01092FE011092FD010F
:1026B0001092020210920102109200021092FF0189
:1026C0008091FD019091FE01892B41F08091A90438
:1026D0009091AA040E942517882329F48091110261
:1026E000882309F460C080910701882309F45BC046
:1026F00080910D0201E211E08430A8F00E94ED1FEC
:1027000080E590E09F938F931F930F9381E08F93C9
:102710008F9388E48F930E94560D2DB73EB7295FA3
:102720003F4F2DBF34C01092670282E194E09F9327
:102730008F9382EE9FE19F938F93E091BC03F09182
:10274000BD03099584E190E09F938F931F930F93AE
:1027500081E090E09F938F938DE092E09F938F9321
:1027600082E08F9381E08F9388E48F930E94560DCF
:1027700080910D02982F8F5F80930D022DB73EB789
:10278000215F3F4F2DBF943010F010920D028091C9
:10279000FD019091FE010E941C179093AA04809362
:1027A000A9041092110280911202882351F18091A4
:1027B0000701882331F10E94ED1F80E590E09F938F
:1027C0008F9381E291E09F938F9321E030E03F93DC
:1027D0002F9380E291E09F938F933F932F9386E610
:1027E00092E09F938F9383E08F9381E08F938CE4AB
:1027F0008F930E94560D109212028DB79EB70F96BE
:102800008DBF80910F028823D1F08091070188232A
:10281000B1F08AE090E09F938F9380ED93E09F93D7
:102820008F9381E08F938F9386E58F930E94560D4F
:1028300010920F022DB73EB7295F3F4F2DBF8091F9
:1028400013028823D9F0809107018823B9F08BE027
:1028500090E09F938F9382EF93E09F938F9381E01B
:102860008F93809104018F9387E48F930E94560D7C
:10287000109213028DB79EB707968DBF8091FD030E
:102880009091FE030E942517882309F461C080916E
:102890000701882309F45CC08091C8059927880F37
:1028A000991F880F991F7C010027F7FC0095102FB6
:1028B0008091050390910603A0910703B09108034E
:1028C000BC01CD01A80197010E9430773093EB0342
:1028D0002093EA038091FD029091FE02A091FF02F5
:1028E000B0910003BC01CD01A80197010E9430778F
:1028F0003093ED032093EC03809192028093EE03DA
:10290000809191028093EF0388E090E09F938F93F2
:102910008AEE93E09F938F9381E08F9383E08F9370
:102920008BE68F930E94560D8091F0032DB73EB732
:10293000295F3F4F2DBF853018F086E08093F0036C
:1029400083E690E00E941C179093FE038093FD03A2
:102950008091010290910202892B41F08091CE0377
:102960009091CF030E942517882321F480911002B3
:10297000882339F180910701882319F10E94DC3402
:1029800082E490E09F938F9385E595E09F938F93EA
:1029900081E08F938F9384E48F930E94560D109261
:1029A00010028DB79EB707968DBF8091010290915E
:1029B0000202009731F00E941C179093CF0380937E
:1029C000CE038091FF0190910002892B09F4B8C0D9
:1029D0008091CC039091CD030E942517882309F4A0
:1029E000AFC080910701882309F4AAC08091C8056F
:1029F0009927880F991F880F991F7C010027F7FCE2
:102A00000095102F8091050390910603A091070374
:102A1000B0910803BC01CD01A80197010E94307755
:102A20003093BF032093BE038091FD029091FE027C
:102A3000A091FF02B0910003BC01CD01A801970154
:102A40000E9430773093C1032093C00320919D07EB
:102A500030919E0740919F075091A007DA01C9016C
:102A600063E0880F991FAA1FBB1F6A95D1F7820FD9
:102A7000931FA41FB51F820F931FA41FB51F209182
:102A80009601309197014091980150919901BC01B4
:102A9000CD010E9430773093C3032093C20380910D
:102AA000CD029091CE02A091CF02B091D00239E038
:102AB000B595A795979587953A95D1F78093C403D7
:102AC0008091C9029091CA02A091CB02B091CC0230
:102AD00029E0B595A795979587952A95D1F7809385
:102AE000C5038091D5029091D602A091D702B091F2
:102AF000D80209E0B595A795979587950A95D1F7DE
:102B00008093C6038EE090E09F938F938EEB93E0CB
:102B10009F938F9381E08F938F9383E48F930E9491
:102B2000560D8091FF01909100020E941C17909316
:102B3000CD038093CC032DB73EB7295F3F4F2DBF08
:102B4000809106018F3F71F1992714E0880F991F3A
:102B50001A95E1F78E5E9D4F40E150E0BC01CE0139
:102B600001960E940F7580E190E09F938F93CE01B4
:102B700001969F938F9381E090E09F938F9386E0DF
:102B800091E09F938F9382E08F9381E08F9381E414
:102B90008F930E94560D8FEF809306018DB79EB7DD
:102BA0000B968DBF809197058823D1F08091070106
:102BB0008823B1F081E090E09F938F9387E995E0BF
:102BC0009F938F9381E08F938F9382E48F930E94E2
:102BD000560D109297052DB73EB7295F3F4F2DBF79
:102BE00080910E028823C9F0809107018823A9F003
:102BF00084E390E09F938F9387ED96E09F938F936C
:102C000081E08F938F9380E58F930E94560D1092F1
:102C10000E028DB79EB707968DBFE6E0C05F0C949D
:102C200073771F920F920FB60F9211242F933F9339
:102C30005F936F937F938F939F93AF93BF93EF9324
:102C4000FF9320E080912302882329F080912302C2
:102C500081508093230280919F03882319F0815033
:102C600080939F0380912B02815080932B028F3F92
:102C700009F05BC089E080932B028091290290913A
:102C80002A02019690932A028093290280910F01D3
:102C90008F5F817080930F01882319F481E0809306
:102CA0002802349903C081E080932C028091240291
:102CB00090912502892B21F1809124029091250287
:102CC0000B9750F080912402909125020A979093DF
:102CD00025028093240204C010922502109224023F
:102CE00080912402909125022091080130910901E0
:102CF00082239323892B11F021E008C020E006C035
:102D00008FEF9FEF9093090180930801809102015A
:102D1000222331F08A3011F45A9A07C0479A05C02D
:102D20008A3011F45A9801C0479880912C02882368
:102D300009F472C02091E901222309F06DC080914D
:102D4000B90583FF69C086B19927FC01E071F07075
:102D500084FF14C0809126029091270201969093DF
:102D60002702809326028091260290912702895E95
:102D7000934008F451C020932C024EC0809126024B
:102D800090912702892B09F443C0809126029091EB
:102D900027028A569140E0F5809126029091270201
:102DA00069E270E00E94E776809126029091270206
:102DB000860F971F90932702809326028091260208
:102DC000909127020B9750F0809126029091270254
:102DD0000A979093C4028093C30204C0F093C40284
:102DE000E093C3028091C3029091C4022091C1027A
:102DF0003091C202821B930B845E9D4F68E671E0A6
:102E00000E94FB76845B90409093C0028093BF0247
:102E10001092270210922602FF91EF91BF91AF917D
:102E20009F918F917F916F915F913F912F910F9023
:102E30000FBE0F901F9018952091290230912A0201
:102E4000280F391FC9010196089520912902309158
:102E50002A02821B930B892F992786958074907084
:102E60000895CF93DF930E941C17EC01CE010E94BE
:102E700025178823D9F3DF91CF910895CF93DF935E
:102E80000E941C17EC0109C080911001882329F0D1
:102E9000909310018FEC80937A00CE010E94251749
:102EA000982F882389F3DF91CF9108959FB7F894E5
:102EB0005F983E9A469A8091B0008F708093B000E0
:102EC0008091B00083608093B0008091B1008B73DB
:102ED0008093B1008091B1008B608093B10010921B
:102EE000B2008FEF8093B3008091B0008068809330
:102EF000B000809170008A7F809370008091700094
:102F00008260809370009FBF08958AE090E00E94E5
:102F10001C17909332028093310282E085BD83EAD0
:102F200084BD17BC84EB88BD86E086BD80916E00B1
:102F3000816080936E000895A0E0B0E0E2EAF7E1DE
:102F40000C9456778091E305E82FFF27E456FE4F57
:102F50009681D08080910E01A92FBB27A7FDB09547
:102F6000CB2FDB2F813009F0C9C0209105033091B0
:102F700006034091070350910803BD01CE010E9452
:102F8000BC7697FF04C061587F4F8F4F9F4F7B01E6
:102F90008C0167E015950795F794E7946A95D1F74A
:102FA0008D2D992787FD9095A92FB92F2091FD028E
:102FB0003091FE024091FF0250910003BC01CD010F
:102FC0000E94BC7697FF04C061587F4F8F4F9F4F80
:102FD00057E095958795779567955A95D1F7F801BC
:102FE000E701C61BD70BE80BF90B8091DA0599278F
:102FF000AA27BB27BC01CD019E01AF010E94BC7670
:1030000097FF04C061507E4F8F4F9F4FFC01EB0133
:1030100049E0F595E795D795C7954A95D1F7809101
:10302000C101992736E0880F991F3A95E1F7409141
:103030000C0150910D012091E2053327841B950B63
:10304000B9010E94FB7680910C0190910D01860FD1
:10305000971F90930D0180930C0180910C0190912A
:103060000D0197FD0F9624E0959587952A95E1F738
:1030700090931F0280931E028091110680FF07C06B
:1030800080911E0290911F028C0F9D1F06C080919F
:103090001E0290911F028C1B9D0B90931F02809328
:1030A0001E028091DB05282F3327220F331F220FAA
:1030B000331F80911E0290911F02821793077CF0AC
:1030C0008091DC05282F3327220F331F220F331F57
:1030D00080911E0290911F022817390724F4309323
:1030E0001F0220931E0280910201843108F4C2C0A5
:1030F00080910E018F5F80930E01BEC02091FD0272
:103100003091FE024091FF0250910003BD01CE01BB
:103110000E94BC7697FF04C061587F4F8F4F9F4F2E
:103120007B018C01C7E015950795F794E794CA9544
:10313000D1F78D2D992787FD9095A92FB92F209133
:103140000503309106034091070350910803BC0129
:10315000CD010E94BC769B01AC0197FF04C02158B1
:103160003F4F4F4F5F4FB7E05595479537952795A0
:10317000BA95D1F72E0D3F1D401F511F8091DE05DE
:103180009927AA27BB27BC01CD010E94BC7697FFD7
:1031900004C061507E4F8F4F9F4FFC01EB01A9E0AF
:1031A000F595E795D795C795AA95D1F78091C00178
:1031B000992776E0880F991F7A95E1F740910A01E7
:1031C00050910B012091E2053327841B950BB90127
:1031D0000E94FB7680910A0190910B01860F971F48
:1031E00090930B0180930A0180910A0190910B0149
:1031F00097FD0F9664E0959587956A95E1F7909312
:103200001D0280931C028091110681FF07C08091EE
:103210001C0290911D028C0F9D1F06C080911C0204
:1032200090911D028C1B9D0B90931D0280931C029C
:103230008091DF05282F3327220F331F220F331FE2
:1032400080911C0290911D02821793077CF080915F
:10325000E005282F3327220F331F220F331F8091C1
:103260001C0290911D022817390724F430931D0287
:1032700020931C0210920E01E7E0CDB7DEB70C944C
:1032800072771F920F920FB60F9211242F933F93D4
:103290004F935F938F939F93EF93FF9380910201DE
:1032A00090912D02843108F04CC0992309F01CC183
:1032B0008091B00086FF24C08091B0008F7B809306
:1032C000B00080911E0290911F0287559E4F9093EF
:1032D00021028093200225E08D3D920718F08CEDAD
:1032E00095E005C08757914030F487E791E09093CF
:1032F0002102809320028091200290912102BAC085
:103300008091B00080648093B0008091E105282F07
:1033100033278DED96E0289FA001299F500D389FFF
:10332000500D1124CA0120912E0230912F02821BD0
:10333000930B909321028093200281E080930E01F1
:10334000D0C0992309F0D0C08091B00086FF97C00B
:103350008091B0008F7B8093B000E0913002EE232B
:10336000F1F48091E105282F33278DED96E0289F19
:10337000A001299F500D389F500D1124CA012091A2
:103380002E0230912F02821B930B90932102809387
:10339000200210922F0210922E02469AA2C089EAB1
:1033A00093E090932102809320028E2F99278330FF
:1033B0009105D9F08430910534F48130910549F0BC
:1033C000029761F020C08430910591F0059799F043
:1033D0001AC080911E0290911F0204C080911C02AD
:1033E00090911D0287559E4F1DC080916B0705C0AF
:1033F0008091450702C0809173079927880F991F14
:10340000880F991FEFCFFF27EE0FFF1FE952F94FEB
:1034100020813181220F331F80912002909121025F
:10342000820F931F909321028093200280912002AB
:103430009091210255E08D3D950718F08CED95E0B7
:1034400005C08757914030F487E791E090932102BF
:103450008093200220912002309121022C5B304089
:10346000309321022093200280912E0290912F020E
:10347000820F931F90932F0280932E0232C080916F
:10348000B00080648093B0008CEB90E090932102B8
:103490008093200280912E0290912F0284549F4F9E
:1034A00090932F0280932E0280912202882321F094
:1034B0008091B102833320F480912202823011F492
:1034C000469801C0469A809130028F5F8093300207
:1034D0009091E105981728F481E080930E011092F5
:1034E000300281E080932D02209120023091210250
:1034F00041E02F37340730F08FEF8093B3002F5F18
:1035000030400FC02F3F3105C9F0C0F0A9014F5F17
:1035100050404F37510550F480E88093B300205855
:103520003040309321022093200212C08FEF80930D
:10353000B30050932102409320020AC080912002E0
:103540008093B300109221021092200210922D025B
:10355000FF91EF919F918F915F914F913F912F91AB
:103560000F900FBE0F901F90189510927C008FEC5B
:1035700080937A000895CF93DF931092370283E00F
:1035800090E00E949A2CC82FDD27C531D10508F0A4
:103590002A97C7BD84E690E00E943E1780911401EF
:1035A000909115018052934010F4C0E0D0E0CA3FE2
:1035B000D105F8F4C7BD82E390E00E943E1787E290
:1035C00094E09F938F9386EF92E19F938F93E09186
:1035D000BC03F091BD0309958091140190911501F0
:1035E0000F900F900F900F908052934010F0219603
:1035F000DECFC093A8056C2F83E090E00E94A22C40
:103600008091B90580FF0AC08091A8058A508B3E41
:1036100028F08091D50380648093D503C7BD8CE2E8
:1036200091E00E943E17DF91CF910895EF92FF92B3
:103630001F93CF9310E080ED97E00E941C177C0150
:10364000CCE8133019F4CB3008F0C9E010E08091D9
:103650004702909148028C5F934024F480911301BB
:1036600081500AC08091470290914802875094404F
:1036700034F0809113018F5F8093130101C011E03A
:1036800080914502909146028C5F934024F4809192
:10369000120181500AC080914502909146028750E4
:1036A000944034F0809112018F5F8093120101C029
:1036B0001F5F80914302909144028C5F934024F4F9
:1036C0008091110181500AC080914302909144027F
:1036D00087509440C4F0809111018F5F8093110155
:1036E00013C089E294E09F938F9386EF92E19F93BA
:1036F0008F93E091BC03F091BD0309950F900F905B
:103700000F900F905FC01F5F82E1809372028091E3
:103710006C028E7F80936C0285EA8093BC0080915E
:1037200013018A3040F48091D50381608093D503E2
:103730008AE08093130180911301863F40F08091CD
:10374000D50381608093D50385EF80931301809129
:1037500012018A3040F48091D50382608093D503B2
:103760008AE08093120180911201863F40F080919F
:10377000D50382608093D50385EF809312018091F9
:1037800011018A3040F48091D50384608093D50381
:103790008AE08093110180911101863F40F0809171
:1037A000D50384608093D50385EF809311018091C8
:1037B0007202882339F0C7010E942517882309F077
:1037C00090CFF5CF109210018FEC80937A0080910A
:1037D00010018823E1F3CA3020F48AE090E00E94CF
:1037E0003E17C15009F02DCF86E490E00E943E17AD
:1037F000CF911F91FF90EF9008951F920F920FB6F7
:103800000F921124AF92BF92CF92DF92EF92FF926C
:103810000F931F932F933F934F935F936F937F93D8
:103820008F939F93AF93BF93EF93FF938091500239
:10383000282F3327442755278F5F80935002F901A3
:103840002231310508F08CC3E25CFF4F0C94827783
:10385000809178009091790046C080917800909195
:1038600079002CC180917800909179009093530257
:103870008093520257C180910E0390910F032091C3
:10388000780030917900821B930B90939905809377
:103890009805809198059091990590935D02809389
:1038A0005C025EC1809178009091790020911003B4
:1038B00030911103821B930B9093A7058093A6056B
:1038C0008091A6059091A70590935F0280935E0278
:1038D00049C380915602909157022091780030910F
:1038E0007900820F931F909357028093560281E0D4
:1038F0003AC3809154029091550220917800309102
:103900007900820F931F909355028093540284E0B4
:103910002AC380911E0190911F019C01220F331F29
:10392000280F391F809178009091790063E070E052
:103930000E94E776260F371F3695279536952795EF
:1039400030931F0120931E0185E00DC38091780004
:103950009091790040910A0350910B03841B950BC1
:1039600090933E0280933D0280913D0290913E02F1
:10397000029704F122E04E3E520784F42091510256
:103980002B5F20935102255080917E0290917F02FF
:10399000845F914018F4215F20935102809151027D
:1039A000853684F14F5F5F4F50930B0340930A03BA
:1039B000845626C080913D0290913E028F5F9F4FBA
:1039C0000CF532E047325307ECF0209151022550BC
:1039D000209351022B5F80917E0290917F02845F41
:1039E000914018F42F5020935102809151028C394C
:1039F0004CF44150504050930B0340930A038C59B0
:103A00008093510281E080933C02809178009091F4
:103A1000790090939F0580939E0580913D0290913F
:103A20003E029C01442737FD4095542F8091C502EA
:103A30009091C602A091C702B091C802820F931F55
:103A4000A41FB51F8093C5029093C602A093C7021E
:103A5000B093C8022091C5023091C6024091C702BE
:103A60005091C80257FF04C021503C4F4F4F5F4F49
:103A70000AE055954795379527950A95D1F7809196
:103A8000C5029091C602A091C702B091C802821BE4
:103A9000930BA40BB50B8093C5029093C602A09321
:103AA000C702B093C8022EC1809154029091550272
:103AB0002091780030917900820F931F90935502E6
:103AC0008093540210924F0250C2809102018A30BA
:103AD00071F4809178009091790020915202309198
:103AE0005302820F931F01969695879517C04091B8
:103AF000520250915302843158F020917800309155
:103B00007900240F351F8FEF97E0821B930B06C0BF
:103B10008091780090917900840F951F90934402D2
:103B20008093430286E01FC280910E0390910F03A1
:103B30002091780030917900821B930B9093990526
:103B400080939805809198059091990520915C0249
:103B500030915D02820F931F909342028093410245
:103B600087E001C280917800909179002091100344
:103B700030911103821B930B9093A7058093A605A8
:103B80008091A6059091A70520915E0230915F0279
:103B9000820F931F9093400280933F02E3C12091D4
:103BA0005602309157028091780090917900280F49
:103BB000391F3093570220935602809102018A30B8
:103BC00019F4220F331F04C0220F331F220F331F9B
:103BD000309357022093560220915602309157029B
:103BE000C90137FD0796A3E095958795AA95E1F75A
:103BF0009093480280934702809158029091590215
:103C0000820F931F97FD0196959587959093590282
:103C10008093580220911A0330911B03821B930B4F
:103C200090931D0180931C0120914D0230914E0212
:103C300080911C0190911D01280F391F37FF02C090
:103C40002F5F3F4F3595279530934E0220934D02BD
:103C50004ECE20915402309155028091780090917F
:103C60007900280F391F3093550220935402809118
:103C700002018A3019F4220F331F04C0220F331FB0
:103C8000220F331F30935502209354022091540287
:103C900030915502C90137FD079663E095958795E8
:103CA0006A95E1F7909346028093450280915A020B
:103CB00090915B02820F931F97FD019695958795D2
:103CC00090935B0280935A0220911803309119035C
:103CD000821B930B90931B0180931A0120914B023E
:103CE00030914C0280911A0190911B01280F391FCD
:103CF00037FF02C02F5F3F4F3595279530934C0219
:103D000020934B0283E02FC11092500281E08093F8
:103D10001001809133029091340201969093340205
:103D200080933302809178009091790090931501EF
:103D3000809314018091140190911501AA27BB274B
:103D4000A0906002B0906102C0906202D0906302C5
:103D5000A80EB91ECA1EDB1EA0926002B0926102BC
:103D6000C0926202D0926302809164028F5F80935E
:103D70006402823108F4F6C0809116019091170117
:103D8000A0911801B09119017C018D0123E0EE0C86
:103D9000FF1C001F111F2A95D1F7E81AF90A0A0B18
:103DA0001B0BEA0CFB1C0C1D1D1D80913702992773
:103DB00087FD9095A92FB92FBC01CD0126EC34E2E7
:103DC00040E050E00E94BC76DC01CB01E81AF90A21
:103DD0000A0B1B0BD801C7010496A11DB11DB7FF2B
:103DE00005C0D801C7010B96A11DB11D13E0B59503
:103DF000A795979587951A95D1F78093160190937B
:103E00001701A0931801B09319018091A00590911A
:103E1000A1057C010027F7FC0095102F8091160169
:103E200090911701A0911801B0911901E81AF90AAF
:103E30000A0B1B0BE092A302F092A4020093A502CE
:103E40001093A602209138023091390240913A0233
:103E500050913B0257FF04C0215F3F4F4F4F5F4FD0
:103E6000F4E05595479537952795FA95D1F78091C8
:103E7000380290913902A0913A02B0913B02821B24
:103E8000930BA40BB50B8093380290933902A09347
:103E90003A02B0933B028091380290913902A0918E
:103EA0003A02B0913B028E0D9F1DA01FB11F80935F
:103EB000380290933902A0933A02B0933B0280916A
:103EC000350290913602AC01E5E0440F551FEA95AA
:103ED000E1F7481B590B8091380290913902A0916B
:103EE0003A02B0913B02B7FF03C00F96A11DB11D6E
:103EF00074E0B595A795979587957A95D1F7209118
:103F0000A3023091A402281B390B63E0220F331F58
:103F10006A95E1F7240F351F37FF02C0215E3F4F3E
:103F200045E0359527954A95E1F730933602209381
:103F30003502D601C501D7FE03C00196A11DB11DF2
:103F4000B595A795979587958093600290936102A8
:103F5000A0936202B093630289E08093640202C07E
:103F60001092500282E080934F0280914F02809322
:103F70007C0080915002882319F08FEC80937A00A6
:103F8000FF91EF91BF91AF919F918F917F916F9131
:103F90005F914F913F912F911F910F91FF90EF9063
:103FA000DF90CF90BF90AF900F900FBE0F901F90FB
:103FB000189590E2E1E2F1E08FE49193815087FF60
:103FC000FCCF089590916702E1E2F1E0E90FF11D65
:103FD00080839F5F909367020895EF92FF920F9303
:103FE0001F93CF93DF932091650220FF0AC0809139
:103FF0006602882311F0815002C0809120018093D5
:10400000660221FF0CC090916602809120019817F2
:1040100019F41092660203C09F5F90936602822F8C
:10402000992780FF04C081FF02C0109266020E949F
:10403000D91F80916602282F332752EEE52E5FE1CB
:10404000F52EC091BC03D091BD038A3098F481E174
:10405000809367023F932F9380E694E09F938F9322
:10406000FF92EF92FE0109952DB73EB72A5F3F4FB1
:104070002DBF11C080E1809367023F932F9385E6A7
:1040800094E09F938F93FF92EF92FE0109958DB775
:104090009EB706968DBF20916602822F9927AA2788
:1040A000BB27FC01429710F00C949E2AE05BFF4F67
:1040B00042EEE42E4FE1F42EC091BC03D091BD033B
:1040C0000C948277109267028AE694E09F938F9314
:1040D00002EE1FE1FF92EF92FE01099584E18093C9
:1040E00067020F900F900F900F9081E690E09F93E2
:1040F0008F9382E590E09F938F931F921F92809100
:1041000002016AE00E94DB76892F99279F938F93A3
:10411000809102010E94DB7699279F938F938AE713
:1041200094E09F938F93FF92EF92E091BC03F09104
:10413000BD03099588E2809367022DB73EB7225FE1
:104140003F4F2DBF81E296E09F938F930E94052EF3
:1041500099279F938F938FE894E09F938F93FF927B
:10416000EF92E091BC03F091BD0309958DB79EB726
:1041700008968DBF9091D503992351F08CE38093DD
:104180006702892F99279F938F938DE994E081C6C9
:1041900090916D02992371F08CE380936702892FCF
:1041A00099279F938F9384EB94E09F938F931F9312
:1041B0000F9391C08091D60384FF07C08CE3809356
:1041C000670289EC94E00C94302A809192019091DE
:1041D0009301069710F00C94A72A8CE38093670252
:1041E00086ED94E00C94302A8091B90532EEE32EEE
:1041F0003FE1F32EC091BC03D091BD0380FF74C09A
:10420000109267028091A3029091A402A091A5024E
:10421000B091A602BC01CD0125E030E040E050E0C5
:104220000E9430773F932F9383EE94E09F938F9378
:10423000FF92EF92FE01099584E1809367022DB70A
:104240003EB72A5F3F4F2DBF80919F029091A00201
:10425000A091A102B091A202BC01CD0125E030E005
:1042600040E050E00E9430773F932F9380EF94E03E
:104270009F938F93FF92EF92E091BC03F091BD0367
:10428000099588E2809367028DB79EB706968DBF29
:1042900080911401909115019F938F938DEF94E07D
:1042A0009F938F93FF92EF92E091BC03F091BD0337
:1042B00009958CE3809367022DB73EB72A5F3F4F85
:1042C0002DBF87B599279F938F938AE095E09F93A1
:1042D0008F93FF92EF92E091BC03F091BD0309959B
:1042E0008DB79EB7069633C71092670287E195E0B7
:1042F0009F938F93FF92EF92FE01099584E1809343
:1043000067020F900F900F900F9086E295E09F93B9
:104310008F93FF92EF92E091BC03F091BD0309955A
:1043200088E2809367020F900F900F900F908FE2BA
:1043300095E09F938F93FF92EF92E091BC03F091F1
:10434000BD0309958CE3809367020F900F900F9047
:104350000F908EE395E09F938F93FF92EF920C94D2
:10436000342A1092670287E495E09F938F9302EEC0
:104370001FE1FF92EF92FE01099584E180936702AD
:104380000F900F900F900F9080910503909106036E
:10439000A0910703B0910803B7FF04C081509C4F60
:1043A000AF4FBF4F2AE0B595A795979587952A956A
:1043B000D1F7BF93AF939F938F9384E595E09F933D
:1043C0008F931F930F93E091BC03F091BD03099568
:1043D00088E2809367022DB73EB7285F3F4F2DBF1D
:1043E0008091FD029091FE02A091FF02B091000326
:1043F000B7FF04C081509C4FAF4FBF4FCAE0B59587
:10440000A79597958795CA95D1F7BF93AF939F933B
:104410008F9383E695E09F938F931F930F93E09183
:10442000BC03F091BD0309958CE3809367028DB7BF
:104430009EB708968DBF8091C3029091C4029F934E
:104440008F9382E795E09F938F931F930F93E09153
:10445000BC03F091BD0309952DB73EB72A5F3F4FCE
:1044600011C7109267028091DB069091DC069F9342
:104470008F938091D9069091DA069F938F9381E86C
:1044800095E09F938F93FF92EF92FE01099584E14F
:10449000809367028DB79EB708968DBF8091DF0627
:1044A0009091E0069F938F938091DD069091DE06B8
:1044B0009F938F9381E995E09F938F93FF92EF9263
:1044C000E091BC03F091BD03099588E280936702F7
:1044D0002DB73EB7285F3F4F2DBF8091E3069091E7
:1044E000E4069F938F938091E1069091E2069F935B
:1044F0008F9381EA95E09F938F93FF92EF92E091E3
:10450000BC03F091BD0309958CE3809367028DB7DE
:104510009EB708968DBF8091E7069091E8069F931D
:104520008F938091E5069091E6069F938F9381EBA0
:1045300095E0A2C0109267028091AE05E82FFF2798
:10454000EE0FFF1FE952F94F808191819F938F9366
:104550008091AD05E82FFF27EE0FFF1FE952F94FBD
:10456000808191819F938F9381EC95E09F938F93AE
:10457000FF92EF92FE01099584E1809367028DB767
:104580009EB708968DBF8091B005E82FFF27EE0FEC
:10459000FF1FE952F94F808191819F938F93809102
:1045A000AF05E82FFF27EE0FFF1FE952F94F80817B
:1045B000918188589F4F9F938F9381ED95E09F93B2
:1045C0008F93FF92EF92E091BC03F091BD030995A8
:1045D00088E2809367022DB73EB7285F3F4F2DBF1B
:1045E0008091B205E82FFF27EE0FFF1FE952F94F28
:1045F0008081918182599F4F9F938F938091B105C4
:10460000E82FFF27EE0FFF1FE952F94F80819181BC
:1046100082599F4F9F938F9381EE95E09F938F9345
:10462000FF92EF92E091BC03F091BD0309958CE3FA
:10463000809367028DB79EB708968DBF8091B405B1
:10464000E82FFF27EE0FFF1FE952F94F808191817C
:1046500082599F4F9F938F938091B305E82FFF2737
:10466000EE0FFF1FE952F94F8081918182599F4FD0
:104670009F938F9381EF95E09F938F93FF92EF929B
:10468000E091BC03F091BD0309952DB73EB7285FBB
:104690003F4FF8C51092670281E096E09F938F9399
:1046A00002EE1FE1FF92EF92FE0109958091020157
:1046B0000F900F900F900F908A3009F09DC084E109
:1046C0008093670280911A0390911B039C0197FFCE
:1046D00002C0295F3F4F287F821B930B9F938F93CC
:1046E00080911A0390911B0397FD0796A3E095957F
:1046F0008795AA95E1F79F938F9320911A033091A4
:104700001B0337FF02C0295F3F4FF3E03595279524
:10471000FA95E1F78091470290914802821B930B32
:104720009F938F938FE096E09F938F931F930F93A8
:10473000E091BC03F091BD03099588E28093670284
:104740008DB79EB70A968DBF80911803909119037B
:104750009C0197FF02C0295F3F4F287F821B930B6C
:104760009F938F93809118039091190397FD07965B
:10477000E3E095958795EA95E1F79F938F932091D4
:1047800018033091190337FF02C0295F3F4F73E0D0
:10479000359527957A95E1F78091450290914602EB
:1047A000821B930B9F938F9380E296E09F938F934E
:1047B0001F930F93E091BC03F091BD0309958CE327
:1047C000809367022DB73EB7265F3F4F2DBF809184
:1047D0001603909117039F938F93809116039091E6
:1047E00017032091430230914402821B930B9F9345
:1047F0008F9381E396E0A7C38B3019F0843108F4DE
:10480000ADC084E18093670280911A0390911B03ED
:104810009C0197FF02C0215F3F4F207F821B930BBB
:1048200097FD0196959587959F938F9380911A0395
:1048300090911B0397FD0F9654E0959587955A9597
:10484000E1F79F938F9320911A0330911B0337FF59
:1048500002C0295F3F4F43E0359527954A95E1F720
:104860008091470290914802821B930B9F938F93F4
:104870008FE396E09F938F931F930F93E091BC0378
:10488000F091BD03099588E2809367022DB73EB78A
:10489000265F3F4F2DBF80911803909119039C0113
:1048A00097FF02C0215F3F4F207F821B930B97FD34
:1048B0000196959587959F938F938091180390917A
:1048C000190397FD0F96C4E095958795CA95E1F772
:1048D0009F938F93209118033091190337FF02C0E3
:1048E000295F3F4FB3E035952795BA95E1F7809161
:1048F000450290914602821B930B9F938F9381E513
:1049000096E09F938F931F930F93E091BC03F091D8
:10491000BD0309958CE3809367028DB79EB70A9615
:104920008DBF809116039091170397FD0196959581
:1049300087959F938F9380911603909117032091F1
:10494000430230914402821B930B9F938F9383E623
:1049500096E09F938F931F930F9392CE8D3009F023
:10496000F6C584E1809367028091130199279F9394
:104970008F9380911A0390911B0397FD0F96F4E09B
:1049800095958795FA95E1F79F938F9320911A0358
:1049900030911B0337FF02C0295F3F4FE3E035959D
:1049A0002795EA95E1F78091470290914802821B92
:1049B000930B9F938F9382E796E09F938F931F9320
:1049C0000F93E091BC03F091BD03099588E28093B9
:1049D00067028DB79EB70A968DBF80911201992705
:1049E0009F938F93809118039091190397FD0F96D1
:1049F00074E0959587957A95E1F79F938F93209131
:104A000018033091190337FF02C0295F3F4F63E05D
:104A1000359527956A95E1F7809145029091460278
:104A2000821B930B9F938F9386E896E09F938F93BF
:104A30001F930F93E091BC03F091BD0309958CE3A4
:104A4000809367022DB73EB7265F3F4F2DBF809101
:104A5000110199279F938F938091160390911703CB
:104A600097FD0196959587959F938F938091160357
:104A7000909117032091430230914402821B930BC3
:104A80009F938F938AE996E09F938F931F930F9341
:104A9000E091BC03F091BD0309958DB79EB70A96CE
:104AA00056C3109267028EEA96E09F938F93FF920F
:104AB000EF92FE01099584E1809367020F900F90B9
:104AC0000F900F9080911003909111039F938F93FB
:104AD00080913F02909140029F938F938BEB96E0E1
:104AE0009F938F93FF92EF92E091BC03F091BD03EF
:104AF000099588E2809367022DB73EB7285F3F4F44
:104B00002DBF80910E0390910F039F938F938091FF
:104B10004102909142029F938F938AEC96E09F937B
:104B20008F93FF92EF92E091BC03F091BD03099542
:104B30008CE3809367028DB79EB708968DBF8091F6
:104B40000A0390910B039F938F9380913D02909164
:104B50003E029F938F9389ED96E08ECD109267026F
:104B600080911E0190911F016AE070E00E94FB7627
:104B70009F938F9380911E0190911F016AE070E0D6
:104B80000E94FB767F936F9388EE96E09F938F93BE
:104B9000FF92EF92FE01099584E1809367028DB741
:104BA0009EB708968DBF80911408909115086AE011
:104BB00070E00E94E7769F938F9380911408909104
:104BC00015086AE070E00E94E7767F936F938CEFA0
:104BD00096E09F938F93FF92EF92E091BC03F09148
:104BE000BD03099588E2809367022DB73EB7285F21
:104BF0003F4F2DBF80911608909117089F938F9378
:104C000080E197E09F938F93FF92EF92E091BC0336
:104C1000F091BD0309958CE3809367028DB79EB731
:104C200006968DBF80911808909119089F938F93D5
:104C300080E297E02EC11092670282E397E09F9393
:104C40008F93FF92EF92FE01099584E180936702B2
:104C50000F900F900F900F908091D7069091D806EB
:104C60009F938F938BE397E09F938F93FF92EF92A5
:104C7000E091BC03F091BD03099588E2809367023F
:104C80008DB79EB706968DBF8091B10299279F93ED
:104C90008F938BE497E09F938F93FF92EF92E09135
:104CA000BC03F091BD0309958CE3809367022DB797
:104CB0003EB72A5F3F4F2DBF8091D60699270197B7
:104CC0009F938F938BE597E002CB109267028BE660
:104CD00097E09F938F93FF92EF92FE01099584E1F5
:104CE000809367020F900F900F900F908091BF02FA
:104CF0009091C0029F938F9383E797E09F938F9348
:104D0000FF92EF92E091BC03F091BD03099588E218
:104D1000809367022DB73EB72A5F3F4F2DBF80912A
:104D2000C3029091C4029F938F9381E897E09F9371
:104D30008F93FF92EF92E091BC03F091BD03099530
:104D40008CE3809367028DB79EB706968DBF8091E6
:104D5000C1029091C2029F938F938FE897E099C010
:104D6000109267028091B20299279F938F938DE9E9
:104D700097E09F938F93FF92EF92FE01099584E154
:104D8000809367028DB79EB706968DBF8091B30260
:104D900099279F938F9389EA97E09F938F93FF9230
:104DA000EF92E091BC03F091BD03099588E28093F6
:104DB00067022DB73EB72A5F3F4F2DBF8091B402E7
:104DC00099279F938F9385EB97E09F938F93FF9203
:104DD000EF92E091BC03F091BD0309958CE38093C1
:104DE00067028DB79EB706968DBF8091B502992751
:104DF0009F938F9381EC97E04CC010926702809153
:104E0000B60299279F938F938DEC97E09F938F9392
:104E1000FF92EF92FE01099584E1809367028DB7BE
:104E20009EB706968DBF8091B70299279F938F9367
:104E300089ED97E09F938F93FF92EF92E091BC03EF
:104E4000F091BD03099588E2809367022DB73EB7C4
:104E50002A5F3F4F2DBF8091B80299279F938F9370
:104E600085EE97E09F938F93FF92EF92E091BC03C2
:104E7000F091BD0309958CE3809367028DB79EB7CF
:104E800006968DBF8091B90299279F938F9381EFEA
:104E900097E09F938F93FF92EF92D9CA1092670287
:104EA0008DEF97E09F938F9302EE1FE1FF92EF92B9
:104EB000FE01099584E1809367020F900F900F9097
:104EC0000F908091C10199279F938F9385E098E07F
:104ED0009F938F93FF92EF92E091BC03F091BD03FB
:104EE000099588E2809367028DB79EB706968DBFBD
:104EF00080911E0290911F0297FD039695958795CC
:104F0000959587959F938F9383E198E09F938F93D7
:104F10001F930F93E091BC03F091BD0309958CE3BF
:104F2000809367022DB73EB72A5F3F4F2DBF809118
:104F3000DC0599279F938F938091DB0599279F9399
:104F40008F9381E298E09F938F931F930F93E0914B
:104F5000BC03F091BD0309958DB79EB70896F7C0C5
:104F6000109267028FE298E09F938F93FF92EF92E7
:104F7000FE01099584E1809367020F900F900F90D6
:104F80000F908091F603992787FD90959F938F93BB
:104F90008091F503992787FD90959F938F938FE3D9
:104FA00098E09F938F93FF92EF92E091BC03F09172
:104FB000BD03099588E2809367022DB73EB7285F4D
:104FC0003F4F2DBF8091F703992787FD90959F93C1
:104FD0008F938091F80399279F938F938FE498E0A4
:104FE0009F938F93FF92EF92E091BC03F091BD03EA
:104FF00009958CE3809367028DB79EB708968DBFA5
:105000008091FC0399279F938F938091F9039927AF
:1050100087FD90959F938F938FE598E02DCB10920D
:1050200067028FE698E09F938F93FF92EF92FE01C5
:10503000099584E1809367020F900F900F900F9075
:105040008091910699278F7790709F938F9380918D
:10505000890699278F7790709F938F93809181060F
:1050600099278F7790709F938F93809179069927D6
:105070008F7790709F938F938FE798E09F938F9394
:10508000FF92EF92E091BC03F091BD03099588E295
:10509000809367028DB79EB70C968DBF8091B10645
:1050A00099278F7790709F938F938091A906992766
:1050B0008F7790709F938F938091A10699278F7718
:1050C00090709F938F938091990699278F77907016
:1050D0009F938F9380E998E09F938F93FF92EF9235
:1050E000E091BC03F091BD0309958CE380936702C6
:1050F0002DB73EB7245F3F4F2DBF8091D106992732
:105100008F7790709F938F938091C90699278F779F
:1051100090709F938F938091C10699278F7790709D
:105120009F938F938091B90699278F7790709F9363
:105130008F9381EA98E09F938F93FF92EF92E09193
:10514000BC03F091BD0309958DB79EB70C968DBF3A
:10515000FEC11092670282EB98E09F938F93FF92BB
:10516000EF92FE01099584E1809367020F900F9002
:105170000F900F9080919506992787FD90959F93AA
:105180008F9380918D06992787FD90959F938F939C
:1051900080918506992787FD90959F938F938091A5
:1051A0007D06992787FD90959F938F9381EC98E0DA
:1051B0009F938F93FF92EF92E091BC03F091BD0318
:1051C000099588E2809367022DB73EB7245F3F4F71
:1051D0002DBF8091B506992787FD90959F938F935A
:1051E0008091AD06992787FD90959F938F9380912D
:1051F000A506992787FD90959F938F9380919D0693
:10520000992787FD90959F938F9382ED98E09F93C8
:105210008F93FF92EF92E091BC03F091BD0309954B
:105220008CE3809367028DB79EB70C968DBF8091FB
:10523000D506992787FD90959F938F938091CD06F2
:10524000992787FD90959F938F938091C506992705
:1052500087FD90959F938F938091BD06992787FD39
:1052600090959F938F9383EE98E09F938F93FF92F7
:10527000EF92E091BC03F091BD0309952DB73EB7C5
:10528000245F3F4F2DBF63C11092670284EF98E007
:105290009F938F9302EE1FE1FF92EF92FE0109951B
:1052A00084E1809367020F900F900F900F90809190
:1052B0009106881F8827881F97E0899FC0011124C5
:1052C0008D969F938F9380918906881F8827881FCA
:1052D00096E0899FC00111248D969F938F938091B2
:1052E0008106881F8827881F95E0899FC0011124A7
:1052F0008D969F938F9380917906881F8827881FAA
:105300009927880F991F880F991F8D969F938F93C8
:1053100083E099E09F938F93FF92EF92E091BC031B
:10532000F091BD03099588E2809367028DB79EB71F
:105330000C968DBF8091B106881F8827881F9BE03F
:10534000899FC00111248D969F938F938091A90608
:10535000881F8827881F9AE0899FC00111248D9695
:105360009F938F938091A106881F8827881F99E0BB
:10537000899FC00111248D969F938F9380919906E8
:10538000881F8827881F992723E0880F991F2A954F
:10539000E1F78D969F938F9387E199E09F938F9389
:1053A000FF92EF92E091BC03F091BD0309958CE36D
:1053B000809367022DB73EB7245F3F4F2DBF80918A
:1053C000B906881F8827881F9CE0899FC001112487
:1053D0008D969F938F938BE299E09F938F93FF928B
:1053E000EF92E091BC03F091BD0309958091C10655
:1053F0002DB73EB72A5F3F4F2DBF87FF12C080E415
:10540000809367028CE399E09F938F93FF92EF92D2
:10541000E091BC03F091BD0309950F900F900F90A0
:105420000F908091C90687FF12C084E480936702C1
:105430008FE399E09F938F931F930F93E091BC03A9
:10544000F091BD0309950F900F900F900F908091F0
:10545000D10687FF7CC088E48093670282E499E0EC
:105460009F938F931F930F93E091BC03F091BD0323
:1054700009950F900F900F900F9069C010926702DE
:1054800085E499E09F938F93FF92EF92FE01099537
:1054900084E1809367020F900F900F900F9080919E
:1054A000F5019091F6019F938F9383E599E09F9387
:1054B0008F93FF92EF92E091BC03F091BD030995A9
:1054C00088E2809367028DB79EB706968DBF809164
:1054D000F7019091F8019F938F9380E699E09F9355
:1054E0008F93FF92EF92E091BC03F091BD03099579
:1054F00089E4809367022DB73EB72A5F3F4F2DBFE7
:105500008DE699E09F938F93FF92EF92E091BC0319
:10551000F091BD030995809165020F900F900F9057
:105520000F9083FF14C01092F8011092F70160E011
:1055300070E08EE090E00E94B32C09C080912001C1
:10554000281719F42150209320011092660210921E
:105550006502E6E0CDB7DEB70C947377F999FECF1C
:1055600092BD81BDF89A80B599270895F999FECF2B
:105570001FBA92BD81BD60BD0FB6F894FA9AF99A30
:105580000FBE08954AEA20E030E02617370740F4BE
:10559000FC018191480F2F5F3F4F26173707C8F353
:1055A000842F99270895EAEA40E050E0461757070C
:1055B00078F49C01F999FECF32BD21BDF89A80B5EF
:1055C000E80F4F5F5F4F2F5F3F4F4617570790F32E
:1055D0008E2F9927089581E08093AF0582E0809314
:1055E000AE0583E08093AD0584E08093B00585E04F
:1055F0008093B10586E08093B20587E08093B30580
:1056000088E08093B40589E08093B5058AE08093B3
:10561000B6058BE08093B7058CE08093B8050895BC
:1056200095E59093AC0580910201843170F08AE099
:105630008093CC051092F0058BE18093C8058EE431
:105640008093ED058093EE050DC083E08093CC053B
:1056500080E28093F0058EE18093C8059093ED057C
:105660009093EE058AE68093B90583E08093120655
:1056700081E08093D30510920F0610920C0668E02B
:105680006093C60586EE8093C70580E88093C905C0
:105690005EE15093BA058FEF8093BC059FE0909335
:1056A000BD055093BB051092BF056093C00580E413
:1056B0008093C1051092C2059093BE051092D50546
:1056C0001092D6051092D7051092D8051092F205C7
:1056D0001092F3051092F4051092F50538E7309317
:1056E000D90548E24093DA0572E070931106909371
:1056F000DB0527EF2093DC0585E08093E1058DE74E
:105700008093E4058093E5058093E6053093DD05FD
:105710009AE59093DE051092DF052093E005409313
:10572000E2051092E3058FE58093F60583EF809301
:10573000F8058AEA8093FA058093FB0584E180935B
:10574000F7058093F90582E38093E7059093E805D8
:105750008093E905109210068EEF8093FC0524E6F5
:105760002093FD059093FE059093FF05909300060E
:105770008BE48093010680930206809303061092C7
:10578000040686E08093050660930606909307065C
:10579000509308062093090620930A0670930B067F
:1057A00010920D0610920E0681E28093D0058DE2D4
:1057B0008093D1059093D2050895CF93DF930E94F3
:1057C000102B8EE08093C30520E12093C4053CE0BC
:1057D0003093C50590E59093CA0586E98093CB0583
:1057E0009093CD058093CE0586E08093CF0580E22F
:1057F0008093D4058AE58093EA059093EB0581E0D8
:105800008093EC052093EF0584E68093F105A3E1F6
:10581000B6E0E1E7F1E0ED01019009923A95E1F798
:1058200063E770E0CD01875690400E94C22A8093C2
:105830001F06DF91CF910895CF93DF930E94102B25
:105840008AE08093C30580E18093C40526E020931D
:10585000C5059AE59093CA0588E78093CB05909398
:10586000CD058093CE052093CF0520E22093D4056B
:105870009093EA0580E58093EB058CE38093EC053B
:105880002093EF058BE48093F105A3E1B6E08CE073
:10589000E8E7F1E0ED01019009928A95E1F763E70D
:1058A00070E0CD01875690400E94C22A80931F0667
:1058B000DF91CF910895CF93DF930E94102B88E062
:1058C0008093C30530E13093C40526E02093C505DD
:1058D00094E69093CA0588E78093CB059093CD0515
:1058E0008093CE052093CF053093D4058AE580932D
:1058F000EA0580E58093EB0596E49093EC0580E261
:105900008093EF059093F105A3E1B6E08CE0E0E829
:10591000F1E0ED01019009928A95E1F763E770E00B
:10592000CD01875690400E94C22A80931F06DF91C6
:10593000CF910895F999FECF92BD81BDF89A80B5B7
:1059400099270895F999FECF1FBA92BD81BD60BD18
:105950000FB6F894FA9AF99A0FBE08956EEA7AE2B1
:105960000E944A75089546EB5AE20E948475089594
:10597000EF92FF920F931F93CF93C82F81508530E2
:1059800008F0C3E084E7C89F8001112480EFE82E6F
:105990008FEFF82EE00EF11E63E770E0C7010E9462
:1059A000D32A682F98012D593F4F8FB39927AC0107
:1059B0004270507081FDF9CF32BD21BDF89A80B59B
:1059C000861711F0CA0121C08FB399279C0122705C
:1059D000307081FDF9CFF2BCE1BCF89A80B5853515
:1059E00011F0C90112C084E7C89FC001112440977B
:1059F0002EEA3AE244E750E0BC018CEA95E00E94CE
:105A000025750E94036681E090E0CF911F910F9170
:105A1000FF90EF900895282F863010F025E003C006
:105A2000882309F421E0F999FECF1FBA82E090E0C3
:105A300092BD81BD20BD0FB6F894FA9AF99A0FBEB7
:105A40000895CF93C82F8091AC05853509F042C0E9
:105A5000C63010F0C5E003C0CC2309F43BC063E7B7
:105A600070E08CEA95E00E94C22A80931F0684E7CA
:105A7000C89FC001112426EB3AE244E750E06CEAEB
:105A800075E040970E94627526EB3AE24CE050E0E8
:105A90006DEA75E080E590E00E9462756CE070E070
:105AA0008DEA95E00E94C22A282FF999FECF1FBAED
:105AB0008CE590E092BD81BD20BD0FB6F894FA9AB6
:105AC000F99A0FBE8C2F0E940B2D0E94036681E075
:105AD00090E002C080E090E0CF9108956DE470E026
:105AE00088EE93E00E94D32A482F8FB399279C0118
:105AF0002270307081FDF9CF85E394E092BD81BDC5
:105B0000F89A80B5841779F48FB399279C01227095
:105B1000307081FDF9CF88EE93E092BD81BDF89A97
:105B200080B5813011F0C90108952EEA3AE24EE4C1
:105B300050E068EE73E080E296E00E94257581E017
:105B400090E00895809120068130A9F46DE470E022
:105B500080E296E00E94C22A80936D0626EB3AE22C
:105B60004EE450E060E276E088EE93E00E946275D9
:105B700081E090E0089580E090E00895CF93DF9376
:105B800081E080932006E0E2F6E08FE0158616863D
:105B90001786108A8150349687FFF8CF80E480936F
:105BA0002D0680932E0610922F0680933006809348
:105BB000310690EC909332061092330680933406AF
:105BC00080933506109236069093370690933806E8
:105BD0008093390610923A0680933B0690933C06D8
:105BE000A1E2B6E087E0EAE8F1E0ED010190099278
:105BF0008A95E1F76DE470E0CD0101970E94C22A19
:105C000080936D06DF91CF910895F999FECF82E0E0
:105C100090E092BD81BDF89A80B5282F863078F04B
:105C200023E0322FF999FECF1FBA82E090E092BDB7
:105C300081BD30BD0FB6F894FA9AF99A0FBE822F43
:105C4000992708951F93CF93C82F162F863010F0F1
:105C5000C5E003C0882309F4C1E08C2F9927823066
:105C6000910541F08330910544F4019731F40E948D
:105C7000DD2B05C00E941C2C02C00E945B2C11234E
:105C8000E1F06CE070E080E590E00E94D32A282FDC
:105C9000F999FECF8CE590E092BD81BDF89A80B570
:105CA000821759F42EEA3AE24CE050E060E570E0E9
:105CB0008DEA95E00E94257502C00E94EB2A8C2F88
:105CC0000E94212DCF911F910895DF92EF92FF92B4
:105CD0000F931F93CF93FF24DF2CEF2C81E090E0F4
:105CE0000E949A2C853539F031E0E32E65E581E09C
:105CF00090E00E94A22C6CE070E080E590E00E94B1
:105D0000D32AC82FF999FECF8CE590E092BD81BDD2
:105D1000F89A80B58C1711F421E0D22EC1E001E091
:105D200010E0EE2029F48C2F0E94B82C8823C1F5B6
:105D300091E0F92E1F930F9385E799E09F938F933E
:105D400086EF92E19F938F93E091BC03F091BD03A6
:105D500009958DB79EB706968DBF0230110549F0A3
:105D6000033011054CF40130110531F40E94DD2B94
:105D700005C00E941C2C02C00E945B2CDD2059F043
:105D80002EEA3AE24CE050E060E570E08DEA95E002
:105D90000E94257502C00E94EB2A8C2F0E94212DA3
:105DA000CF5F0F5F1F4FC63008F4BBCFFF2019F045
:105DB00083E00E940B2D0E94052EC82F0E94B82C54
:105DC0008C2F99279F938F938BE999E09F938F93C3
:105DD00006EF12E11F930F93E091BC03F091BD0316
:105DE00009958DB79EB706968DBFEE2021F40E94CF
:105DF0006E2D882399F484EB99E09F938F931F93E2
:105E00000F93E091BC03F091BD0309950E94BE2D54
:105E10000E94A22D0F900F900F900F901092AB0543
:105E200090E0EDE2F6E0CFE08081349618160CF4B5
:105E30009F5FC150C7FFF8CF9093AB05892F99277B
:105E40009F938F9381E296E09F938F9385ED99E0E6
:105E50009F938F931F930F93E091BC03F091BD0329
:105E600009958DB79EB708968DBF86EF99E09F93F1
:105E70008F931F930F93E091BC03F091BD0309959D
:105E80000F900F900F900F90CF911F910F91FF9057
:105E9000EF90DF900895982F2FB7F8943998389A9B
:105EA00088B1836088B98091B9008C7F8093B900F4
:105EB0008AE28093B80010927202109270021092DF
:105EC0006F02992379F0E6E7F6E08BE01082118209
:105ED000128213821482158216821782815038969C
:105EE00087FFF4CF78942FBF08951092720284E94F
:105EF0008093BC0080E88093BC001092BD0010929B
:105F0000BA001092BB001092B9001092B800109223
:105F10006E0280E00E944B2F1092BB0085E88093B8
:105F2000BC0080916C02826080936C0208951F9285
:105F30000F920FB60F9211242F933F934F935F93BD
:105F40008F939F93EF93FF9380917202282F3327B3
:105F5000442755278F5F80937202F901273131055D
:105F600008F0C2C2EE59FF4F0C94827781E0809313
:105F70006E0209C0809170028C3090F480917002A2
:105F80008F5F8093700280917002E82FFF27EE0FE1
:105F9000FF1FEE0FFF1FE05EF94F8585181654F7BF
:105FA000809170028C3070F010926B0210926A0235
:105FB0001092700285E08093720280916F02880FC8
:105FC0008D5A04C080917002880F8E5A8093BB0056
:105FD00085E87FC280917002E82FFF2783E0EE0FF3
:105FE000FF1F8A95E1F7EA58F94F81818093BB0042
:105FF00085E88093BC0080917002E82FFF27EE0FA8
:10600000FF1FEE0FFF1FEE0FFF1FEA58F94F8081B1
:1060100080FF91C080917002E82FFF27EE0FFF1FD5
:10602000EE0FFF1FEE0FFF1FEA58F94F8281882302
:1060300029F08091AB05873008F46CC280916A0228
:1060400090916B02892B09F065C280916802909152
:106050006902892B09F05EC26EC08091700221E056
:1060600030E002C0220F331F8A95E2F78091680268
:106070009091690228233923232B79F080917002B3
:10608000E82FFF27EE0FFF1FEE0FFF1FEE0FFF1F82
:10609000EA58F94F80E184830DC080917002E82FA7
:1060A000FF27EE0FFF1FEE0FFF1FEE0FFF1FEA5837
:1060B000F94F148280917002E82FFF2753E0EE0F12
:1060C000FF1F5A95E1F7EA58F94F8481282F3327AB
:1060D00043E0220F331F4A95E1F780917002E82FC9
:1060E000FF2793E0EE0FFF1F9A95E1F7EA58F94F6B
:1060F00082818770822B8093BB0085E88093BC00EF
:106100002091700281E090E002C0880F991F2A95CB
:10611000E2F720916A0230916B0282239323892B4C
:1061200051F08EE696E0909376028093750288E0B7
:1061300080937702EFC184E089C1E0917502F0910C
:10614000760281918093BB0085E88093BC00F09338
:106150007602E093750280917702815080937702F6
:10616000882309F4D7C183E071C18091B9008033DD
:1061700051F580917302882329F4809170028F5F1A
:106180008093730280917002E82FFF2783E0EE0F67
:10619000FF1F8A95E1F7EA58F94F838199278F7796
:1061A00090708F3791057CF480917002E82FFF2763
:1061B000EE0FFF1FEE0FFF1FEE0FFF1FEA58F94F04
:1061C00083818F5F83831092720284E98093BC0085
:1061D0008AE090E090939301809392018091700205
:1061E0008F5F80937002109272026DC18091B9002E
:1061F0008034C9F180916F02E82FFF27EE0FFF1F57
:10620000EE0FFF1FEE0FFF1FEA58F94F83818F77C4
:10621000838380916F028F5F80936F0280916F0202
:106220008C30A0F010926F021092690210926802F6
:10623000809174028F5F809374028C3038F01092DA
:10624000740280916C028D7F80936C0280916C024D
:10625000816080936C021092720284E98093BC008A
:1062600010926E0273C080916F02E82FFF27EE0F2D
:10627000FF1FEE0FFF1FEE0FFF1FEA58F94F83813C
:106280008068838380916F02E82FFF27EE0FFF1F46
:10629000EE0FFF1FEE0FFF1FEA58F94F808180FFBE
:1062A0002FC080916F02E82FFF2753E0EE0FFF1FF2
:1062B0005A95E1F7EA58F94F84819927009751F0F0
:1062C0004097D9F58EE696E090937602809375021A
:1062D00088E031C080916F02992743E0880F991FB1
:1062E0004A95E1F78558994F90937602809375020D
:1062F00090916F02809174029817E1F483E01BC0C3
:1063000080916F02992733E0880F991F3A95E1F742
:106310008558994F909376028093750280916C0214
:1063200081FD06C090916F0280917402981711F45C
:1063300082E001C081E08093770280917702813012
:1063400011F485E801C085EC8093BC008091730254
:1063500080936D0210927302DDC0E0917502F0919E
:1063600076028091BB0080838091750290917602C5
:106370000196909376028093750280917702815006
:1063800080937702823010F085EC5DC0813011F48B
:1063900085E859C080916C0281FF2DC080917D02FB
:1063A00080FD1DC080916F02E82FFF2723E0EE0FD4
:1063B000FF1F2A95E1F7EA58F94F86818A3F79F461
:1063C00080916F02E82FFF2793E0EE0FFF1F9A9551
:1063D000E1F7EA58F94F8081816080830CC0809199
:1063E0006F02E82FFF2783E0EE0FFF1F8A95E1F78A
:1063F000EA58F94F108280916F028F5F80936F028D
:1064000080916F028C30A0F010926F02109269029E
:1064100010926802809174028F5F809374028C30B6
:1064200038F01092740280916C028D7F80936C0220
:106430001092720284E98093BC0080916C028160AA
:1064400080936C0265C08093BC0086E080937202EA
:1064500061C088E9BBCD80917102880F805FB6CDA5
:106460008091710299278130910561F08230910508
:106470001CF4892B21F04EC0029739F04BC080915B
:106480001301A4CD80911201A1CD809111019ECD67
:1064900080E89CCD1092720284E98093BC00109237
:1064A0006E028AE090E09093930180939201809134
:1064B0007102823088F4809171028F5F8093710243
:1064C00082E18093720280916C028E7F80936C02D5
:1064D00085EA8093BC001EC01092710280916C020C
:1064E000816080936C0216C01092720284E98093DE
:1064F000BC0080916C02816080936C028AE090E025
:1065000090939301809392011092700210926F0207
:1065100010926E02FF91EF919F918F915F914F9139
:106520003F912F910F900FBE0F901F9018951F93C2
:10653000CF93DF93182F8091A802882321F48091B4
:106540000302882319F081E090E097C01D3008F025
:1065500092C01123B1F0E12FFF2723E0EE0FFF1FC0
:106560002A95E1F7EA58F94F3597808135968823C7
:106570000CF081C03897808180FD03C083E090E0FB
:106580007CC080916E06823019F084E090E075C086
:1065900067E070E08EE696E00E94C22A9091750650
:1065A000891719F085E090E068C080ED97E00E94BF
:1065B0001C17EC0180916C0280FD05C0CE010E9489
:1065C00025178823B9F3112319F48FEF90E00BC03E
:1065D000212F33272150304081E090E002C0880F06
:1065E000991F2A95E2F790936B0280936A02A1E0CB
:1065F000B0E0E6E7F6E040E050E06BE0CD01042ECD
:1066000002C0880F991F0A94E2F720916A02309124
:106610006B0282239323892B11F011821282615025
:106620004F5F5F4F389667FFE9CF1092700210926C
:10663000720280916C028E7F80936C0285EA809357
:10664000BC0080916C0280FD05C0CE010E94251720
:106650008823B9F380916A0290916B02892B29F00B
:10666000CE010E942517882311F380916A02909130
:106670006B02009711F082E090E0DF91CF911F91C3
:1066800008950F931F93CF93DF93982F8091A802C3
:10669000882321F480910302882319F081E090E09F
:1066A00092C09D30A0F4992319F486E090E08BC04D
:1066B000C92FDD27FE0133E0EE0FFF1F3A95E1F70A
:1066C000EA58F94F35978081359687FD03C082E0FF
:1066D00090E079C03897808180FD03C083E090E02E
:1066E00072C080ED97E00E941C178C0180916C02B3
:1066F00080FD05C0C8010E9425178823B9F32197A2
:1067000021E030E0C90102C0880F991FCA95E2F765
:106710009093690280936802D901E6E7F6E040E0D1
:1067200050E06BE0CD01042E02C0880F991F0A943F
:10673000E2F7209168023091690282239323892B2A
:1067400011F01182128261504F5F5F4F389667FFE0
:10675000E9CF10926F0210926E0610927506109299
:10676000720280916C028E7F80936C0285EA809326
:10677000BC0080916C0280FD05C0C8010E942517F5
:106780008823B9F38091680290916902892B29F0DE
:10679000C8010E942517882311F380916E0682306C
:1067A00019F084E090E00FC067E070E08EE696E0BC
:1067B0000E94C22A90917506891719F085E090E031
:1067C00002C080E090E0DF91CF911F910F9108957A
:1067D00089E1ABE0B7E0E7EDF6E011821082329696
:1067E00011961C921E921296815087FFF6CF10923E
:1067F00017031092160310921903109218031092A7
:106800001B0310921A0308951F920F920FB60F9256
:1068100011240F931F932F933F934F935F936F9385
:106820007F938F939F93AF93BF93CF93DF93EF9318
:10683000FF9340918600509187008091790290915A
:106840007A02481B590BCA0157FD0196AC015595B8
:106850004795809186009091870090937A0280936B
:106860007902CA0189599840A0917B02B0917C02BB
:10687000875E954338F4149714F01092940181E0E8
:1068800090E081C0AD30B1050CF081C0CA018B5FD2
:1068900090408356944008F071C0425C5340FD0123
:1068A000EA0FFB1FE952F94F80819181FA01E81B41
:1068B000F90BCF01F7FF03C0909581959F4F069785
:1068C0004CF48091B102883C28F48091B102865F3B
:1068D0008093B102FD01EA0FFB1FE952F94F80815D
:1068E00091819C01220F331F280F391F240F351F60
:1068F00037FF02C02D5F3F4FE901D595C795D5956C
:10690000C795CA0101968C179D0714F4219706C0FC
:1069100041505040C417D5070CF421968091B10224
:10692000833CD8F08D010A0F1B1FF801E952F94F83
:10693000808191819E01281B390BC90163E070E0C1
:106940000E94FB76CB01880F991F860F971F055F6A
:10695000184FF8019183808307C0AA0FBB1FA55F62
:10696000B84F11961C921E92E0917B02F0917C022E
:10697000EE0FFF1FE952F94FD183C08380917B0254
:1069800090917C02019690937C0280937B02FF9110
:10699000EF91DF91CF91BF91AF919F918F917F91B7
:1069A0006F915F914F913F912F911F910F910F9098
:1069B0000FBE0F901F901895EF92FF920F931F93A9
:1069C0008091C8059927880F991F880F991F7C010E
:1069D0000027F7FC0095102F809105039091060386
:1069E000A0910703B0910803BC01CD01A801970154
:1069F0000E94307730935805209357058091FD020F
:106A00009091FE02A091FF02B0910003BC01CD0164
:106A1000A80197010E94307730935A0520935905B9
:106A2000809191079091920797FD03969595879590
:106A30009595879590935C0580935B058091A10760
:106A40009091A20797FD03969595879595958795C3
:106A500090935E0580935D058091160390911703D6
:106A60002091430230914402821B930B9093600566
:106A700080935F058091A3029091A402A091A5024A
:106A8000B091A602BC01CD0125E030E040E050E02D
:106A90000E943077309362052093610580913D021A
:106AA00090913E0290936405809363058091C302A8
:106AB0009091C402909368058093670580911E01B0
:106AC00090911F0190936A05809369058091B102AE
:106AD000992790936C0580936B0580919D07909109
:106AE0009E07A0919F07B091A00720919601309139
:106AF00097014091980150919901BC01CD010E94EC
:106B0000307730936E0520936D0580917706992735
:106B10009093700580936F0580917F0699279093DD
:106B2000720580937105809187069927909374056B
:106B30008093730580918F069927909376058093B3
:106B4000750580911E0290911F029093800580939D
:106B50007F05809114089091150890938405809387
:106B60008305809118089091190890938605809369
:106B7000850580911A089927909392058093910535
:106B800080918D0390918E0390939405809393054B
:106B900080918B0390918C0390939605809395053B
:106BA0008091D503882321F48091D603882321F096
:106BB00080915605816003C0809156058E7F809339
:106BC00056051F910F91FF90EF9008951F93CF935B
:106BD000DF93182FEB018091A8028823A1F41150B4
:106BE0001F3F89F0D0932502C09324028091240294
:106BF00090912502892BD1F7CE018C0F9D1F0E9409
:106C00003117115078F7DF91CF911F910895CF93ED
:106C1000DF93809102018D3011F40E94161B1092B7
:106C20007A00809147029091480290935807809390
:106C300057078091450290914602909349078093AF
:106C40004807809143029091440290939707809364
:106C5000960720913F0230914002C901880F991F89
:106C6000880F991F820F931F820F931F9093920793
:106C7000809391072091410230914202C901880F0F
:106C8000991F880F991F820F931F820F931F909354
:106C9000A2078093A1078FEC80937A00A2EBB2E069
:106CA000C1EBD5E097E08991E82FFF27EE0FFF1F9A
:106CB000E952F94F0190F081E02DE259FF4F1E1685
:106CC0001F061CF0E0E0F0E005C0EF3FF10514F016
:106CD000EFEFF0E08C91282F3327E217F30714F43D
:106CE000815004C02E173F0714F48F5F8C9391508E
:106CF000119697FFD8CF8091ED059927AA27BB273A
:106D0000BC01CD0124EC39E040E050E00E94BC76AB
:106D1000DC01CB018093D5019093D601A093D701DC
:106D2000B093D8018091EE059927AA27BB27BC0113
:106D3000CD010E94BC76DC01CB018093D101909300
:106D4000D201A093D301B093D401DF91CF910895E4
:106D5000A0E0B0E0EEEAF6E30C945177882EC0E0B4
:106D6000D0E07E016E011092D503469AD0931103B4
:106D7000C0931003D0930F03C0930E03D0930B0363
:106D8000C0930A03D0931B03C0931A03D093190333
:106D9000C0931803D0931703C09316031092BE013B
:106DA0001092BD01109237020E94073684E690E0EF
:106DB0000E943E170E9407368091B90580FF10C0DF
:106DC0008091140190911501875B934038F4809174
:106DD0001401909115018E5E924010F40E94BB1A2E
:106DE0000FE18AE090E00E943E178091430290916B
:106DF0004402C80FD91F8091470290914802E80EC3
:106E0000F91E8091450290914602C80ED91E01508C
:106E100007FFE7CF9701205F3F4F369527953695BF
:106E2000279530931B0320931A03C601409696952D
:106E3000879596958795909319038093180360968C
:106E4000F5E0D695C795FA95E1F7D0931703C0936F
:106E50001603909315038093140330931303209328
:106E60001203882009F441C0809191079091920704
:106E700097FF03C0909581959F4F6CE070E00E9452
:106E8000FB769B0170931103609310038091A1071F
:106E90009091A20797FF03C0909581959F4F6CE05A
:106EA00070E00E94FB7670930F0360930E03809155
:106EB0009E0590919F0590930B0380930A03B9015F
:106EC00084E090E00E94B32C60910E0370910F0358
:106ED00086E090E00E94B32C60910A0370910B034E
:106EE00088E090E00E94B32C65C084E090E00E94AE
:106EF000AE2C909311038093100386E090E00E94E3
:106F0000AE2C90930F0380930E0388E090E00E94D4
:106F1000AE2C9C0190930B0380930A038091100385
:106F2000909111038150984050F480910E039091FC
:106F30000F038150984018F421503440D8F187E174
:106F40009AE09F938F9386EF92E19F938F93E091C6
:106F5000BC03F091BD030995809191079091920730
:106F600097FF03C0909581959F4F6CE070E00E9461
:106F7000FB7670931103609310038091A1079091A9
:106F8000A20797FF03C0909581959F4F6CE070E03A
:106F90000E94FB7670930F0360930E0380919E0511
:106FA00090919F0590930B0380930A030F900F908D
:106FB0000F900F90109258071092570710924907A0
:106FC00010924807109297071092960784E690E077
:106FD0000E943E1780913F02909140029C01220F37
:106FE000331F220F331F280F391F280F391F3093EB
:106FF00092072093910780914102909142028C0167
:10700000000F111F000F111F080F191F080F191F64
:107010001093A2070093A1078091C805C82EDD2414
:10702000EE24FF24442737FD4095542FC701B601B5
:107030000E94BC764B015C016093050370930603CC
:1070400080930703909308039801442737FD4095E8
:10705000542FC701B6010E94BC76DC01CB0180939E
:10706000FD029093FE02A093FF02B0930003809272
:10707000E1029092E202A092E302B092E4028093D5
:10708000D9029093DA02A093DB02B093DC02109253
:10709000D5021092D6021092D7021092D802809197
:1070A000160190911701A0911801B09119019093C8
:1070B000A1058093A005109236021092350210921D
:1070C000C5021092C6021092C7021092C8028091A7
:1070D000C3029091C4029093C2028093C1020E94A5
:1070E0008C6182E390E0909325028093240280914A
:1070F000ED059927AA27BB27BC01CD0124EC39E077
:1071000040E050E00E94BC76DC01CB018856954CF3
:10711000AF4FBF4F8093D5019093D601A093D70175
:10712000B093D8018091EE059927AA27BB27BC010F
:10713000CD010E94BC76DC01CB018856954CAF4F47
:10714000BF4F8093D1019093D201A093D301B0930C
:10715000D40110929B0110929A018091C3029091E8
:10716000C402AA2797FDA095BA2F209196013091CD
:1071700097014091980150919901BC01CD010E9465
:10718000BC76DC01CB0180939D0790939E07A09372
:107190009F07B093A0071092BC021092BB0281E03F
:1071A000809301010E94036680917D028460809338
:1071B0007D028FEF80930F081092100880E2809379
:1071C0001108C2EBD2E0A1EBB5E007E08D91E82F0A
:1071D000FF27EE0FFF1FE952F94F808191818259FD
:1071E0008993015007FFF2CF84E68093B10280912A
:1071F0002202882311F0469A579A80911A0390919F
:107200001B0380569940815C9B4228F08091D503F6
:1072100081608093D5038091180390911903805663
:107220009940815C9B4228F08091D50382608093D5
:10723000D50380911603909117038C529140895782
:10724000954028F08091D50384608093D503809188
:107250001003909111038C529140835C914028F06F
:107260008091D50388608093D50380910E0390911F
:107270000F038C529140835C914028F08091D5039C
:1072800080618093D50380910A0390910B03805015
:1072900092408355914028F08091D503806280937D
:1072A000D503ECE0CDB7DEB70C946D77A3E1B0E089
:1072B000ECE5F9E30C944B7780911603909117035A
:1072C0002091430230914402821B930B90939707C5
:1072D0008093960780914D0290914E0297FD0796FC
:1072E0009C0113E0359527951A95E1F730935807DF
:1072F0002093570780914B0290914C0297FD07967F
:10730000B3E095958795BA95E1F7909349078093F7
:107310004807309363072093620790935B0780933D
:107320005A078091910790919207AC01440F551F25
:10733000480F591F20913F0230914002C901880F28
:10734000991F880F991F820F931F820F931F480F59
:10735000591F57FF02C04D5F5F4F55954795559593
:10736000479550939207409391078091A107909180
:10737000A207AC01440F551F480F591F209141022D
:1073800030914202C901880F991F880F991F820FFF
:10739000931F820F931F480F591F57FF02C04D5F65
:1073A0005F4F55954795559547955093A207409344
:1073B000A10720913F0230914002C901880F991F17
:1073C000880F991F820F931F820F931F9C014427E0
:1073D00037FD4095542F8091F5029091F602A091CF
:1073E000F702B091F802820F931FA41FB51F80937C
:1073F000F5029093F602A093F702B093F802209161
:10740000410230914202C901880F991F880F991FCC
:10741000820F931F820F931F9C01442737FD4095D5
:10742000542F8091F1029091F202A091F302B09159
:10743000F402820F931FA41FB51F8093F102909353
:10744000F202A093F302B093F40280916C07909142
:107450006D0720913F0230914002820F931F90935D
:107460006D0780936C078091990790919A072091FE
:10747000410230914202820F931F90939A078093AA
:10748000990780910C0390910D03019690930D0341
:1074900080930C0380919E0590919F0520910A0393
:1074A00030910B03821B930B9C01442737FD4095C1
:1074B000542F8091ED029091EE02A091EF02B091D5
:1074C000F002820F931FA41FB51F8093ED029093CB
:1074D000EE02A093EF02B093F0028FEC80937A005B
:1074E000109210012091DD023091DE024091DF0206
:1074F0005091E00229873A874B875C8729543B46A5
:10750000414050402CF028E43BE641E050E00DC003
:1075100089859A85AB85BC85885B9449AE4FBF4F02
:107520004CF428EB34E94EEF5FEF2D833E834F831D
:10753000588708C089859A85AB85BC858D839E83D5
:10754000AF83B8872091E5023091E6024091E702CF
:107550005091E8022D873E874F87588B29543B4630
:10756000414050402CF028E43BE641E050E00DC0A3
:107570008D859E85AF85B889885B9449AE4FBF4F96
:107580004CF428EB34E94EEF5FEF29833A834B83C9
:107590005C8308C08D859E85AF85B88989839A8371
:1075A000AB83BC83A0919607B0919707BB8BAA8B46
:1075B000FD01CF01AA2797FDA095BA2FA090D50273
:1075C000B090D602C090D702D090D802A80EB91EB3
:1075D000CA1EDB1EA092D502B092D602C092D7027C
:1075E000D092D802E0909D07F0909E0700919F07EF
:1075F0001091A007E80EF91E0A1F1B1FE0929D07BD
:10760000F0929E0700939F071093A007F0919802B5
:10761000F98BFF2309F098C180919702882309F024
:1076200093C18091B90586FF8FC1809148079091E1
:107630004907AA2797FDA095BA2FBC01CD01298142
:107640003A814B815C810E94BC769B01AC0197FF23
:1076500004C02150384F4F4F5F4FBBE055954795C1
:1076600037952795BA95D1F78091BD01682E77247B
:1076700088249924CA01B901A40193010E94BC760F
:10768000DC01CB018093260390932703A09328036A
:10769000B0932903B7FF04C08150904FAF4FBF4F45
:1076A0001C012D01ACE05594479437942794AA957A
:1076B000D1F720922603309227034092280350925C
:1076C00029038091570790915807AA2797FDA09505
:1076D000BA2FBC01CD012D813E814F8158850E947A
:1076E000BC7697FF04C06150784F8F4F9F4FFBE0EF
:1076F0009595879577956795FA95D1F7A4019301AC
:107700000E94BC76DC01CB0180932A0390932B036B
:10771000A0932C03B0932D03B7FF04C08150904F6A
:10772000AF4FBF4F9C01AD01ECE0559547953795A4
:107730002795EA95D1F720932A0330932B034093A2
:107740002C0350932D03809126039091270390934F
:10775000400780933F0780912A0390912B039093D9
:10776000440780934307221933094409550920939C
:107770002A0330932B0340932C0350932D03E20EE6
:10778000F31E041F151FE0929D07F0929E070093C1
:107790009F071093A0078091BC018823B1F457FF85
:1077A00004C02F5F3F4F4F4F5F4F5595479537951B
:1077B0002795A21AB30AC40AD50AA092D502B0929C
:1077C000D602C092D702D092D8022A893B89790189
:1077D0000027F7FC0095102F80912A0390912B032E
:1077E000A0912C03B0912D03E80EF91E0A1F1B1F58
:1077F000C801B70129813A814B815C810E94BC7626
:107800009B01AC0197FF04C02150384F4F4F5F4F91
:107810006BE055954795379527956A95D1F78091F7
:10782000BE01A82EBB24CC24DD24CA01B901A601C7
:1078300095010E94BC76DC01CB0180931E039093DE
:107840001F03A0932003B0932103B7FF04C081500E
:10785000904FAF4FBF4F3C014D013CE09594879452
:10786000779467943A95D1F760921E0370921F0344
:107870008092200390922103C801B7012D813E819F
:107880004F8158850E94BC7697FF04C06150784FA5
:107890008F4F9F4F2BE095958795779567952A9504
:1078A000D1F7A60195010E94BC76DC01CB01809343
:1078B000220390932303A0932403B0932503B7FFDF
:1078C00004C08150904FAF4FBF4FAC01BD018CE061
:1078D00075956795579547958A95D1F740932203FB
:1078E0005093230360932403709325032A893B89D3
:1078F00037FF03C0309521953F4F21343105E4F126
:10790000D401C30197FE07C0B095A09590958195CD
:107910009F4FAF4FBF4F81389105A105B10584F44A
:10792000DB01CA0177FF07C0B095A09590958195BE
:107930009F4FAF4FBF4F81389105A105B105E4F0CE
:1079400081E08093BD0218C0109244071092430753
:107950001092400710923F071092220310922303C7
:10796000109224031092250310921E0310921F03FD
:1079700010922003109221038091220390912303FF
:10798000A0912403B0912503BC01CD0124E630E091
:1079900040E050E00E943077E0901E03F0901F031B
:1079A000E21AF30AF0925607E092550780911E03FF
:1079B00090911F03A0912003B0912103BC01CD0140
:1079C00024E630E040E050E00E943077DA01C9015F
:1079D00020912203309123038C01021B130B10937F
:1079E0004B0700934A078091960190919701A091CF
:1079F0009801B0919901BC01CD0128E631E040E049
:107A000050E00E94BC7620919D0730919E074091E6
:107A10009F075091A007261737074807590764F0BA
:107A2000261B370B480B590B20939D0730939E075D
:107A300040939F075093A00720919D0730919E0788
:107A400040919F075091A00757FF0CC0260F371F8A
:107A5000481F591F20939D0730939E0740939F070F
:107A60005093A00760914807709149076E0D7F1DE4
:107A70009B01442737FD4095542F8091D902909166
:107A8000DA02A091DB02B091DC02820F931FA41FE7
:107A9000B51F8093D9029093DA02A093DB02B093D2
:107AA000DC0280919D0290919E02681B790BCB01B4
:107AB000AA2797FDA095BA2F29853A854B855C8525
:107AC000820F931FA41FB51F8093DD029093DE02E7
:107AD000A093DF02B093E002C090D101D090D20118
:107AE000E090D301F090D401C816D906EA06FB064F
:107AF000C4F488EA91E6A0E0B0E08C199D09AE09D3
:107B0000BF098093DD029093DE02A093DF02B09361
:107B1000E0028093D9029093DA02A093DB02B09343
:107B2000DC0222273327A9012C193D094E095F09E0
:107B30008091DD029091DE02A091DF02B091E0021F
:107B400082179307A407B507B4F4D701C601885A72
:107B50009146A040B0408093DD029093DE02A09356
:107B6000DF02B093E0028093D9029093DA02A093EF
:107B7000DB02B093DC026091570770915807600FE9
:107B8000711F9B01442737FD4095542F8091E102DE
:107B90009091E202A091E302B091E402820F931F60
:107BA000A41FB51F8093E1029093E202A093E30229
:107BB000B093E40280919B0290919C02681B790B28
:107BC000CB01AA2797FDA095BA2F2D853E854F851D
:107BD0005889820F931FA41FB51F8093E5029093CD
:107BE000E602A093E702B093E802E090D501F0909E
:107BF000D6010091D7011091D801E816F9060A07BD
:107C00001B07C4F488EA91E6A0E0B0E08E199F0952
:107C1000A00BB10B8093E5029093E602A093E702DC
:107C2000B093E8028093E1029093E202A093E30212
:107C3000B093E40222273327A9012E193F09400BF4
:107C4000510B8091E5029091E602A091E702B0917C
:107C5000E80282179307A407B507B4F4D801C70157
:107C6000885A9146A040B0408093E5029093E60286
:107C7000A093E702B093E8028093E1029093E202BE
:107C8000A093E302B093E4028091D5029091D602D2
:107C9000A091D702B091D8028093E9029093EA02B2
:107CA000A093EB02B093EC028091E5029091E60282
:107CB000A091E702B091E802809305039093060338
:107CC000A0930703B09308038091DD029091DE0238
:107CD000A091DF02B091E0028093FD029093FE023A
:107CE000A093FF02B09300038091E1029091E20221
:107CF000A091E302B091E402809301039093020308
:107D0000A0930303B09304038091D9029091DA0207
:107D1000A091DB02B091DC028093F9029093FA0209
:107D2000A093FB02B093FC0280911C0190911D0175
:107D300097FD079603E0959587950A95E1F790934F
:107D400058078093570780911A0190911B0197FD66
:107D5000079613E0959587951A95E1F79093490753
:107D60008093480780914702909148020F9734F41E
:107D700088E19CEF909358078093570780914702C2
:107D800090914802079734F480E398EF9093580756
:107D900080935707209102012A30A9F4809147026D
:107DA00090914802835F934034F088EE93E0909383
:107DB00058078093570780914702909148028A5F45
:107DC0009340DCF014C08091470290914802815D9D
:107DD000974034F088EE93E09093580780935707CC
:107DE0008091470290914802805E974034F080ED88
:107DF00097E09093580780935707809145029091A0
:107E000046020F9734F488E19CEF909349078093E2
:107E100048078091450290914602079734F480E329
:107E200098EF90934907809348072A30A9F48091EE
:107E3000450290914602835F934034F088EE93E0D0
:107E4000909349078093480780914502909146029C
:107E50008A5F9340DCF014C0809145029091460205
:107E6000815D974034F088EE93E0909349078093CA
:107E700048078091450290914602805E974034F019
:107E800080ED97E090934907809348076091C8017F
:107E9000662309F4AFC040911C0150911D018091EF
:107EA0002E0390912F03481B590B50933503409399
:107EB000340320911C0130911D01280F391F37FF19
:107EC00002C02F5F3F4F3595279530932F032093A6
:107ED0002E03413851051CF080E890E005C0405861
:107EE0005F4F34F480E89FEF909335038093340321
:107EF00040911A0150911B01809130039091310300
:107F0000481B590B509333034093320320911A01BD
:107F100030911B01280F391F37FF02C02F5F3F4FE1
:107F2000359527953093310320933003413851051F
:107F30001CF080E890E005C040585F4F34F480E8C2
:107F40009FEF9093330380933203462F5527809100
:107F5000340390913503849FB001859F700D949FE9
:107F6000700D11249B0177FF02C0215F3F4FF4E0A9
:107F700035952795FA95E1F7809157079091580725
:107F8000820F931F90935807809357078091320375
:107F900090913303849FD001859FB00D949FB00DC5
:107FA0001124AD019D01B7FF02C0215F3F4FE4E006
:107FB00035952795EA95E1F7809148079091490713
:107FC000820F931F909349078093480780911C016B
:107FD00090911D01860F971F90931D0180931C01A6
:107FE00080911A0190911B01840F951F90931B01A2
:107FF00080931A0100915A0710915B0780913F0707
:1080000090914007101611065CF59C0197FF04C083
:1080100022273327281B390BC901AA2797FDA095D2
:10802000BA2F2091BC01332744275527BC01CD012D
:108030000E94BC769B01AC0197FF04C0215C3F4FBE
:108040004F4F5F4F76E055954795379527957A9531
:10805000D1F78091550790915607820F931F27C043
:1080600097FF03C0909581959F4FAA2797FDA095F4
:10807000BA2F2091BC01332744275527BC01CD01DD
:108080000E94BC769B01AC0197FF04C0215C3F4F6E
:108090004F4F5F4F66E055954795379527956A9501
:1080A000D1F78091550790915607821B930B9093BF
:1080B000560780935507E0906207F0906307809120
:1080C0004307909144071E141F045CF59C0197FF21
:1080D00004C022273327281B390BC901AA2797FD83
:1080E000A095BA2F2091BC01332744275527BC0106
:1080F000CD010E94BC769B01AC0197FF04C0215CBE
:108100003F4F4F4F5F4F96E05595479537952795D1
:108110009A95D1F780914A0790914B07820F931F50
:1081200027C097FF03C0909581959F4FAA2797FD81
:10813000A095BA2F2091BC01332744275527BC01B5
:10814000CD010E94BC769B01AC0197FF04C0215C6D
:108150003F4F4F4F5F4F86E0559547953795279591
:108160008A95D1F780914A0790914B07821B930B18
:1081700090934B0780934A078091B90587FF44C0CD
:10818000B989BB2309F040C0809197028823E1F5AB
:10819000E1E0EE16E1E0FE064CF080915707909189
:1081A00058078E0D9F1D805091400DC0F0E0EF16D6
:1081B000FFEFFF0664F480915707909158078E0DEA
:1081C0009F1D80509F4F909358078093570721E041
:1081D000013012074CF08091480790914907800FB9
:1081E000911F805091400CC03FEF0030130764F4A2
:1081F0008091480790914907800F911F80509F4FB1
:108200009093490780934807E2E1CD5E0C9467772D
:108210008091A802882301F580917D028C7F809354
:108220007D02AAEDB3E0E6E7F6E09BE08091030271
:10823000882309F48C938D91818312829150389612
:1082400097FFF4CF80910302882359F080910302B5
:1082500081508093030205C080917D0281608093EC
:108260007D0280916E02882319F010926E020895AB
:10827000809370028093720280916C028E7F809353
:108280006C0285EA8093BC000895CF93DF93A2EB44
:10829000B2E0C1EBD5E057E08991E82FFF27EE0F60
:1082A000FF1FE952F94F0190F081E02DE259FF4F95
:1082B000EF3FF10521F01CF0EFEFF0E004C0F7FF15
:1082C00002C0E0E0F0E04C91242F3327E217F307DF
:1082D000A9F0CF01821B930B97FD03969595879587
:1082E00095958795242F280F2C93822F9927E8178F
:1082F000F90714F4215001C02F5F2C9351501196AF
:1083000057FFCACF8091BB05883F38F0EFEFF0E010
:10831000E81BF109EE54FD4F80818093CE018091DE
:10832000CE01882329F0843618F084E68093CE01AC
:108330008091BD05883F38F0EFEFF0E0E81BF109D0
:10834000EE54FD4F80818093CC018091CC01882335
:1083500029F0843618F084E68093CC018091CA0518
:10836000883F38F0EFEFF0E0E81BF109EE54FD4FE5
:1083700080818093C7018091C7018B3010F48AE01F
:1083800002C08F3F11F48093C7018091F705883FA9
:1083900038F0EFEFF0E0E81BF109EE54FD4F80817B
:1083A00080936E0780916E07823010F481E002C0E6
:1083B0008F3F11F480936E078091F905883F38F064
:1083C000EFEFF0E0E81BF109EE54FD4F8081809360
:1083D000940780919407823010F481E002C08F3FAF
:1083E00011F4809394078091E405883F38F0EFEF13
:1083F000F0E0E81BF109EE54FD4F808180936B079C
:108400008091E505883F38F0EFEFF0E0E81BF109D7
:10841000EE54FD4F8081809345078091E605883FAB
:1084200038F0EFEFF0E0E81BF109EE54FD4F8081EA
:10843000809373079091BC05983F18F49093CD01F9
:1084400009C0EFEFF0E0E91BF109EE54FD4F808128
:108450008093CD01983F18F49093CD0109C0EFEFC0
:10846000F0E0E91BF109EE54FD4F80818093CD01CE
:108470008091BF05883F38F0EFEFF0E0E81BF1098D
:10848000EE54FD4F80818093CB018091C105883FE0
:1084900038F0EFEFF0E0E81BF109EE54FD4F80817A
:1084A0008093C9018091C905883F38F0EFEFF0E073
:1084B000E81BF109EE54FD4F80818093CA01809141
:1084C000CB05883F38F0EFEFF0E0E81BF109EE5400
:1084D000FD4F80818093C6018091CC05883F38F0A4
:1084E000EFEFF0E0E81BF109EE54FD4F808180933F
:1084F000C8018091CD05883F38F0EFEFF0E0E81B30
:10850000F109EE54FD4F80818093C5018091CE0525
:10851000883F38F0EFEFF0E0E81BF109EE54FD4F33
:1085200080818093C4018091D405883F38F0EFEFBB
:10853000F0E0E81BF109EE54FD4F80818093C20109
:108540008091D505883F38F0EFEFF0E0E81BF109A6
:10855000EE54FD4F8081809392028091D605883F32
:1085600038F0EFEFF0E0E81BF109EE54FD4F8081A9
:10857000809391028091D705883F38F0EFEFF0E0CB
:10858000E81BF109EE54FD4F8081809390028091A9
:10859000D805883F38F0EFEFF0E0E81BF109EE5422
:1085A000FD4F808180938F028091F205883F38F0E3
:1085B000EFEFF0E0E81BF109EE54FD4F808180936E
:1085C0008E028091F305883F38F0EFEFF0E0E81B72
:1085D000F109EE54FD4F808180938D028091F40566
:1085E000883F38F0EFEFF0E0E81BF109EE54FD4F63
:1085F000808180938C028091F505883F38F0EFEF01
:10860000F0E0E81BF109EE54FD4F808180938B026E
:108610008091D905883F38F0EFEFF0E0E81BF109D1
:10862000EE54FD4F80818093C1018091DD05883F2C
:1086300038F0EFEFF0E0E81BF109EE54FD4F8081D8
:108640008093C0018091E705883F38F0EFEFF0E0BC
:10865000E81BF109EE54FD4F80818093BF018091AA
:10866000EA05883F38F0EFEFF0E0E81BF109EE543F
:10867000FD4F80818093BE018091EB05883F38F0EB
:10868000EFEFF0E0E81BF109EE54FD4F808180939D
:10869000BD018091EC05883F38F0EFEFF0E0E81B7A
:1086A000F109EE54FD4F80818093BC018091F1056A
:1086B000883F38F0EFEFF0E0E81BF109EE54FD4F92
:1086C00080818093BB0180910C06883F38F0EFEFEA
:1086D000F0E0E81BF109EE54FD4F80818093A40780
:1086E0008091C201282F33272F5F3F4F8CE398E200
:1086F000B9010E94FB767093D0016093CF01809105
:10870000C705809395078091C60580935C0790917B
:108710000E06933320F181E080938A02983F58F04F
:10872000EFEFF0E0E91BF109EE54FD4F8081823359
:1087300010F410928A028091E2079091E30797FF6C
:1087400008C080918A02882321F08091D503806837
:1087500003C08091D5038F778093D50302C0109218
:108760008A028091E2079091E30797FF1DC08091F4
:10877000A8028823C9F080918A028823A9F08091F9
:108780000801909109018F5F9F4F71F488E99AE386
:10879000909325028093240280E094EA909309014B
:1087A0008093080110928A0280918A02882339F00E
:1087B0008091BE01823D18F4825E8093BE01DF91FC
:1087C000CF910895A8E1B0E0E8EEF3E40C944B7784
:1087D0000E945639309102013C3010F4299A01C0B0
:1087E0002998E090A902F090AA02FA82E982809189
:1087F0005C0799270A96E816F90614F49A83898388
:108800008091B102843608F05CC080914A03909157
:108810004B03009731F0019790934B0380934A03E9
:1088200007C01092A80280917D028F7E80937D0206
:108830003A3011F0343110F0289A01C02898809114
:108840007E0290917F02895E9340C0F18091D105B4
:10885000282F33273A83298380917D02806180937A
:108860007D028091AD05A82FBB27AA0FBB1FFD017C
:10887000E55FF84F118210828091AE05282F3327D3
:10888000220F331FC901855F984FFC0111821082AE
:10889000A952B94F11961C921E922952394FD901F3
:1088A00011961C921E928091B005E82FFF27EE0FC3
:1088B000FF1FE952F94F11821082C9C21092A8021B
:1088C000C6C28091B1028D3808F4C1C280917D0288
:1088D0008F7E80937D029091D20582E3989FC001A4
:1088E000112490934B0380934A03E981FA81B9974D
:1088F0008CF08091A802882369F080917E0290918B
:108900007F02FFEF8F3F9F0729F0019690937F0230
:1089100080937E0280917E0290917F028F3F91052D
:1089200009F038F51092CD021092CE021092CF02CB
:108930001092D0021092C9021092CA021092CB0279
:108940001092CC0210923603109237031092380323
:10895000109239031092D5021092D6021092D702CB
:108960001092D8028A3F910549F481E08093500328
:1089700005C080917D02826080937D028091AF0569
:10898000E82FFF27EE0FFF1FE952F94F80819181F9
:10899000813591050CF441C12091A802222309F0F0
:1089A0003CC18091B005E82FFF27EE0FFF1FE95271
:1089B000F94F808191818C3491050CF406C180912E
:1089C0004C038F5F80934C03893C08F426C13C30F4
:1089D00010F4299801C0299A1092A80210924C0311
:1089E00010927F0210927E023091AD05E32FFF2797
:1089F000EE0FFF1FE952F94F808191818734910575
:108A0000B4F48091AE05E82FFF27EE0FFF1FE95267
:108A1000F94F808191810190F081E02DF7FF03C033
:108A2000F095E195FF4FE734F1050CF478C041E093
:108A30002091AE05A22FBB27AA0FBB1FA952B94F89
:108A40008D919C9111978734910544F0E32FFF2776
:108A5000EE0FFF1FE952F94F808191818D919C911A
:108A60008734910574F08091AD05E82FFF27EE0F54
:108A7000FF1FE952F94F80819181873491050CF0F5
:108A800042E0E22FFF27EE0FFF1FE952F94F8081EE
:108A900091818634910574F48091AD05E82FFF270C
:108AA000EE0FFF1FE952F94F8081918187349105C4
:108AB0000CF043E0E22FFF27EE0FFF1FE952F94FC2
:108AC000808191818A5B9F4F74F48091AD05E82F7E
:108AD000FF27EE0FFF1FE952F94F80819181873404
:108AE00091050CF044E0E22FFF27EE0FFF1FE95243
:108AF000F94F808191818A5B9F4F74F48091AD051D
:108B0000E82FFF27EE0FFF1FE952F94F8081918177
:108B1000863491050CF445E0842F0E940B2D809142
:108B2000AE05E82FFF27EE0FFF1FE952F94F8081B6
:108B300091810190F081E02DF7FF03C0F095E19560
:108B4000FF4F7E97BCF48091AD05E82FFF27EE0F15
:108B5000FF1FE952F94F808191818A5B9F4F54F446
:108B600081E08093F00388EE93E090932502809358
:108B7000240253C00E94052E0E94B82C80E00E945F
:108B800038078091D3050E94D5728091B90580FF86
:108B900010C08091140190911501875B934038F4C7
:108BA00080911401909115018E5E924010F40E9404
:108BB000BB1A1092220280E00E94A83681E08093C6
:108BC0004F0380932202579A1FC080819181855B59
:108BD0009F4F0CF580914C038F5F80934C03893C31
:108BE000E0F03C3010F4299801C0299A1092A802B4
:108BF00010924C0310927F0210927E0281E00E943C
:108C0000A83681E080934F030E94052E68E770E04C
:108C10000E94E63502C020934C038091AF05E82FF7
:108C2000FF27EE0FFF1FE952F94F808191818B5A88
:108C30009F4F0CF00CC13091A802E091B005332396
:108C400009F0DAC0FF27EE0FFF1FE952F94F8081CC
:108C50009181855B9F4F0CF0CCC020910F06E22FD5
:108C6000FF27EE0FFF1FE952F94F80819181855B4D
:108C70009F4F1CF0222309F0BCC080914D038F5FF1
:108C800080934D03893C08F4E2C030934D038091FA
:108C9000D503882309F0A6C080914F03882309F4E7
:108CA000A1C081E090E090937F0280937E0281E0FA
:108CB0008093A80210923603109237031092380363
:108CC000109239031092D5021092D6021092D70258
:108CD0001092D8021092D1021092D2021092D302B6
:108CE0001092D4028091C805E82EFF240027112796
:108CF00080919107909192079C01442737FD409500
:108D0000542FC801B7010E94BC76DC01CB018093CF
:108D1000E5029093E602A093E702B093E802809107
:108D2000A1079091A2079C01442737FD4095542F3D
:108D3000C801B7010E94BC76DC01CB018093DD0243
:108D40009093DE02A093DF02B093E00280910503CE
:108D500090910603A0910703B09108038093E1026C
:108D60009093E202A093E302B093E4028091FD02AB
:108D70009091FE02A091FF02B09100038093D9026E
:108D80009093DA02A093DB02B093DC021092CD0242
:108D90001092CE021092CF021092D0021092C9020D
:108DA0001092CA021092CB021092CC0280917D02E6
:108DB000886080937D0290910D068FE0989F9001CE
:108DC00011248091C3029091C402820F931F68E620
:108DD00071E00E94FB7697FD0196959587958093AB
:108DE000090335C08CED95E0909325028093240211
:108DF0002EC010924D032BC0FF27EE0FFF1FE9522C
:108E0000F94F808191818C349105FCF020910F06FF
:108E1000E22FFF27EE0FFF1FE952F94F808191816A
:108E2000855B9F4F14F0222381F480914E038F5F66
:108E300080934E03893C58F01092A80210924E0382
:108E400010927F0210927E0202C010924E03809117
:108E50009401815080939401809194018F3F21F07F
:108E600080917D0284FF72C30E9445418091590325
:108E700090915A039C01220F331F280F391FC09075
:108E8000AD05AC2DBB27AA0FBB1FFD01E952F94F61
:108E9000B090C3054B2D552780819181849FF001AF
:108EA000859FF00D949FF00D11242E0F3F1F37FF6B
:108EB00002C02D5F3F4FB901759567957595679510
:108EC000A55FB84F8091C405082F11278D919C9103
:108ED000809F7001819FF00C909FF00C11246E0D0B
:108EE0007F1D70935A036093590380915B039091A7
:108EF0005C039C01220F331F280F391FD090AE0551
:108F0000AD2DBB27AA0FBB1FFD01E952F94F808190
:108F10009181849FF001859FF00D949FF00D1124A5
:108F20002E0F3F1F37FF02C02D5F3F4FA901559500
:108F3000479555954795A55FB84F8D919C91809F1A
:108F40007001819FF00C909FF00C11244E0D5F1D5D
:108F500050935C0340935B0380918A02882309F459
:108F600048C0CB0177FD0396DC01B595A795B59573
:108F7000A795CA0157FD0396FC01F595E795F59570
:108F8000E7958091EA01682F772767FD70956A9FC2
:108F900090016B9F300D7A9F300D112480919103C9
:108FA000482F552747FD50954E9FC0014F9F900D6C
:108FB0005E9F900D1124280F391F37FF02C0295FD3
:108FC0003F4F03E0359527950A95E1F73093B002BE
:108FD0002093AF026E9F90016F9F300D7E9F300DEA
:108FE00011244A9FC0014B9F900D5A9F900D112450
:108FF0003FC080910D06E82FFF27E456FE4F868183
:109000008093EA01908190939103A82FBB27A7FD3D
:10901000B095A69F9001A79F300DB69F300D1124EB
:10902000E92FFF27E7FDF095E49FC001E59F900D34
:10903000F49F900D1124280F391F37FF02C0295FBC
:109040003F4F13E0359527951A95E1F73093B0021D
:109050002093AF02A49F9001A59F300DB49F300DC7
:109060001124E69FC001E79F900DF69F900D1124FB
:10907000281B390B37FF02C0295F3F4FF3E03595BE
:109080002795FA95E1F73093AE022093AD028091D7
:10909000B005E82FFF27EE0FFF1FE952F94F80813F
:1090A0009181909581959F4F9093AC028093AB02F4
:1090B0008330910514F0029705C00FEF8E3F9007A3
:1090C00034F402969093AC028093AB0204C01092E9
:1090D000AC021092AB0280918D0390918E0320918F
:1090E000890330918A03820F931F0091AF02109180
:1090F000B002081B190B1093B0020093AF028091CD
:109100008B0390918C032091870330918803820F09
:10911000931F8090AD029090AE02881A990A9092A7
:10912000AE028092AD028091AF05E82FFF27EE0FCF
:10913000FF1FE952F94FE080F18028E730E0E20EAE
:10914000F31EF092AA02E092A9028091C70199272A
:10915000AA2797FDA095BA2FBC01CD010E943076B9
:10916000DC01CB0120E030E040E251E4BC01CD0164
:109170000E949E75DC01CB01BC01CD010E940276EC
:10918000DC01CB0180939B078091C601809374071B
:109190008091C5019927AA2797FDA095BA2FBC01F8
:1091A000CD010E943076DC01CB0120E030E040E2CE
:1091B00051E4BC01CD010E949E75DC01CB01BC01D4
:1091C000CD010E940276DC01CB0180934F07809194
:1091D000C401809364078091FC0380FF59C0809193
:1091E000A407813808F454C08091F503992787FDBE
:1091F00090952B2D3327829FA001839F500D929F26
:10920000500D1124040F151F1093B0020093AF02EC
:109210008091F603992787FD9095829FB001839FE7
:10922000700D929F700D1124860E971E9092AE02C3
:109230008092AD028091F703282F332727FD3095C8
:109240008091AB029091AC02820F931F9093AC027D
:109250008093AB028091F903282F332727FD3095A7
:109260008091BE059927289FD001299FB00D389F76
:10927000B00D1124B0939B01A0939A018091F80343
:1092800099278E159F0524F49093AA028093A90232
:109290008091A9029091AA0297FF04C01092AA029D
:1092A0001092A9028091B90582FF02C01092740742
:1092B0004091AF025091B002CA0157FD03969C0144
:1092C000359527953595279537FF03C0309521951E
:1092D0003F4F809182029091830282179307B4F4EA
:1092E000CA0157FF03C0909581959F4F97FD039644
:1092F00095958795959587959093830280938202A3
:109300008536910544F084E690E001C00197909382
:109310008302809382024091AD025091AE02CA0155
:1093200057FD03969C01359527953595279537FF71
:1093300003C0309521953F4F80918002909181022A
:1093400082179307B4F4CA0157FF03C09095819523
:109350009F4F97FD03969595879595958795909343
:109360008102809380028536910544F084E690E086
:1093700001C00197909381028093800280917D02C9
:1093800084FF08C010928302109282021092810220
:1093900010928002ED2DFF27EE0FFF1FE952F94FCB
:1093A0004091E805242F33278081918128173907C0
:1093B00044F48091100682FF04C081E080939602FD
:1093C00013C0ED2DFF27EE0FFF1FE952F94F842F39
:1093D00099272091E905821B910920813181281765
:1093E000390714F4109296024091AE05E42FFF273E
:1093F000EE0FFF1FE952F94F5091E805852F99278D
:1094000022273327281B390B8081918182179307EC
:1094100044F48091100683FF04C081E0809395029C
:1094200016C080919502882391F0E42FFF27EE0F5C
:10943000FF1FE952F94F8091E9059927851B910992
:10944000208131818217930714F410929502EC2D3C
:10945000FF27EE0FFF1FE952F94F4091E805242F37
:109460003327808191812817390744F480911006B1
:1094700080FF04C081E08093930217C08091930223
:10948000882399F0EC2DFF27EE0FFF1FE952F94FCB
:10949000842F99272091E905821B91092081318130
:1094A0002817390714F4109293024091AD05E42F68
:1094B000FF27EE0FFF1FE952F94F5091E805852F66
:1094C000992722273327281B390B80819181821706
:1094D000930744F48091100681FF04C081E08093DB
:1094E000940216C080919402882391F0E42FFF2704
:1094F000EE0FFF1FE952F94F8091E9059927851B6F
:109500009109208131818217930714F410929402FB
:1095100080919602882319F480919502811181E04F
:109520008093970280919302882321F48091940282
:10953000882351F081E08093980210929702109254
:1095400096021092950202C0809398028091970231
:10955000882321F480919802882369F08091E7059F
:109560009927E981FA818E179F0714F49A838983DA
:1095700081E08093BD0280917D0284FF1AC0109229
:10958000AC021092AB021092B0021092AF02109295
:10959000AE021092AD029AE590939B0788E7809304
:1095A000740790934F07809364071092970210926C
:1095B00098028091670790916807A0916907B09120
:1095C0006A072091050330910603409107035091EB
:1095D0000803820F931FA41FB51F80936707909302
:1095E0006807A0936907B0936A0780916F0790910D
:1095F0007007A0917107B09172072090FD02309022
:10960000FE024090FF0250900003820D931DA41DA6
:10961000B51D80936F0790937007A0937107B09367
:10962000720780915E0790915F07A0916007B091EB
:109630006107E0900103F090020300910303109191
:109640000403EB82FC820D831E838E0D9F1DA01FE1
:10965000B11F80935E0790935F07A0936007B0935C
:1096600061078091500790915107A0915207B091E6
:109670005307E090F902F090FA020091FB0210917A
:10968000FC02EF82F88609871A878E0D9F1DA01FA6
:10969000B11F8093500790935107A0935207B09346
:1096A0005307F0909802FB86FF2029F480919702DF
:1096B000882309F460C01092F5021092F60210920D
:1096C000F7021092F8021092F1021092F202109238
:1096D000F3021092F402109267071092680710923A
:1096E000690710926A0710926F0710927007109224
:1096F00071071092720710925E0710925F07109226
:109700006007109261071092500710925107109253
:109710005207109253078091E5029091E602A091C2
:10972000E702B091E8028093E1029093E202A093F5
:10973000E302B093E4028091DD029091DE02A091F9
:10974000DF02B091E0028093D9029093DA02A093F5
:10975000DB02B093DC0210923402109233021092BA
:109760009C0210929B0210929E0210929D020B8509
:10977000002309F0F2C180919702882309F0EDC11E
:1097800080919E0590919F05815092402CF480918C
:10979000A802882309F4E1C190900F08A090C805A1
:1097A0006091910770919207788F6F8B8091A107DC
:1097B0009091A2079A8B898B9FEF991609F4D9C0D3
:1097C000BB24CC24DD24CA01B901A60195010E9465
:1097D000307779018A01EF89F88DCF01AA2797FDAB
:1097E000A095BA2FE81AF90A0A0B1B0BC201B101A6
:1097F000A60195010E94307759016A0129893A89A9
:10980000C901AA2797FDA095BA2FA81AB90ACA0AB2
:10981000DB0A292C332427FC3094432C532CC80119
:10982000B701A20191010E94BC7697FF04C061506C
:109830007E4F8F4F9F4F3B014C0109E095948794D9
:10984000779467940A95D1F7C601B501A2019101F9
:109850000E94BC7697FF04C061507E4F8F4F9F4F90
:109860005B016C0119E0D594C794B794A7941A953D
:10987000D1F78091820290918302813491053CF46A
:10988000809180029091810281349105D4F0D401BD
:10989000C30197FE03C00196A11DB11D3C014D01FE
:1098A0009594879477946794D601C501D7FE03C039
:1098B0000196A11DB11D5C016D01D594C794B794AB
:1098C000A7948091B005E82FFF27EE0FFF1FE95204
:1098D000F94F808191810190F081E02DF7FF03C065
:1098E000F095E195FF4F7A97A4F0C401B30123E00E
:1098F00030E040E050E00E94307739014A01C60173
:10990000B50123E030E040E050E00E94307759019B
:109910006A0180911108282F332727FD3095432FA6
:10992000532F261537054805590514F439014A0106
:10993000992787FD9095909581959F4FAA2797FD30
:10994000A095BA2F681679068A069B0614F43C0186
:109950004D012A153B054C055D0514F459016A01BA
:10996000A816B906CA06DB060CF0CFC05C016D0173
:10997000CCC0EA2CFF2400271127CA01B901A80195
:1099800097010E94307739014A014F89588DCA01E9
:10999000AA2797FDA095BA2F681A790A8A0A9B0A06
:1099A000C201B101A80197010E94307759016A01F3
:1099B00069897A89CB01AA2797FDA095BA2FA81AA1
:1099C000B90ACA0ADB0AD401C30197FE03C00F9685
:1099D000A11DB11D3C014D01F4E09594879477944D
:1099E0006794FA95D1F7D601C501D7FE03C00F964B
:1099F000A11DB11D5C016D01E4E0D594C794B7943D
:109A0000A794EA95D1F780918202909183028134E4
:109A100091053CF4809180029091810281349105FE
:109A2000A4F0C401B30123E030E040E050E00E9424
:109A3000307739014A01C601B50123E030E040E04A
:109A400050E00E94307759016A018091B005E82FFB
:109A5000FF27EE0FFF1FE952F94F8081918101909E
:109A6000F081E02DF7FF03C0F095E195FF4F7A9765
:109A7000A4F0C401B30123E030E040E050E00E94D4
:109A8000307739014A01C601B50123E030E040E0FA
:109A900050E00E94307759016A0171E26716710443
:109AA000810491042CF070E2672E712C812C912C92
:109AB00080EE68168FEF78068FEF88068FEF980696
:109AC00044F460EE662E6FEF762E6FEF862E6FEF0A
:109AD000962E91E2A916B104C104D1042CF050E2F3
:109AE000A52EB12CC12CD12CA0EEAA16AFEFBA0630
:109AF000AFEFCA06AFEFDA0644F440EEA42E4FEF04
:109B0000B42E4FEFC42E4FEFD42E8091E5029091EA
:109B1000E602A091E702B091E80286199709A80928
:109B2000B9098093E5029093E602A093E702B0930F
:109B3000E8028091DD029091DE02A091DF02B091F7
:109B4000E0028A199B09AC09BD098093DD0290935C
:109B5000DE02A093DF02B093E00280913302909185
:109B600034028F3F910509F008F4C4C5BB85BB23BF
:109B700009F04EC580919702882309F049C580916C
:109B8000BD02882309F044C5E091F005EC87EE237F
:109B900009F43EC58091670790916807A091690715
:109BA000B0916A07B7FF04C081509F4FAF4FBF4FBE
:109BB000E92EFA2E0B2F112707FD1A95E092670761
:109BC000F09268070093690710936A0780916F0706
:109BD00090917007A0917107B0917207B7FF04C010
:109BE00081509F4FAF4FBF4F892F9A2FAB2FBB276D
:109BF000A7FDBA958D879E87AF87B88B80936F0737
:109C000090937007A0937107B09372078091C80575
:109C1000A82EBB24CC24DD242091F5023091F6023D
:109C20004091F7025091F802C601B5010E94BC763E
:109C300097FF04C061507F4F8F4F9F4F672E782E44
:109C4000892E992487FC9A946092F5027092F6020C
:109C50008092F7029092F8022091F1023091F20284
:109C60004091F3025091F402C601B5010E94BC7606
:109C700097FF04C061507F4F8F4F9F4F272E382E84
:109C8000492E552447FC5A942092F1023092F20258
:109C90004092F3025092F4028091ED029091EE0214
:109CA000A091EF02B091F002B7FF04C081509F4F26
:109CB000AF4FBF4F892F9A2FAB2FBB27A7FDBA9568
:109CC0008093ED029093EE02A093EF02B093F00226
:109CD000D801C70186199709A809B90980934203D9
:109CE00090934303A0934403B09345032091EF0561
:109CF000E22EFF2400271127BC01CD01A801970106
:109D00000E94307759016A01209351033093520326
:109D100040935303509354038D859E85AF85B88936
:109D200082199309A409B5098093460390934703C8
:109D3000A0934803B0934903BC01CD01A80197014A
:109D40000E94307720935503309356034093570376
:109D500050935803D601C501D7FE04C081509F4FD0
:109D6000AF4FBF4F892F9A2FAB2FBB27A7FDBA95B7
:109D700090939C0280939B0257FF04C021503F4F59
:109D80004F4F5F4FBB2757FDBA95A52F942F832FB9
:109D900090939E0280939D02809182029091830213
:109DA00081349105DCF480918002909181028134AC
:109DB0009105A4F48091B005E82FFF27EE0FFF1F57
:109DC000E952F94F808191810190F081E02DF7FFF8
:109DD00003C0F095E195FF4F7A97E4F080910F086A
:109DE0008F3FC1F480919B0290919C0297FD019658
:109DF0009595879590939C0280939B0280919D02FC
:109E000090919E0297FD01969595879590939E025D
:109E100080939D0280915E0790915F07A0916007FB
:109E2000B0916107B7FF04C081509F4FAF4FBF4F44
:109E3000892F9A2FAB2FBB27A7FDBA9580935E077A
:109E400090935F07A0936007B093610780915007DC
:109E500090915107A0915207B0915307B7FF04C0EA
:109E600081509F4FAF4FBF4F892F9A2FAB2FBB27EA
:109E7000A7FDBA958093500790935107A09352077E
:109E8000B09353078091050390910603A0910703B7
:109E9000B09108032B813C814D815E81281B390BD9
:109EA0004A0B5B0B20933A0330933B0340933C03F4
:109EB00050933D038091FD029091FE02A091FF021C
:109EC000B0910003EF80F88409851A85E81AF90A31
:109ED0000A0B1B0BE0923E03F0923F0300934003FA
:109EE0001093410320934203309343034093440370
:109EF00050934503E0924603F092470300934803D2
:109F0000109349038091E1029091E202A091E30253
:109F1000B091E402821B930BA40BB50B8093E1027A
:109F20009093E202A093E302B093E4028091D902FD
:109F30009091DA02A091DB02B091DC028E199F09A8
:109F4000A00BB10B8093D9029093DA02A093DB02AD
:109F5000B093DC02FC85FF23E1F02091BB0230913D
:109F6000BC02213831054CF0809116039091170303
:109F70000196909317038093160320583F4F4CF49B
:109F80008091160390911703019790931703809384
:109F900016031092BC021092BB0281E090E09093F5
:109FA0005E0380935D03E0904203F09043030091D1
:109FB000440310914503D801C70117FF07C0882744
:109FC0009927DC018E199F09A00BB10B815092409B
:109FD000A040B04034F084E090E090935E03809322
:109FE0005D038091630390916403A0916503B09138
:109FF0006603209167073091680740916907509187
:10A000006A07821B930BA40BB50B815E914BAF4F7C
:10A01000BF4F8F539C49A040B04028F0809110085A
:10A0200089310CF4FFC041E0E41640E1F40640E061
:10A03000040740E014070CF473C080915F03882389
:10A0400009F46AC0D801C70117FF07C088279927FC
:10A05000DC018E199F09A00BB10B9C01AD01B7FF6C
:10A0600004C021503E4F4F4F5F4FF9E05595479543
:10A0700037952795FA95D1F780915D0390915E030E
:10A08000820F931F90935E0380935D03D801C701F5
:10A0900017FF03C00796A11DB11DE3E0B595A79575
:10A0A00097958795EA95D1F7809351039093520342
:10A0B000A0935303B093540389589341A040B040F8
:10A0C00064F088E893E1A0E0B0E0809351039093BE
:10A0D0005203A0935303B093540320915103309142
:10A0E0005203409153035091540357FF04C0215031
:10A0F0003F4F4F4F5F4F232F342F452F552747FD9D
:10A100005A9580919B0290919C02820F931F90938D
:10A110009C0280939B0206C081E080935F0302C093
:10A1200010925F0360E0E61660EFF6066FEF060739
:10A130006FEF16070CF073C080916003882309F459
:10A140006AC0D801C70117FF07C088279927DC011B
:10A150008E199F09A00BB10B9C01AD01B7FF04C084
:10A1600021503E4F4F4F5F4F69E0559547953795CA
:10A1700027956A95D1F780915D0390915E03820FD8
:10A18000931F90935E0380935D03D801C70117FF6F
:10A1900003C00796A11DB11D23E0B595A79597951E
:10A1A00087952A95D1F78093510390935203A093FA
:10A1B0005303B093540388579C4EAF4FBF4F64F482
:10A1C00088E79CEEAFEFBFEF80935103909352036B
:10A1D000A0935303B0935403209151033091520341
:10A1E000409153035091540357FF04C021503F4FF7
:10A1F0004F4F5F4F232F342F452F552747FD5A953B
:10A2000080919B0290919C02820F931F90939C02DD
:10A2100080939B0211C081E0809360030DC0109277
:10A2200060030AC010925E0310925D0388EE93E013
:10A230009093DA018093D9018C85282F3327809160
:10A240005D0390915E032817390724F430935E0371
:10A2500020935D0310911008112379F0212F3327EB
:10A2600027FD309580915D0390915E032817390793
:10A2700024F430935E0320935D0340914203509198
:10A2800043036091440370914503413851056105D2
:10A29000710574F080911A0390911B0320915D0366
:10A2A00030915E03820F931F90931B0380931A03D8
:10A2B00040585F4F6F4F7F4F74F480911A03909115
:10A2C0001B0320915D0330915E03821B930B9093DF
:10A2D0001B0380931A0381E090E090935E038093C8
:10A2E0005D03C0904603D0904703E0904803F09090
:10A2F0004903D701C601F7FE07C088279927DC016B
:10A300008C199D09AE09BF0981509240A040B04010
:10A3100034F084E090E090935E0380935D0380913D
:10A32000670390916803A0916903B0916A0320913B
:10A330006F07309170074091710750917207821B2F
:10A34000930BA40BB50B815E914BAF4FBF4F8F5357
:10A350009C49A040B04018F019310CF4FFC001E056
:10A36000C01600E1D00600E0E00600E0F0060CF4C4
:10A3700073C080916103882309F46AC0D701C601C4
:10A38000F7FE07C088279927DC018C199D09AE09C3
:10A39000BF099C01AD01B7FF04C021503E4F4F4F94
:10A3A0005F4F09E055954795379527950A95D1F761
:10A3B00080915D0390915E03820F931F90935E03E3
:10A3C00080935D03D701C601F7FE03C00796A11D68
:10A3D000B11D13E0B595A795979587951A95D1F777
:10A3E0008093550390935603A0935703B09358035B
:10A3F00089589341A040B04064F088E893E1A0E020
:10A40000B0E08093550390935603A0935703B09305
:10A4100058032091550330915603409157035091B2
:10A42000580357FF04C021503F4F4F4F5F4F232F1A
:10A43000342F452F552747FD5A9580919D029091C5
:10A440009E02820F931F90939E0280939D0206C0EE
:10A4500081E08093610302C01092610320E0C21684
:10A4600020EFD2062FEFE2062FEFF2060CF073C0BA
:10A4700080916203882309F46AC0D701C601F7FE00
:10A4800007C088279927DC018C199D09AE09BF09EF
:10A490009C01AD01B7FF04C021503E4F4F4F5F4FAD
:10A4A000E9E05595479537952795EA95D1F780913D
:10A4B0005D0390915E03820F931F90935E038093E0
:10A4C0005D03D701C601F7FE03C00796A11DB11DAC
:10A4D00073E0B595A795979587957A95D1F7809371
:10A4E000550390935603A0935703B093580388578E
:10A4F0009C4EAF4FBF4F64F488E79CEEAFEFBFEFC9
:10A500008093550390935603A0935703B093580339
:10A5100020915503309156034091570350915803B1
:10A5200057FF04C021503F4F4F4F5F4F232F342F11
:10A53000452F552747FD5A9580919D0290919E0287
:10A54000820F931F90939E0280939D0211C081E021
:10A55000809362030DC0109262030AC010925E03E2
:10A5600010925D0388EE93E09093DA018093D90115
:10A570004C85242F332780915D0390915E0328172B
:10A58000390724F430935E0320935D038091100813
:10A59000882379F0282F332727FD309580915D039C
:10A5A00090915E032817390724F430935E032093BB
:10A5B0005D034091460350914703609148037091B9
:10A5C0004903413851056105710574F08091180304
:10A5D0009091190320915D0330915E03820F931FC8
:10A5E000909319038093180340585F4F6F4F7F4F2C
:10A5F000CCF4809118039091190320915D03309160
:10A600005E03821B930B90931903809318030AC077
:10A6100010929E0210929D0210929C0210929B0238
:10A620001092BD0280917407882341F410929E021B
:10A6300010929D0210929C0210929B0280916707DB
:10A6400090916807A0916907B0916A0780936303AE
:10A6500090936403A0936503B093660380916F07A2
:10A6600090917007A0917107B09172078093670372
:10A6700090936803A0936903B0936A031092F50264
:10A680001092F6021092F7021092F8021092F10264
:10A690001092F2021092F3021092F4021092ED0264
:10A6A0001092EE021092EF021092F00210926707E1
:10A6B000109268071092690710926A0710926F074C
:10A6C00010927007109271071092720710925E0735
:10A6D00010925F0710926007109261071092500766
:10A6E00010925107109252071092530710923402A1
:10A6F00010923302E090AB02F090AC02C701F7FE7B
:10A7000004C0882799278E199F0940976CF088EE1E
:10A7100093E09093DA018093D9018091B90584FD8B
:10A7200003C081E0809350031091C505A12EBB2486
:10A73000CC24DD24B701882777FD8095982F9701D9
:10A74000F7FE04C0222733272E193F09442737FD7F
:10A750004095542F0E94BC769B01AC01C601B50107
:10A760000E94BC7697FF04C061507E4F8F4F9F4F71
:10A7700059E095958795779567955A95D1F79B01FF
:10A78000812F99278E9DD0018F9DB00D9E9DB00D7C
:10A790001124CD01B7FD03969595879595958795DD
:10A7A000280F391F442737FD4095542F2093360337
:10A7B0003093370340933803509339038091D50287
:10A7C0009091D602A091D702B091D802821B930B30
:10A7D000A40BB50B8093D5029093D602A093D70219
:10A7E000B093D8028155934CA040B04064F080E50E
:10A7F00093ECA0E0B0E08093D5029093D602A093B2
:10A80000D702B093D8028091D5029091D602A09140
:10A81000D702B091D802805B9C43AF4FBF4F64F426
:10A8200080EB9CE3AFEFBFEF8093D5029093D6020D
:10A83000A093D702B093D8024090C3025090C402B4
:10A840004114510409F478C18091B90583FF74C1A2
:10A850008091050390910603A0910703B09108032E
:10A86000B7FF04C081509E4FAF4FBF4F39E0B59541
:10A87000A795979587953A95D1F76C0197FF04C0F6
:10A88000D094C194D108D3948091FD029091FE029E
:10A89000A091FF02B0910003B7FF04C081509E4F0A
:10A8A000AF4FBF4F29E0B595A795979587952A9506
:10A8B000D1F7BC0197FF03C0709561957F4FC61615
:10A8C000D7060CF46B01B601D7FE02C0695F7F4F5B
:10A8D0003B0183E0759467948A95E1F702E0E02EEE
:10A8E000F12C6E0C7F1C0CE112E0400E511E720127
:10A8F0000027F7FC0095102F24EE3DEF420E531E6B
:10A9000080919D0790919E07A0919F07B091A0070D
:10A910008090960190909701A0909801B090990135
:10A92000BC01CD01A50194010E943077E21AF30A1F
:10A93000040B150BC801B70128E631E040E050E0F8
:10A940000E943077DC01CB011CE4E12E1FEFF12ED9
:10A95000E80EF91E0091D9011091DA0101151105D7
:10A9600089F539E1C316D1046CF58091BB02909151
:10A97000BC028E0D9F1D9093BC028093BB02809100
:10A9800050038823F9F0C201AA2797FDA095BA2F9A
:10A99000BC01CD01A50194010E94BC76DC01CB0174
:10A9A00080939D0790939E07A0939F07B093A00765
:10A9B000BC01CD010E9430773093C2022093C102C6
:10A9C00010925003C701B4E0880F991FBA95E1F7C0
:10A9D000B3010E94FB76CB01AA2797FDA095BA2F61
:10A9E00020919D0730919E0740919F075091A007AD
:10A9F000280F391F4A1F5B1F20939D0730939E0726
:10AA000040939F075093A007F090CA016F2D7727BE
:10AA1000C69EC001C79E900DD69E900D112497FD35
:10AA20004F966C01A5E0D594C794AA95E1F76C19EF
:10AA30007D096B0177FD7AC00115110509F06FC022
:10AA40000091820210918302809180029091810294
:10AA5000080F191F17FF02C0095F1F4FF3E015957C
:10AA60000795FA95E1F7005C1F4FCA01B901A501EE
:10AA700094010E943077DA01C9012091C10230911E
:10AA8000C202442737FD4095542F821B930BA40B21
:10AA9000B50B845E9D4FAF4FBF4FBC01CD0128E683
:10AAA00031E040E050E00E943077DC01CB01845B74
:10AAB00090408C9DA0018D9D500D9C9D500D1124AA
:10AAC000CA01B8010E94FB7683E0F89E6001112460
:10AAD000C616D70614F4B60108C0882799278C1922
:10AAE0009D09681779070CF4BC019B01442737FDC9
:10AAF0004095542F8091D5029091D602A091D70213
:10AB0000B091D802820F931FA41FB51F8093D50266
:10AB10009093D602A093D702B093D8020DC00150F3
:10AB200010401093DA010093D90106C084EF91E040
:10AB30009093DA018093D9018091BD02882381F03E
:10AB40001092C9021092CA021092CB021092CC024B
:10AB50001092CD021092CE021092CF021092D0022B
:10AB6000F0909802FF20F1F480917407282F33278A
:10AB7000442755278091050390910603A091070370
:10AB8000B0910803BC01CD010E94BC76DC01CB0171
:10AB9000BC01CD0128EF3AE240E050E00E9430775E
:10ABA000390102C066247724E0909702EE20F1F488
:10ABB00080917407282F3327442755278091FD0261
:10ABC0009091FE02A091FF02B0910003BC01CD0163
:10ABD0000E94BC76DC01CB01BC01CD0128EF3AE23A
:10ABE00040E050E00E943077290102C044245524FF
:10ABF00080914A0790914B07893C91051CF088ECA5
:10AC000090E005C088539F4F34F488E39FEF909302
:10AC10004B0780934A078091550790915607893CCE
:10AC200091051CF088EC90E005C088539F4F34F4E8
:10AC300088E39FEF909356078093550780915707BD
:10AC400090915807AA2797FDA095BA2F20919B07AE
:10AC5000A22EBB24CC24DD24BC01CD01A60195018C
:10AC60000E94BC769B01AC0180914A0790914B07F2
:10AC7000AA2797FDA095BA2FE7E0880F991FAA1F72
:10AC8000BB1FEA95D1F7280F391F4A1F5B1F57FFDB
:10AC900004C0215C3F4F4F4F5F4F76E0559547957D
:10ACA000379527957A95D1F78301020F131F1093DB
:10ACB0005807009357078091480790914907AA27A2
:10ACC00097FDA095BA2FBC01CD01A60195010E9468
:10ACD000BC769B01AC018091550790915607AA273D
:10ACE00097FDA095BA2F67E0880F991FAA1FBB1F79
:10ACF0006A95D1F7280F391F4A1F5B1F57FF04C001
:10AD0000215C3F4F4F4F5F4F96E0559547953795E4
:10AD100027959A95D1F74201820E931E909249078A
:10AD2000809248078091960790919707880F991F06
:10AD3000AA2797FDA095BA2F20914F0733274427C4
:10AD40005527BC01CD010E94BC765B016C0197FFC9
:10AD500008C08FE390E0A0E0B0E0A80EB91ECA1EC4
:10AD6000DB1E86E0D594C794B794A7948A95D1F753
:10AD700080916407282F3327442755278091E902C3
:10AD80009091EA02A091EB02B091EC02BC01CD01DE
:10AD90000E94BC76DC01CB01BC01CD0120EF35E582
:10ADA00040E050E00E943077B501620F731F70934E
:10ADB0009707609396070150104134F080E090E1CE
:10ADC00090935807809357078091570790915807A1
:10ADD0008050904F34F480E090EF90935807809328
:10ADE0005707B1E08B16B0E19B0634F080E090E1AC
:10ADF00090934907809348078091480790914907AD
:10AE00008050904F34F480E090EF90934907809306
:10AE100048076150704134F080E090E190939707CB
:10AE20008093960780919607909197078050904F56
:10AE300034F480E090EF9093970780939607809189
:10AE40000001482F552780911E0190911F0148173E
:10AE5000590794F420911E0130911F0169817A8174
:10AE6000649FC001659F900D749F900D1124B901DE
:10AE70000E94E7767A83698389819A81880F991F76
:10AE8000880F991F9A8389834091B90540FFBDC6F9
:10AE9000EE2009F0BAC6FF2009F0B7C6AA24BB24E9
:10AEA00045018091990290919A0290938205809336
:10AEB000810520911C0330911D032115310509F0F6
:10AEC0003FC080911401909115018959934058F029
:10AED00087B5853F20F480913702815011C081E011
:10AEE000809376034EC080911401909115018436B1
:10AEF000910508F587B58B30D0F0809137028F5FD0
:10AF0000809337029AE08902900111248091A8056C
:10AF1000821B87BD8CE291E09093250280932402EE
:10AF20008EE591E090931D0380931C032AC081E07D
:10AF30008093750326C0F0927503F092760321C0CA
:10AF40008091A3029091A402A091A502B091A602C3
:10AF500014E0880F991FAA1FBB1F1A95D1F7809381
:10AF6000380290933902A0933A02B0933B02B09218
:10AF70003602A09235022150304030931D032093B9
:10AF80001C032091CD0141FF24C02233D8F48091CD
:10AF9000DF0181508093DF018F3FD9F51092BE020F
:10AFA0008091A3029091A402A091A502B091A60263
:10AFB00080939F029093A002A093A102B093A2025B
:10AFC00081E004C081E08093BE0288EC8093DF01C1
:10AFD00020C080919A0190919B01820F911D209138
:10AFE000BE053327829FF001839FF00D929FF00DE5
:10AFF0001124CF01AA2797FDA095BA2F80939F0215
:10B000009093A002A093A102B093A20281E080934A
:10B01000BE028091050390910603A0910703B091B1
:10B020000803E0909601F09097010091980110912B
:10B030009901BC01CD01A80197010E943077590107
:10B040006A018091FD029091FE02A091FF02B091F1
:10B050000003BC01CD01A80197010E943077B9011E
:10B06000C5010E94E5748C01CC9714F00CE310E04C
:10B07000C8010E9406698C0180E28093950180914D
:10B08000BE02882309F447C480917D0299279C0160
:10B090002071307084FD3FC46091120660FD04C0D1
:10B0A0008091B90581FD0CC0C980DA8030936C03B2
:10B0B00020936B0380917D02806C80937D0299C107
:10B0C00080917D0281FF6BC14091DB015091DC01D9
:10B0D000CA010F962091A9023091AA028217930704
:10B0E000BCF580917503882399F580917D0287FFD7
:10B0F00015C080917D028F7780937D028091A3029D
:10B100009091A402A091A502B091A60280939F0203
:10B110009093A002A093A102B093A20280917D021D
:10B12000806480937D02241B350B2F50304037FF05
:10B1300003C0309521953F4F80916B0390916C0334
:10B14000820F931F90936C0380936B038BE26EC00E
:10B15000CA010F9728173907BCF580917603882319
:10B1600099F580917D0286FF15C080917D028F7BCD
:10B1700080937D028091A3029091A402A091A502E8
:10B18000B091A60280939F029093A002A093A10287
:10B19000B093A20280917D02806880937D02241B7F
:10B1A000350B215F3F4F37FF03C0309521953F4F4F
:10B1B00080916B0390916C03821B930B90936C03B3
:10B1C00080936B038DE232C080917D02807C69F1B7
:10B1D00080917D028F7380937D0210926C03109298
:10B1E0006B032091A3023091A4024091A5025091DB
:10B1F000A60220939F023093A0024093A102509395
:10B20000A20261FF06C084EF91E090932502809333
:10B2100024028091A702882341F42333310541059C
:10B2200051051CF081E08093A7028DE38093950186
:10B2300020916B0330916C03C90137FF04C088274C
:10B240009927821B930B815092400CF491C08091FE
:10B25000BE059927289F7001299FF00C389FF00C9C
:10B260001124C70160E075E00E94FB76CB01AA279C
:10B2700097FDA095BA2F20919F023091A002409196
:10B28000A1025091A202280F391F4A1F5B1F209371
:10B290009F023093A0024093A1025093A202109209
:10B2A0006C0310926B03C090A302D090A402E090B4
:10B2B000A502F090A602D701C60180509440A0409C
:10B2C000B04082179307A407B5075CF4D701C60105
:10B2D00080509C4FAF4FBF4F281739074A075B0775
:10B2E00044F080939F029093A002A093A102B09398
:10B2F000A2028091120681FF06C084E690E090933E
:10B300002502809324028091C205882389F540910B
:10B31000990250919A0257FF02C04D5F5F4F5595B9
:10B3200047955595479580911E0190911F01209159
:10B3300000013327489FB001499F700D589F700D41
:10B340001124CB01B9010E94FB767093DC0160935C
:10B35000DB01663471051CF486E490E005C06739B2
:10B36000710534F086E990E09093DC018093DB0175
:10B3700080911C0390911D03892BB9F18091A30248
:10B380009091A402A091A502B091A60280939F0281
:10B390009093A002A093A102B093A20226C0809134
:10B3A000A3029091A402A091A502B091A602805997
:10B3B0009140A040B04080939F029093A002A09340
:10B3C000A102B093A2028091C205882311F09927AF
:10B3D00002C088E790E09093DC018093DB018981D3
:10B3E0009A8190939A0280939902C0909902D0908A
:10B3F0009A022091A3023091A4024091A50250919B
:10B40000A6022B8B3C8B4D8B5E8B20919F02309143
:10B41000A0024091A1025091A2026B897C898D8982
:10B420009E89261737074807590724F0809112068E
:10B4300080FDB8C280911C0390911D03892B39F0C7
:10B44000C0909902D0909A02AA24BB24D9C08B89BB
:10B450009C89AD89BE89821B930BA40BB50B80938D
:10B460003A0390933B03A0933C03B0933D03823097
:10B4700070E897077FEFA7077FEFB7072CF481E00D
:10B4800090E8AFEFBFEF09C08F5F9F47A040B0408B
:10B4900064F08FEF9FE7A0E0B0E080933A039093D1
:10B4A0003B03A0933C03B0933D03A0903A03B090BC
:10B4B0003B038091CC01282F3327442755278091C7
:10B4C0003A0390913B03A0913C03B0913D03BC0132
:10B4D000CD010E94BC7697FF04C0615E7F4F8F4F05
:10B4E0009F4FA5E09595879577956795AA95D1F794
:10B4F00060933A0370933B0380933C0390933D0326
:10B500006530FEEF7F07FFEF8F07FFEF9F072CF4FB
:10B5100084E09EEFAFEFBFEF09C060507440804001
:10B52000904064F080E094E0A0E0B0E080933A03C3
:10B5300090933B03A0933C03B0933D0380903A0368
:10B5400090903B03209135023091360237FF02C0C4
:10B55000295F3F4FF3E035952795FA95E1F74FEFD7
:10B56000223834071CF421E83FEF05C020383105AC
:10B5700014F020E830E0C901AA2797FDA095BA2F62
:10B580002091CE01332744275527BC01CD010E94CD
:10B59000BC7697FF04C06D5F7F4F8F4F9F4FE2E0F7
:10B5A0009595879577956795EA95D1F79B015FEF1C
:10B5B000613075071CF420E03FEF06C06F3F710556
:10B5C00019F014F020E031E080917D02807C49F098
:10B5D000C90137FD03969C0135952795359527952B
:10B5E0000DC08091120680FF09C0C90137FD079682
:10B5F0009C0143E0359527954A95E1F7820E931E0D
:10B600002091CB01222309F454C06091C5027091AE
:10B61000C6028091C7029091C80297FF04C061588A
:10B620007F4F8F4F9F4F37E095958795779567951B
:10B630003A95D1F73327442755270E94BC7697FFC8
:10B6400004C0615E7F4F8F4F9F4FB5E09595879502
:10B6500077956795BA95D1F760933A0370933B035A
:10B6600080933C0390933D036138AFEF7A07AFEFCF
:10B670008A07AFEF9A072CF480E89FEFAFEFBFEF98
:10B680000AC06F3F71058105910569F064F080E0A3
:10B6900091E0A0E0B0E080933A0390933B03A09345
:10B6A0003C03B0933D0380913A0390913B03880E95
:10B6B000991E8091C901282F33278091130899275B
:10B6C00087FD9095289FF001299FF00D389FF00D80
:10B6D00011249F01F7FF02C021583F4F220F232F53
:10B6E000221F330BFFEF21383F071CF420E83FEF08
:10B6F00006C02F3F310519F014F020E031E0820E32
:10B70000931EC401AA2797FDA095BA2FE090990235
:10B71000F0909A029701442737FD4095542FBC01C1
:10B72000CD010E94BC7697FF04C061507E4F8F4FC1
:10B730009F4FF9E09595879577956795FA95D1F79D
:10B74000C61AD70A80916B0390916C03892B09F07C
:10B7500060C01E141F040CF05CC09501B7FE03C04E
:10B76000309521953F4F2D33310540F480916F0383
:10B77000909170038C159D0574F526C02C533040B4
:10B78000E5E036952795EA95E1F72031310510F08F
:10B790002FE030E040916F03509170031A141B04A6
:10B7A000E4F480E190E0821B930B489F9001499F55
:10B7B000300D589F300D112474E0369527957A95F9
:10B7C000E1F72C153D0520F58091DD019091DE011A
:10B7D000C816D906F4F06C011CC0205F3F4F809161
:10B7E000DD019091DE01829FB001839F700D929FD9
:10B7F000700D11249B0164E0369527956A95E1F759
:10B800004C155D0514F06A0104C0C216D30608F099
:10B810006901C601AA2797FDA095BA2F2DE0880FD0
:10B82000991FAA1FBB1F2A95D1F79801442737FDFE
:10B830004095542FBC01CD010E94307720933E03E8
:10B8400030933F034093400350934103C0903E0325
:10B85000D0903F0380916D0390916E039C01220F65
:10B86000331F280F391F2C0D3D1D37FF02C02D5FE0
:10B870003F4FA901559547955595479550936E03B0
:10B8800040936D038091BA05282F3327220F331F71
:10B89000220F331F241735076CF480919507282F4A
:10B8A0003327220F331F220F331F205530404217FA
:10B8B000530724F030936E0320936D03809112069A
:10B8C00080FF14C080916D0390916E03A981BA81AD
:10B8D0008A179B0724F0B0936E03A0936D03E09149
:10B8E0006D03F0916E03FA83E9835CC029813A818C
:10B8F0002E193F0937FF02C02D5F3F4F3595279521
:10B9000035952795E0906D03F0906E03E20EF31EDF
:10B91000FA82E98247C08091C205882301F56091CF
:10B92000990270919A0277FF02C06D5F7F4F759503
:10B9300067957595679540911E0150911F01809103
:10B940000001282F3327649FC001659F900D749FCD
:10B95000900D1124B9010E94FB76CB0101C09927FB
:10B960009093DC018093DB018091DB019091DC01FD
:10B97000873491051CF486E490E005C08639910572
:10B9800034F086E990E09093DC018093DB0129811B
:10B990003A8130936E0320936D0380917D02806C19
:10B9A00080937D0280917D0299279C0122703070E6
:10B9B00081FF1CC18091710390917203A091730368
:10B9C000B09174030097A105B10521F08091A70201
:10B9D0008130B1F449815A81CA01AA2797FDA09507
:10B9E000BA2F2EE0880F991FAA1FBB1F2A95D1F7E7
:10B9F0008093710390937203A0937303B0937403C5
:10BA00008091A702813019F482E08093A7026981B6
:10BA10007A81CB01AA2797FDA095BA2F98014427D8
:10BA200037FD4095542FBC01CD010E94BC76DC014E
:10BA3000CB0180933E0390933F03A0934003B093C8
:10BA40004103B7FF04C08150904EAF4FBF4F7C0100
:10BA50008D01FDE015950795F794E794FA95D1F7D8
:10BA6000E0923E03F0923F030093400310934103A2
:10BA700060917E0270917F028FE0603A780750F506
:10BA80008091710390917203A0917303B09174033C
:10BA90009C01AD01EAE05695479537952795EA95C3
:10BAA000D1F7821B930BA40BB50BA8019701F4E00F
:10BAB000220F331F441F551FFA95D1F7820F931F92
:10BAC000A41FB51F8093710390937203A093730317
:10BAD000B093740360547F4118F580917103909185
:10BAE0007203A0917303B09174039C01AD01ECE06B
:10BAF0005695479537952795EA95D1F7821B930B75
:10BB0000A40BB50BA801970172E0220F331F441F4D
:10BB1000551F7A95D1F7820F931FA41FB51F29C017
:10BB200080913502909136028091350290913602D3
:10BB300097FF03C0909581959F4F843691050CF532
:10BB40008091710390917203A0917303B09174037B
:10BB50009C01AD016EE056954795379527956A95FE
:10BB6000D1F7821B930BA40BB50B8E0D9F1DA01F4D
:10BB7000B11F8093710390937203A0937303B093EA
:10BB800074038091710390917203A0917303B0913B
:10BB900074031EE0B695A795979587951A95D1F7EA
:10BBA00090939A02809399024091C005442399F0A2
:10BBB00055279C01BA010E94FB76C901861B970B91
:10BBC0009093700380936F03260F371F3093DE012D
:10BBD0002093DD011FC01092700310926F038FEF4E
:10BBE00093E09093DE018093DD0114C01092A702D0
:10BBF00010927103109272031092730310927403E7
:10BC000030939A022093990205C080917D02806C46
:10BC100080937D0220905C07222D3327220F331F53
:10BC2000220F331F285D3F4FA981BA812A173B0796
:10BC300014F03A83298330909507832D9927880F34
:10BC4000991F880F991F80559040E981FA818E17BE
:10BC50009F0714F49A83898380916D02882321F4CD
:10BC600080911A088F3FA1F080917E0290917F020F
:10BC70000297C09768F4E980FA801E141F0444F408
:10BC800081E090E090937F0280937E023A83298343
:10BC900009811A811093660500936505809136032A
:10BCA00090913703A0913803B0913903F2E0880FE7
:10BCB000991FAA1FBB1FFA95D1F700919607109103
:10BCC0009707081B190B29813A81213A31058CF01D
:10BCD000C90137FD019695958795801791070CF45A
:10BCE0008C01909581959F4F081719076CF48C0172
:10BCF0000BC00135110514F000E510E03FEF003BEB
:10BD0000130714F400EB1FEF232D3327220F331FEB
:10BD1000220F331FC90149815A81841B950B80175B
:10BD200091070CF48C0169817A81621B730B0617F1
:10BD300017070CF48B018091570790915807609179
:10BD4000AF027091B002861B970B909366078093A9
:10BD50006507D09074072091CD023091CE024091BA
:10BD6000CF025091D002DD2041F0661A770AC3015C
:10BD7000AA2797FDA095BA2F04C0AA2797FDA095E2
:10BD8000BA2F280F391F4A1F5B1F2093CD02309313
:10BD9000CE024093CF025093D0028091CD02909179
:10BDA000CE02A091CF02B091D00281509A4FA04014
:10BDB000B04064F080E09AEFA0E0B0E08093CD0264
:10BDC0009093CE02A093CF02B093D0028091CD0287
:10BDD0009091CE02A091CF02B091D00280509640B7
:10BDE000AF4FBF4F64F480E096E0AFEFBFEF8093BA
:10BDF000CD029093CE02A093CF02B093D002C09018
:10BE0000CF052091650730916607F8E0FC1598F0A2
:10BE10008C2D9927829F7001839FF00C929FF00CCC
:10BE20001124C701F7FC07967C0163E0F594E794C1
:10BE30006A95E1F712C08C2D86959927829FA00103
:10BE4000839F500D929F500D1124CA0157FD0396F8
:10BE50007C01F594E794F594E794A090CF01B0901D
:10BE6000D0019501442737FD4095542F8091CD0294
:10BE70009091CE02A091CF02B091D002BC01CD0131
:10BE80000E943077E20EF31E9090BB01692D772758
:10BE900088279927980117FF04C022273327201BE2
:10BEA000310B37FF02C02F5F3F4F35952795A98192
:10BEB000BA812A0F3B1F442737FD4095542F0E941B
:10BEC000BC7697FF04C0615C7F4F8F4F9F4F26E089
:10BED00095958795779567952A95D1F79B016E156E
:10BEE0007F050CF47B01309521953F4FE216F30658
:10BEF0000CF4790180914807909149076091AD0257
:10BF00007091AE02861B970B90934707809346076C
:10BF10002091C9023091CA024091CB025091CC02CB
:10BF2000DD2041F0461A570AC201AA2797FDA095C5
:10BF3000BA2F04C0AA2797FDA095BA2F280F391F42
:10BF40004A1F5B1F2093C9023093CA024093CB0261
:10BF50005093CC028091C9029091CA02A091CB0269
:10BF6000B091CC0281509A4FA040B04064F080E084
:10BF70009AEFA0E0B0E08093C9029093CA02A09328
:10BF8000CB02B093CC028091C9029091CA02A091D9
:10BF9000CB02B091CC0280509640AF4FBF4F64F4BB
:10BFA00080E096E0AFEFBFEF8093C9029093CA02A2
:10BFB000A093CB02B093CC02209146073091470763
:10BFC00048E04C1598F08C2D9927829FB001839FF3
:10BFD000700D929F700D1124CB0177FD07966C01B7
:10BFE000B3E0D594C794BA95E1F712C0C6948C2DEE
:10BFF0009927829FD001839FB00D929FB00D11248D
:10C00000CD01B7FD03966C01D594C794D594C79420
:10C010009501442737FD4095542F8091C902909196
:10C02000CA02A091CB02B091CC02BC01CD010E940A
:10C030003077C20ED31E692D77278827992798015C
:10C0400017FF04C022273327201B310B37FF02C004
:10C050002F5F3F4F35952795E981FA812E0F3F1FBE
:10C06000442737FD4095542F0E94BC7697FF04C0AB
:10C07000615C7F4F8F4F9F4FE6E095958795779551
:10C080006795EA95D1F79B016C157D050CF46B0162
:10C09000309521953F4FC216D3060CF4690166E72F
:10C0A000862E66E0962E5DE2A52E56E0B52E4BE07C
:10C0B000542E35E7632E37E0732ED5012C911216DE
:10C0C0000CF014C1203429F4E981FA81F88FEF8B48
:10C0D0001FC049815A81CA01AA2797FDA095BA2F8E
:10C0E000332727FD3095432F532FBC01CD010E94EC
:10C0F000BC7697FF04C0615C7F4F8F4F9F4F26E057
:10C1000095958795779567952A95D1F7788F6F8B59
:10C11000F5012181203439F42F89388D2E0D3F1DF2
:10C12000388F2F8B2AC0203C39F44F89588D4E19F7
:10C130005F09588F4F8B21C0C701AA2797FDA09593
:10C14000BA2F332727FD3095432F532FBC01CD0144
:10C150000E94BC7697FF04C0615C7F4F8F4F9F4F5A
:10C16000B6E09595879577956795BA95D1F7AF899C
:10C17000B88DA60FB71FB88FAF8BF5012281203481
:10C1800039F42F89388D2C0D3D1D388F2F8B2AC007
:10C19000203C39F44F89588D4C195D09588F4F8BCD
:10C1A00021C0C601AA2797FDA095BA2F332727FDE6
:10C1B0003095432F532FBC01CD010E94BC7697FFD1
:10C1C00004C0615C7F4F8F4F9F4FA6E09595879588
:10C1D00077956795AA95D1F7AF89B88DA60FB71F48
:10C1E000B88FAF8BF5012381203439F42F89388D36
:10C1F000200F311F388F2F8B2AC0203C39F44F89F4
:10C20000588D401B510B588F4F8B21C0C801AA2756
:10C2100097FDA095BA2F332727FD3095432F532F35
:10C22000BC01CD010E94BC7697FF04C0615C7F4FCA
:10C230008F4F9F4FF6E09595879577956795FA957F
:10C24000D1F7AF89B88DA60FB71FB88FAF8BF301A9
:10C25000808191812F89388D8217930764F4B90109
:10C26000680F791F77FF02C06F5F7F4F75956795E5
:10C27000788F6F8B08C04F89588D440F551F481B0E
:10C28000590B588F4F8B822D9927880F991F880F34
:10C29000991F6F89788D861797075CF4832D9927EE
:10C2A000880F991F880F991FAF89B88DA817B907F4
:10C2B00014F0988F8F8B8F89988D97FD03969595A5
:10C2C000879595958795F4018183880F991F880F2D
:10C2D000991F2F89388D281B390BC901880F82833C
:10C2E000EF89F88DD301ED93FC9303C0F401118223
:10C2F00012825A9422E030E0620E731E44E050E055
:10C30000A40EB51E68E070E0860E971E57FED5CECF
:10C31000E2E1C85E0C946777809183039091840377
:10C32000A0918503B091860380937B0390937C0357
:10C33000A0937D03B0937E0380917F03909180034F
:10C34000A0918103B0918203809377039093780347
:10C35000A0937903B0937A03089510928E031092FC
:10C360008D0310928C0310928B03089584B1806A20
:10C3700084B93D9A82E58CBD1DBC459A81E08093CD
:10C38000A7078AEA8093B80783E88093B9078AE011
:10C390008093BA071092BC071092BB071092BE0799
:10C3A0001092BD07109212081092DA07089530918A
:10C3B000A707332309F085C00DB407FE82C084E0CF
:10C3C00080932302459A2EB580919203992781305C
:10C3D000910589F0823091051CF4892B21F03EC033
:10C3E0000297B9F03BC03093D907209393032138CB
:10C3F000A9F581E008C0253549F480919303820FA7
:10C400008093930382E08093920328C03093920339
:10C4100025C08091D907E82FFF27EB50F84F2083E4
:10C420008F5F8093D907909193038A31A0F02917E9
:10C4300069F48AE1A5EFB7E0EBEDF7E00D9001922A
:10C440008A95E1F781E08093DA0702C03093DA073A
:10C450001092920303C0920F909393032091B70719
:10C46000203208F028C045980000000000000000BD
:10C4700000000000000000000000000000000000BC
:10C4800000000000000000000000000000000000AC
:10C490000000000000000000E091B007F091B1073B
:10C4A000E20FF11D80818EBD8091D7079081890FA9
:10C4B0008093D70703C081E08093A7072F5F209365
:10C4C000B7070895EF92FF920F931F938091C805CD
:10C4D0009927880F991F880F991F7C010027F7FC67
:10C4E0000095102F8091050390910603A0910703FA
:10C4F000B0910803BC01CD01A80197010E943077DB
:10C500003093BC072093BB078091FD029091FE02FF
:10C51000A091FF02B0910003BC01CD01A8019701D9
:10C520000E9430773093BE072093BD0720919D076E
:10C5300030919E0740919F075091A007DA01C901F1
:10C54000E3E0880F991FAA1FBB1FEA95D1F7820F5E
:10C55000931FA41FB51F820F931FA41FB51F209107
:10C560009601309197014091980150919901BC0139
:10C57000CD010E9430773093C4072093C307809188
:10C580001603909117032091430230914402821BBD
:10C59000930B9093CA078093C907E0910C03F09125
:10C5A0000D0380916C0790916D07BF010E94FB768F
:10C5B000CB019B01220F331F220F331F280F391F7E
:10C5C000280F391F37FF02C02D5F3F4F3595279544
:10C5D000359527953093C0072093BF078091990721
:10C5E00090919A07BF010E94FB769B01220F331F97
:10C5F000220F331F260F371F260F371F37FF02C0AA
:10C600002D5F3F4F35952795359527953093C20778
:10C610002093C10710920D0310920C0310926D0726
:10C6200010926C0710929A07109299078091BA079E
:10C6300099278D30910509F466C08E3091055CF420
:10C640008B30910509F48EC08C3091050CF00FC130
:10C650000A9761F0ADC18F30910509F481C18F3027
:10C6600091050CF45CC1409799F1A2C180919202AE
:10C670008093CB07809191028093CC0780919002A8
:10C680008093CD0780918F028093CE0780918E0298
:10C690008093CF0780918D028093D00780918C0288
:10C6A0008093D10780918B028093D20780917D0285
:10C6B0008093D30780917D02837F80937D020E94C7
:10C6C000052E8093D407809109038093D50770C10C
:10C6D00080911408909115089093CC078093CB0714
:10C6E00080911808909119089093CE078093CD07F8
:10C6F00080911E0190911F018093CF0780910001CE
:10C700008093D00755C18091FC058093CB07809121
:10C71000FD058093CC078091FE058093CD07809125
:10C72000FF058093CE07809100068093CF0780910C
:10C7300004068093D007809105068093D1078091ED
:10C7400006068093D207809109068093D3078091D3
:10C7500007068093D407809108068093D5078091BF
:10C760000A06DAC0F8948091AF05E82FFF27EE0F94
:10C77000FF1FE952F94F0190F081E02DE038F105FB
:10C780001CF0EFE7F0E006C02FEFE138F20714F4F9
:10C79000E1E8FFEFE093CB078091B005E82FFF279A
:10C7A000EE0FFF1FE952F94F0190F081E02DE038C4
:10C7B000F1051CF0EFE7F0E006C06FEFE138F60797
:10C7C00014F4E1E8FFEFE093CC078091AE05E82F89
:10C7D000FF27EE0FFF1FE952F94F0190F081E02D86
:10C7E000E038F1051CF0EFE7F0E006C08FEFE1382C
:10C7F000F80714F4E1E8FFEFE093CD078091AD0571
:10C80000E82FFF27EE0FFF1FE952F94F0190F0814B
:10C81000E02DE038F1051CF0EFE7F0E006C02FEF67
:10C82000E138F20714F4E1E8FFEF7894E093CE07E3
:10C830008091B2028093CF078091B3028093D0079A
:10C840008091B4028093D1078091B5028093D20782
:10C850008091B6028093D3078091B7028093D4076A
:10C860008091B8028093D5078091B90255C080911C
:10C87000F003863018F01092F00385E08093CB0728
:10C8800080910B068093CC078091A3029091A40223
:10C89000A091A502B091A602BC01CD0125E030E037
:10C8A00040E050E00E9430773093CE072093CD07D0
:10C8B00080919F029091A002A091A102B091A2024A
:10C8C000BC01CD0125E030E040E050E00E9430772F
:10C8D0003093D0072093CF07809101068093D10732
:10C8E000809102068093D207809103068093D3073C
:10C8F0008091B1028093D4078091D7069091D80699
:10C900008093D507809165059091660597FD039604
:10C9100095958795959587958093D60749C01092F0
:10C92000CB0782E58093CC071092CD0780E18093FE
:10C93000CE07809102018093CF078091D503809329
:10C94000D0078091D6038093D1078091D70380933D
:10C95000D2078091D8038093D3078091D90326C052
:10C960008091E1058093CB07809111068093CC07DD
:10C970008091C1018093CD078091DA058093CE0725
:10C980008091DB058093CF078091DC058093D007F1
:10C990008091C0018093D1078091DE058093D207FA
:10C9A0008091DF058093D3078091E0058093D407C1
:10C9B0008091DA07882309F4D8C08AEF8093E901CF
:10C9C0004091DC075091DD07CA0181509E4F8F5F77
:10C9D0009340B0F42091DE073091DF07C901815008
:10C9E0009E4F8F5F934060F48091B90585FF08C02A
:10C9F00050938E0340938D0330938C0320938B03CD
:10CA00008091E2079091E30721E08936920724F4B0
:10CA10009093C4028093C3028091C3029091C40298
:10CA20002091C1023091C202821B930B845E9D4F04
:10CA300068E671E00E94FB76845B90409093C002B0
:10CA40008093BF022091E6073091E707809124028E
:10CA5000909125028217930740F48091F003882378
:10CA600021F430932502209324028091DB0799273B
:10CA70008836910549F18936910524F48736910568
:10CA800031F07BC08936910509F445C076C08091AC
:10CA9000E80780930F088091E9078093110880913F
:10CAA000EA07809310088091EB0780931208809129
:10CAB000EC07809313088091ED078093EA01809141
:10CAC000EE078093910359C08091E8078093B207E5
:10CAD0008091E9078093B3078091EA078093B407B8
:10CAE0008091EB078093B5078091EC078093B607A0
:10CAF000809155059091ED07892B80935505909174
:10CB0000EE0790938F038091560583709C70892B5C
:10CB10008093560532C08091E8078093A8078091E2
:10CB2000E9078093A9078091EA078093AA0780917B
:10CB3000EB078093AB078091EC079091ED07909302
:10CB4000AD078093AC078091EE079091EF0790932B
:10CB5000AF078093AE078091F007992787FD9095E6
:10CB600090930A078093090708C010928E031092D1
:10CB70008D0310928C0310928B031F910F91FF90E5
:10CB8000EF9008958091A707882309F43BC045984A
:10CB900088EB97E09093B1078093B0079091900352
:10CBA000E92FFF27E052FE4F9F5F90939003808113
:10CBB0008093BA07993010F0109290031092A70753
:10CBC0000E94626281E08093B707000000000000CD
:10CBD0000000000000000000000000000000000055
:10CBE0000000000000000000000000000000000045
:10CBF000000000000000000000008091B807809352
:10CC0000D7078EBD089587B18C6087B94298439845
:10CC10001092950380E88093EC0110929403809326
:10CC2000EB01089580919A03815080939A038F3F7E
:10CC300009F0FBC024E020939A0380917D0299279C
:10CC400080739070892B21F48091D60380FF1CC0E3
:10CC50008091FA05882349F080919D03882311F47F
:10CC60002093950381E080939D038091FB058823A9
:10CC7000B9F080919E03882319F484E08093940393
:10CC800081E080939E030CC010929D0310929E033E
:10CC90008091F60580939B038091F80580939C0317
:10CCA00080919D03882309F040C080911006282FB1
:10CCB000332724FF07C08091A802882319F425FD9B
:10CCC0004DC04EC09091F705983F50F080916E078F
:10CCD0008D3D30F080919B0388230CF43FC040C011
:10CCE000983F48F080916E078A3028F480919B032A
:10CCF0008823B4F133C080919503815080939503CC
:10CD00008F3F79F580916E078150809395038091D4
:10CD1000EC01813011F480E801C086958093EC012C
:10CD20008091EC0190919B0317C0809195038150F5
:10CD3000809395038F3FA9F489E0809395038091B8
:10CD4000EC01813011F480E801C086958093EC01FC
:10CD50008091EC019091FA05892311F0429A01C06B
:10CD6000429880919E03882309F043C08091100669
:10CD7000282F332724FF07C08091A802882319F4A5
:10CD800026FD50C034C09091F905983F50F0809135
:10CD900094078D3D30F080919C0388230CF442C0B1
:10CDA00026C0983F48F0809194078A3028F48091FB
:10CDB0009C038823E4F036C08091940381508093D3
:10CDC00094038F3F91F58091940781508093940351
:10CDD0008091EB01813011F480E801C08695809349
:10CDE000EB018091EB0190919C038923D9F4439846
:10CDF0000895809194038150809394038F3FA9F408
:10CE000089E0809394038091EB01813011F480E8F4
:10CE100001C086958093EB018091EB019091FB0519
:10CE2000892311F0439A0895439808954FB724E158
:10CE300030E0F8948091C9008F778093C900809189
:10CE4000C9008F7B8093C9008091C9008F7D80933A
:10CE5000C9005A9A52985B9A539A832F99278093C4
:10CE6000CD002093CC008091C80082608093C800E0
:10CE700080E18093C9008091CA008F778093CA00B7
:10CE80008091CA008F7B8093CA008091CA008F7DF9
:10CE90008093CA008091CA008F7E8093CA008091DF
:10CEA000CA00877F8093CA008091C9008B7F8093DE
:10CEB000C9008091CA0084608093CA008091CA0032
:10CEC00082608093CA008091C80087FF03C0809170
:10CED000CE00F9CF8091C90080688093C9004FBF10
:10CEE0000895EF92FF920F931F93CF93DF93482FF4
:10CEF00000E010E08091ED01813061F41092ED01CD
:10CF000084E480939F031092A1031092A0031092D7
:10CF1000A2032BC180919F03882319F421E030E004
:10CF200001C098019091A003992371F4232B11F073
:10CF300081E010C084E480939F039093A1039093B9
:10CF4000A0039093A203FAC0913069F4232B09F057
:10CF5000EBC082E08093A0038091A1038F5F809358
:10CF6000A10383E0E9C09230D1F4232B09F0DCC0A7
:10CF700083E080939F034093A2039091A10392309A
:10CF800039F41092A30347FF03C081E08093A30309
:10CF900083E08093A0039F5F9093A103CFC0933061
:10CFA00009F0C2C0232B09F0BFC090939F0382E019
:10CFB0008093A0038091A1038F5F8093A1032091B0
:10CFC000A203822F9927782F6627842F9927682B11
:10CFD000792B8091D305813049F47370CB01805057
:10CFE000924063E070E00E94FB7617C0823061F4EB
:10CFF0007770CB018050944066E070E00E94FB7631
:10D000002695269526950BC0737068567140CB0106
:10D0100077FD0196BC017595679526952695022F9B
:10D0200011270F7010700F5F1F4F0D30110508F0A2
:10D0300074C07801E00EF11EF701E952F94F8081CA
:10D0400091819B01281B390BC90137FF03C09095C3
:10D0500081959F4F069794F48091B102883C30F4FB
:10D060008091B102865F8093B10208C088EC809302
:10D07000B10280916F008F7D80936F00F701E952BC
:10D08000F94F808191819C01220F331F280F391F96
:10D09000260F371F37FF02C02D5F3F4FE901D5959F
:10D0A000C795D595C795CB0101968C179D0714F4AC
:10D0B000219706C061507040C617D7070CF421961F
:10D0C0008091B102843BD0F0F701E952F94F8081A1
:10D0D0009181FE01E81BF90BCF0163E070E00E9433
:10D0E000FB76CB01880F991F860F971F2BE037E047
:10D0F000E20EF31EF7019183808307C02BE037E037
:10D10000E20EF31EF70111821082000F111F095267
:10D11000194FF801D183C08311C00231110570F09D
:10D1200081E08093ED010AC081E08093ED011092CF
:10D13000A1031092A30384E480939F038091A10331
:10D14000803198F08091A303882331F48091ED0120
:10D15000882311F4809394011092A1031092A303E9
:10D160001092A00384E480939F03E6E0CDB7DEB77E
:10D170000C947377CF93FC0197FF05C0CFEFF09528
:10D18000E195FF4F01C0C1E028E631E0CF01B901D0
:10D190000E94FB76FC018B35910554F08B55904035
:10D1A0008A35910538F484EB90E08E1B9F0BFC01CF
:10D1B00041E00DC0CF01855B90408A35910518F4A0
:10D1C000E45BF04003C02E1B3F0BF9014FEFEE0F65
:10D1D000FF1FE15DF54F259134918C2F992787FD35
:10D1E0009095289FB001299F700D389F700D1124D4
:10D1F000842F992787FD9095689FA001699F500D06
:10D20000789F500D1124CA01CF9108952AE530E08E
:10D21000281B390BC9010E94BA680895CF93DF9388
:10D2200080E00E94716E80911E0190911F016AE062
:10D2300070E00E94FB769F938F9380911E019091E6
:10D240001F016AE070E00E94FB767F936F938DEF81
:10D250009AE09F938F93C4E6DEE6DF93CF93E0914D
:10D26000BC03F091BD0309952DB73EB7285F3F4F32
:10D270002DBF8091E9018823B9F186E00E94716E8B
:10D280008091AC079091AD076AE070E00E94E7766C
:10D290007F936F938FED90E09F938F9380919D0785
:10D2A00090919E07A0919F07B091A00720919601B1
:10D2B000309197014091980150919901BC01CD01A5
:10D2C0000E9430773F932F9386E09BE09F938F934C
:10D2D000DF93CF93E091BC03F091BD0309958DB727
:10D2E0009EB70A968DBF12C086E00E94716E82E1E1
:10D2F0009BE09F938F93DF93CF93E091BC03F091DA
:10D30000BD0309950F900F900F900F9080918F03A0
:10D310008823C1F086E00E94716E80918F03992767
:10D320009F938F9389E19BE09F938F93DF93CF939C
:10D33000E091BC03F091BD0309952DB73EB72A5F7C
:10D340003F4F2DBF80E10E94716E8091F30190915B
:10D35000F4016CE370E00E94E7769F938F938091D5
:10D36000F3019091F4016CE370E00E94E7767F9303
:10D370006F9380911808909119089F938F9384E27E
:10D380009BE09F938F93C4E6DEE6DF93CF93E0911B
:10D39000BC03F091BD0309958091B9052DB73EB747
:10D3A000265F3F4F2DBF80FF29C08AE10E94716E2A
:10D3B0008091950199279F938F938091A3029091DB
:10D3C000A402A091A502B091A602BC01CD0124E661
:10D3D00030E040E050E00E9430773F932F9381E3AC
:10D3E0009BE09F938F93DF93CF93E091BC03F091E9
:10D3F000BD0309958DB79EB708968DBFDF91CF917C
:10D400000895CF93DF9380E00E94716E809195061E
:10D41000992787FD90959F938F9380918D069927EB
:10D4200087FD90959F938F9380918506992787FD1F
:10D4300090959F938F9380917D06992787FD909576
:10D440009F938F9388E39BE09F938F93C4E6DEE6E0
:10D45000DF93CF93E091BC03F091BD03099580E188
:10D460000E94716E2DB73EB7245F3F4F2DBF809154
:10D47000B506992787FD90959F938F938091AD0670
:10D48000992787FD90959F938F938091A506992763
:10D4900087FD90959F938F9380919D06992787FD97
:10D4A00090959F938F9388E49BE09F938F93DF9356
:10D4B000CF93E091BC03F091BD0309958091AB053A
:10D4C0002DB73EB7245F3F4F2DBF853098F480E1E4
:10D4D0000E94716E88E59BE09F938F93DF93CF93BB
:10D4E000E091BC03F091BD0309950F900F900F9050
:10D4F0000F9018C08730B0F488E10E94716E8FEDF4
:10D5000090E09F938F9389E69BE09F938F93DF93A7
:10D51000CF93E091BC03F091BD0309958DB79EB701
:10D5200006968DBFDF91CF9108950F931F9380E0F2
:10D530000E94716E2AE030E08091140890911508E5
:10D54000B9010E94E7769F938F9380911408909180
:10D550001508B9010E94E7767F936F9380911E01B1
:10D5600090911F01B9010E94FB769F938F93809148
:10D570001E0190911F01B9010E94FB767F936F936A
:10D5800082E79BE09F938F9304E61EE61F930F9321
:10D59000E091BC03F091BD03099580E10E94716E9A
:10D5A0008DB79EB70C968DBF809118089091190881
:10D5B0009F938F9380911608909117089F938F9354
:10D5C00085E89BE09F938F931F930F93E091BC039B
:10D5D000F091BD0309958DB79EB708968DBF1F9139
:10D5E0000F9108950F931F93CF93DF938091E901DB
:10D5F000C4E6DEE6882309F478C080E00E94716EFC
:10D600008091A90799279F938F938091AB079927C2
:10D610009F938F9381E99BE09F938F938E01DF937C
:10D62000CF93E091BC03F091BD0309958DB79EB7F0
:10D6300008968DBF8091AA07833031F48CE00E9458
:10D64000716E80EA9BE005C08CE00E94716E85EAF5
:10D650009BE09F938F93DF93CF93E091BC03F09176
:10D66000BD0309950F900F900F900F908091A80720
:10D6700081FF12C08CE00E94716E8AEA9BE09F934A
:10D680008F931F930F93E091BC03F091BD03099515
:10D690000F900F900F900F9080E10E94716E8FEDB0
:10D6A00090E09F938F938091AE079091AF079F93E7
:10D6B0008F938091AC079091AD076AE070E00E9473
:10D6C000E7767F936F938FEA9BE09F938F9384E637
:10D6D0009EE69F938F93E091BC03F091BD03099563
:10D6E0008DB79EB70A968DBF12C082E00E94716E00
:10D6F0008FEB9BE09F938F93DF93CF93E091BC03DD
:10D70000F091BD0309950F900F900F900F90DF914E
:10D71000CF911F910F910895CF93C82F2091A4030B
:10D720002093A50399278F32910509F18033910544
:10D730001CF44F97A1F02CC08F34910501F18F3864
:10D74000910531F5222319F481E090E038C086E09C
:10D75000289FF0011124EB51F54F849117C086E00A
:10D76000289FF0011124EA51F54F84910FC086E003
:10D77000289FF0011124E951F54F849107C086E0FC
:10D78000289FF0011124E851F54F84918093A40360
:10D790009091A4038091A5039813C0E00E94776E36
:10D7A0009091A40386E0989FF0011124E751F54F72
:10D7B000259134918C2FF901099580E090E0CF916B
:10D7C00008951092150810921408109219081092DA
:10D7D0001808109217081092160810921A088AE07A
:10D7E00090E00E941C179093A7038093A6030895CE
:10D7F000CF93DF938091A6039091A7030E942517F2
:10D80000882309F4AFC08091A6039091A7030A96DC
:10D810009093A7038093A603E0E0F0E09F0190E0DF
:10D820005FEFA6E7B6E04BE0ED018B8187FF0BC011
:10D830009F5F8D81E80FF11D8981280F311D8E8139
:10D84000851708F4582F4150189647FFEDCF509395
:10D850001A08232B41F52091AC033091AD03409180
:10D86000AE035091AF03BB27A52F942F832F909326
:10D87000AB038093AA03AA27BB27281B390B4A0BAB
:10D880005B0BCF01AA27BB27280F391F4A1F5B1F3D
:10D890002093AC033093AD034093AE035093AF039A
:10D8A000E5E0F0E013C02091AA033091AB032E17FE
:10D8B0003F0718F4E21BF30B02C0E0E0F0E0892F11
:10D8C0009927880F991FE80FF91F3596F0931508CF
:10D8D000E0931408EF3FF10578F480911E019091D8
:10D8E0001F018E9F90018F9F300D9E9F300D112440
:10D8F000C90164E670E013C0CF01969587959695AF
:10D90000879520911E0130911F01289FA001299F1A
:10D91000500D389F500D1124CA0169E170E00E943A
:10D92000E77670931708609316082091A80330914A
:10D93000A9032E0F3F1F3093A9032093A8035EE095
:10D940002131350778F080911808909119080196D7
:10D95000909319088093180820513E403093A903F2
:10D960002093A803DF91CF9108954FB720E430E0D2
:10D97000F8948091C9008F778093C9008091C90085
:10D980008F7B8093C9008091C9008F7D8093C900EF
:10D990005A9A52985B9A539A832F99278093CD0075
:10D9A0002093CC008091C80082608093C80088E1F9
:10D9B0008093C9008091CA008F778093CA008091BC
:10D9C000CA008F7B8093CA008091CA008F7D8093AC
:10D9D000CA008091CA008F7E8093CA008091CA00DD
:10D9E000877F8093CA008091C9008B7F8093C90094
:10D9F0008091CA0084608093CA008091CA008260CE
:10DA00008093CA008091C80087FF03C08091CE0038
:10DA1000F9CF8091C90080688093C9004FBF0895F5
:10DA20000F931F93CF93DF93482F4F5F893108F0F7
:10DA30008BC08091D606841720F44F5F4093D606A2
:10DA40004150CB0183539B4268E170E00E94FB761A
:10DA5000A42FBB27FD01EA0FFB1FE952F94F80817C
:10DA600091819B01281B390BC90137FF03C0909599
:10DA700081959F4F069794F48091B102883C30F4D1
:10DA80008091B102865F8093B10208C088EC8093D8
:10DA9000B10280916F008F7D80936F00FD01EA0FCE
:10DAA000FB1FE952F94F808191819C01220F331FA6
:10DAB000280F391F260F371F37FF02C02D5F3F4F3A
:10DAC000E901D595C795D595C795CB0101968C17DA
:10DAD0009D0714F4219706C061507040C617D70700
:10DAE0000CF421968091B102843BD8F08D010A0F8D
:10DAF0001B1FF801E952F94F80819181FE01E81B5B
:10DB0000F90BCF0163E070E00E94FB76CB01880F38
:10DB1000991F860F971F055F184FF8019183808327
:10DB200007C0AA0FBB1FA55FB84F11961C921E928B
:10DB3000E42FFF27EE0FFF1FE952F94FD183C08377
:10DB4000443011F410929401DF91CF911F910F9105
:10DB50000895CF93DF9320911B08822F9927807F10
:10DB60009070409709F06CC02F3109F046C0809149
:10DB70001C088093B40320911E082093B603809163
:10DB80001F088093B503822F99279093D80680931E
:10DB9000D706222309F054C08091AD05282F3327E2
:10DBA000220F331FF901E55FF84F11821082809137
:10DBB000AE05A82FBB27AA0FBB1FFD01E55FF84FDD
:10DBC000118210828091B005E82FFF27EE0FFF1F12
:10DBD000CF01855F984FEC01198218822952394F85
:10DBE000E90119821882A952B94F11961C921E920E
:10DBF000E952F94F1182108223C0C22FCF70CA3070
:10DC0000F8F480911C088093450880911D0880934A
:10DC1000440880911E088093470880911F088093D4
:10DC2000460860914408709145088C2F0E94106D41
:10DC300060914608709147088C2F8F5F0E94106D8D
:10DC4000DF91CF910895CF93C82F8F3F49F48091F2
:10DC5000B7038F3F29F41092B9031092B80332C072
:10DC60002091B903222339F4CF3111F485E001C0AA
:10DC700084E08093BA038091BA039091B80382172D
:10DC8000A0F4892F80958093B8038F3F19F48EEF0D
:10DC90008093B8038091B803C81711F40E94A96D4E
:10DCA0001092B9031092B8030BC0E22FFF27E55E74
:10DCB000F74FC0832F5F2093B9039C0F9093B80355
:10DCC000C093B703CF9108959091B303933240F47A
:10DCD000E92FFF27EF5DF74F80839F5F9093B3039A
:10DCE0000895833218F48D5F8093B303089590E212
:10DCF000E4E2F8E08FE19193815087FFFCCF089533
:10DD0000CF93CFB723E031E0F8948091C9008F77AB
:10DD10008093C9008091C9008F7B8093C900809156
:10DD2000C9008F7D8093C9005A9A52985B9A539A82
:10DD3000832F99278093CD002093CC008091C80039
:10DD400082608093C80088E18093C9008091CA00F6
:10DD50008F778093CA008091CA008F7B8093CA001E
:10DD60008091CA0080628093CA008091CA0080615D
:10DD70008093CA008091CA0088608093CA00809115
:10DD8000C90084608093C9008091CA008460809338
:10DD9000CA008091CA0082608093CA008091C80046
:10DDA00087FF03C08091CE00F9CF8091C9008068C1
:10DDB0008093C9008091C90080648093C9000E944B
:10DDC000776ECFBFCF910895282F99278F709070CD
:10DDD000892B31F420958091B203822B8093B2037A
:10DDE00008958091F001882309F441C080917D025B
:10DDF00085FF0AC082E98093210883E2809322088C
:10DE000085E58093230802C0109221088091F101DA
:10DE10008F3071F48091B2030E948C6B882341F0A3
:10DE200081E9809321088093220881E3809323086D
:10DE30001092F0018091C80085FFFCCF8091C9004D
:10DE40008F7E8093C9008091C9008E7F8093C90026
:10DE500080912108882311F48EEF01C08EE7809312
:10DE6000CE008091B2038093F1011092B203089525
:10DE70001F920F920FB60F9211248F939F93EF93DF
:10DE8000FF939091F001992309F040C08091BB036A
:10DE9000882361F480912108882311F483E003C072
:10DEA000813999F481E08093BB030FC0833099F4EA
:10DEB00080912108882349F0909321088091C9001E
:10DEC0008E7F8093C9008EEF1EC08091C900816053
:10DED0008093C9000EC0833261F48091C9008E7FA7
:10DEE0008093C9008FEF8093CE0081E08093F00192
:10DEF00014C08091BB03E82FFF27EF5DF74F8F5FC2
:10DF00008093BB0380818093CE0007C01092BB0337
:10DF10008091C90080618093C900FF91EF919F912A
:10DF20008F910F900FBE0F901F901895EF92FF9258
:10DF30000F931F93CF93DF937C018B01EA01452B55
:10DF400039F0F80181918F01F70109952197C9F7FF
:10DF5000E6E0CDB7DEB70C947377EF92FF920F93A4
:10DF60001F93CF93DF937C018B01EA01452B41F096
:10DF7000F8010F5F1F4F8491F70109952197C1F7B1
:10DF8000E6E0CDB7DEB70C9473770F931F93CF9372
:10DF90008C01C62F161634F480E2F8010995C150A1
:10DFA0001C16D4F3CF911F910F9108950F931F93D7
:10DFB000CF938C01C62F161634F480E3F80109952F
:10DFC000C1501C16D4F3CF911F910F910895A5E372
:10DFD000B0E0EDEEFFE60C944B772E96EEADFFAD84
:10DFE0002E978824992454018091B103882321F429
:10DFF0002C961FAE1EAE2C975EE4452E512C4C0E77
:10E000005D1E6F01B60105C0153239F00894C11CC0
:10E01000D11CF60114911123B9F7A601461B570B29
:10E0200031F02C968EAD9FAD2C970E94AD6F1123D1
:10E0300009F46AC20894C11CD11CFF24FDA6FCA6E9
:10E040004FEFE42EF9A6F6010894C11CD11C1491DF
:10E05000153721F0812F80628837B1F4F0FE0AC0B5
:10E06000F20124E030E0420E531E80809180A280B5
:10E07000B3800AC0F20142E050E0440E551E808198
:10E0800091814C01AA24BB24103221F489A5882354
:10E09000D1F61DC0133219F458E0F52AD4CF1A3244
:10E0A00011F01D3291F41A3259F4F20182E090E03D
:10E0B000480E591EE081ECA7EE232CF6E195ECA763
:10E0C00090E1F92AAFEDFA22BECF1B3211F419A765
:10E0D000BACF1E32C1F5F6010894C11CD11C1491AF
:10E0E0001A3279F4F20122E030E0420E531E4081F0
:10E0F00051813FEF4F3F530714F44FEF5FEFE42E92
:10E10000A2CF40E050E0812F80538A30A0F4CA01B2
:10E1100033E0880F991F3A95E1F7840F951F480F58
:10E12000591F410F511D40535040F6010894C11C26
:10E13000D11C1491E8CF8FEF4F3F580714F44FEFE5
:10E140005FEFE42E85CF103329F4F4FC7CCF90E20E
:10E15000F92A79CF812F81538930D8F440E050E0FB
:10E16000CA0123E0880F991F2A95E1F7840F951FB4
:10E17000480F591F410F511D40535040F60108945C
:10E18000C11CD11C1491812F80538A3048F34CA7B5
:10E190005FCF183619F4A4E0FA2A55CF1C3619F4CB
:10E1A000B1E0FB2A50CF133661F43E010894611CA4
:10E1B000711CF20122E030E0420E531E80818983FF
:10E1C0003CC1143421F0143611F0193651F51434D1
:10E1D00011F431E0F32AF0FE0AC0F20144E050E00D
:10E1E000440E551E80809180A280B3800CC0F20145
:10E1F00082E090E0480E591E808191814C01AA2452
:10E2000097FCA094BA2CB7FE0AC0B094A094909446
:10E210008094811C911CA11CB11C8DE289A70AE08D
:10E220006FC01F3411F01F3631F41F3411F491E028
:10E23000F92A08E064C0103779F4F201A2E0B0E0F6
:10E240004A0E5B1E808191814C01AA24BB2400E10F
:10E25000B0E4FB2A18E753C01337C1F5F20122E0FE
:10E2600030E0420E531E608071806114710489F4A5
:10E270003E010894611C711C88E289838EE6F301DB
:10E28000818385E78B838CE68C838D8389E28E8303
:10E290001F82E7FC13C08E2D992787FD9095AC0156
:10E2A00060E070E0C3010E941875009729F0382ED5
:10E2B0003618E3140CF0C3C03E2CC1C0F30101902A
:10E2C0000020E9F731973E2E3618B9C0153511F008
:10E2D000153731F4153511F4F1E0FF2A0AE00FC0CB
:10E2E000183519F0183709F0A0C000E1F3FE07C097
:10E2F00081149104A104B10411F020E4F22A19A6BA
:10E30000EDA6E7FC02C03FEDF32289E2682E712CF6
:10E310006C0E7D1E81149104A104B10421F44DA55D
:10E32000442309F47BC0802F9927AA27BB278EA7F7
:10E330009FA7A8ABB9AB202E332490E0891690E0BC
:10E34000990691E0A90690E0B90648F0C501B4012C
:10E350002EA53FA548A959A90E940E7717C0AFEF77
:10E360008A169104A104B10449F040F0C401B1013E
:10E370000E94E7769B014427552708C0882D602F0F
:10E380000E94DB76282F3327442755272AAB3BAB47
:10E390004CAB5DAB0A3059F48AA9880F880F880FFF
:10E3A0009AA9990F890F382D381B832F10C000317F
:10E3B00039F48AA98295807F482D481B842F07C095
:10E3C0008AA9880F880F880F582D581B852F90E039
:10E3D0002EA53FA548A959A982169306A406B506FD
:10E3E00008F091E08AA89BA8ACA8BDA88A3010F4D8
:10E3F000805D04C0895A183509F48F7DD3018E934E
:10E400003D01992309F099CF083041F4F3FE06C08D
:10E41000803321F080E3FD0182933F01CE0101961C
:10E42000382E3618F8E23F0E0BC0112309F46CC0E9
:10E430003E010894611C711C1983B1E03B2E19A6A2
:10E44000032D2DA4231827FC222489A5882311F04D
:10E450000F5F02C0F6FC0E5F020DEF2CFF24C70118
:10E4600080739070892B49F48CA5801B682F2C96A3
:10E470008EAD9FAD2C970E94C56F89A5882331F082
:10E4800041E050E0BE01675D7F4F0AC0E6FE0EC06E
:10E4900080E38AA71BA742E050E0BE01665D7F4F84
:10E4A0002C968EAD9FAD2C970E94966FC7018073FE
:10E4B0009070809749F48CA5801B682F2C968EADA8
:10E4C0009FAD2C970E94D66F622D2C968EAD9FAD7E
:10E4D0002C970E94D66F832D992787FD9095AC01CC
:10E4E000B3012C968EAD9FAD2C970E94966FE4FEE3
:10E4F00089CD2CA5201B2CA7622F2C968EAD9FAD0D
:10E500002C970E94C56F7ECDE2E1CB5C0C946777BF
:10E510002FB740E0F894E0E0F0E081E2809357000C
:10E520009491E2E0F0E0809357003491E4E0F0E071
:10E530008093570084912FBF9E3199F4363941F46E
:10E54000893011F441E00DC08A3059F442E009C02D
:10E55000373939F4863011F443E003C0853009F4CB
:10E5600044E0842F992708959FB7F8948091C900BB
:10E57000877F8093C9008091C9008F7E8093C900F6
:10E580008091C9008F778093C9008091C9008F7BEB
:10E590008093C9008091C9008F7D8093C9005298F3
:10E5A0005A9A53985B9A9FBF08951F93CF93DF9316
:10E5B000182F8091B103882309F48DC08091EF0159
:10E5C000181709F488C08091B003882321F40E94B1
:10E5D00088728093B00388EB9CE09F938F93C6EF83
:10E5E000D2E1DF93CF93E091BC03F091BD03099595
:10E5F0000F900F900F900F90812F992782309105E7
:10E6000001F1833091052CF4009761F0019769F0D6
:10E6100024C084309105D9F084309105ACF0059781
:10E62000C9F01BC088EA9CE002C086E99CE09F9389
:10E630008F93DF93CF93E091BC03F091BD030995D5
:10E6400018C08DE79CE0F3CF8AE59CE0F0CF8CE426
:10E650009CE0EDCF84E49CE0EACF85EC9CE09F93C6
:10E660008F93DF93CF93E091BC03F091BD030995A5
:10E6700010E00F900F900F900F908091B0038430B6
:10E6800011F0823099F40E94B472812F815083304E
:10E6900018F40E9416671DC0143019F40E94806E91
:10E6A00018C01530B1F40E94B56C13C0112389F065
:10E6B0008BED9CE09F938F9386EF92E19F938F93D6
:10E6C000E091BC03F091BD0309950F900F900F905E
:10E6D0000F901093EF01DF91CF911F9108950F9349
:10E6E0001F9381E08093B1034091EE01E4EFFBE0E2
:10E6F00020E030E05FE4849199272F5F3F4F829FB5
:10E70000B001839F700D929F700D112446275150C8
:10E71000319657FFF0CF4093EE01ECECFBE020E0A8
:10E7200030E057E2849199272F5F3F4F829FB001DD
:10E73000839F700D929F700D112446275150319682
:10E7400057FFF0CF4093EE018091B003882321F46E
:10E750000E9488728093B0038091EE01833459F057
:10E7600088E190E029E20FB6F894A89580936000C4
:10E770000FBE2093600087EE9FE69093BD038093C9
:10E78000BC0386EF9CE09F938F9306EF12E11F93EB
:10E790000F93E091BC03F091BD0309950F900F908A
:10E7A0000F900F9081E690E09F938F9382E590E029
:10E7B0009F938F931F921F92809102016AE00E94A3
:10E7C000DB76892F99279F938F93809102010E9476
:10E7D000DB7699279F938F938CE19DE09F938F9396
:10E7E0001F930F93E091BC03F091BD03099584EF53
:10E7F0009BE09F938F931F930F93E091BC03F09145
:10E80000BD0309958CEC9BE09F938F931F930F930F
:10E81000E091BC03F091BD0309958DB79EB7469674
:10E820008DBF80E59DE09F938F931F930F93E091A1
:10E83000BC03F091BD03099582EC80938100809127
:10E840006F00806280936F000F900F900F900F9079
:10E850001F910F9108958091B103882361F08091F9
:10E86000EF01843011F40E94F16E8091EE01833447
:10E8700011F01092B10308951F920F920FB60F92EC
:10E8800011242F933F934F935F936F937F938F93B5
:10E890009F93AF93BF93EF93FF932091CE0080910E
:10E8A000FA018823B1F02093C6008091FA018230EA
:10E8B00029F52F3F19F58FEF94E3ACE0B0E0C29754
:10E8C000A109B109B7FFFBCF8091FF038093CE0070
:10E8D00015C09091EF01892F8150833020F4822F51
:10E8E0000E9471670BC0943021F4822F0E94E46E65
:10E8F00005C0953019F4822F0E94236EFF91EF918D
:10E90000BF91AF919F918F917F916F915F914F9147
:10E910003F912F910F900FBE0F901F9018950024DC
:10E9200022273327442751E0BB27EE27FF27A0E10A
:10E93000660F771F881F991F001C221F331F441F5B
:10E94000660F771F881F991F001C221F331F441F4B
:10E950002AF4050E2B1F3E1F4F1F04C0051A2B0B58
:10E960003E0B4F0B550FBB1FEE1F587F556047FDE9
:10E970005250AA95E9F6E695B7955795E695B7955D
:10E980005795852F9B2F08952227332741E0552740
:10E9900068E0880F991F221F331F880F991F221FBD
:10E9A000331F1AF4240F351F02C0241B350B440FEC
:10E9B000551F487F456037FD42506A9551F756957F
:10E9C000479556954795842F0895AA2797FF04C029
:10E9D000809590958A1F9A1F77FF04C06095709567
:10E9E0006A1F7A1F669F9001779FA001679F300D75
:10E9F000411D5A1F300D411D5A1F889FF001999FDC
:10EA00002E0F3F1F401D511D899F300D411D5A1F64
:10EA1000300D411D5A1FCA01B901112480CFFB01DD
:10EA2000DC0102C005900D9241505040D8F7089586
:10EA3000FC014150504030F001900616D1F731975B
:10EA4000CF010895882799270895A0E0B0E0EBE270
:10EA5000F5E70C9453776C017B01EA01590121978A
:10EA60008FEFCF3FD80789F086010894C11CD11CD5
:10EA7000C7010894E11CF11CF5010995F801808398
:10EA80002197FFEFCF3FDF0779F7EAE0CDB7DEB799
:10EA90000C946F77CF92DF92EF92FF920F931F93B8
:10EAA0007C016B01FB010995082FC7010196F60156
:10EAB0000995182FC8011F910F91FF90EF90DF90DB
:10EAC000CF900895A0E0B0E0E8E6F5E70C94557724
:10EAD0008C017B01EA01690121978FEFCF3FD807B5
:10EAE00071F0F70121917F01C8010F5F1F4F622F65
:10EAF000F60109952197FFEFCF3FDF0791F7E8E097
:10EB0000CDB7DEB70C947177CF92DF92EF92FF9280
:10EB10000F931F936C018B017A01FA010995812FE4
:10EB20009927682FC6010196F70109951F910F914A
:10EB3000FF90EF90DF90CF9008955058BB27AA2701
:10EB40000ED0E0C0D1D030F0D6D020F031F49F3FCD
:10EB500011F41EF4C6C00EF4E095E7FBBCC0E92F2B
:10EB6000E2D080F3BA17620773078407950718F09D
:10EB700071F49EF5FAC00EF4E0950B2EBA2FA02D7D
:10EB80000B01B90190010C01CA01A0011124FF275A
:10EB9000591B99F0593F50F4503E68F11A16F04055
:10EBA000A22F232F342F4427585FF3CF4695379554
:10EBB0002795A795F0405395C9F77EF41F16BA0B19
:10EBC000620B730B840BBAF09150A1F0FF0FBB1FC7
:10EBD000661F771F881FC2F70EC0BA0F621F731F10
:10EBE000841F48F4879577956795B795F7959E3F6D
:10EBF00008F0B3CF9395880F08F09927EE0F9795FB
:10EC00008795089598D088F09F5790F0B92F99274D
:10EC1000B751A0F0D1F0660F771F881F991F1AF027
:10EC2000BA95C9F712C0B13081F09FD0B1E0089514
:10EC30009CC0672F782F8827B85F39F0B93FCCF395
:10EC4000869577956795B395D9F73EF4909580951D
:10EC5000709561957F4F8F4F9F4F0895E89409C03D
:10EC600097FB3EF490958095709561957F4F8F4FFF
:10EC70009F4F9923A9F0F92F96E9BB279395F69515
:10EC8000879577956795B795F111F8CFFAF4BB0F93
:10EC900011F460FF1BC06F5F7F4F8F4F9F4F16C0F7
:10ECA000882311F096E911C0772321F09EE8872F81
:10ECB000762F05C0662371F096E8862F70E060E03D
:10ECC0002AF09A95660F771F881FDAF7880F9695B6
:10ECD000879597F9089597F99F6780E870E060E05D
:10ECE00008959FEF80EC089500240A9416161706E5
:10ECF00018060906089500240A941216130614062D
:10ED000005060895092E0394000C11F4882352F08F
:10ED1000BB0F40F4BF2B11F460FF04C06F5F7F4F47
:10ED20008F4F9F4F089557FD9058440F551F59F02E
:10ED30005F3F71F04795880F97FB991F61F09F3FE8
:10ED400079F087950895121613061406551FF2CF11
:10ED50004695F1DF08C0161617061806991FF1CF61
:10ED600086957105610508940895E894BB27662788
:10ED70007727CB0197F90895629FD001739FF00127
:10ED8000829FE00DF11D649FE00DF11D929FF00D3B
:10ED9000839FF00D749FF00D659FF00D9927729F72
:10EDA000B00DE11DF91F639FB00DE11DF91FBD01FD
:10EDB000CF0111240895991B79E004C0991F96177B
:10EDC00008F0961B881F7A95C9F780950895AA1BAD
:10EDD000BB1B51E107C0AA1FBB1FA617B70710F046
:10EDE000A61BB70B881F991F5A95A9F78095909578
:10EDF000BC01CD01089597FB092E07260AD077FDA7
:10EE000004D0E5DF06D000201AF4709561957F4F9D
:10EE10000895F6F7909581959F4F0895A1E21A2ED7
:10EE2000AA1BBB1BFD010DC0AA1FBB1FEE1FFF1FAE
:10EE3000A217B307E407F50720F0A21BB30BE40BFE
:10EE4000F50B661F771F881F991F1A9469F7609545
:10EE50007095809590959B01AC01BD01CF010895FF
:10EE600097FB092E05260ED057FD04D0D7DF0AD018
:10EE7000001C38F450954095309521953F4F4F4FE9
:10EE80005F4F0895F6F790958095709561957F4F47
:10EE90008F4F9F4F08952F923F924F925F926F92A4
:10EEA0007F928F929F92AF92BF92CF92DF92EF921A
:10EEB000FF920F931F93CF93DF93CDB7DEB7CA1B9B
:10EEC000DB0B0FB6F894DEBF0FBECDBF09942A88C6
:10EED000398848885F846E847D848C849B84AA846E
:10EEE000B984C884DF80EE80FD800C811B81AA81FB
:10EEF000B981CE0FD11D0FB6F894DEBF0FBECDBFC6
:10EF0000ED010895EE0FFF1F0590F491E02D099497
:02EF1000FFCF31
:10EF12005E010A010164FF01FFFFC01FC01F010162
:10EF220001737373FF03007D0000C409C409640008
:10EF32001148656C6C6F20576F726C6400000000A2
:10EF420000000000000000000000000000000000BF
:10EF520000000000000000000000000000000000AF
:10EF6200000000000000000000000000000000009F
:10EF7200000000000000000000000000000000008F
:10EF82000053706F727400004E6F726D616C0000FE
:10EF9200426567696E6E6572000051756164726FD9
:10EFA2000000640001200B050000ECFF00020406D3
:10EFB200070808080706040200FEFCFAF9F8F8F848
:10EFC200F9FAFCFE000204060708086440415A46AA
:10EFD20064640A02969696960840403A10FB3038CE
:10EFE2000190D0030090D00300F4017800FF036485
:10EFF2000B0A0D0B0C0E0B0F10FA2001010170FF12
:02F00200010FFC
:00000001FF
/branches/metro/v0.82a metro_Akku+/Hex-Files/WasIstWas.txt
0,0 → 1,17
+++++++++++++++++++++++++
+ Flight-Ctrl:
+++++++++++++++++++++++++
BootLoader_MEGA644_20MHZ_V0_1.hex
Der Bootloader wird per ISP eingespielt
Der Bootloader nur dann eingespielt werden, wenn noch nie ein Bootloader eingespielt wurde!
Danach können Softwareupdates seriell eingespielt werden.
 
Flight-Ctrl_MEGA644_Vx_yy.hex
Aktuelle Firmware
Wird per serielle Schnittstelle (durch den Bootloader) eingespielt
 
Achtung: Die Programme für den ATMEGA1284 dürfen ausschliesslich per Bootloader, also seriell eingespielt werden und NICHT per ISP
 
Warning: do not program the ATMEGA1284 (FC2.1) via SPI. Only use the MKUSB and the Koptertool for update!
 
/branches/metro/v0.82a metro_Akku+/License.txt
0,0 → 1,52
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// + Copyright (c) Holger Buss, Ingo Busker
// + Nur für den privaten Gebrauch / NON-COMMERCIAL USE ONLY
// + www.MikroKopter.com
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// + Es gilt für das gesamte Projekt (Hardware, Software, Binärfiles, Sourcecode und Dokumentation),
// + dass eine Nutzung (auch auszugsweise) nur für den privaten und nichtkommerziellen Gebrauch zulässig ist.
// + Sollten direkte oder indirekte kommerzielle Absichten verfolgt werden, ist mit uns (info@mikrokopter.de) Kontakt
// + bzgl. der Nutzungsbedingungen aufzunehmen.
// + Eine kommerzielle Nutzung ist z.B.Verkauf von MikroKoptern, Bestückung und Verkauf von Platinen oder Bausätzen,
// + Verkauf von Luftbildaufnahmen, usw.
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// + Werden Teile des Quellcodes (mit oder ohne Modifikation) weiterverwendet oder veröffentlicht,
// + unterliegen sie auch diesen Nutzungsbedingungen und diese Nutzungsbedingungen incl. Copyright müssen dann beiliegen
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// + Sollte die Software (auch auszugesweise) oder sonstige Informationen des MikroKopter-Projekts
// + auf anderen Webseiten oder sonstigen Medien veröffentlicht werden, muss unsere Webseite "http://www.mikrokopter.de"
// + eindeutig als Ursprung verlinkt und genannt werden
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// + Keine Gewähr auf Fehlerfreiheit, Vollständigkeit oder Funktion
// + Benutzung auf eigene Gefahr
// + Wir übernehmen keinerlei Haftung für direkte oder indirekte Personen- oder Sachschäden
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// + Die Portierung oder Nutzung der Software (oder Teile davon) auf andere Systeme (ausser der Hardware von www.mikrokopter.de) ist nur
// + mit unserer Zustimmung zulässig
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// + Die Funktion printf_P() unterliegt ihrer eigenen Lizenz und ist hiervon nicht betroffen
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// + Redistributions of source code (with or without modifications) must retain the above copyright notice,
// + this list of conditions and the following disclaimer.
// + * Neither the name of the copyright holders nor the names of contributors may be used to endorse or promote products derived
// + from this software without specific prior written permission.
// + * The use of this project (hardware, software, binary files, sources and documentation) is only permittet
// + for non-profit use (directly or indirectly)
// + Commercial use (for excample: selling of MikroKopters, selling of PCBs, assembly, ...) is only permitted
// + with our written permission
// + * If sources or documentations are redistributet, our webpage (http://www.MikroKopter.de) must be
// + clearly linked and named as origin
// + * porting the sources to other systems or using the software on other systems (except hardware from www.mikrokopter.de) is not allowed
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
// + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
// + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
// + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
// + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
// + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
// + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
// + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
// + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
// + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
// + POSSIBILITY OF SUCH DAMAGE.
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
/branches/metro/v0.82a metro_Akku+/Settings.h
--- metro/v0.82a metro_Akku+/Spektrum.c (nonexistent)
+++ metro/v0.82a metro_Akku+/Spektrum.c (revision 1825)
@@ -0,0 +1,407 @@
+/*#######################################################################################
+Decodieren eines RC Summen Signals oder Spektrum Empfänger-Satellit
+#######################################################################################*/
+
+#include "Spektrum.h"
+#include "main.h"
+// Achtung: RECEIVER_SPEKTRUM_EXP wird in der Main.h gesetzt
+
+unsigned char SpektrumTimer = 0;
+
+#ifdef RECEIVER_SPEKTRUM_EXP
+unsigned char s_excnt = 0; // Counter for Spektrum-Expander
+unsigned char s_exparity = 0; // Parity Bit for Spektrum-Expander
+signed char s_exdata[11]; // Data for Spektrum-Expander
+#endif
+//--------------------------------------------------------------//
+//--------------------------------------------------------------//
+/*
+void SpektrumBinding(void)
+{
+ unsigned int timerTimeout = SetDelay(10000); // Timeout 10 sec.
+ unsigned char connected = 0;
+ unsigned int delaycounter;
+
+ UCSR1B &= ~(1 << RXCIE1); // disable rx-interrupt
+ UCSR1B &= ~(1<<RXEN1); // disable Uart-Rx
+ PORTD &= ~(1 << PORTD2); // disable pull-up
+
+ printf("\n\rPlease connect Spektrum receiver for binding NOW...");
+
+ while(!CheckDelay(timerTimeout))
+ {
+ if (PIND & (1 << PORTD2)) { timerTimeout = SetDelay(90); connected = 1; break; }
+ }
+
+ if (connected)
+ {
+
+ printf("ok.\n\r");
+ DDRD |= (1 << DDD2); // Rx as output
+
+ while(!CheckDelay(timerTimeout)); // delay after startup of RX
+ for (delaycounter = 0; delaycounter < 100; delaycounter++) PORTD |= (1 << PORTD2);
+ for (delaycounter = 0; delaycounter < 400; delaycounter++) PORTD &= ~(1 << PORTD2);
+
+ for (delaycounter = 0; delaycounter < 10; delaycounter++) PORTD |= (1 << PORTD2);
+ for (delaycounter = 0; delaycounter < 10; delaycounter++) PORTD &= ~(1 << PORTD2);
+ for (delaycounter = 0; delaycounter < 400; delaycounter++) PORTD |= (1 << PORTD2);
+ for (delaycounter = 0; delaycounter < 400; delaycounter++) PORTD &= ~(1 << PORTD2);
+
+ for (delaycounter = 0; delaycounter < 10; delaycounter++) PORTD |= (1 << PORTD2);
+ for (delaycounter = 0; delaycounter < 10; delaycounter++) PORTD &= ~(1 << PORTD2);
+ for (delaycounter = 0; delaycounter < 400; delaycounter++) PORTD |= (1 << PORTD2);
+ for (delaycounter = 0; delaycounter < 400; delaycounter++) PORTD &= ~(1 << PORTD2);
+
+ for (delaycounter = 0; delaycounter < 10; delaycounter++) PORTD |= (1 << PORTD2);
+ for (delaycounter = 0; delaycounter < 10; delaycounter++) PORTD &= ~(1 << PORTD2);
+ for (delaycounter = 0; delaycounter < 400; delaycounter++) PORTD |= (1 << PORTD2);
+
+ }
+ else
+ { printf("Timeout.\n\r");
+
+
+ }
+
+ DDRD &= ~(1 << DDD2); // RX as input
+ PORTD &= ~(1 << PORTD2);
+
+ SpektrumUartInit(); // init Uart again
+}
+*/
+//############################################################################
+// USART1 initialisation from killagreg
+void SpektrumUartInit(void)
+//############################################################################
+ {
+ // -- Start of USART1 initialisation for Spekturm seriell-mode
+ // USART1 Control and Status Register A, B, C and baud rate register
+ uint8_t sreg = SREG;
+
+ uint16_t ubrr = (uint16_t) ((uint32_t) SYSCLK/(8 * 115200) - 1);
+
+ // disable all interrupts before reconfiguration
+ cli();
+ // disable RX-Interrupt
+ UCSR1B &= ~(1 << RXCIE1);
+ // disable TX-Interrupt
+ UCSR1B &= ~(1 << TXCIE1);
+ // disable DRE-Interrupt
+ UCSR1B &= ~(1 << UDRIE1);
+ // set direction of RXD1 and TXD1 pins
+ // set RXD1 (PD2) as an input pin
+ PORTD |= (1 << PORTD2);
+ DDRD &= ~(1 << DDD2);
+
+ // set TXD1 (PD3) as an output pin
+ PORTD |= (1 << PORTD3);
+ DDRD |= (1 << DDD3);
+
+ // USART0 Baud Rate Register
+ // set clock divider
+ UBRR1H = (uint8_t)(ubrr>>8);
+ UBRR1L = (uint8_t)ubrr;
+ // enable double speed operation
+ UCSR1A |= (1 << U2X1);
+ // enable receiver and transmitter
+ //UCSR1B = (1<<RXEN1)|(1<<TXEN1);
+
+ UCSR1B = (1<<RXEN1);
+ // set asynchronous mode
+ UCSR1C &= ~(1 << UMSEL11);
+ UCSR1C &= ~(1 << UMSEL10);
+ // no parity
+ UCSR1C &= ~(1 << UPM11);
+ UCSR1C &= ~(1 << UPM10);
+ // 1 stop bit
+ UCSR1C &= ~(1 << USBS1);
+ // 8-bit
+ UCSR1B &= ~(1 << UCSZ12);
+ UCSR1C |= (1 << UCSZ11);
+ UCSR1C |= (1 << UCSZ10);
+ // flush receive buffer explicit
+ while(UCSR1A & (1<<RXC1)) UDR1;
+ // enable RX-interrupts at the end
+ UCSR1B |= (1 << RXCIE1);
+ // -- End of USART1 initialisation
+ // restore global interrupt flags
+
+ SREG = sreg;
+ return;
+ }
+
+// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+// + Copyright (c) Rainer Walther
+// + RC-routines from original MK rc.c (c) H&I
+// + Useful infos from Walter: http://www.rcgroups.com/forums/showthread.php?t=714299&page=2
+// + only for non-profit use
+// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+//
+// 20080808 rw Modified for Spektrum AR6100 (PPM)
+// 20080823 rw Add Spektrum satellite receiver on USART1 (644P only)
+// 20081213 rw Add support for Spektrum DS9 Air-Tx-Module (9 channels)
+// Replace AR6100-coding with original composit-signal routines
+//
+// ---
+// Entweder Summensignal ODER Spektrum-Receiver anschließen. Nicht beides gleichzeitig betreiben!
+// Binding is not implemented. Bind with external Receiver.
+// Servo output J3, J4, J5 not serviced
+//
+// Anschuß Spektrum Receiver
+// Orange: 3V von der FC (keinesfalls an 5V anschließen!)
+// Schwarz: GND
+// Grau: RXD1 (Pin 3) auf 10-Pol FC-Stecker
+//
+// ---
+// Satellite-Reciever connected on USART1:
+//
+// DX7/DX6i: One data-frame at 115200 baud every 22ms.
+// DX7se: One data-frame at 115200 baud every 11ms.
+// byte1: unknown
+// byte2: unknown
+// byte3: and byte4: channel data (FLT-Mode)
+// byte5: and byte6: channel data (Roll)
+// byte7: and byte8: channel data (Nick)
+// byte9: and byte10: channel data (Gier)
+// byte11: and byte12: channel data (Gear Switch)
+// byte13: and byte14: channel data (Gas)
+// byte15: and byte16: channel data (AUX2)
+//
+// DS9 (9 Channel): One data-frame at 115200 baud every 11ms, alternating frame 1/2 for CH1-7 / CH8-9
+// 1st Frame:
+// byte1: unknown
+// byte2: unknown
+// byte3: and byte4: channel data
+// byte5: and byte6: channel data
+// byte7: and byte8: channel data
+// byte9: and byte10: channel data
+// byte11: and byte12: channel data
+// byte13: and byte14: channel data
+// byte15: and byte16: channel data
+// 2nd Frame:
+// byte1: unknown
+// byte2: unknown
+// byte3: and byte4: channel data
+// byte5: and byte6: channel data
+// byte7: and byte8: 0xffff
+// byte9: and byte10: 0xffff
+// byte11: and byte12: 0xffff
+// byte13: and byte14: 0xffff
+// byte15: and byte16: 0xffff
+//
+// Each channel data (16 bit= 2byte, first msb, second lsb) is arranged as:
+//
+// Bits: F 0 C3 C2 C1 C0 D9 D8 D7 D6 D5 D4 D3 D2 D1 D0
+//
+// 0 means a '0' bit
+// F: 1 = indicates beginning of 2nd frame for CH8-9 (DS9 only)
+// C3 to C0 is the channel number. 0 to 9 (4 bit, as assigned in the transmitter)
+// D9 to D0 is the channel data (10 bit) 0xaa..0x200..0x356 for 100% transmitter-travel
+//
+// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+
+#define MIN_FRAMEGAP 68 // 7ms
+#define MAX_BYTEGAP 3 // 310us
+
+
+//############################################################################
+// Wird im UART-Interrupt aufgerufen
+//############################################################################
+void SpektrumParser(unsigned char c)
+{
+ static unsigned char Sync=0, FrameCnt=0, ByteHigh=0, ReSync=1, Frame2=0;
+ unsigned int Channel, index = 0;
+ signed int signal = 0, tmp;
+ int bCheckDelay;
+// c = UDR1; // get data byte
+ if(ReSync == 1)
+ {
+ // wait for beginning of new frame
+ ReSync = 0;
+ SpektrumTimer = MIN_FRAMEGAP;
+ FrameCnt = 0;
+ Sync = 0;
+ ByteHigh = 0;
+ }
+ else
+ {
+ if(!SpektrumTimer) bCheckDelay = 1; else bCheckDelay = 0;//CheckDelay(FrameTimer);
+ if ( Sync == 0 )
+ {
+ if(bCheckDelay)
+ {
+ // nach einer Pause von mind. 7ms erstes Sync-Character gefunden
+ // Zeichen ignorieren, da Bedeutung unbekannt
+ Sync = 1;
+ FrameCnt ++;
+ SpektrumTimer = MAX_BYTEGAP;
+ }
+ else
+ {
+ // Zeichen kam vor Ablauf der 7ms Sync-Pause
+ // warten auf erstes Sync-Zeichen
+ SpektrumTimer = MIN_FRAMEGAP;
+ FrameCnt = 0;
+ Sync = 0;
+ ByteHigh = 0;
+ }
+ }
+ else if((Sync == 1) && !bCheckDelay)
+ {
+ // zweites Sync-Character ignorieren, Bedeutung unbekannt
+ Sync = 2;
+ FrameCnt ++;
+ SpektrumTimer = MAX_BYTEGAP;
+ }
+ else if((Sync == 2) && !bCheckDelay)
+ {
+ SpektrumTimer = MAX_BYTEGAP;
+ // Datenbyte high
+ ByteHigh = c;
+ if (FrameCnt == 2)
+ {
+ // is 1st Byte of Channel-data
+ // Frame 1 with Channel 1-7 comming next
+ Frame2 = 0;
+ if(ByteHigh & 0x80)
+ {
+ // DS9: Frame 2 with Channel 8-9 comming next
+ Frame2 = 1;
+ }
+ }
+ Sync = 3;
+ FrameCnt ++;
+ }
+ else if((Sync == 3) && !bCheckDelay)
+ {
+ // Datenbyte low
+ // High-Byte for next channel comes next
+ SpektrumTimer = MAX_BYTEGAP;
+ Sync = 2;
+ FrameCnt ++;
+ Channel = ((unsigned int)ByteHigh << 8) | c;
+ if(EE_Parameter.Receiver == RECEIVER_SPEKTRUM)
+ {
+ signal = Channel & 0x3ff;
+ signal -= 0x200; // Offset, range 0x000..0x3ff?
+ signal = signal/3; // scaling to fit PPM resolution
+ index = (ByteHigh >> 2) & 0x0f;
+ }
+ else
+ if(EE_Parameter.Receiver == RECEIVER_SPEKTRUM_HI_RES)
+ {
+ signal = Channel & 0x7ff;
+ signal -= 0x400; // Offset, range 0x000..0x7ff?
+ signal = signal/6; // scaling to fit PPM resolution
+ index = (ByteHigh >> 3) & 0x0f;
+ }
+ else
+ //if(EE_Parameter.Receiver == RECEIVER_SPEKTRUM_LOW_RES)
+ {
+ signal = Channel & 0x3ff;
+ signal -= 360; // Offset, range 0x000..0x3ff?
+ signal = signal/2; // scaling to fit PPM resolution
+ index = (ByteHigh >> 2) & 0x0f;
+ }
+
+ index++;
+ if(index < 13)
+ {
+ // Stabiles Signal
+#ifdef RECEIVER_SPEKTRUM_EXP
+ if (index == 2) index = 4; // Analog channel reassigment (2 <-> 4) for logical numbering (1,2,3,4)
+ else if (index == 4) index = 2;
+#endif
+ if(abs(signal - PPM_in[index]) < 6)
+ {
+ if(SenderOkay < 200) SenderOkay += 10;
+ else
+ {
+ SenderOkay = 200;
+ TIMSK1 &= ~_BV(ICIE1); // disable PPM-Input
+ }
+ }
+ tmp = (3 * (PPM_in[index]) + signal) / 4;
+ if(tmp > signal+1) tmp--; else
+ if(tmp < signal-1) tmp++;
+
+#ifdef RECEIVER_SPEKTRUM_EXP
+ if(index == 6) // FLIGHT-MODE - The channel used for our data uplink
+ {
+ if (signal > 100) // SYNC received
+ {
+ if (s_exdata[s_excnt] == 125) s_exparity = ~s_exparity; // Bit = 1 -> Re-Invert parity bit
+ if ((s_excnt == 6 && ((s_exparity != 0 && s_exdata[s_excnt] == -125) || (s_exparity == 0 && s_exdata[s_excnt] == 125))) || (s_excnt == 9 && ((s_exparity == 0 && s_exdata[s_excnt] == -125) || (s_exparity != 0 && s_exdata[s_excnt] == 125)))) // Parity check
+ {
+ if (s_exdata[1] == 125 && s_exdata[2] == -125) PPM_in[5] = -125; // Reconstruct tripole Flight-Mode value (CH5)
+ else if (s_exdata[1] == -125 && s_exdata[2] == -125) PPM_in[5] = 0; // Reconstruct tripole Flight-Mode value (CH5)
+ else if (s_exdata[1] == -125 && s_exdata[2] == 125) PPM_in[5] = 125; // Reconstruct tripole Flight-Mode value (CH5)
+ PPM_in[6] = s_exdata[3]; // Elevator (CH6)
+ PPM_in[11] = s_exdata[4]; // Aileron (CH11)
+ PPM_in[12] = s_exdata[5]; // Rudder (CH12)
+
+ if (s_excnt == 9) // New Mode (12 Channels)
+ {
+ if (s_exdata[7] == 125) PPM_in[8] += 5; // Hover Pitch UP (CH8)
+ if (s_exdata[8] == 125) PPM_in[8] -= 5; // Hover Pitch DN (CH8)
+ if (PPM_in[8] < -125) PPM_in[8] = -125; // Range-Limit
+ else if (PPM_in[8] > 125) PPM_in[8] = 125; // Range-Limit
+ PPM_in[10] = s_exdata[6]; // AUX2 (CH10)
+ }
+ }
+
+ s_excnt = 0; // Reset bitcounter
+ s_exparity = 0; // Reset parity bit
+ }
+
+ if (signal < 10) s_exdata[++s_excnt] = -125; // Bit = 0 -> value = -125 (min)
+ if (s_excnt == 10) s_excnt = 0; // Overflow protection
+ if (signal < -100)
+ {
+ s_exdata[s_excnt] = 125; // Bit = 1 -> value = 125 (max)
+ s_exparity = ~s_exparity; // Bit = 1 -> Invert parity bit
+ }
+
+ }
+#endif
+ if(SenderOkay >= 180) PPM_diff[index] = ((tmp - PPM_in[index]) / 3) * 3;
+ else PPM_diff[index] = 0;
+
+#ifdef RECEIVER_SPEKTRUM_EXP
+ if (index < 5 ) PPM_in[index] = tmp; // Update normal potis (CH1-4)
+ else if (index == 5) PPM_in[7] = signal; // Gear (CH7)
+ else if (index == 7) PPM_in[9] = signal; // Hover Throttle (CH9)
+#else
+ PPM_in[index] = tmp;
+#endif
+ }
+ else if(index > 17) ReSync = 1; // hier stimmt was nicht: neu synchronisieren
+ }
+ else
+ {
+ // hier stimmt was nicht: neu synchronisieren
+ ReSync = 1;
+ FrameCnt = 0;
+ Frame2 = 0;
+ // new frame next, nach fruehestens 7ms erwartet
+ SpektrumTimer = MIN_FRAMEGAP;
+ }
+
+ // 16 Bytes eingetroffen -> Komplett
+ if(FrameCnt >= 16)
+ {
+ // Frame complete
+ if(Frame2 == 0)
+ {
+ // Null bedeutet: Neue Daten
+ // nur beim ersten Frame (CH 0-7) setzen
+ if(!ReSync) NewPpmData = 0;
+ }
+ FrameCnt = 0;
+ Frame2 = 0;
+ Sync = 0;
+ SpektrumTimer = MIN_FRAMEGAP;
+ }
+ }
+}
/branches/metro/v0.82a metro_Akku+/Spektrum.d
0,0 → 1,3
Spektrum.o Spektrum.d : Spektrum.c Spektrum.h main.h old_macros.h printf_P.h timer0.h \
uart.h analog.h twimaster.h menu.h rc.h fc.h gps.h spi.h led.h \
spektrum.h capacity.h eeprom.h libfc.h debug.h
/branches/metro/v0.82a metro_Akku+/Spektrum.h
0,0 → 1,12
/*#######################################################################################
Dekodieren eines Spektrum Signals
#######################################################################################*/
 
#ifndef _SPEKTRUM_H
#define _SPEKTRUM_H
void SpektrumUartInit(void);
void SpektrumBinding(void);
extern unsigned char SpektrumTimer;
extern void SpektrumParser(unsigned char c);
 
#endif //_RC_H
/branches/metro/v0.82a metro_Akku+/Spektrum.lst
0,0 → 1,433
1 .file "Spektrum.c"
2 .arch atmega644p
3 __SREG__ = 0x3f
4 __SP_H__ = 0x3e
5 __SP_L__ = 0x3d
6 __tmp_reg__ = 0
7 __zero_reg__ = 1
8 .global __do_copy_data
9 .global __do_clear_bss
10 .global SpektrumTimer
11 .global SpektrumTimer
12 .section .bss
15 SpektrumTimer:
16 0000 00 .skip 1,0
17 .text
18 .global SpektrumUartInit
20 SpektrumUartInit:
21 /* prologue: frame size=0 */
22 /* prologue end (size=0) */
23 0000 4FB7 in r20,95-0x20
24 0002 24E1 ldi r18,lo8(20)
25 0004 30E0 ldi r19,hi8(20)
26 /* #APP */
27 0006 F894 cli
28 /* #NOAPP */
29 0008 8091 C900 lds r24,201
30 000c 8F77 andi r24,lo8(127)
31 000e 8093 C900 sts 201,r24
32 0012 8091 C900 lds r24,201
33 0016 8F7B andi r24,lo8(-65)
34 0018 8093 C900 sts 201,r24
35 001c 8091 C900 lds r24,201
36 0020 8F7D andi r24,lo8(-33)
37 0022 8093 C900 sts 201,r24
38 0026 5A9A sbi 43-0x20,2
39 0028 5298 cbi 42-0x20,2
40 002a 5B9A sbi 43-0x20,3
41 002c 539A sbi 42-0x20,3
42 002e 832F mov r24,r19
43 0030 9927 clr r25
44 0032 8093 CD00 sts 205,r24
45 0036 2093 CC00 sts 204,r18
46 003a 8091 C800 lds r24,200
47 003e 8260 ori r24,lo8(2)
48 0040 8093 C800 sts 200,r24
49 0044 80E1 ldi r24,lo8(16)
50 0046 8093 C900 sts 201,r24
51 004a 8091 CA00 lds r24,202
52 004e 8F77 andi r24,lo8(127)
53 0050 8093 CA00 sts 202,r24
54 0054 8091 CA00 lds r24,202
55 0058 8F7B andi r24,lo8(-65)
56 005a 8093 CA00 sts 202,r24
57 005e 8091 CA00 lds r24,202
58 0062 8F7D andi r24,lo8(-33)
59 0064 8093 CA00 sts 202,r24
60 0068 8091 CA00 lds r24,202
61 006c 8F7E andi r24,lo8(-17)
62 006e 8093 CA00 sts 202,r24
63 0072 8091 CA00 lds r24,202
64 0076 877F andi r24,lo8(-9)
65 0078 8093 CA00 sts 202,r24
66 007c 8091 C900 lds r24,201
67 0080 8B7F andi r24,lo8(-5)
68 0082 8093 C900 sts 201,r24
69 0086 8091 CA00 lds r24,202
70 008a 8460 ori r24,lo8(4)
71 008c 8093 CA00 sts 202,r24
72 0090 8091 CA00 lds r24,202
73 0094 8260 ori r24,lo8(2)
74 0096 8093 CA00 sts 202,r24
75 .L7:
76 009a 8091 C800 lds r24,200
77 009e 87FF sbrs r24,7
78 00a0 03C0 rjmp .L6
79 00a2 8091 CE00 lds r24,206
80 00a6 F9CF rjmp .L7
81 .L6:
82 00a8 8091 C900 lds r24,201
83 00ac 8068 ori r24,lo8(-128)
84 00ae 8093 C900 sts 201,r24
85 00b2 4FBF out 95-0x20,r20
86 /* epilogue: frame size=0 */
87 00b4 0895 ret
88 /* epilogue end (size=1) */
89 /* function SpektrumUartInit size 92 (91) */
91 .lcomm Sync.0,1
92 .lcomm FrameCnt.1,1
93 .lcomm ByteHigh.2,1
94 .data
97 ReSync.3:
98 0000 01 .byte 1
99 .lcomm Frame2.4,1
100 .text
101 .global SpektrumParser
103 SpektrumParser:
104 /* prologue: frame size=0 */
105 00b6 EF92 push r14
106 00b8 FF92 push r15
107 00ba 0F93 push r16
108 00bc 1F93 push r17
109 00be CF93 push r28
110 00c0 DF93 push r29
111 /* prologue end (size=6) */
112 00c2 482F mov r20,r24
113 00c4 00E0 ldi r16,lo8(0)
114 00c6 10E0 ldi r17,hi8(0)
115 00c8 8091 0000 lds r24,ReSync.3
116 00cc 8130 cpi r24,lo8(1)
117 00ce 61F4 brne .L9
118 00d0 1092 0000 sts ReSync.3,__zero_reg__
119 00d4 84E4 ldi r24,lo8(68)
120 00d6 8093 0000 sts SpektrumTimer,r24
121 00da 1092 0000 sts FrameCnt.1,__zero_reg__
122 00de 1092 0000 sts Sync.0,__zero_reg__
123 00e2 1092 0000 sts ByteHigh.2,__zero_reg__
124 00e6 2BC1 rjmp .L8
125 .L9:
126 00e8 8091 0000 lds r24,SpektrumTimer
127 00ec 8823 tst r24
128 00ee 19F4 brne .L11
129 00f0 21E0 ldi r18,lo8(1)
130 00f2 30E0 ldi r19,hi8(1)
131 00f4 01C0 rjmp .L12
132 .L11:
133 00f6 9801 movw r18,r16
134 .L12:
135 00f8 9091 0000 lds r25,Sync.0
136 00fc 9923 tst r25
137 00fe 71F4 brne .L13
138 0100 232B or r18,r19
139 0102 11F0 breq .L14
140 0104 81E0 ldi r24,lo8(1)
141 0106 10C0 rjmp .L49
142 .L14:
143 0108 84E4 ldi r24,lo8(68)
144 010a 8093 0000 sts SpektrumTimer,r24
145 010e 9093 0000 sts FrameCnt.1,r25
146 0112 9093 0000 sts Sync.0,r25
147 0116 9093 0000 sts ByteHigh.2,r25
148 011a FAC0 rjmp .L16
149 .L13:
150 011c 9130 cpi r25,lo8(1)
151 011e 69F4 brne .L17
152 0120 232B or r18,r19
153 0122 09F0 breq .+2
154 0124 EBC0 rjmp .L23
155 0126 82E0 ldi r24,lo8(2)
156 .L49:
157 0128 8093 0000 sts Sync.0,r24
158 012c 8091 0000 lds r24,FrameCnt.1
159 0130 8F5F subi r24,lo8(-(1))
160 0132 8093 0000 sts FrameCnt.1,r24
161 0136 83E0 ldi r24,lo8(3)
162 0138 E9C0 rjmp .L47
163 .L17:
164 013a 9230 cpi r25,lo8(2)
165 013c D1F4 brne .L19
166 013e 232B or r18,r19
167 0140 09F0 breq .+2
168 0142 DCC0 rjmp .L23
169 0144 83E0 ldi r24,lo8(3)
170 0146 8093 0000 sts SpektrumTimer,r24
171 014a 4093 0000 sts ByteHigh.2,r20
172 014e 9091 0000 lds r25,FrameCnt.1
173 0152 9230 cpi r25,lo8(2)
174 0154 39F4 brne .L20
175 0156 1092 0000 sts Frame2.4,__zero_reg__
176 015a 47FF sbrs r20,7
177 015c 03C0 rjmp .L20
178 015e 81E0 ldi r24,lo8(1)
179 0160 8093 0000 sts Frame2.4,r24
180 .L20:
181 0164 83E0 ldi r24,lo8(3)
182 0166 8093 0000 sts Sync.0,r24
183 016a 9F5F subi r25,lo8(-(1))
184 016c 9093 0000 sts FrameCnt.1,r25
185 0170 CFC0 rjmp .L16
186 .L19:
187 0172 9330 cpi r25,lo8(3)
188 0174 09F0 breq .+2
189 0176 C2C0 rjmp .L23
190 0178 232B or r18,r19
191 017a 09F0 breq .+2
192 017c BFC0 rjmp .L23
193 017e 9093 0000 sts SpektrumTimer,r25
194 0182 82E0 ldi r24,lo8(2)
195 0184 8093 0000 sts Sync.0,r24
196 0188 8091 0000 lds r24,FrameCnt.1
197 018c 8F5F subi r24,lo8(-(1))
198 018e 8093 0000 sts FrameCnt.1,r24
199 0192 2091 0000 lds r18,ByteHigh.2
200 0196 822F mov r24,r18
201 0198 9927 clr r25
202 019a 782F mov r23,r24
203 019c 6627 clr r22
204 019e 842F mov r24,r20
205 01a0 9927 clr r25
206 01a2 682B or r22,r24
207 01a4 792B or r23,r25
208 01a6 8091 0000 lds r24,EE_Parameter+39
209 01aa 8130 cpi r24,lo8(1)
210 01ac 49F4 brne .L24
211 01ae 7370 andi r23,hi8(1023)
212 01b0 CB01 movw r24,r22
213 01b2 8050 subi r24,lo8(-(-512))
214 01b4 9240 sbci r25,hi8(-(-512))
215 01b6 63E0 ldi r22,lo8(3)
216 01b8 70E0 ldi r23,hi8(3)
217 01ba 0E94 0000 call __divmodhi4
218 01be 17C0 rjmp .L48
219 .L24:
220 01c0 8230 cpi r24,lo8(2)
221 01c2 61F4 brne .L26
222 01c4 7770 andi r23,hi8(2047)
223 01c6 CB01 movw r24,r22
224 01c8 8050 subi r24,lo8(-(-1024))
225 01ca 9440 sbci r25,hi8(-(-1024))
226 01cc 66E0 ldi r22,lo8(6)
227 01ce 70E0 ldi r23,hi8(6)
228 01d0 0E94 0000 call __divmodhi4
229 01d4 2695 lsr r18
230 01d6 2695 lsr r18
231 01d8 2695 lsr r18
232 01da 0BC0 rjmp .L46
233 .L26:
234 01dc 7370 andi r23,hi8(1023)
235 01de 6856 subi r22,lo8(-(-360))
236 01e0 7140 sbci r23,hi8(-(-360))
237 01e2 CB01 movw r24,r22
238 01e4 77FD sbrc r23,7
239 01e6 0196 adiw r24,1
240 .L28:
241 01e8 BC01 movw r22,r24
242 01ea 7595 asr r23
243 01ec 6795 ror r22
244 .L48:
245 01ee 2695 lsr r18
246 01f0 2695 lsr r18
247 .L46:
248 01f2 022F mov r16,r18
249 01f4 1127 clr r17
250 01f6 0F70 andi r16,lo8(15)
251 01f8 1070 andi r17,hi8(15)
252 01fa 0F5F subi r16,lo8(-(1))
253 01fc 1F4F sbci r17,hi8(-(1))
254 01fe 0D30 cpi r16,13
255 0200 1105 cpc r17,__zero_reg__
256 0202 08F0 brlo .+2
257 0204 74C0 rjmp .L29
258 0206 7801 movw r14,r16
259 0208 E00E add r14,r16
260 020a F11E adc r15,r17
261 020c F701 movw r30,r14
262 020e E050 subi r30,lo8(-(PPM_in))
263 0210 F040 sbci r31,hi8(-(PPM_in))
264 0212 8081 ld r24,Z
265 0214 9181 ldd r25,Z+1
266 0216 9B01 movw r18,r22
267 0218 281B sub r18,r24
268 021a 390B sbc r19,r25
269 021c C901 movw r24,r18
270 021e 37FF sbrs r19,7
271 0220 03C0 rjmp .L31
272 0222 9095 com r25
273 0224 8195 neg r24
274 0226 9F4F sbci r25,lo8(-1)
275 .L31:
276 0228 0697 sbiw r24,6
277 022a 94F4 brge .L30
278 022c 8091 0000 lds r24,SenderOkay
279 0230 883C cpi r24,lo8(-56)
280 0232 30F4 brsh .L32
281 0234 8091 0000 lds r24,SenderOkay
282 0238 865F subi r24,lo8(-(10))
283 023a 8093 0000 sts SenderOkay,r24
284 023e 08C0 rjmp .L30
285 .L32:
286 0240 88EC ldi r24,lo8(-56)
287 0242 8093 0000 sts SenderOkay,r24
288 0246 8091 6F00 lds r24,111
289 024a 8F7D andi r24,lo8(-33)
290 024c 8093 6F00 sts 111,r24
291 .L30:
292 0250 F701 movw r30,r14
293 0252 E050 subi r30,lo8(-(PPM_in))
294 0254 F040 sbci r31,hi8(-(PPM_in))
295 0256 8081 ld r24,Z
296 0258 9181 ldd r25,Z+1
297 025a 9C01 movw r18,r24
298 025c 220F lsl r18
299 025e 331F rol r19
300 0260 280F add r18,r24
301 0262 391F adc r19,r25
302 0264 260F add r18,r22
303 0266 371F adc r19,r23
304 0268 37FF sbrs r19,7
305 026a 02C0 rjmp .L34
306 026c 2D5F subi r18,lo8(-(3))
307 026e 3F4F sbci r19,hi8(-(3))
308 .L34:
309 0270 E901 movw r28,r18
310 0272 D595 asr r29
311 0274 C795 ror r28
312 0276 D595 asr r29
313 0278 C795 ror r28
314 027a CB01 movw r24,r22
315 027c 0196 adiw r24,1
316 027e 8C17 cp r24,r28
317 0280 9D07 cpc r25,r29
318 0282 14F4 brge .L35
319 0284 2197 sbiw r28,1
320 0286 06C0 rjmp .L36
321 .L35:
322 0288 6150 subi r22,lo8(-(-1))
323 028a 7040 sbci r23,hi8(-(-1))
324 028c C617 cp r28,r22
325 028e D707 cpc r29,r23
326 0290 0CF4 brge .L36
327 0292 2196 adiw r28,1
328 .L36:
329 0294 8091 0000 lds r24,SenderOkay
330 0298 843B cpi r24,lo8(-76)
331 029a D0F0 brlo .L38
332 029c F701 movw r30,r14
333 029e E050 subi r30,lo8(-(PPM_in))
334 02a0 F040 sbci r31,hi8(-(PPM_in))
335 02a2 8081 ld r24,Z
336 02a4 9181 ldd r25,Z+1
337 02a6 FE01 movw r30,r28
338 02a8 E81B sub r30,r24
339 02aa F90B sbc r31,r25
340 02ac CF01 movw r24,r30
341 02ae 63E0 ldi r22,lo8(3)
342 02b0 70E0 ldi r23,hi8(3)
343 02b2 0E94 0000 call __divmodhi4
344 02b6 CB01 movw r24,r22
345 02b8 880F lsl r24
346 02ba 991F rol r25
347 02bc 860F add r24,r22
348 02be 971F adc r25,r23
349 02c0 20E0 ldi r18,lo8(PPM_diff)
350 02c2 30E0 ldi r19,hi8(PPM_diff)
351 02c4 E20E add r14,r18
352 02c6 F31E adc r15,r19
353 02c8 F701 movw r30,r14
354 02ca 9183 std Z+1,r25
355 02cc 8083 st Z,r24
356 02ce 07C0 rjmp .L39
357 .L38:
358 02d0 20E0 ldi r18,lo8(PPM_diff)
359 02d2 30E0 ldi r19,hi8(PPM_diff)
360 02d4 E20E add r14,r18
361 02d6 F31E adc r15,r19
362 02d8 F701 movw r30,r14
363 02da 1182 std Z+1,__zero_reg__
364 02dc 1082 st Z,__zero_reg__
365 .L39:
366 02de 000F add r16,r16
367 02e0 111F adc r17,r17
368 02e2 0050 subi r16,lo8(-(PPM_in))
369 02e4 1040 sbci r17,hi8(-(PPM_in))
370 02e6 F801 movw r30,r16
371 02e8 D183 std Z+1,r29
372 02ea C083 st Z,r28
373 02ec 11C0 rjmp .L16
374 .L29:
375 02ee 0231 cpi r16,18
376 02f0 1105 cpc r17,__zero_reg__
377 02f2 70F0 brlo .L16
378 02f4 81E0 ldi r24,lo8(1)
379 02f6 8093 0000 sts ReSync.3,r24
380 02fa 0AC0 rjmp .L16
381 .L23:
382 02fc 81E0 ldi r24,lo8(1)
383 02fe 8093 0000 sts ReSync.3,r24
384 0302 1092 0000 sts FrameCnt.1,__zero_reg__
385 0306 1092 0000 sts Frame2.4,__zero_reg__
386 030a 84E4 ldi r24,lo8(68)
387 .L47:
388 030c 8093 0000 sts SpektrumTimer,r24
389 .L16:
390 0310 8091 0000 lds r24,FrameCnt.1
391 0314 8031 cpi r24,lo8(16)
392 0316 98F0 brlo .L8
393 0318 8091 0000 lds r24,Frame2.4
394 031c 8823 tst r24
395 031e 31F4 brne .L44
396 0320 8091 0000 lds r24,ReSync.3
397 0324 8823 tst r24
398 0326 11F4 brne .L44
399 0328 8093 0000 sts NewPpmData,r24
400 .L44:
401 032c 1092 0000 sts FrameCnt.1,__zero_reg__
402 0330 1092 0000 sts Frame2.4,__zero_reg__
403 0334 1092 0000 sts Sync.0,__zero_reg__
404 0338 84E4 ldi r24,lo8(68)
405 033a 8093 0000 sts SpektrumTimer,r24
406 .L8:
407 /* epilogue: frame size=0 */
408 033e E6E0 ldi r30,6
409 0340 CDB7 in r28,__SP_L__
410 0342 DEB7 in r29,__SP_H__
411 0344 0C94 0000 jmp __epilogue_restores__+24
412 /* epilogue end (size=5) */
413 /* function SpektrumParser size 334 (323) */
415 /* File "Spektrum.c": code 426 = 0x01aa ( 414), prologues 6, epilogues 6 */
DEFINED SYMBOLS
*ABS*:00000000 Spektrum.c
C:\Users\Thomas\AppData\Local\Temp/ccUXbaaa.s:3 *ABS*:0000003f __SREG__
C:\Users\Thomas\AppData\Local\Temp/ccUXbaaa.s:4 *ABS*:0000003e __SP_H__
C:\Users\Thomas\AppData\Local\Temp/ccUXbaaa.s:5 *ABS*:0000003d __SP_L__
C:\Users\Thomas\AppData\Local\Temp/ccUXbaaa.s:6 *ABS*:00000000 __tmp_reg__
C:\Users\Thomas\AppData\Local\Temp/ccUXbaaa.s:7 *ABS*:00000001 __zero_reg__
C:\Users\Thomas\AppData\Local\Temp/ccUXbaaa.s:15 .bss:00000000 SpektrumTimer
C:\Users\Thomas\AppData\Local\Temp/ccUXbaaa.s:20 .text:00000000 SpektrumUartInit
.bss:00000001 Sync.0
C:\Users\Thomas\AppData\Local\Temp/ccUXbaaa.s:91 .bss:00000002 FrameCnt.1
C:\Users\Thomas\AppData\Local\Temp/ccUXbaaa.s:92 .bss:00000003 ByteHigh.2
C:\Users\Thomas\AppData\Local\Temp/ccUXbaaa.s:97 .data:00000000 ReSync.3
C:\Users\Thomas\AppData\Local\Temp/ccUXbaaa.s:93 .bss:00000004 Frame2.4
C:\Users\Thomas\AppData\Local\Temp/ccUXbaaa.s:103 .text:000000b6 SpektrumParser
 
UNDEFINED SYMBOLS
__do_copy_data
__do_clear_bss
EE_Parameter
__divmodhi4
PPM_in
SenderOkay
PPM_diff
NewPpmData
__epilogue_restores__
/branches/metro/v0.82a metro_Akku+/analog.c
0,0 → 1,283
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// + Copyright (c) Holger Buss, Ingo Busker
// + only for non-profit use
// + www.MikroKopter.com
// + porting the sources to other systems or using the software on other systems (except hardware from www.mikrokopter.de) is not allowed
// + see the File "License.txt" for further Informations
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 
#include "main.h"
#include "eeprom.h"
volatile int Aktuell_Nick,Aktuell_Roll,Aktuell_Gier,Aktuell_ax, Aktuell_ay,Aktuell_az, UBat = 100;
volatile int AdWertNickFilter = 0, AdWertRollFilter = 0, AdWertGierFilter = 0;
volatile int HiResNick = 2500, HiResRoll = 2500;
volatile int AdWertNick = 0, AdWertRoll = 0, AdWertGier = 0;
volatile int AdWertAccRoll = 0,AdWertAccNick = 0,AdWertAccHoch = 0;
volatile char messanzahl_AccHoch = 0;
volatile long Luftdruck = 32000;
volatile long SummenHoehe = 0;
volatile int StartLuftdruck;
volatile unsigned int MessLuftdruck = 1023;
unsigned char DruckOffsetSetting;
signed char ExpandBaro = 0;
volatile int VarioMeter = 0;
volatile unsigned int ZaehlMessungen = 0;
unsigned char AnalogOffsetNick = 115,AnalogOffsetRoll = 115,AnalogOffsetGier = 115;
volatile unsigned char AdReady = 1;
float NeutralAccZ_float;
//#######################################################################################
//
void ADC_Init(void)
//#######################################################################################
{
ADMUX = 0;//Referenz ist extern
ANALOG_ON;
}
 
#define DESIRED_H_ADC 800
 
void SucheLuftruckOffset(void)
{
unsigned int off;
ExpandBaro = 0;
 
#if (defined(__AVR_ATmega1284__) || defined(__AVR_ATmega1284P__))
{
unsigned char off2;
OCR0A = 150;
off2 = GetParamByte(PID_PRESSURE_OFFSET);
if(off2 < 230) off2 += 10;
OCR0B = off2;
Delay_ms_Mess(100);
if(MessLuftdruck > DESIRED_H_ADC) off2 = 240;
for(; off2 >= 5; off2 -= 5)
{
OCR0B = off2;
Delay_ms_Mess(50);
printf("*");
if(MessLuftdruck > DESIRED_H_ADC) break;
}
SetParamByte(PID_PRESSURE_OFFSET, off2);
if(off2 >= 15) off = 140; else off = 0;
for(; off < 250;off++)
{
OCR0A = off;
Delay_ms_Mess(50);
printf(".");
if(MessLuftdruck < DESIRED_H_ADC) break;
}
DruckOffsetSetting = off;
}
#else
off = GetParamByte(PID_PRESSURE_OFFSET);
if(off > 20) off -= 10;
OCR0A = off;
Delay_ms_Mess(100);
if(MessLuftdruck < DESIRED_H_ADC) off = 0;
for(; off < 250;off++)
{
OCR0A = off;
Delay_ms_Mess(50);
printf(".");
if(MessLuftdruck < DESIRED_H_ADC) break;
}
DruckOffsetSetting = off;
SetParamByte(PID_PRESSURE_OFFSET, off);
#endif
if((EE_Parameter.GlobalConfig & CFG_HOEHENREGELUNG) && (DruckOffsetSetting < 10 || DruckOffsetSetting >= 245)) VersionInfo.HardwareError[0] |= FC_ERROR0_PRESSURE;
OCR0A = off;
Delay_ms_Mess(300);
}
 
 
void SucheGyroOffset(void)
{
unsigned char i, ready = 0;
int timeout;
timeout = SetDelay(2000);
for(i=140; i != 0; i--)
{
if(ready == 3 && i > 10) i = 9;
ready = 0;
if(AdWertNick < 1020) AnalogOffsetNick--; else if(AdWertNick > 1030) AnalogOffsetNick++; else ready++;
if(AdWertRoll < 1020) AnalogOffsetRoll--; else if(AdWertRoll > 1030) AnalogOffsetRoll++; else ready++;
if(AdWertGier < 1020) AnalogOffsetGier--; else if(AdWertGier > 1030) AnalogOffsetGier++; else ready++;
I2C_Start(TWI_STATE_GYRO_OFFSET_TX);
if(AnalogOffsetNick < 10) { VersionInfo.HardwareError[0] |= FC_ERROR0_GYRO_NICK; AnalogOffsetNick = 10;}; if(AnalogOffsetNick > 245) { VersionInfo.HardwareError[0] |= FC_ERROR0_GYRO_NICK; AnalogOffsetNick = 245;};
if(AnalogOffsetRoll < 10) { VersionInfo.HardwareError[0] |= FC_ERROR0_GYRO_ROLL; AnalogOffsetRoll = 10;}; if(AnalogOffsetRoll > 245) { VersionInfo.HardwareError[0] |= FC_ERROR0_GYRO_ROLL; AnalogOffsetRoll = 245;};
if(AnalogOffsetGier < 10) { VersionInfo.HardwareError[0] |= FC_ERROR0_GYRO_YAW; AnalogOffsetGier = 10;}; if(AnalogOffsetGier > 245) { VersionInfo.HardwareError[0] |= FC_ERROR0_GYRO_YAW; AnalogOffsetGier = 245;};
while(twi_state) if(CheckDelay(timeout)) {printf("\n\r DAC or I2C ERROR! Check I2C, 3Vref, DAC and BL-Ctrl"); break;}
AdReady = 0;
ANALOG_ON;
while(!AdReady);
if(i<10) Delay_ms_Mess(10);
}
Delay_ms_Mess(70);
}
 
/*
0 n
1 r
2 g
3 y
4 x
5 n
6 r
7 u
8 z
9 L
10 n
11 r
12 g
13 y
14 x
15 n
16 r
17 L
*/
 
//#######################################################################################
//
ISR(ADC_vect)
//#######################################################################################
{
static unsigned char kanal=0,state = 0;
static signed char subcount = 0;
static signed int gier1, roll1, nick1, nick_filter, roll_filter;
static signed int accy, accx;
static long tmpLuftdruck = 0;
static char messanzahl_Druck = 0;
switch(state++)
{
case 0:
nick1 = ADC;
kanal = AD_ROLL;
break;
case 1:
roll1 = ADC;
kanal = AD_GIER;
break;
case 2:
gier1 = ADC;
kanal = AD_ACC_Y;
break;
case 3:
Aktuell_ay = NeutralAccY - ADC;
accy = Aktuell_ay;
kanal = AD_ACC_X;
break;
case 4:
Aktuell_ax = ADC - NeutralAccX;
accx = Aktuell_ax;
kanal = AD_NICK;
break;
case 5:
nick1 += ADC;
kanal = AD_ROLL;
break;
case 6:
roll1 += ADC;
kanal = AD_UBAT;
break;
case 7:
UBat = (3 * UBat + ADC / 3) / 4;
kanal = AD_ACC_Z;
break;
case 8:
AdWertAccHoch = (signed int) ADC - NeutralAccZ;
if(AdWertAccHoch > 1)
{
if(NeutralAccZ < 750)
{
subcount += 5;
if(modell_fliegt < 500) subcount += 10;
}
if(subcount > 100) { NeutralAccZ++; subcount -= 100;}
}
else if(AdWertAccHoch < -1)
{
if(NeutralAccZ > 550)
{
subcount -= 5;
if(modell_fliegt < 500) subcount -= 10;
if(subcount < -100) { NeutralAccZ--; subcount += 100;}
}
}
messanzahl_AccHoch = 1;
Aktuell_az = ADC;
Mess_Integral_Hoch += AdWertAccHoch; // Integrieren
Mess_Integral_Hoch -= Mess_Integral_Hoch / 1024; // dämfen
kanal = AD_DRUCK;
break;
// "case 9:" fehlt hier absichtlich
case 10:
nick1 += ADC;
kanal = AD_ROLL;
break;
case 11:
roll1 += ADC;
kanal = AD_GIER;
break;
case 12:
if(PlatinenVersion == 10) AdWertGier = (ADC + gier1 + 1) / 2;
else
if(PlatinenVersion >= 20) AdWertGier = 2047 - (ADC + gier1);
else AdWertGier = (ADC + gier1);
kanal = AD_ACC_Y;
break;
case 13:
Aktuell_ay = NeutralAccY - ADC;
AdWertAccRoll = (Aktuell_ay + accy);
kanal = AD_ACC_X;
break;
case 14:
Aktuell_ax = ADC - NeutralAccX;
AdWertAccNick = (Aktuell_ax + accx);
kanal = AD_NICK;
break;
case 15:
nick1 += ADC;
if(PlatinenVersion == 10) nick1 *= 2; else nick1 *= 4;
AdWertNick = nick1 / 8;
nick_filter = (nick_filter + nick1) / 2;
HiResNick = nick_filter - AdNeutralNick;
AdWertNickFilter = (AdWertNickFilter + HiResNick) / 2;
kanal = AD_ROLL;
break;
case 16:
roll1 += ADC;
if(PlatinenVersion == 10) roll1 *= 2; else roll1 *= 4;
AdWertRoll = roll1 / 8;
roll_filter = (roll_filter + roll1) / 2;
HiResRoll = roll_filter - AdNeutralRoll;
AdWertRollFilter = (AdWertRollFilter + HiResRoll) / 2;
kanal = AD_DRUCK;
break;
case 17:
state = 0;
AdReady = 1;
ZaehlMessungen++;
// "break" fehlt hier absichtlich
case 9:
MessLuftdruck = ADC;
tmpLuftdruck += MessLuftdruck;
if(++messanzahl_Druck >= 18)
{
Luftdruck = (7 * Luftdruck + tmpLuftdruck - (18 * 523) * (long)ExpandBaro + 4) / 8; // -523.19 counts per 10 counts offset step
HoehenWert = StartLuftdruck - Luftdruck;
SummenHoehe -= SummenHoehe/SM_FILTER;
SummenHoehe += HoehenWert;
VarioMeter = (31 * VarioMeter + 8 * (int)(HoehenWert - SummenHoehe/SM_FILTER))/32;
tmpLuftdruck /= 2;
messanzahl_Druck = 18/2;
}
kanal = AD_NICK;
break;
default:
kanal = 0; state = 0; kanal = AD_NICK;
break;
}
ADMUX = kanal;
if(state != 0) ANALOG_ON;
}
 
/branches/metro/v0.82a metro_Akku+/analog.d
0,0 → 1,3
analog.o analog.d : analog.c main.h old_macros.h printf_P.h timer0.h uart.h \
analog.h twimaster.h menu.h rc.h fc.h gps.h spi.h led.h spektrum.h \
capacity.h eeprom.h libfc.h debug.h
/branches/metro/v0.82a metro_Akku+/analog.h
0,0 → 1,47
#ifndef _ANALOG_H
#define _ANALOG_H
/*#######################################################################################
 
#######################################################################################*/
 
#define SM_FILTER 16
 
extern volatile int UBat;
extern volatile int AdWertNick, AdWertRoll, AdWertGier;
extern volatile int AdWertAccRoll,AdWertAccNick,AdWertAccHoch;
extern volatile int HiResNick, HiResRoll;
extern volatile int AdWertNickFilter, AdWertRollFilter, AdWertGierFilter;
extern volatile int Aktuell_Nick,Aktuell_Roll,Aktuell_Gier,Aktuell_ax, Aktuell_ay,Aktuell_az;
extern volatile long Luftdruck;
extern volatile long SummenHoehe;
extern volatile char messanzahl_Druck;
extern volatile unsigned int ZaehlMessungen;
extern unsigned char DruckOffsetSetting;
extern signed char ExpandBaro;
extern volatile int VarioMeter;
extern volatile unsigned int MessLuftdruck;
extern volatile int StartLuftdruck;
extern volatile char MessanzahlNick;
extern unsigned char AnalogOffsetNick,AnalogOffsetRoll,AnalogOffsetGier;
extern volatile unsigned char AdReady;
 
unsigned int ReadADC(unsigned char adc_input);
void ADC_Init(void);
void SucheLuftruckOffset(void);
void SucheGyroOffset(void);
 
#define AD_GIER 0
#define AD_ROLL 1
#define AD_NICK 2
#define AD_DRUCK 3
#define AD_UBAT 4
#define AD_ACC_Z 5
#define AD_ACC_Y 6
#define AD_ACC_X 7
 
 
#define ANALOG_OFF ADCSRA=0
 
#define ANALOG_ON ADCSRA=(1<<ADEN)|(1<<ADSC)|(0<<ADATE)|(1<<ADPS2)|(1<<ADPS1)|(1<<ADPS0)|(1<<ADIE)
//Signle trigger Mode, Interrupt on
#endif //_ANALOG_H
/branches/metro/v0.82a metro_Akku+/analog.lst
0,0 → 1,1304
1 .file "analog.c"
2 .arch atmega644p
3 __SREG__ = 0x3f
4 __SP_H__ = 0x3e
5 __SP_L__ = 0x3d
6 __tmp_reg__ = 0
7 __zero_reg__ = 1
8 .global __do_copy_data
9 .global __do_clear_bss
10 .global AdReady
11 .data
14 AdReady:
15 0000 01 .byte 1
16 .global AnalogOffsetGier
19 AnalogOffsetGier:
20 0001 73 .byte 115
21 .global AnalogOffsetRoll
24 AnalogOffsetRoll:
25 0002 73 .byte 115
26 .global AnalogOffsetNick
29 AnalogOffsetNick:
30 0003 73 .byte 115
31 .global ZaehlMessungen
32 .global ZaehlMessungen
33 .section .bss
36 ZaehlMessungen:
37 0000 0000 .skip 2,0
38 .global VarioMeter
39 .global VarioMeter
42 VarioMeter:
43 0002 0000 .skip 2,0
44 .global ExpandBaro
45 .global ExpandBaro
48 ExpandBaro:
49 0004 00 .skip 1,0
50 .global MessLuftdruck
51 .data
54 MessLuftdruck:
55 0004 FF03 .word 1023
56 .global SummenHoehe
57 .global SummenHoehe
58 .section .bss
61 SummenHoehe:
62 0005 0000 0000 .skip 4,0
63 .global Luftdruck
64 .data
67 Luftdruck:
68 0006 007D 0000 .long 32000
69 .global messanzahl_AccHoch
70 .global messanzahl_AccHoch
71 .section .bss
74 messanzahl_AccHoch:
75 0009 00 .skip 1,0
76 .global AdWertAccHoch
77 .global AdWertAccHoch
80 AdWertAccHoch:
81 000a 0000 .skip 2,0
82 .global AdWertAccNick
83 .global AdWertAccNick
86 AdWertAccNick:
87 000c 0000 .skip 2,0
88 .global AdWertAccRoll
89 .global AdWertAccRoll
92 AdWertAccRoll:
93 000e 0000 .skip 2,0
94 .global AdWertGier
95 .global AdWertGier
98 AdWertGier:
99 0010 0000 .skip 2,0
100 .global AdWertRoll
101 .global AdWertRoll
104 AdWertRoll:
105 0012 0000 .skip 2,0
106 .global AdWertNick
107 .global AdWertNick
110 AdWertNick:
111 0014 0000 .skip 2,0
112 .global HiResRoll
113 .data
116 HiResRoll:
117 000a C409 .word 2500
118 .global HiResNick
121 HiResNick:
122 000c C409 .word 2500
123 .global AdWertGierFilter
124 .global AdWertGierFilter
125 .section .bss
128 AdWertGierFilter:
129 0016 0000 .skip 2,0
130 .global AdWertRollFilter
131 .global AdWertRollFilter
134 AdWertRollFilter:
135 0018 0000 .skip 2,0
136 .global AdWertNickFilter
137 .global AdWertNickFilter
140 AdWertNickFilter:
141 001a 0000 .skip 2,0
142 .global UBat
143 .data
146 UBat:
147 000e 6400 .word 100
148 .text
149 .global ADC_Init
151 ADC_Init:
152 /* prologue: frame size=0 */
153 /* prologue end (size=0) */
154 0000 1092 7C00 sts 124,__zero_reg__
155 0004 8FEC ldi r24,lo8(-49)
156 0006 8093 7A00 sts 122,r24
157 /* epilogue: frame size=0 */
158 000a 0895 ret
159 /* epilogue end (size=1) */
160 /* function ADC_Init size 6 (5) */
162 .section .progmem.data,"a",@progbits
165 __c.13:
166 0000 2E00 .string "."
167 .text
168 .global SucheLuftruckOffset
170 SucheLuftruckOffset:
171 /* prologue: frame size=0 */
172 000c CF93 push r28
173 000e DF93 push r29
174 /* prologue end (size=2) */
175 0010 1092 0000 sts ExpandBaro,__zero_reg__
176 0014 83E0 ldi r24,lo8(3)
177 0016 90E0 ldi r25,hi8(3)
178 0018 0E94 0000 call GetParamByte
179 001c C82F mov r28,r24
180 001e DD27 clr r29
181 0020 C531 cpi r28,21
182 0022 D105 cpc r29,__zero_reg__
183 0024 08F0 brlo .L3
184 0026 2A97 sbiw r28,10
185 .L3:
186 0028 C7BD out 71-0x20,r28
187 002a 84E6 ldi r24,lo8(100)
188 002c 90E0 ldi r25,hi8(100)
189 002e 0E94 0000 call Delay_ms_Mess
190 0032 8091 0000 lds r24,MessLuftdruck
191 0036 9091 0000 lds r25,(MessLuftdruck)+1
192 003a 8052 subi r24,lo8(800)
193 003c 9340 sbci r25,hi8(800)
194 003e 10F4 brsh .L4
195 0040 C0E0 ldi r28,lo8(0)
196 0042 D0E0 ldi r29,hi8(0)
197 .L4:
198 0044 CA3F cpi r28,250
199 0046 D105 cpc r29,__zero_reg__
200 0048 F8F4 brsh .L6
201 004a C7BD out 71-0x20,r28
202 004c 82E3 ldi r24,lo8(50)
203 004e 90E0 ldi r25,hi8(50)
204 0050 0E94 0000 call Delay_ms_Mess
205 0054 80E0 ldi r24,lo8(__c.13)
206 0056 90E0 ldi r25,hi8(__c.13)
207 0058 9F93 push r25
208 005a 8F93 push r24
209 005c 80E0 ldi r24,lo8(pm(uart_putchar))
210 005e 90E0 ldi r25,hi8(pm(uart_putchar))
211 0060 9F93 push r25
212 0062 8F93 push r24
213 0064 E091 0000 lds r30,_printf_P
214 0068 F091 0000 lds r31,(_printf_P)+1
215 006c 0995 icall
216 006e 8091 0000 lds r24,MessLuftdruck
217 0072 9091 0000 lds r25,(MessLuftdruck)+1
218 0076 0F90 pop __tmp_reg__
219 0078 0F90 pop __tmp_reg__
220 007a 0F90 pop __tmp_reg__
221 007c 0F90 pop __tmp_reg__
222 007e 8052 subi r24,lo8(800)
223 0080 9340 sbci r25,hi8(800)
224 0082 10F0 brlo .L6
225 0084 2196 adiw r28,1
226 0086 DECF rjmp .L4
227 .L6:
228 0088 C093 0000 sts DruckOffsetSetting,r28
229 008c 6C2F mov r22,r28
230 008e 83E0 ldi r24,lo8(3)
231 0090 90E0 ldi r25,hi8(3)
232 0092 0E94 0000 call SetParamByte
233 0096 8091 0000 lds r24,EE_Parameter+13
234 009a 80FF sbrs r24,0
235 009c 0AC0 rjmp .L10
236 009e 8091 0000 lds r24,DruckOffsetSetting
237 00a2 8A50 subi r24,lo8(-(-10))
238 00a4 8B3E cpi r24,lo8(-21)
239 00a6 28F0 brlo .L10
240 00a8 8091 0000 lds r24,VersionInfo+5
241 00ac 8064 ori r24,lo8(64)
242 00ae 8093 0000 sts VersionInfo+5,r24
243 .L10:
244 00b2 C7BD out 71-0x20,r28
245 00b4 8CE2 ldi r24,lo8(300)
246 00b6 91E0 ldi r25,hi8(300)
247 00b8 0E94 0000 call Delay_ms_Mess
248 /* epilogue: frame size=0 */
249 00bc DF91 pop r29
250 00be CF91 pop r28
251 00c0 0895 ret
252 /* epilogue end (size=3) */
253 /* function SucheLuftruckOffset size 93 (88) */
255 .section .progmem.data
258 __c.12:
259 0002 0A0D 2044 .string "\n\r DAC or I2C ERROR! Check I2C, 3Vref, DAC and BL-Ctrl"
259 4143 206F
259 7220 4932
259 4320 4552
259 524F 5221
260 .text
261 .global SucheGyroOffset
263 SucheGyroOffset:
264 /* prologue: frame size=0 */
265 00c2 EF92 push r14
266 00c4 FF92 push r15
267 00c6 1F93 push r17
268 00c8 CF93 push r28
269 /* prologue end (size=4) */
270 00ca 10E0 ldi r17,lo8(0)
271 00cc 80ED ldi r24,lo8(2000)
272 00ce 97E0 ldi r25,hi8(2000)
273 00d0 0E94 0000 call SetDelay
274 00d4 7C01 movw r14,r24
275 00d6 CCE8 ldi r28,lo8(-116)
276 .L43:
277 00d8 1330 cpi r17,lo8(3)
278 00da 19F4 brne .L16
279 00dc CB30 cpi r28,lo8(11)
280 00de 08F0 brlo .L16
281 00e0 C9E0 ldi r28,lo8(9)
282 .L16:
283 00e2 10E0 ldi r17,lo8(0)
284 00e4 8091 0000 lds r24,AdWertNick
285 00e8 9091 0000 lds r25,(AdWertNick)+1
286 00ec 8C5F subi r24,lo8(1020)
287 00ee 9340 sbci r25,hi8(1020)
288 00f0 24F4 brge .L17
289 00f2 8091 0000 lds r24,AnalogOffsetNick
290 00f6 8150 subi r24,lo8(-(-1))
291 00f8 0AC0 rjmp .L48
292 .L17:
293 00fa 8091 0000 lds r24,AdWertNick
294 00fe 9091 0000 lds r25,(AdWertNick)+1
295 0102 8750 subi r24,lo8(1031)
296 0104 9440 sbci r25,hi8(1031)
297 0106 34F0 brlt .L19
298 0108 8091 0000 lds r24,AnalogOffsetNick
299 010c 8F5F subi r24,lo8(-(1))
300 .L48:
301 010e 8093 0000 sts AnalogOffsetNick,r24
302 0112 01C0 rjmp .L18
303 .L19:
304 0114 11E0 ldi r17,lo8(1)
305 .L18:
306 0116 8091 0000 lds r24,AdWertRoll
307 011a 9091 0000 lds r25,(AdWertRoll)+1
308 011e 8C5F subi r24,lo8(1020)
309 0120 9340 sbci r25,hi8(1020)
310 0122 24F4 brge .L21
311 0124 8091 0000 lds r24,AnalogOffsetRoll
312 0128 8150 subi r24,lo8(-(-1))
313 012a 0AC0 rjmp .L49
314 .L21:
315 012c 8091 0000 lds r24,AdWertRoll
316 0130 9091 0000 lds r25,(AdWertRoll)+1
317 0134 8750 subi r24,lo8(1031)
318 0136 9440 sbci r25,hi8(1031)
319 0138 34F0 brlt .L23
320 013a 8091 0000 lds r24,AnalogOffsetRoll
321 013e 8F5F subi r24,lo8(-(1))
322 .L49:
323 0140 8093 0000 sts AnalogOffsetRoll,r24
324 0144 01C0 rjmp .L22
325 .L23:
326 0146 1F5F subi r17,lo8(-(1))
327 .L22:
328 0148 8091 0000 lds r24,AdWertGier
329 014c 9091 0000 lds r25,(AdWertGier)+1
330 0150 8C5F subi r24,lo8(1020)
331 0152 9340 sbci r25,hi8(1020)
332 0154 24F4 brge .L25
333 0156 8091 0000 lds r24,AnalogOffsetGier
334 015a 8150 subi r24,lo8(-(-1))
335 015c 0AC0 rjmp .L50
336 .L25:
337 015e 8091 0000 lds r24,AdWertGier
338 0162 9091 0000 lds r25,(AdWertGier)+1
339 0166 8750 subi r24,lo8(1031)
340 0168 9440 sbci r25,hi8(1031)
341 016a C4F0 brlt .L27
342 016c 8091 0000 lds r24,AnalogOffsetGier
343 0170 8F5F subi r24,lo8(-(1))
344 .L50:
345 0172 8093 0000 sts AnalogOffsetGier,r24
346 0176 13C0 rjmp .L26
347 .L47:
348 0178 80E0 ldi r24,lo8(__c.12)
349 017a 90E0 ldi r25,hi8(__c.12)
350 017c 9F93 push r25
351 017e 8F93 push r24
352 0180 80E0 ldi r24,lo8(pm(uart_putchar))
353 0182 90E0 ldi r25,hi8(pm(uart_putchar))
354 0184 9F93 push r25
355 0186 8F93 push r24
356 0188 E091 0000 lds r30,_printf_P
357 018c F091 0000 lds r31,(_printf_P)+1
358 0190 0995 icall
359 0192 0F90 pop __tmp_reg__
360 0194 0F90 pop __tmp_reg__
361 0196 0F90 pop __tmp_reg__
362 0198 0F90 pop __tmp_reg__
363 019a 5FC0 rjmp .L36
364 .L27:
365 019c 1F5F subi r17,lo8(-(1))
366 .L26:
367 019e 82E1 ldi r24,lo8(18)
368 01a0 8093 0000 sts twi_state,r24
369 01a4 8091 0000 lds r24,BLFlags
370 01a8 8E7F andi r24,lo8(-2)
371 01aa 8093 0000 sts BLFlags,r24
372 01ae 85EA ldi r24,lo8(-91)
373 01b0 8093 BC00 sts 188,r24
374 01b4 8091 0000 lds r24,AnalogOffsetNick
375 01b8 8A30 cpi r24,lo8(10)
376 01ba 40F4 brsh .L29
377 01bc 8091 0000 lds r24,VersionInfo+5
378 01c0 8160 ori r24,lo8(1)
379 01c2 8093 0000 sts VersionInfo+5,r24
380 01c6 8AE0 ldi r24,lo8(10)
381 01c8 8093 0000 sts AnalogOffsetNick,r24
382 .L29:
383 01cc 8091 0000 lds r24,AnalogOffsetNick
384 01d0 863F cpi r24,lo8(-10)
385 01d2 40F0 brlo .L30
386 01d4 8091 0000 lds r24,VersionInfo+5
387 01d8 8160 ori r24,lo8(1)
388 01da 8093 0000 sts VersionInfo+5,r24
389 01de 85EF ldi r24,lo8(-11)
390 01e0 8093 0000 sts AnalogOffsetNick,r24
391 .L30:
392 01e4 8091 0000 lds r24,AnalogOffsetRoll
393 01e8 8A30 cpi r24,lo8(10)
394 01ea 40F4 brsh .L31
395 01ec 8091 0000 lds r24,VersionInfo+5
396 01f0 8260 ori r24,lo8(2)
397 01f2 8093 0000 sts VersionInfo+5,r24
398 01f6 8AE0 ldi r24,lo8(10)
399 01f8 8093 0000 sts AnalogOffsetRoll,r24
400 .L31:
401 01fc 8091 0000 lds r24,AnalogOffsetRoll
402 0200 863F cpi r24,lo8(-10)
403 0202 40F0 brlo .L32
404 0204 8091 0000 lds r24,VersionInfo+5
405 0208 8260 ori r24,lo8(2)
406 020a 8093 0000 sts VersionInfo+5,r24
407 020e 85EF ldi r24,lo8(-11)
408 0210 8093 0000 sts AnalogOffsetRoll,r24
409 .L32:
410 0214 8091 0000 lds r24,AnalogOffsetGier
411 0218 8A30 cpi r24,lo8(10)
412 021a 40F4 brsh .L33
413 021c 8091 0000 lds r24,VersionInfo+5
414 0220 8460 ori r24,lo8(4)
415 0222 8093 0000 sts VersionInfo+5,r24
416 0226 8AE0 ldi r24,lo8(10)
417 0228 8093 0000 sts AnalogOffsetGier,r24
418 .L33:
419 022c 8091 0000 lds r24,AnalogOffsetGier
420 0230 863F cpi r24,lo8(-10)
421 0232 40F0 brlo .L34
422 0234 8091 0000 lds r24,VersionInfo+5
423 0238 8460 ori r24,lo8(4)
424 023a 8093 0000 sts VersionInfo+5,r24
425 023e 85EF ldi r24,lo8(-11)
426 0240 8093 0000 sts AnalogOffsetGier,r24
427 .L34:
428 0244 8091 0000 lds r24,twi_state
429 0248 8823 tst r24
430 024a 39F0 breq .L36
431 024c C701 movw r24,r14
432 024e 0E94 0000 call CheckDelay
433 0252 8823 tst r24
434 0254 09F0 breq .+2
435 0256 90CF rjmp .L47
436 0258 F5CF rjmp .L34
437 .L36:
438 025a 1092 0000 sts AdReady,__zero_reg__
439 025e 8FEC ldi r24,lo8(-49)
440 0260 8093 7A00 sts 122,r24
441 .L39:
442 0264 8091 0000 lds r24,AdReady
443 0268 8823 tst r24
444 026a E1F3 breq .L39
445 026c CA30 cpi r28,lo8(10)
446 026e 20F4 brsh .L15
447 0270 8AE0 ldi r24,lo8(10)
448 0272 90E0 ldi r25,hi8(10)
449 0274 0E94 0000 call Delay_ms_Mess
450 .L15:
451 0278 C150 subi r28,lo8(-(-1))
452 027a 09F0 breq .+2
453 027c 2DCF rjmp .L43
454 027e 86E4 ldi r24,lo8(70)
455 0280 90E0 ldi r25,hi8(70)
456 0282 0E94 0000 call Delay_ms_Mess
457 /* epilogue: frame size=0 */
458 0286 CF91 pop r28
459 0288 1F91 pop r17
460 028a FF90 pop r15
461 028c EF90 pop r14
462 028e 0895 ret
463 /* epilogue end (size=5) */
464 /* function SucheGyroOffset size 238 (229) */
466 .lcomm kanal.0,1
467 .lcomm state.1,1
468 .lcomm subcount.2,1
469 .lcomm gier1.3,2
470 .lcomm roll1.4,2
471 .lcomm nick1.5,2
472 .lcomm nick_filter.6,2
473 .lcomm roll_filter.7,2
474 .lcomm accy.8,2
475 .lcomm accx.9,2
476 .lcomm tmpLuftdruck.10,4
477 .lcomm messanzahl_Druck.11,1
478 .global __vector_24
480 __vector_24:
481 /* prologue: frame size=0 */
482 0290 1F92 push __zero_reg__
483 0292 0F92 push __tmp_reg__
484 0294 0FB6 in __tmp_reg__,__SREG__
485 0296 0F92 push __tmp_reg__
486 0298 1124 clr __zero_reg__
487 029a AF92 push r10
488 029c BF92 push r11
489 029e CF92 push r12
490 02a0 DF92 push r13
491 02a2 EF92 push r14
492 02a4 FF92 push r15
493 02a6 0F93 push r16
494 02a8 1F93 push r17
495 02aa 2F93 push r18
496 02ac 3F93 push r19
497 02ae 4F93 push r20
498 02b0 5F93 push r21
499 02b2 6F93 push r22
500 02b4 7F93 push r23
501 02b6 8F93 push r24
502 02b8 9F93 push r25
503 02ba AF93 push r26
504 02bc BF93 push r27
505 02be EF93 push r30
506 02c0 FF93 push r31
507 /* prologue end (size=25) */
508 02c2 8091 0000 lds r24,state.1
509 02c6 282F mov r18,r24
510 02c8 3327 clr r19
511 02ca 4427 clr r20
512 02cc 5527 clr r21
513 02ce 8F5F subi r24,lo8(-(1))
514 02d0 8093 0000 sts state.1,r24
515 02d4 F901 movw r30,r18
516 02d6 2231 cpi r18,18
517 02d8 3105 cpc r19,__zero_reg__
518 02da 08F0 brlo .+2
519 02dc 8CC3 rjmp .L101
520 02de E050 subi r30,lo8(-(pm(.L102)))
521 02e0 F040 sbci r31,hi8(-(pm(.L102)))
522 02e2 0C94 0000 jmp __tablejump2__
523 .data
524 .section .progmem.gcc_sw_table, "a", @progbits
525 .p2align 1
526 .L102:
527 0000 0000 .word pm(.L53)
528 0002 0000 .word pm(.L54)
529 0004 0000 .word pm(.L55)
530 0006 0000 .word pm(.L56)
531 0008 0000 .word pm(.L57)
532 000a 0000 .word pm(.L58)
533 000c 0000 .word pm(.L59)
534 000e 0000 .word pm(.L60)
535 0010 0000 .word pm(.L61)
536 0012 0000 .word pm(.L94)
537 0014 0000 .word pm(.L58)
538 0016 0000 .word pm(.L73)
539 0018 0000 .word pm(.L74)
540 001a 0000 .word pm(.L79)
541 001c 0000 .word pm(.L80)
542 001e 0000 .word pm(.L81)
543 0020 0000 .word pm(.L87)
544 0022 0000 .word pm(.L93)
545 .text
546 .L53:
547 02e6 8091 7800 lds r24,120
548 02ea 9091 7900 lds r25,(120)+1
549 02ee 46C0 rjmp .L111
550 .L54:
551 02f0 8091 7800 lds r24,120
552 02f4 9091 7900 lds r25,(120)+1
553 02f8 2CC1 rjmp .L110
554 .L55:
555 02fa 8091 7800 lds r24,120
556 02fe 9091 7900 lds r25,(120)+1
557 0302 9093 0000 sts (gier1.3)+1,r25
558 0306 8093 0000 sts gier1.3,r24
559 030a 57C1 rjmp .L112
560 .L56:
561 030c 8091 0000 lds r24,NeutralAccY
562 0310 9091 0000 lds r25,(NeutralAccY)+1
563 0314 2091 7800 lds r18,120
564 0318 3091 7900 lds r19,(120)+1
565 031c 821B sub r24,r18
566 031e 930B sbc r25,r19
567 0320 9093 0000 sts (Aktuell_ay)+1,r25
568 0324 8093 0000 sts Aktuell_ay,r24
569 0328 8091 0000 lds r24,Aktuell_ay
570 032c 9091 0000 lds r25,(Aktuell_ay)+1
571 0330 9093 0000 sts (accy.8)+1,r25
572 0334 8093 0000 sts accy.8,r24
573 0338 5EC1 rjmp .L113
574 .L57:
575 033a 8091 7800 lds r24,120
576 033e 9091 7900 lds r25,(120)+1
577 0342 2091 0000 lds r18,NeutralAccX
578 0346 3091 0000 lds r19,(NeutralAccX)+1
579 034a 821B sub r24,r18
580 034c 930B sbc r25,r19
581 034e 9093 0000 sts (Aktuell_ax)+1,r25
582 0352 8093 0000 sts Aktuell_ax,r24
583 0356 8091 0000 lds r24,Aktuell_ax
584 035a 9091 0000 lds r25,(Aktuell_ax)+1
585 035e 9093 0000 sts (accx.9)+1,r25
586 0362 8093 0000 sts accx.9,r24
587 0366 49C3 rjmp .L108
588 .L58:
589 0368 8091 0000 lds r24,nick1.5
590 036c 9091 0000 lds r25,(nick1.5)+1
591 0370 2091 7800 lds r18,120
592 0374 3091 7900 lds r19,(120)+1
593 0378 820F add r24,r18
594 037a 931F adc r25,r19
595 .L111:
596 037c 9093 0000 sts (nick1.5)+1,r25
597 0380 8093 0000 sts nick1.5,r24
598 .L115:
599 0384 81E0 ldi r24,lo8(1)
600 0386 3AC3 rjmp .L109
601 .L59:
602 0388 8091 0000 lds r24,roll1.4
603 038c 9091 0000 lds r25,(roll1.4)+1
604 0390 2091 7800 lds r18,120
605 0394 3091 7900 lds r19,(120)+1
606 0398 820F add r24,r18
607 039a 931F adc r25,r19
608 039c 9093 0000 sts (roll1.4)+1,r25
609 03a0 8093 0000 sts roll1.4,r24
610 03a4 84E0 ldi r24,lo8(4)
611 03a6 2AC3 rjmp .L109
612 .L60:
613 03a8 8091 0000 lds r24,UBat
614 03ac 9091 0000 lds r25,(UBat)+1
615 03b0 9C01 movw r18,r24
616 03b2 220F lsl r18
617 03b4 331F rol r19
618 03b6 280F add r18,r24
619 03b8 391F adc r19,r25
620 03ba 8091 7800 lds r24,120
621 03be 9091 7900 lds r25,(120)+1
622 03c2 63E0 ldi r22,lo8(3)
623 03c4 70E0 ldi r23,hi8(3)
624 03c6 0E94 0000 call __udivmodhi4
625 03ca 260F add r18,r22
626 03cc 371F adc r19,r23
627 03ce 3695 lsr r19
628 03d0 2795 ror r18
629 03d2 3695 lsr r19
630 03d4 2795 ror r18
631 03d6 3093 0000 sts (UBat)+1,r19
632 03da 2093 0000 sts UBat,r18
633 03de 85E0 ldi r24,lo8(5)
634 03e0 0DC3 rjmp .L109
635 .L61:
636 03e2 8091 7800 lds r24,120
637 03e6 9091 7900 lds r25,(120)+1
638 03ea 4091 0000 lds r20,NeutralAccZ
639 03ee 5091 0000 lds r21,(NeutralAccZ)+1
640 03f2 841B sub r24,r20
641 03f4 950B sbc r25,r21
642 03f6 9093 0000 sts (AdWertAccHoch)+1,r25
643 03fa 8093 0000 sts AdWertAccHoch,r24
644 03fe 8091 0000 lds r24,AdWertAccHoch
645 0402 9091 0000 lds r25,(AdWertAccHoch)+1
646 0406 0297 sbiw r24,2
647 0408 04F1 brlt .L62
648 040a 22E0 ldi r18,hi8(750)
649 040c 4E3E cpi r20,lo8(750)
650 040e 5207 cpc r21,r18
651 0410 84F4 brge .L63
652 0412 2091 0000 lds r18,subcount.2
653 0416 2B5F subi r18,lo8(-(5))
654 0418 2093 0000 sts subcount.2,r18
655 041c 2550 subi r18,lo8(-(-5))
656 041e 8091 0000 lds r24,modell_fliegt
657 0422 9091 0000 lds r25,(modell_fliegt)+1
658 0426 845F subi r24,lo8(500)
659 0428 9140 sbci r25,hi8(500)
660 042a 18F4 brsh .L63
661 042c 215F subi r18,lo8(-(15))
662 042e 2093 0000 sts subcount.2,r18
663 .L63:
664 0432 8091 0000 lds r24,subcount.2
665 0436 8536 cpi r24,lo8(101)
666 0438 84F1 brlt .L66
667 043a 4F5F subi r20,lo8(-(1))
668 043c 5F4F sbci r21,hi8(-(1))
669 043e 5093 0000 sts (NeutralAccZ)+1,r21
670 0442 4093 0000 sts NeutralAccZ,r20
671 0446 8456 subi r24,lo8(-(-100))
672 0448 26C0 rjmp .L104
673 .L62:
674 044a 8091 0000 lds r24,AdWertAccHoch
675 044e 9091 0000 lds r25,(AdWertAccHoch)+1
676 0452 8F5F subi r24,lo8(-1)
677 0454 9F4F sbci r25,hi8(-1)
678 0456 0CF5 brge .L66
679 0458 32E0 ldi r19,hi8(551)
680 045a 4732 cpi r20,lo8(551)
681 045c 5307 cpc r21,r19
682 045e ECF0 brlt .L66
683 0460 2091 0000 lds r18,subcount.2
684 0464 2550 subi r18,lo8(-(-5))
685 0466 2093 0000 sts subcount.2,r18
686 046a 2B5F subi r18,lo8(-(5))
687 046c 8091 0000 lds r24,modell_fliegt
688 0470 9091 0000 lds r25,(modell_fliegt)+1
689 0474 845F subi r24,lo8(500)
690 0476 9140 sbci r25,hi8(500)
691 0478 18F4 brsh .L69
692 047a 2F50 subi r18,lo8(-(-15))
693 047c 2093 0000 sts subcount.2,r18
694 .L69:
695 0480 8091 0000 lds r24,subcount.2
696 0484 8C39 cpi r24,lo8(-100)
697 0486 4CF4 brge .L66
698 0488 4150 subi r20,lo8(-(-1))
699 048a 5040 sbci r21,hi8(-(-1))
700 048c 5093 0000 sts (NeutralAccZ)+1,r21
701 0490 4093 0000 sts NeutralAccZ,r20
702 0494 8C59 subi r24,lo8(-(100))
703 .L104:
704 0496 8093 0000 sts subcount.2,r24
705 .L66:
706 049a 81E0 ldi r24,lo8(1)
707 049c 8093 0000 sts messanzahl_AccHoch,r24
708 04a0 8091 7800 lds r24,120
709 04a4 9091 7900 lds r25,(120)+1
710 04a8 9093 0000 sts (Aktuell_az)+1,r25
711 04ac 8093 0000 sts Aktuell_az,r24
712 04b0 8091 0000 lds r24,AdWertAccHoch
713 04b4 9091 0000 lds r25,(AdWertAccHoch)+1
714 04b8 9C01 movw r18,r24
715 04ba 4427 clr r20
716 04bc 37FD sbrc r19,7
717 04be 4095 com r20
718 04c0 542F mov r21,r20
719 04c2 8091 0000 lds r24,Mess_Integral_Hoch
720 04c6 9091 0000 lds r25,(Mess_Integral_Hoch)+1
721 04ca A091 0000 lds r26,(Mess_Integral_Hoch)+2
722 04ce B091 0000 lds r27,(Mess_Integral_Hoch)+3
723 04d2 820F add r24,r18
724 04d4 931F adc r25,r19
725 04d6 A41F adc r26,r20
726 04d8 B51F adc r27,r21
727 04da 8093 0000 sts Mess_Integral_Hoch,r24
728 04de 9093 0000 sts (Mess_Integral_Hoch)+1,r25
729 04e2 A093 0000 sts (Mess_Integral_Hoch)+2,r26
730 04e6 B093 0000 sts (Mess_Integral_Hoch)+3,r27
731 04ea 2091 0000 lds r18,Mess_Integral_Hoch
732 04ee 3091 0000 lds r19,(Mess_Integral_Hoch)+1
733 04f2 4091 0000 lds r20,(Mess_Integral_Hoch)+2
734 04f6 5091 0000 lds r21,(Mess_Integral_Hoch)+3
735 04fa 57FF sbrs r21,7
736 04fc 04C0 rjmp .L71
737 04fe 2150 subi r18,lo8(-(1023))
738 0500 3C4F sbci r19,hi8(-(1023))
739 0502 4F4F sbci r20,hlo8(-(1023))
740 0504 5F4F sbci r21,hhi8(-(1023))
741 .L71:
742 0506 0AE0 ldi r16,10
743 0508 5595 1: asr r21
744 050a 4795 ror r20
745 050c 3795 ror r19
746 050e 2795 ror r18
747 0510 0A95 dec r16
748 0512 D1F7 brne 1b
749 0514 8091 0000 lds r24,Mess_Integral_Hoch
750 0518 9091 0000 lds r25,(Mess_Integral_Hoch)+1
751 051c A091 0000 lds r26,(Mess_Integral_Hoch)+2
752 0520 B091 0000 lds r27,(Mess_Integral_Hoch)+3
753 0524 821B sub r24,r18
754 0526 930B sbc r25,r19
755 0528 A40B sbc r26,r20
756 052a B50B sbc r27,r21
757 052c 8093 0000 sts Mess_Integral_Hoch,r24
758 0530 9093 0000 sts (Mess_Integral_Hoch)+1,r25
759 0534 A093 0000 sts (Mess_Integral_Hoch)+2,r26
760 0538 B093 0000 sts (Mess_Integral_Hoch)+3,r27
761 053c 2EC1 rjmp .L114
762 .L73:
763 053e 8091 0000 lds r24,roll1.4
764 0542 9091 0000 lds r25,(roll1.4)+1
765 0546 2091 7800 lds r18,120
766 054a 3091 7900 lds r19,(120)+1
767 054e 820F add r24,r18
768 0550 931F adc r25,r19
769 .L110:
770 0552 9093 0000 sts (roll1.4)+1,r25
771 0556 8093 0000 sts roll1.4,r24
772 055a 1092 0000 sts kanal.0,__zero_reg__
773 055e 50C2 rjmp .L52
774 .L74:
775 0560 8091 0000 lds r24,PlatinenVersion
776 0564 8A30 cpi r24,lo8(10)
777 0566 71F4 brne .L75
778 0568 8091 7800 lds r24,120
779 056c 9091 7900 lds r25,(120)+1
780 0570 2091 0000 lds r18,gier1.3
781 0574 3091 0000 lds r19,(gier1.3)+1
782 0578 820F add r24,r18
783 057a 931F adc r25,r19
784 057c 0196 adiw r24,1
785 057e 9695 lsr r25
786 0580 8795 ror r24
787 0582 17C0 rjmp .L105
788 .L75:
789 0584 4091 0000 lds r20,gier1.3
790 0588 5091 0000 lds r21,(gier1.3)+1
791 058c 8431 cpi r24,lo8(20)
792 058e 58F0 brlo .L77
793 0590 2091 7800 lds r18,120
794 0594 3091 7900 lds r19,(120)+1
795 0598 240F add r18,r20
796 059a 351F adc r19,r21
797 059c 8FEF ldi r24,lo8(2047)
798 059e 97E0 ldi r25,hi8(2047)
799 05a0 821B sub r24,r18
800 05a2 930B sbc r25,r19
801 05a4 06C0 rjmp .L105
802 .L77:
803 05a6 8091 7800 lds r24,120
804 05aa 9091 7900 lds r25,(120)+1
805 05ae 840F add r24,r20
806 05b0 951F adc r25,r21
807 .L105:
808 05b2 9093 0000 sts (AdWertGier)+1,r25
809 05b6 8093 0000 sts AdWertGier,r24
810 .L112:
811 05ba 86E0 ldi r24,lo8(6)
812 05bc 1FC2 rjmp .L109
813 .L79:
814 05be 8091 0000 lds r24,NeutralAccY
815 05c2 9091 0000 lds r25,(NeutralAccY)+1
816 05c6 2091 7800 lds r18,120
817 05ca 3091 7900 lds r19,(120)+1
818 05ce 821B sub r24,r18
819 05d0 930B sbc r25,r19
820 05d2 9093 0000 sts (Aktuell_ay)+1,r25
821 05d6 8093 0000 sts Aktuell_ay,r24
822 05da 8091 0000 lds r24,Aktuell_ay
823 05de 9091 0000 lds r25,(Aktuell_ay)+1
824 05e2 2091 0000 lds r18,accy.8
825 05e6 3091 0000 lds r19,(accy.8)+1
826 05ea 820F add r24,r18
827 05ec 931F adc r25,r19
828 05ee 9093 0000 sts (AdWertAccRoll)+1,r25
829 05f2 8093 0000 sts AdWertAccRoll,r24
830 .L113:
831 05f6 87E0 ldi r24,lo8(7)
832 05f8 01C2 rjmp .L109
833 .L80:
834 05fa 8091 7800 lds r24,120
835 05fe 9091 7900 lds r25,(120)+1
836 0602 2091 0000 lds r18,NeutralAccX
837 0606 3091 0000 lds r19,(NeutralAccX)+1
838 060a 821B sub r24,r18
839 060c 930B sbc r25,r19
840 060e 9093 0000 sts (Aktuell_ax)+1,r25
841 0612 8093 0000 sts Aktuell_ax,r24
842 0616 8091 0000 lds r24,Aktuell_ax
843 061a 9091 0000 lds r25,(Aktuell_ax)+1
844 061e 2091 0000 lds r18,accx.9
845 0622 3091 0000 lds r19,(accx.9)+1
846 0626 820F add r24,r18
847 0628 931F adc r25,r19
848 062a 9093 0000 sts (AdWertAccNick)+1,r25
849 062e 8093 0000 sts AdWertAccNick,r24
850 0632 E3C1 rjmp .L108
851 .L81:
852 0634 2091 0000 lds r18,nick1.5
853 0638 3091 0000 lds r19,(nick1.5)+1
854 063c 8091 7800 lds r24,120
855 0640 9091 7900 lds r25,(120)+1
856 0644 280F add r18,r24
857 0646 391F adc r19,r25
858 0648 3093 0000 sts (nick1.5)+1,r19
859 064c 2093 0000 sts nick1.5,r18
860 0650 8091 0000 lds r24,PlatinenVersion
861 0654 8A30 cpi r24,lo8(10)
862 0656 19F4 brne .L82
863 0658 220F add r18,r18
864 065a 331F adc r19,r19
865 065c 04C0 rjmp .L106
866 .L82:
867 065e 220F lsl r18
868 0660 331F rol r19
869 0662 220F lsl r18
870 0664 331F rol r19
871 .L106:
872 0666 3093 0000 sts (nick1.5)+1,r19
873 066a 2093 0000 sts nick1.5,r18
874 066e 2091 0000 lds r18,nick1.5
875 0672 3091 0000 lds r19,(nick1.5)+1
876 0676 C901 movw r24,r18
877 0678 37FD sbrc r19,7
878 067a 0796 adiw r24,7
879 .L84:
880 067c A3E0 ldi r26,3
881 067e 9595 1: asr r25
882 0680 8795 ror r24
883 0682 AA95 dec r26
884 0684 E1F7 brne 1b
885 0686 9093 0000 sts (AdWertNick)+1,r25
886 068a 8093 0000 sts AdWertNick,r24
887 068e 8091 0000 lds r24,nick_filter.6
888 0692 9091 0000 lds r25,(nick_filter.6)+1
889 0696 820F add r24,r18
890 0698 931F adc r25,r19
891 069a 97FD sbrc r25,7
892 069c 0196 adiw r24,1
893 .L85:
894 069e 9595 asr r25
895 06a0 8795 ror r24
896 06a2 9093 0000 sts (nick_filter.6)+1,r25
897 06a6 8093 0000 sts nick_filter.6,r24
898 06aa 2091 0000 lds r18,AdNeutralNick
899 06ae 3091 0000 lds r19,(AdNeutralNick)+1
900 06b2 821B sub r24,r18
901 06b4 930B sbc r25,r19
902 06b6 9093 0000 sts (HiResNick)+1,r25
903 06ba 8093 0000 sts HiResNick,r24
904 06be 2091 0000 lds r18,AdWertNickFilter
905 06c2 3091 0000 lds r19,(AdWertNickFilter)+1
906 06c6 8091 0000 lds r24,HiResNick
907 06ca 9091 0000 lds r25,(HiResNick)+1
908 06ce 280F add r18,r24
909 06d0 391F adc r19,r25
910 06d2 37FF sbrs r19,7
911 06d4 02C0 rjmp .L86
912 06d6 2F5F subi r18,lo8(-(1))
913 06d8 3F4F sbci r19,hi8(-(1))
914 .L86:
915 06da 3595 asr r19
916 06dc 2795 ror r18
917 06de 3093 0000 sts (AdWertNickFilter)+1,r19
918 06e2 2093 0000 sts AdWertNickFilter,r18
919 06e6 4ECE rjmp .L115
920 .L87:
921 06e8 2091 0000 lds r18,roll1.4
922 06ec 3091 0000 lds r19,(roll1.4)+1
923 06f0 8091 7800 lds r24,120
924 06f4 9091 7900 lds r25,(120)+1
925 06f8 280F add r18,r24
926 06fa 391F adc r19,r25
927 06fc 3093 0000 sts (roll1.4)+1,r19
928 0700 2093 0000 sts roll1.4,r18
929 0704 8091 0000 lds r24,PlatinenVersion
930 0708 8A30 cpi r24,lo8(10)
931 070a 19F4 brne .L88
932 070c 220F add r18,r18
933 070e 331F adc r19,r19
934 0710 04C0 rjmp .L107
935 .L88:
936 0712 220F lsl r18
937 0714 331F rol r19
938 0716 220F lsl r18
939 0718 331F rol r19
940 .L107:
941 071a 3093 0000 sts (roll1.4)+1,r19
942 071e 2093 0000 sts roll1.4,r18
943 0722 2091 0000 lds r18,roll1.4
944 0726 3091 0000 lds r19,(roll1.4)+1
945 072a C901 movw r24,r18
946 072c 37FD sbrc r19,7
947 072e 0796 adiw r24,7
948 .L90:
949 0730 63E0 ldi r22,3
950 0732 9595 1: asr r25
951 0734 8795 ror r24
952 0736 6A95 dec r22
953 0738 E1F7 brne 1b
954 073a 9093 0000 sts (AdWertRoll)+1,r25
955 073e 8093 0000 sts AdWertRoll,r24
956 0742 8091 0000 lds r24,roll_filter.7
957 0746 9091 0000 lds r25,(roll_filter.7)+1
958 074a 820F add r24,r18
959 074c 931F adc r25,r19
960 074e 97FD sbrc r25,7
961 0750 0196 adiw r24,1
962 .L91:
963 0752 9595 asr r25
964 0754 8795 ror r24
965 0756 9093 0000 sts (roll_filter.7)+1,r25
966 075a 8093 0000 sts roll_filter.7,r24
967 075e 2091 0000 lds r18,AdNeutralRoll
968 0762 3091 0000 lds r19,(AdNeutralRoll)+1
969 0766 821B sub r24,r18
970 0768 930B sbc r25,r19
971 076a 9093 0000 sts (HiResRoll)+1,r25
972 076e 8093 0000 sts HiResRoll,r24
973 0772 2091 0000 lds r18,AdWertRollFilter
974 0776 3091 0000 lds r19,(AdWertRollFilter)+1
975 077a 8091 0000 lds r24,HiResRoll
976 077e 9091 0000 lds r25,(HiResRoll)+1
977 0782 280F add r18,r24
978 0784 391F adc r19,r25
979 0786 37FF sbrs r19,7
980 0788 02C0 rjmp .L92
981 078a 2F5F subi r18,lo8(-(1))
982 078c 3F4F sbci r19,hi8(-(1))
983 .L92:
984 078e 3595 asr r19
985 0790 2795 ror r18
986 0792 3093 0000 sts (AdWertRollFilter)+1,r19
987 0796 2093 0000 sts AdWertRollFilter,r18
988 .L114:
989 079a 83E0 ldi r24,lo8(3)
990 079c 2FC1 rjmp .L109
991 .L93:
992 079e 1092 0000 sts state.1,__zero_reg__
993 07a2 81E0 ldi r24,lo8(1)
994 07a4 8093 0000 sts AdReady,r24
995 07a8 8091 0000 lds r24,ZaehlMessungen
996 07ac 9091 0000 lds r25,(ZaehlMessungen)+1
997 07b0 0196 adiw r24,1
998 07b2 9093 0000 sts (ZaehlMessungen)+1,r25
999 07b6 8093 0000 sts ZaehlMessungen,r24
1000 .L94:
1001 07ba 8091 7800 lds r24,120
1002 07be 9091 7900 lds r25,(120)+1
1003 07c2 9093 0000 sts (MessLuftdruck)+1,r25
1004 07c6 8093 0000 sts MessLuftdruck,r24
1005 07ca 8091 0000 lds r24,MessLuftdruck
1006 07ce 9091 0000 lds r25,(MessLuftdruck)+1
1007 07d2 AA27 clr r26
1008 07d4 BB27 clr r27
1009 07d6 A090 0000 lds r10,tmpLuftdruck.10
1010 07da B090 0000 lds r11,(tmpLuftdruck.10)+1
1011 07de C090 0000 lds r12,(tmpLuftdruck.10)+2
1012 07e2 D090 0000 lds r13,(tmpLuftdruck.10)+3
1013 07e6 A80E add r10,r24
1014 07e8 B91E adc r11,r25
1015 07ea CA1E adc r12,r26
1016 07ec DB1E adc r13,r27
1017 07ee A092 0000 sts tmpLuftdruck.10,r10
1018 07f2 B092 0000 sts (tmpLuftdruck.10)+1,r11
1019 07f6 C092 0000 sts (tmpLuftdruck.10)+2,r12
1020 07fa D092 0000 sts (tmpLuftdruck.10)+3,r13
1021 07fe 8091 0000 lds r24,messanzahl_Druck.11
1022 0802 8F5F subi r24,lo8(-(1))
1023 0804 8093 0000 sts messanzahl_Druck.11,r24
1024 0808 8231 cpi r24,lo8(18)
1025 080a 08F4 brsh .+2
1026 080c F6C0 rjmp .L108
1027 080e 8091 0000 lds r24,Luftdruck
1028 0812 9091 0000 lds r25,(Luftdruck)+1
1029 0816 A091 0000 lds r26,(Luftdruck)+2
1030 081a B091 0000 lds r27,(Luftdruck)+3
1031 081e 7C01 movw r14,r24
1032 0820 8D01 movw r16,r26
1033 0822 23E0 ldi r18,3
1034 0824 EE0C 1: lsl r14
1035 0826 FF1C rol r15
1036 0828 001F rol r16
1037 082a 111F rol r17
1038 082c 2A95 dec r18
1039 082e D1F7 brne 1b
1040 0830 E81A sub r14,r24
1041 0832 F90A sbc r15,r25
1042 0834 0A0B sbc r16,r26
1043 0836 1B0B sbc r17,r27
1044 0838 EA0C add r14,r10
1045 083a FB1C adc r15,r11
1046 083c 0C1D adc r16,r12
1047 083e 1D1D adc r17,r13
1048 0840 8091 0000 lds r24,ExpandBaro
1049 0844 9927 clr r25
1050 0846 87FD sbrc r24,7
1051 0848 9095 com r25
1052 084a A92F mov r26,r25
1053 084c B92F mov r27,r25
1054 084e BC01 movw r22,r24
1055 0850 CD01 movw r24,r26
1056 0852 26EC ldi r18,lo8(9414)
1057 0854 34E2 ldi r19,hi8(9414)
1058 0856 40E0 ldi r20,hlo8(9414)
1059 0858 50E0 ldi r21,hhi8(9414)
1060 085a 0E94 0000 call __mulsi3
1061 085e DC01 movw r26,r24
1062 0860 CB01 movw r24,r22
1063 0862 E81A sub r14,r24
1064 0864 F90A sbc r15,r25
1065 0866 0A0B sbc r16,r26
1066 0868 1B0B sbc r17,r27
1067 086a D801 movw r26,r16
1068 086c C701 movw r24,r14
1069 086e 0496 adiw r24,4
1070 0870 A11D adc r26,__zero_reg__
1071 0872 B11D adc r27,__zero_reg__
1072 0874 B7FF sbrs r27,7
1073 0876 05C0 rjmp .L96
1074 0878 D801 movw r26,r16
1075 087a C701 movw r24,r14
1076 087c 0B96 adiw r24,11
1077 087e A11D adc r26,__zero_reg__
1078 0880 B11D adc r27,__zero_reg__
1079 .L96:
1080 0882 13E0 ldi r17,3
1081 0884 B595 1: asr r27
1082 0886 A795 ror r26
1083 0888 9795 ror r25
1084 088a 8795 ror r24
1085 088c 1A95 dec r17
1086 088e D1F7 brne 1b
1087 0890 8093 0000 sts Luftdruck,r24
1088 0894 9093 0000 sts (Luftdruck)+1,r25
1089 0898 A093 0000 sts (Luftdruck)+2,r26
1090 089c B093 0000 sts (Luftdruck)+3,r27
1091 08a0 8091 0000 lds r24,StartLuftdruck
1092 08a4 9091 0000 lds r25,(StartLuftdruck)+1
1093 08a8 7C01 movw r14,r24
1094 08aa 0027 clr r16
1095 08ac F7FC sbrc r15,7
1096 08ae 0095 com r16
1097 08b0 102F mov r17,r16
1098 08b2 8091 0000 lds r24,Luftdruck
1099 08b6 9091 0000 lds r25,(Luftdruck)+1
1100 08ba A091 0000 lds r26,(Luftdruck)+2
1101 08be B091 0000 lds r27,(Luftdruck)+3
1102 08c2 E81A sub r14,r24
1103 08c4 F90A sbc r15,r25
1104 08c6 0A0B sbc r16,r26
1105 08c8 1B0B sbc r17,r27
1106 08ca E092 0000 sts HoehenWert,r14
1107 08ce F092 0000 sts (HoehenWert)+1,r15
1108 08d2 0093 0000 sts (HoehenWert)+2,r16
1109 08d6 1093 0000 sts (HoehenWert)+3,r17
1110 08da 2091 0000 lds r18,SummenHoehe
1111 08de 3091 0000 lds r19,(SummenHoehe)+1
1112 08e2 4091 0000 lds r20,(SummenHoehe)+2
1113 08e6 5091 0000 lds r21,(SummenHoehe)+3
1114 08ea 57FF sbrs r21,7
1115 08ec 04C0 rjmp .L97
1116 08ee 215F subi r18,lo8(-(15))
1117 08f0 3F4F sbci r19,hi8(-(15))
1118 08f2 4F4F sbci r20,hlo8(-(15))
1119 08f4 5F4F sbci r21,hhi8(-(15))
1120 .L97:
1121 08f6 F4E0 ldi r31,4
1122 08f8 5595 1: asr r21
1123 08fa 4795 ror r20
1124 08fc 3795 ror r19
1125 08fe 2795 ror r18
1126 0900 FA95 dec r31
1127 0902 D1F7 brne 1b
1128 0904 8091 0000 lds r24,SummenHoehe
1129 0908 9091 0000 lds r25,(SummenHoehe)+1
1130 090c A091 0000 lds r26,(SummenHoehe)+2
1131 0910 B091 0000 lds r27,(SummenHoehe)+3
1132 0914 821B sub r24,r18
1133 0916 930B sbc r25,r19
1134 0918 A40B sbc r26,r20
1135 091a B50B sbc r27,r21
1136 091c 8093 0000 sts SummenHoehe,r24
1137 0920 9093 0000 sts (SummenHoehe)+1,r25
1138 0924 A093 0000 sts (SummenHoehe)+2,r26
1139 0928 B093 0000 sts (SummenHoehe)+3,r27
1140 092c 8091 0000 lds r24,SummenHoehe
1141 0930 9091 0000 lds r25,(SummenHoehe)+1
1142 0934 A091 0000 lds r26,(SummenHoehe)+2
1143 0938 B091 0000 lds r27,(SummenHoehe)+3
1144 093c 8E0D add r24,r14
1145 093e 9F1D adc r25,r15
1146 0940 A01F adc r26,r16
1147 0942 B11F adc r27,r17
1148 0944 8093 0000 sts SummenHoehe,r24
1149 0948 9093 0000 sts (SummenHoehe)+1,r25
1150 094c A093 0000 sts (SummenHoehe)+2,r26
1151 0950 B093 0000 sts (SummenHoehe)+3,r27
1152 0954 8091 0000 lds r24,VarioMeter
1153 0958 9091 0000 lds r25,(VarioMeter)+1
1154 095c AC01 movw r20,r24
1155 095e E5E0 ldi r30,5
1156 0960 440F 1: lsl r20
1157 0962 551F rol r21
1158 0964 EA95 dec r30
1159 0966 E1F7 brne 1b
1160 0968 481B sub r20,r24
1161 096a 590B sbc r21,r25
1162 096c 8091 0000 lds r24,SummenHoehe
1163 0970 9091 0000 lds r25,(SummenHoehe)+1
1164 0974 A091 0000 lds r26,(SummenHoehe)+2
1165 0978 B091 0000 lds r27,(SummenHoehe)+3
1166 097c B7FF sbrs r27,7
1167 097e 03C0 rjmp .L98
1168 0980 0F96 adiw r24,15
1169 0982 A11D adc r26,__zero_reg__
1170 0984 B11D adc r27,__zero_reg__
1171 .L98:
1172 0986 74E0 ldi r23,4
1173 0988 B595 1: asr r27
1174 098a A795 ror r26
1175 098c 9795 ror r25
1176 098e 8795 ror r24
1177 0990 7A95 dec r23
1178 0992 D1F7 brne 1b
1179 0994 2091 0000 lds r18,HoehenWert
1180 0998 3091 0000 lds r19,(HoehenWert)+1
1181 099c 281B sub r18,r24
1182 099e 390B sbc r19,r25
1183 09a0 63E0 ldi r22,3
1184 09a2 220F 1: lsl r18
1185 09a4 331F rol r19
1186 09a6 6A95 dec r22
1187 09a8 E1F7 brne 1b
1188 09aa 240F add r18,r20
1189 09ac 351F adc r19,r21
1190 09ae 37FF sbrs r19,7
1191 09b0 02C0 rjmp .L99
1192 09b2 215E subi r18,lo8(-(31))
1193 09b4 3F4F sbci r19,hi8(-(31))
1194 .L99:
1195 09b6 45E0 ldi r20,5
1196 09b8 3595 1: asr r19
1197 09ba 2795 ror r18
1198 09bc 4A95 dec r20
1199 09be E1F7 brne 1b
1200 09c0 3093 0000 sts (VarioMeter)+1,r19
1201 09c4 2093 0000 sts VarioMeter,r18
1202 09c8 D601 movw r26,r12
1203 09ca C501 movw r24,r10
1204 09cc D7FE sbrs r13,7
1205 09ce 03C0 rjmp .L100
1206 09d0 0196 adiw r24,1
1207 09d2 A11D adc r26,__zero_reg__
1208 09d4 B11D adc r27,__zero_reg__
1209 .L100:
1210 09d6 B595 asr r27
1211 09d8 A795 ror r26
1212 09da 9795 ror r25
1213 09dc 8795 ror r24
1214 09de 8093 0000 sts tmpLuftdruck.10,r24
1215 09e2 9093 0000 sts (tmpLuftdruck.10)+1,r25
1216 09e6 A093 0000 sts (tmpLuftdruck.10)+2,r26
1217 09ea B093 0000 sts (tmpLuftdruck.10)+3,r27
1218 09ee 89E0 ldi r24,lo8(9)
1219 09f0 8093 0000 sts messanzahl_Druck.11,r24
1220 09f4 02C0 rjmp .L108
1221 .L101:
1222 09f6 1092 0000 sts state.1,__zero_reg__
1223 .L108:
1224 09fa 82E0 ldi r24,lo8(2)
1225 .L109:
1226 09fc 8093 0000 sts kanal.0,r24
1227 .L52:
1228 0a00 8091 0000 lds r24,kanal.0
1229 0a04 8093 7C00 sts 124,r24
1230 0a08 8091 0000 lds r24,state.1
1231 0a0c 8823 tst r24
1232 0a0e 19F0 breq .L51
1233 0a10 8FEC ldi r24,lo8(-49)
1234 0a12 8093 7A00 sts 122,r24
1235 .L51:
1236 /* epilogue: frame size=0 */
1237 0a16 FF91 pop r31
1238 0a18 EF91 pop r30
1239 0a1a BF91 pop r27
1240 0a1c AF91 pop r26
1241 0a1e 9F91 pop r25
1242 0a20 8F91 pop r24
1243 0a22 7F91 pop r23
1244 0a24 6F91 pop r22
1245 0a26 5F91 pop r21
1246 0a28 4F91 pop r20
1247 0a2a 3F91 pop r19
1248 0a2c 2F91 pop r18
1249 0a2e 1F91 pop r17
1250 0a30 0F91 pop r16
1251 0a32 FF90 pop r15
1252 0a34 EF90 pop r14
1253 0a36 DF90 pop r13
1254 0a38 CF90 pop r12
1255 0a3a BF90 pop r11
1256 0a3c AF90 pop r10
1257 0a3e 0F90 pop __tmp_reg__
1258 0a40 0FBE out __SREG__,__tmp_reg__
1259 0a42 0F90 pop __tmp_reg__
1260 0a44 1F90 pop __zero_reg__
1261 0a46 1895 reti
1262 /* epilogue end (size=25) */
1263 /* function __vector_24 size 1014 (964) */
1265 .comm Aktuell_Nick,2,1
1266 .comm Aktuell_Roll,2,1
1267 .comm Aktuell_Gier,2,1
1268 .comm Aktuell_ax,2,1
1269 .comm Aktuell_ay,2,1
1270 .comm Aktuell_az,2,1
1271 .comm DruckOffsetSetting,1,1
1272 .comm StartLuftdruck,2,1
1273 .comm NeutralAccZ_float,4,1
1274 /* File "analog.c": code 1351 = 0x0547 (1286), prologues 31, epilogues 34 */
DEFINED SYMBOLS
*ABS*:00000000 analog.c
C:\Users\Thomas\AppData\Local\Temp/ccmObaaa.s:3 *ABS*:0000003f __SREG__
C:\Users\Thomas\AppData\Local\Temp/ccmObaaa.s:4 *ABS*:0000003e __SP_H__
C:\Users\Thomas\AppData\Local\Temp/ccmObaaa.s:5 *ABS*:0000003d __SP_L__
C:\Users\Thomas\AppData\Local\Temp/ccmObaaa.s:6 *ABS*:00000000 __tmp_reg__
C:\Users\Thomas\AppData\Local\Temp/ccmObaaa.s:7 *ABS*:00000001 __zero_reg__
C:\Users\Thomas\AppData\Local\Temp/ccmObaaa.s:14 .data:00000000 AdReady
C:\Users\Thomas\AppData\Local\Temp/ccmObaaa.s:19 .data:00000001 AnalogOffsetGier
C:\Users\Thomas\AppData\Local\Temp/ccmObaaa.s:24 .data:00000002 AnalogOffsetRoll
C:\Users\Thomas\AppData\Local\Temp/ccmObaaa.s:29 .data:00000003 AnalogOffsetNick
C:\Users\Thomas\AppData\Local\Temp/ccmObaaa.s:36 .bss:00000000 ZaehlMessungen
C:\Users\Thomas\AppData\Local\Temp/ccmObaaa.s:42 .bss:00000002 VarioMeter
C:\Users\Thomas\AppData\Local\Temp/ccmObaaa.s:48 .bss:00000004 ExpandBaro
C:\Users\Thomas\AppData\Local\Temp/ccmObaaa.s:54 .data:00000004 MessLuftdruck
C:\Users\Thomas\AppData\Local\Temp/ccmObaaa.s:61 .bss:00000005 SummenHoehe
C:\Users\Thomas\AppData\Local\Temp/ccmObaaa.s:67 .data:00000006 Luftdruck
C:\Users\Thomas\AppData\Local\Temp/ccmObaaa.s:74 .bss:00000009 messanzahl_AccHoch
C:\Users\Thomas\AppData\Local\Temp/ccmObaaa.s:80 .bss:0000000a AdWertAccHoch
C:\Users\Thomas\AppData\Local\Temp/ccmObaaa.s:86 .bss:0000000c AdWertAccNick
C:\Users\Thomas\AppData\Local\Temp/ccmObaaa.s:92 .bss:0000000e AdWertAccRoll
C:\Users\Thomas\AppData\Local\Temp/ccmObaaa.s:98 .bss:00000010 AdWertGier
C:\Users\Thomas\AppData\Local\Temp/ccmObaaa.s:104 .bss:00000012 AdWertRoll
C:\Users\Thomas\AppData\Local\Temp/ccmObaaa.s:110 .bss:00000014 AdWertNick
C:\Users\Thomas\AppData\Local\Temp/ccmObaaa.s:116 .data:0000000a HiResRoll
C:\Users\Thomas\AppData\Local\Temp/ccmObaaa.s:121 .data:0000000c HiResNick
C:\Users\Thomas\AppData\Local\Temp/ccmObaaa.s:128 .bss:00000016 AdWertGierFilter
C:\Users\Thomas\AppData\Local\Temp/ccmObaaa.s:134 .bss:00000018 AdWertRollFilter
C:\Users\Thomas\AppData\Local\Temp/ccmObaaa.s:140 .bss:0000001a AdWertNickFilter
C:\Users\Thomas\AppData\Local\Temp/ccmObaaa.s:146 .data:0000000e UBat
C:\Users\Thomas\AppData\Local\Temp/ccmObaaa.s:151 .text:00000000 ADC_Init
C:\Users\Thomas\AppData\Local\Temp/ccmObaaa.s:165 .progmem.data:00000000 __c.13
C:\Users\Thomas\AppData\Local\Temp/ccmObaaa.s:170 .text:0000000c SucheLuftruckOffset
*COM*:00000001 DruckOffsetSetting
C:\Users\Thomas\AppData\Local\Temp/ccmObaaa.s:258 .progmem.data:00000002 __c.12
C:\Users\Thomas\AppData\Local\Temp/ccmObaaa.s:263 .text:000000c2 SucheGyroOffset
.bss:0000001c kanal.0
C:\Users\Thomas\AppData\Local\Temp/ccmObaaa.s:466 .bss:0000001d state.1
C:\Users\Thomas\AppData\Local\Temp/ccmObaaa.s:467 .bss:0000001e subcount.2
C:\Users\Thomas\AppData\Local\Temp/ccmObaaa.s:468 .bss:0000001f gier1.3
C:\Users\Thomas\AppData\Local\Temp/ccmObaaa.s:469 .bss:00000021 roll1.4
C:\Users\Thomas\AppData\Local\Temp/ccmObaaa.s:470 .bss:00000023 nick1.5
C:\Users\Thomas\AppData\Local\Temp/ccmObaaa.s:471 .bss:00000025 nick_filter.6
C:\Users\Thomas\AppData\Local\Temp/ccmObaaa.s:472 .bss:00000027 roll_filter.7
C:\Users\Thomas\AppData\Local\Temp/ccmObaaa.s:473 .bss:00000029 accy.8
C:\Users\Thomas\AppData\Local\Temp/ccmObaaa.s:474 .bss:0000002b accx.9
C:\Users\Thomas\AppData\Local\Temp/ccmObaaa.s:475 .bss:0000002d tmpLuftdruck.10
C:\Users\Thomas\AppData\Local\Temp/ccmObaaa.s:476 .bss:00000031 messanzahl_Druck.11
C:\Users\Thomas\AppData\Local\Temp/ccmObaaa.s:480 .text:00000290 __vector_24
*COM*:00000002 Aktuell_ay
*COM*:00000002 Aktuell_ax
*COM*:00000002 Aktuell_az
*COM*:00000002 StartLuftdruck
*COM*:00000002 Aktuell_Nick
*COM*:00000002 Aktuell_Roll
*COM*:00000002 Aktuell_Gier
*COM*:00000004 NeutralAccZ_float
 
UNDEFINED SYMBOLS
__do_copy_data
__do_clear_bss
GetParamByte
Delay_ms_Mess
uart_putchar
_printf_P
SetParamByte
EE_Parameter
VersionInfo
SetDelay
twi_state
BLFlags
CheckDelay
__tablejump2__
NeutralAccY
NeutralAccX
__udivmodhi4
NeutralAccZ
modell_fliegt
Mess_Integral_Hoch
PlatinenVersion
AdNeutralNick
AdNeutralRoll
__mulsi3
HoehenWert
/branches/metro/v0.82a metro_Akku+/capacity.c
0,0 → 1,148
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// + Copyright (c) Holger Buss, Ingo Busker
// + Thanks to Marcel Haller (Lion) for the nice idea and first implementation
// + Nur für den privaten Gebrauch
// + www.MikroKopter.com
// + porting the sources to other systems or using the software on other systems (except hardware from www.mikrokopter.de) is not allowed
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// + Es gilt für das gesamte Projekt (Hardware, Software, Binärfiles, Sourcecode und Dokumentation),
// + dass eine Nutzung (auch auszugsweise) nur für den privaten (nicht-kommerziellen) Gebrauch zulässig ist.
// + Sollten direkte oder indirekte kommerzielle Absichten verfolgt werden, ist mit uns (info@mikrokopter.de) Kontakt
// + bzgl. der Nutzungsbedingungen aufzunehmen.
// + Eine kommerzielle Nutzung ist z.B.Verkauf von MikroKoptern, Bestückung und Verkauf von Platinen oder Bausätzen,
// + Verkauf von Luftbildaufnahmen, usw.
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// + Werden Teile des Quellcodes (mit oder ohne Modifikation) weiterverwendet oder veröffentlicht,
// + unterliegen sie auch diesen Nutzungsbedingungen und diese Nutzungsbedingungen incl. Copyright müssen dann beiliegen
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// + Sollte die Software (auch auszugesweise) oder sonstige Informationen des MikroKopter-Projekts
// + auf anderen Webseiten oder sonstigen Medien veröffentlicht werden, muss unsere Webseite "http://www.mikrokopter.de"
// + eindeutig als Ursprung verlinkt werden
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// + Keine Gewähr auf Fehlerfreiheit, Vollständigkeit oder Funktion
// + Benutzung auf eigene Gefahr
// + Wir übernehmen keinerlei Haftung für direkte oder indirekte Personen- oder Sachschäden
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// + Die Portierung der Software (oder Teile davon) auf andere Systeme (ausser der Hardware von www.mikrokopter.de) ist nur
// + mit unserer Zustimmung zulässig
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// + Die Funktion printf_P() unterliegt ihrer eigenen Lizenz und ist hiervon nicht betroffen
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// + Redistributions of source code (with or without modifications) must retain the above copyright notice,
// + this list of conditions and the following disclaimer.
// + * Neither the name of the copyright holders nor the names of contributors may be used to endorse or promote products derived
// + from this software without specific prior written permission.
// + * The use of this project (hardware, software, binary files, sources and documentation) is only permittet
// + for non-commercial use (directly or indirectly)
// + Commercial use (for excample: selling of MikroKopters, selling of PCBs, assembly, ...) is only permitted
// + with our written permission
// + * If sources or documentations are redistributet on other webpages, out webpage (http://www.MikroKopter.de) must be
// + clearly linked as origin
// + * porting to systems other than hardware from www.mikrokopter.de is not allowed
// + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
// + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
// + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
// + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
// + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
// + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
// + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
// + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN// + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
// + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
// + POSSIBILITY OF SUCH DAMAGE.
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#include "capacity.h"
#include "twimaster.h"
#include "main.h"
#include "timer0.h"
#include "analog.h"
 
#define CAPACITY_UPDATE_INTERVAL 10 // 10 ms
#define FC_OFFSET_CURRENT 5 // calculate with a current of 0.5A
#define BL_OFFSET_CURRENT 2 // calculate with a current of 0.2A
 
// global varialbles
unsigned short update_timer = 0;
Capacity_t Capacity;
 
// initialize capacity calculation
void Capacity_Init(void)
{
Capacity.ActualCurrent = 0;
Capacity.UsedCapacity = 0;
Capacity.ActualPower = 0;
Capacity.MinOfMaxPWM = 0;
Capacity.RemainCapacity = (EE_Parameter.UserParam1*100);
update_timer = SetDelay(CAPACITY_UPDATE_INTERVAL);
}
 
 
// called in main loop at a regular interval
void Capacity_Update(void)
{
unsigned short Current, SetSum; // max value will be 255 * 12 = 3060
static unsigned short SubCounter = 0;
static unsigned short CurrentOffset = 0;
static unsigned long SumCurrentOffset = 0;
unsigned char i, NumOfMotors, MinOfMaxPWM;
 
if(CheckDelay(update_timer))
{
update_timer += CAPACITY_UPDATE_INTERVAL; // do not use SetDelay to avoid timing leaks
// determine sum of all present BL currents and setpoints
Current = 0;
SetSum = 0;
NumOfMotors = 0;
MinOfMaxPWM = 255;
for(i = 0; i < MAX_MOTORS; i++)
{
if(Motor[i].State & MOTOR_STATE_PRESENT_MASK)
{
NumOfMotors++;
Current += (unsigned int)(Motor[i].Current);
SetSum += (unsigned int)(Motor[i].SetPoint);
if(Motor[i].MaxPWM < MinOfMaxPWM) MinOfMaxPWM = Motor[i].MaxPWM;
}
}
Capacity.MinOfMaxPWM = MinOfMaxPWM;
 
if(SetSum == 0) // if all setpoints are 0
{ // determine offsets of motor currents
#define CURRENT_AVERAGE 8 // 8bit = 256 * 10 ms = 2.56s average time
CurrentOffset = (unsigned int)(SumCurrentOffset>>CURRENT_AVERAGE);
SumCurrentOffset -= CurrentOffset;
SumCurrentOffset += Current;
// after averaging set current to static offset
Current = FC_OFFSET_CURRENT;
}
else // some motors are running, includes also motor test condition, where "MotorRunning" is false
{ // subtract offset
if(Current > CurrentOffset) Current -= CurrentOffset;
else Current = 0;
// add the FC and BL Offsets
Current += FC_OFFSET_CURRENT + NumOfMotors * BL_OFFSET_CURRENT;
}
 
// update actual Current
Capacity.ActualCurrent = Current;
// update actual Power
if(Current < 255) Capacity.ActualPower = (UBat * Current) / 100; // in W higher resolution
else Capacity.ActualPower = (UBat * (Current/4)) / 25; // in W
 
// update used capacity
SubCounter += Current;
 
// 100mA * 1ms * CAPACITY_UPDATE_INTERVAL = 1 mA * 100 ms * CAPACITY_UPDATE_INTERVAL
// = 1mA * 0.1s * CAPACITY_UPDATE_INTERVAL = 1mA * 1min / (600 / CAPACITY_UPDATE_INTERVAL)
// = 1mAh / (36000 / CAPACITY_UPDATE_INTERVAL)
#define SUB_COUNTER_LIMIT (36000 / CAPACITY_UPDATE_INTERVAL)
if(SubCounter > SUB_COUNTER_LIMIT)
{
Capacity.UsedCapacity++; // we have one mAh more
SubCounter -= SUB_COUNTER_LIMIT; // keep the remaining sub part
Capacity.RemainCapacity=(EE_Parameter.UserParam1*100)-Capacity.UsedCapacity; //Added by metro
if((Capacity.RemainCapacity<=500)&&(Capacity.RemainCapacity%100==0)&&(EE_Parameter.UserParam1!=0)) beeptime = 10000;
}
} // EOF check delay update timer
}
/branches/metro/v0.82a metro_Akku+/capacity.d
0,0 → 1,3
capacity.o capacity.d : capacity.c capacity.h twimaster.h main.h old_macros.h \
printf_P.h timer0.h uart.h analog.h menu.h rc.h fc.h gps.h spi.h led.h \
spektrum.h eeprom.h libfc.h debug.h
/branches/metro/v0.82a metro_Akku+/capacity.h
0,0 → 1,19
#ifndef _CAPACITY_H
#define _CAPACITY_H
 
typedef struct
{
unsigned short ActualCurrent; // in 0.1A Steps
unsigned short ActualPower; // in 0.1W
signed short UsedCapacity; // in mAh //Modified by metro
signed short RemainCapacity; // in mAh //Added by metro
unsigned char MinOfMaxPWM; // BL Power Limit
} __attribute__((packed)) Capacity_t;
 
extern Capacity_t Capacity;
 
void Capacity_Init(void);
void Capacity_Update(void);
 
#endif //_CAPACITY_H
 
/branches/metro/v0.82a metro_Akku+/capacity.lst
0,0 → 1,264
1 .file "capacity.c"
2 .arch atmega644p
3 __SREG__ = 0x3f
4 __SP_H__ = 0x3e
5 __SP_L__ = 0x3d
6 __tmp_reg__ = 0
7 __zero_reg__ = 1
8 .global __do_copy_data
9 .global __do_clear_bss
10 .global update_timer
11 .global update_timer
12 .section .bss
15 update_timer:
16 0000 0000 .skip 2,0
17 .text
18 .global Capacity_Init
20 Capacity_Init:
21 /* prologue: frame size=0 */
22 /* prologue end (size=0) */
23 0000 1092 0000 sts (Capacity)+1,__zero_reg__
24 0004 1092 0000 sts Capacity,__zero_reg__
25 0008 1092 0000 sts (Capacity+4)+1,__zero_reg__
26 000c 1092 0000 sts Capacity+4,__zero_reg__
27 0010 1092 0000 sts (Capacity+2)+1,__zero_reg__
28 0014 1092 0000 sts Capacity+2,__zero_reg__
29 0018 1092 0000 sts Capacity+8,__zero_reg__
30 001c 9091 0000 lds r25,EE_Parameter+41
31 0020 84E6 ldi r24,lo8(100)
32 0022 989F mul r25,r24
33 0024 C001 movw r24,r0
34 0026 1124 clr r1
35 0028 9093 0000 sts (Capacity+6)+1,r25
36 002c 8093 0000 sts Capacity+6,r24
37 0030 8AE0 ldi r24,lo8(10)
38 0032 90E0 ldi r25,hi8(10)
39 0034 0E94 0000 call SetDelay
40 0038 9093 0000 sts (update_timer)+1,r25
41 003c 8093 0000 sts update_timer,r24
42 /* epilogue: frame size=0 */
43 0040 0895 ret
44 /* epilogue end (size=1) */
45 /* function Capacity_Init size 33 (32) */
47 .lcomm SubCounter.0,2
48 .lcomm CurrentOffset.1,2
49 .lcomm SumCurrentOffset.2,4
50 .global Capacity_Update
52 Capacity_Update:
53 /* prologue: frame size=0 */
54 0042 CF93 push r28
55 0044 DF93 push r29
56 /* prologue end (size=2) */
57 0046 8091 0000 lds r24,update_timer
58 004a 9091 0000 lds r25,(update_timer)+1
59 004e 0E94 0000 call CheckDelay
60 0052 8823 tst r24
61 0054 09F4 brne .+2
62 0056 CEC0 rjmp .L2
63 0058 8091 0000 lds r24,update_timer
64 005c 9091 0000 lds r25,(update_timer)+1
65 0060 0A96 adiw r24,10
66 0062 9093 0000 sts (update_timer)+1,r25
67 0066 8093 0000 sts update_timer,r24
68 006a E0E0 ldi r30,lo8(0)
69 006c F0E0 ldi r31,hi8(0)
70 006e 9F01 movw r18,r30
71 0070 90E0 ldi r25,lo8(0)
72 0072 5FEF ldi r21,lo8(-1)
73 0074 A0E0 ldi r26,lo8(Motor)
74 0076 B0E0 ldi r27,hi8(Motor)
75 0078 4BE0 ldi r20,lo8(11)
76 .L9:
77 007a ED01 movw r28,r26
78 007c 8B81 ldd r24,Y+3
79 007e 87FF sbrs r24,7
80 0080 0BC0 rjmp .L6
81 0082 9F5F subi r25,lo8(-(1))
82 0084 8D81 ldd r24,Y+5
83 0086 E80F add r30,r24
84 0088 F11D adc r31,__zero_reg__
85 008a 8981 ldd r24,Y+1
86 008c 280F add r18,r24
87 008e 311D adc r19,__zero_reg__
88 0090 8E81 ldd r24,Y+6
89 0092 8517 cp r24,r21
90 0094 08F4 brsh .L6
91 0096 582F mov r21,r24
92 .L6:
93 0098 4150 subi r20,lo8(-(-1))
94 009a 1896 adiw r26,8
95 009c 47FF sbrs r20,7
96 009e EDCF rjmp .L9
97 00a0 5093 0000 sts Capacity+8,r21
98 00a4 232B or r18,r19
99 00a6 41F5 brne .L10
100 00a8 2091 0000 lds r18,SumCurrentOffset.2
101 00ac 3091 0000 lds r19,(SumCurrentOffset.2)+1
102 00b0 4091 0000 lds r20,(SumCurrentOffset.2)+2
103 00b4 5091 0000 lds r21,(SumCurrentOffset.2)+3
104 00b8 BB27 clr r27
105 00ba A52F mov r26,r21
106 00bc 942F mov r25,r20
107 00be 832F mov r24,r19
108 00c0 9093 0000 sts (CurrentOffset.1)+1,r25
109 00c4 8093 0000 sts CurrentOffset.1,r24
110 00c8 AA27 clr r26
111 00ca BB27 clr r27
112 00cc 281B sub r18,r24
113 00ce 390B sbc r19,r25
114 00d0 4A0B sbc r20,r26
115 00d2 5B0B sbc r21,r27
116 00d4 CF01 movw r24,r30
117 00d6 AA27 clr r26
118 00d8 BB27 clr r27
119 00da 280F add r18,r24
120 00dc 391F adc r19,r25
121 00de 4A1F adc r20,r26
122 00e0 5B1F adc r21,r27
123 00e2 2093 0000 sts SumCurrentOffset.2,r18
124 00e6 3093 0000 sts (SumCurrentOffset.2)+1,r19
125 00ea 4093 0000 sts (SumCurrentOffset.2)+2,r20
126 00ee 5093 0000 sts (SumCurrentOffset.2)+3,r21
127 00f2 E5E0 ldi r30,lo8(5)
128 00f4 F0E0 ldi r31,hi8(5)
129 00f6 13C0 rjmp .L11
130 .L10:
131 00f8 2091 0000 lds r18,CurrentOffset.1
132 00fc 3091 0000 lds r19,(CurrentOffset.1)+1
133 0100 2E17 cp r18,r30
134 0102 3F07 cpc r19,r31
135 0104 18F4 brsh .L12
136 0106 E21B sub r30,r18
137 0108 F30B sbc r31,r19
138 010a 02C0 rjmp .L13
139 .L12:
140 010c E0E0 ldi r30,lo8(0)
141 010e F0E0 ldi r31,hi8(0)
142 .L13:
143 0110 892F mov r24,r25
144 0112 9927 clr r25
145 0114 880F add r24,r24
146 0116 991F adc r25,r25
147 0118 E80F add r30,r24
148 011a F91F adc r31,r25
149 011c 3596 adiw r30,5
150 .L11:
151 011e F093 0000 sts (Capacity)+1,r31
152 0122 E093 0000 sts Capacity,r30
153 0126 EF3F cpi r30,255
154 0128 F105 cpc r31,__zero_reg__
155 012a 78F4 brsh .L14
156 012c 8091 0000 lds r24,UBat
157 0130 9091 0000 lds r25,(UBat)+1
158 0134 8E9F mul r24,r30
159 0136 9001 movw r18,r0
160 0138 8F9F mul r24,r31
161 013a 300D add r19,r0
162 013c 9E9F mul r25,r30
163 013e 300D add r19,r0
164 0140 1124 clr r1
165 0142 C901 movw r24,r18
166 0144 64E6 ldi r22,lo8(100)
167 0146 70E0 ldi r23,hi8(100)
168 0148 13C0 rjmp .L20
169 .L14:
170 014a CF01 movw r24,r30
171 014c 9695 lsr r25
172 014e 8795 ror r24
173 0150 9695 lsr r25
174 0152 8795 ror r24
175 0154 2091 0000 lds r18,UBat
176 0158 3091 0000 lds r19,(UBat)+1
177 015c 289F mul r18,r24
178 015e A001 movw r20,r0
179 0160 299F mul r18,r25
180 0162 500D add r21,r0
181 0164 389F mul r19,r24
182 0166 500D add r21,r0
183 0168 1124 clr r1
184 016a CA01 movw r24,r20
185 016c 69E1 ldi r22,lo8(25)
186 016e 70E0 ldi r23,hi8(25)
187 .L20:
188 0170 0E94 0000 call __udivmodhi4
189 0174 7093 0000 sts (Capacity+2)+1,r23
190 0178 6093 0000 sts Capacity+2,r22
191 017c 2091 0000 lds r18,SubCounter.0
192 0180 3091 0000 lds r19,(SubCounter.0)+1
193 0184 2E0F add r18,r30
194 0186 3F1F adc r19,r31
195 0188 3093 0000 sts (SubCounter.0)+1,r19
196 018c 2093 0000 sts SubCounter.0,r18
197 0190 5EE0 ldi r21,hi8(3601)
198 0192 2131 cpi r18,lo8(3601)
199 0194 3507 cpc r19,r21
200 0196 70F1 brlo .L2
201 0198 8091 0000 lds r24,Capacity+4
202 019c 9091 0000 lds r25,(Capacity+4)+1
203 01a0 0196 adiw r24,1
204 01a2 9093 0000 sts (Capacity+4)+1,r25
205 01a6 8093 0000 sts Capacity+4,r24
206 01aa 2051 subi r18,lo8(-(-3600))
207 01ac 3E40 sbci r19,hi8(-(-3600))
208 01ae 3093 0000 sts (SubCounter.0)+1,r19
209 01b2 2093 0000 sts SubCounter.0,r18
210 01b6 4091 0000 lds r20,EE_Parameter+41
211 01ba 24E6 ldi r18,lo8(100)
212 01bc 429F mul r20,r18
213 01be 9001 movw r18,r0
214 01c0 1124 clr r1
215 01c2 281B sub r18,r24
216 01c4 390B sbc r19,r25
217 01c6 3093 0000 sts (Capacity+6)+1,r19
218 01ca 2093 0000 sts Capacity+6,r18
219 01ce 81E0 ldi r24,hi8(501)
220 01d0 253F cpi r18,lo8(501)
221 01d2 3807 cpc r19,r24
222 01d4 7CF4 brge .L2
223 01d6 C901 movw r24,r18
224 01d8 64E6 ldi r22,lo8(100)
225 01da 70E0 ldi r23,hi8(100)
226 01dc 0E94 0000 call __divmodhi4
227 01e0 892B or r24,r25
228 01e2 41F4 brne .L2
229 01e4 4423 tst r20
230 01e6 31F0 breq .L2
231 01e8 80E1 ldi r24,lo8(10000)
232 01ea 97E2 ldi r25,hi8(10000)
233 01ec 9093 0000 sts (beeptime)+1,r25
234 01f0 8093 0000 sts beeptime,r24
235 .L2:
236 /* epilogue: frame size=0 */
237 01f4 DF91 pop r29
238 01f6 CF91 pop r28
239 01f8 0895 ret
240 /* epilogue end (size=3) */
241 /* function Capacity_Update size 220 (215) */
243 .comm Capacity,9,1
244 /* File "capacity.c": code 253 = 0x00fd ( 247), prologues 2, epilogues 4 */
DEFINED SYMBOLS
*ABS*:00000000 capacity.c
C:\Users\Thomas\AppData\Local\Temp/ccENaaaa.s:3 *ABS*:0000003f __SREG__
C:\Users\Thomas\AppData\Local\Temp/ccENaaaa.s:4 *ABS*:0000003e __SP_H__
C:\Users\Thomas\AppData\Local\Temp/ccENaaaa.s:5 *ABS*:0000003d __SP_L__
C:\Users\Thomas\AppData\Local\Temp/ccENaaaa.s:6 *ABS*:00000000 __tmp_reg__
C:\Users\Thomas\AppData\Local\Temp/ccENaaaa.s:7 *ABS*:00000001 __zero_reg__
C:\Users\Thomas\AppData\Local\Temp/ccENaaaa.s:15 .bss:00000000 update_timer
C:\Users\Thomas\AppData\Local\Temp/ccENaaaa.s:20 .text:00000000 Capacity_Init
*COM*:00000009 Capacity
.bss:00000002 SubCounter.0
C:\Users\Thomas\AppData\Local\Temp/ccENaaaa.s:47 .bss:00000004 CurrentOffset.1
C:\Users\Thomas\AppData\Local\Temp/ccENaaaa.s:48 .bss:00000006 SumCurrentOffset.2
C:\Users\Thomas\AppData\Local\Temp/ccENaaaa.s:52 .text:00000042 Capacity_Update
 
UNDEFINED SYMBOLS
__do_copy_data
__do_clear_bss
EE_Parameter
SetDelay
CheckDelay
Motor
UBat
__udivmodhi4
__divmodhi4
beeptime
/branches/metro/v0.82a metro_Akku+/debug.c
0,0 → 1,48
#include "main.h"
#include "debug.h"
 
#ifdef DEBUG // only include functions if DEBUG is defined in main.h
 
#warning : "### DEBUG-Funktion aktiv ###"
 
 
 
unsigned char Debug_BufPtr = 0;
struct str_Debug tDebug;
unsigned char SendDebugOutput = 0;
 
// function called from _printf_P to output character
void Debug_Putchar(char c)
{
if (!SendDebugOutput)
{
tDebug.Text[Debug_BufPtr++] = c; // copy character to buffer
if (Debug_BufPtr > 30) Debug_BufPtr = 30; // avoid buffer overflow
}
}
 
void DebugSend(unsigned char cmd)
{
if (!SendDebugOutput)
{
tDebug.Cmd = cmd;
tDebug.Text[Debug_BufPtr] = '\0'; // end of text marker
Debug_BufPtr = 0; // set bufferindex to 0
SendDebugOutput = 1; // set flag to trasmit data the next time in serial transmit function
}
}
#endif
 
/*
add the following code block to the serial transmit function
 
#ifdef DEBUG // only include functions if DEBUG is defined
if(SendDebugOutput && UebertragungAbgeschlossen)
{
SendOutData('0', FC_ADDRESS, 1, (unsigned char *) &tDebug, sizeof(tDebug));
SendDebugOutput = 0;
}
#endif
 
*/
 
/branches/metro/v0.82a metro_Akku+/debug.d
0,0 → 1,3
debug.o debug.d : debug.c main.h old_macros.h printf_P.h timer0.h uart.h analog.h \
twimaster.h menu.h rc.h fc.h gps.h spi.h led.h spektrum.h capacity.h \
eeprom.h libfc.h debug.h
/branches/metro/v0.82a metro_Akku+/debug.h
0,0 → 1,60
#ifndef _DEBUG_H
#define _DEBUG_H
// ----------------------------------------------
#define CMD_NONE 0x00
#define CMD_RAW_OUTPUT 0x01
#define CMD_ERROR_MSG 0x02
#define CMD_WARNING_MSG 0x04
#define CMD_GREEN_MSG 0x08
 
// debug console in MK-Tool can also handle ANSI ESC seq.
#define ANSI_ATTRIBUTE_OFF "\033[0m"
#define ANSI_BOLD "\033[1m"
#define ANSI_UNDERSCORE "\033[4m"
#define ANSI_BLINK "\033[5m"
#define ANSI_INVERSE "\033[7m"
#define ANSI_INVISIBLE "\033[8m"
 
#define ANSI_COLOR_BLACK "\033[30m"
#define ANSI_COLOR_RED "\033[31m"
#define ANSI_COLOR_GREEN "\033[32m"
#define ANSI_COLOR_YELLOW "\033[33m"
#define ANSI_COLOR_BLUE "\033[34m"
#define ANSI_COLOR_VIOLETT "\033[35m"
#define ANSI_COLOR_KOBALTBLUE "\033[36m"
#define ANSI_COLOR_WHITE "\033[37m"
 
#define ANSI_CLEAR "\033[2J"
#define ANSI_HOME "\033[H"
 
// macros for easier use
#ifdef DEBUG // only include functions if DEBUG is defined in main.h
 
#define Debug(format, args...) { _printf_P(&Debug_Putchar, PSTR(format) , ## args); DebugSend(CMD_NONE); }
#define Debug_Raw(format, args...) { _printf_P(&Debug_Putchar, PSTR(format) , ## args); DebugSend(CMD_RAW_OUTPUT); }
#define Debug_Warning(format, args...) { _printf_P(&Debug_Putchar, PSTR(format) , ## args); DebugSend(CMD_WARNING_MSG); }
#define Debug_Error(format, args...) { _printf_P(&Debug_Putchar, PSTR(format) , ## args); DebugSend(CMD_ERROR_MSG); }
#define Debug_OK(format, args...) { _printf_P(&Debug_Putchar, PSTR(format) , ## args); DebugSend(CMD_GREEN_MSG); }
 
struct str_Debug
{
unsigned char Cmd; // bitcoded command
char Text[32];
};
 
extern struct str_Debug tDebug;
unsigned char SendDebugOutput;
 
void Debug_Putchar(char c);
void DebugSend(unsigned char cmd);
 
#else // dummy macros (won't waste flash, if #DEBUG is disabled)
#define Debug(format, args...) ;
#define Debug_Raw(format, args...) ;
#define Debug_Warning(format, args...) ;
#define Debug_Error(format, args...) ;
#define Debug_OK(format, args...) ;
#endif
 
// ----------------------------------------------
#endif
/branches/metro/v0.82a metro_Akku+/debug.lst
0,0 → 1,21
1 .file "debug.c"
2 .arch atmega644p
3 __SREG__ = 0x3f
4 __SP_H__ = 0x3e
5 __SP_L__ = 0x3d
6 __tmp_reg__ = 0
7 __zero_reg__ = 1
8 .global __do_copy_data
9 .global __do_clear_bss
10 /* File "debug.c": code 0 = 0x0000 ( 0), prologues 0, epilogues 0 */
DEFINED SYMBOLS
*ABS*:00000000 debug.c
C:\Users\Thomas\AppData\Local\Temp/ccCQbaaa.s:3 *ABS*:0000003f __SREG__
C:\Users\Thomas\AppData\Local\Temp/ccCQbaaa.s:4 *ABS*:0000003e __SP_H__
C:\Users\Thomas\AppData\Local\Temp/ccCQbaaa.s:5 *ABS*:0000003d __SP_L__
C:\Users\Thomas\AppData\Local\Temp/ccCQbaaa.s:6 *ABS*:00000000 __tmp_reg__
C:\Users\Thomas\AppData\Local\Temp/ccCQbaaa.s:7 *ABS*:00000001 __zero_reg__
 
UNDEFINED SYMBOLS
__do_copy_data
__do_clear_bss
/branches/metro/v0.82a metro_Akku+/eeprom.c
0,0 → 1,595
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// + Copyright (c) Holger Buss, Ingo Busker
// + Nur für den privaten Gebrauch
// + porting the sources to other systems or using the software on other systems (except hardware from www.mikrokopter.de) is not allowed
// + www.MikroKopter.com
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// + Es gilt für das gesamte Projekt (Hardware, Software, Binärfiles, Sourcecode und Dokumentation),
// + dass eine Nutzung (auch auszugsweise) nur für den privaten (nicht-kommerziellen) Gebrauch zulässig ist.
// + Sollten direkte oder indirekte kommerzielle Absichten verfolgt werden, ist mit uns (info@mikrokopter.de) Kontakt
// + bzgl. der Nutzungsbedingungen aufzunehmen.
// + Eine kommerzielle Nutzung ist z.B.Verkauf von MikroKoptern, Bestückung und Verkauf von Platinen oder Bausätzen,
// + Verkauf von Luftbildaufnahmen, usw.
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// + Werden Teile des Quellcodes (mit oder ohne Modifikation) weiterverwendet oder veröffentlicht,
// + unterliegen sie auch diesen Nutzungsbedingungen und diese Nutzungsbedingungen incl. Copyright müssen dann beiliegen
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// + Sollte die Software (auch auszugesweise) oder sonstige Informationen des MikroKopter-Projekts
// + auf anderen Webseiten oder sonstigen Medien veröffentlicht werden, muss unsere Webseite "http://www.mikrokopter.de"
// + eindeutig als Ursprung verlinkt werden
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// + Keine Gewähr auf Fehlerfreiheit, Vollständigkeit oder Funktion
// + Benutzung auf eigene Gefahr
// + Wir übernehmen keinerlei Haftung für direkte oder indirekte Personen- oder Sachschäden
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// + Die Portierung der Software (oder Teile davon) auf andere Systeme (ausser der Hardware von www.mikrokopter.de) ist nur
// + mit unserer Zustimmung zulässig
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// + Die Funktion printf_P() unterliegt ihrer eigenen Lizenz und ist hiervon nicht betroffen
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// + Redistributions of source code (with or without modifications) must retain the above copyright notice,
// + this list of conditions and the following disclaimer.
// + * Neither the name of the copyright holders nor the names of contributors may be used to endorse or promote products derived
// + from this software without specific prior written permission.
// + * The use of this project (hardware, software, binary files, sources and documentation) is only permittet
// + for non-commercial use (directly or indirectly)
// + Commercial use (for excample: selling of MikroKopters, selling of PCBs, assembly, ...) is only permitted
// + with our written permission
// + * If sources or documentations are redistributet on other webpages, out webpage (http://www.MikroKopter.de) must be
// + clearly linked as origin
// + * porting to systems other than hardware from www.mikrokopter.de is not allowed
// + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
// + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
// + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
// + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
// + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
// + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
// + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
// + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN// + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
// + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
// + POSSIBILITY OF SUCH DAMAGE.
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 
 
#ifndef EEMEM
#define EEMEM __attribute__ ((section (".eeprom")))
#endif
 
 
#include <avr/eeprom.h>
#include <string.h>
#include "eeprom.h"
#include "uart.h"
#include "led.h"
#include "main.h"
#include "fc.h"
#include "twimaster.h"
 
paramset_t EE_Parameter;
MixerTable_t Mixer;
uint8_t RequiredMotors;
 
 
uint8_t RAM_Checksum(uint8_t* pBuffer, uint16_t len)
{
uint8_t crc = 0xAA;
uint16_t i;
 
for(i=0; i<len; i++)
{
crc += pBuffer[i];
}
return crc;
}
 
uint8_t EEProm_Checksum(uint16_t EEAddr, uint16_t len)
{
uint8_t crc = 0xAA;
uint16_t off;
 
for(off=0; off<len; off++)
{
crc += eeprom_read_byte((uint8_t*)(EEAddr + off));;
}
return crc;
}
 
void ParamSet_DefaultStickMapping(void)
{
EE_Parameter.Kanalbelegung[K_GAS] = 1;
EE_Parameter.Kanalbelegung[K_ROLL] = 2;
EE_Parameter.Kanalbelegung[K_NICK] = 3;
EE_Parameter.Kanalbelegung[K_GIER] = 4;
EE_Parameter.Kanalbelegung[K_POTI1] = 5;
EE_Parameter.Kanalbelegung[K_POTI2] = 6;
EE_Parameter.Kanalbelegung[K_POTI3] = 7;
EE_Parameter.Kanalbelegung[K_POTI4] = 8;
EE_Parameter.Kanalbelegung[K_POTI5] = 9;
EE_Parameter.Kanalbelegung[K_POTI6] = 10;
EE_Parameter.Kanalbelegung[K_POTI7] = 11;
EE_Parameter.Kanalbelegung[K_POTI8] = 12;
}
 
 
/***************************************************/
/* Default Values for parameter set 1 */
/***************************************************/
void CommonDefaults(void)
{
EE_Parameter.Revision = EEPARAM_REVISION;
 
if(PlatinenVersion >= 20)
{
EE_Parameter.Gyro_D = 10;
EE_Parameter.Driftkomp = 0;
EE_Parameter.GyroAccFaktor = 27;
EE_Parameter.WinkelUmschlagNick = 78;
EE_Parameter.WinkelUmschlagRoll = 78;
}
else
{
EE_Parameter.Gyro_D = 3;
EE_Parameter.Driftkomp = 32;
EE_Parameter.GyroAccFaktor = 30;
EE_Parameter.WinkelUmschlagNick = 85;
EE_Parameter.WinkelUmschlagRoll = 85;
}
EE_Parameter.GlobalConfig = CFG_ACHSENKOPPLUNG_AKTIV | CFG_KOMPASS_AKTIV | CFG_GPS_AKTIV | CFG_HOEHEN_SCHALTER;
EE_Parameter.ExtraConfig = CFG2_HEIGHT_LIMIT | CFG2_VARIO_BEEP;
EE_Parameter.Receiver = RECEIVER_SPEKTRUM;
EE_Parameter.MotorSafetySwitch = 0;
EE_Parameter.ExternalControl = 0;
 
EE_Parameter.Gas_Min = 8; // Wert : 0-32
EE_Parameter.Gas_Max = 230; // Wert : 33-247
EE_Parameter.KompassWirkung = 128; // Wert : 0-247
 
EE_Parameter.Hoehe_MinGas = 30;
EE_Parameter.MaxHoehe = 255; // Wert : 0-247 255 -> Poti1
EE_Parameter.Hoehe_P = 15; // Wert : 0-32
EE_Parameter.Luftdruck_D = 30; // Wert : 0-247
EE_Parameter.Hoehe_ACC_Wirkung = 0; // Wert : 0-247
EE_Parameter.Hoehe_HoverBand = 8; // Wert : 0-247
EE_Parameter.Hoehe_GPS_Z = 64; // Wert : 0-247
EE_Parameter.Hoehe_StickNeutralPoint = 0;// Wert : 0-247 (0 = Hover-Estimation)
EE_Parameter.Hoehe_Verstaerkung = 15; // Wert : 0-50
 
EE_Parameter.UserParam1 = 0; // zur freien Verwendung
EE_Parameter.UserParam2 = 0; // zur freien Verwendung
EE_Parameter.UserParam3 = 0; // zur freien Verwendung
EE_Parameter.UserParam4 = 0; // zur freien Verwendung
EE_Parameter.UserParam5 = 0; // zur freien Verwendung
EE_Parameter.UserParam6 = 0; // zur freien Verwendung
EE_Parameter.UserParam7 = 0; // zur freien Verwendung
EE_Parameter.UserParam8 = 0; // zur freien Verwendung
 
EE_Parameter.ServoNickControl = 120; // Wert : 0-247 // Stellung des Servos
EE_Parameter.ServoNickComp = 40; // Wert : 0-247 // Einfluss Gyro/Servo
EE_Parameter.ServoCompInvert = 2; // Wert : 0-247 // Richtung Einfluss Gyro/Servo
EE_Parameter.ServoNickMin = 15; // Wert : 0-247 // Anschlag
EE_Parameter.ServoNickMax = 247; // Wert : 0-247 // Anschlag
EE_Parameter.ServoNickRefresh = 5;
EE_Parameter.Servo3 = 125;
EE_Parameter.Servo4 = 125;
EE_Parameter.Servo5 = 125;
EE_Parameter.ServoRollControl = 120; // Wert : 0-247 // Stellung des Servos
EE_Parameter.ServoRollComp = 90; // Wert : 0-247 // Einfluss Gyro/Servo
EE_Parameter.ServoRollMin = 0; // Wert : 0-247 // Anschlag
EE_Parameter.ServoRollMax = 247; // Wert : 0-247 // Anschlag
EE_Parameter.ServoManualControlSpeed = 40;
EE_Parameter.CamOrientation = 0;
 
EE_Parameter.J16Bitmask = 95;
EE_Parameter.J17Bitmask = 243;
EE_Parameter.WARN_J16_Bitmask = 0xAA;
EE_Parameter.WARN_J17_Bitmask = 0xAA;
EE_Parameter.J16Timing = 20;
EE_Parameter.J17Timing = 20;
 
EE_Parameter.LoopGasLimit = 50;
EE_Parameter.LoopThreshold = 90; // Wert: 0-247 Schwelle für Stickausschlag
EE_Parameter.LoopHysterese = 50;
EE_Parameter.BitConfig = 0; // Bitcodiert: 0x01=oben, 0x02=unten, 0x04=links, 0x08=rechts / wird getrennt behandelt
 
EE_Parameter.NaviGpsModeControl = 254; // 254 -> Poti 2
EE_Parameter.NaviGpsGain = 100;
EE_Parameter.NaviGpsP = 90;
EE_Parameter.NaviGpsI = 90;
EE_Parameter.NaviGpsD = 90;
EE_Parameter.NaviGpsPLimit = 75;
EE_Parameter.NaviGpsILimit = 75;
EE_Parameter.NaviGpsDLimit = 75;
EE_Parameter.NaviGpsACC = 0;
EE_Parameter.NaviGpsMinSat = 6;
EE_Parameter.NaviStickThreshold = 8;
EE_Parameter.NaviWindCorrection = 90;
EE_Parameter.NaviSpeedCompensation = 30;
EE_Parameter.NaviOperatingRadius = 100;
EE_Parameter.NaviAngleLimitation = 100;
EE_Parameter.NaviPH_LoginTime = 2;
EE_Parameter.OrientationAngle = 0;
EE_Parameter.OrientationModeControl = 0;
EE_Parameter.UnterspannungsWarnung = 33; // Wert : 0-247 ( Automatische Zellenerkennung bei < 50)
EE_Parameter.NotGas = 45; // Wert : 0-247 // Gaswert bei Empangsverlust
EE_Parameter.NotGasZeit = 90; // Wert : 0-247 // Zeit bis auf NotGas geschaltet wird, wg. Rx-Problemen
}
 
void ParamSet_DefaultSet1(void) // sport
{
CommonDefaults();
EE_Parameter.Stick_P = 14; // Wert : 1-20
EE_Parameter.Stick_D = 16; // Wert : 0-20
EE_Parameter.Gier_P = 12; // Wert : 1-20
EE_Parameter.Gyro_P = 80; // Wert : 0-247
EE_Parameter.Gyro_I = 150; // Wert : 0-247
EE_Parameter.Gyro_Gier_P = 80; // Wert : 0-247
EE_Parameter.Gyro_Gier_I = 150; // Wert : 0-247
EE_Parameter.Gyro_Stability = 6; // Wert : 1-8
EE_Parameter.I_Faktor = 32;
EE_Parameter.AchsKopplung1 = 90;
EE_Parameter.AchsKopplung2 = 80;
EE_Parameter.CouplingYawCorrection = 1;
EE_Parameter.GyroAccAbgleich = 16; // 1/k;
EE_Parameter.DynamicStability = 100;
memcpy(EE_Parameter.Name, "Sport\0", 12);
EE_Parameter.crc = RAM_Checksum((uint8_t*)(&EE_Parameter), sizeof(EE_Parameter)-1);
}
 
 
/***************************************************/
/* Default Values for parameter set 2 */
/***************************************************/
void ParamSet_DefaultSet2(void) // normal
{
CommonDefaults();
EE_Parameter.Stick_P = 10; // Wert : 1-20
EE_Parameter.Stick_D = 16; // Wert : 0-20
EE_Parameter.Gier_P = 6; // Wert : 1-20
EE_Parameter.Gyro_P = 90; // Wert : 0-247
EE_Parameter.Gyro_I = 120; // Wert : 0-247
EE_Parameter.Gyro_Gier_P = 90; // Wert : 0-247
EE_Parameter.Gyro_Gier_I = 120; // Wert : 0-247
EE_Parameter.Gyro_Stability = 6; // Wert : 1-8
EE_Parameter.I_Faktor = 32;
EE_Parameter.AchsKopplung1 = 90;
EE_Parameter.AchsKopplung2 = 80;
EE_Parameter.CouplingYawCorrection = 60;
EE_Parameter.GyroAccAbgleich = 32; // 1/k
EE_Parameter.DynamicStability = 75;
memcpy(EE_Parameter.Name, "Normal\0", 12);
EE_Parameter.crc = RAM_Checksum((uint8_t*)(&EE_Parameter), sizeof(EE_Parameter)-1);
}
 
 
/***************************************************/
/* Default Values for parameter set 3 */
/***************************************************/
void ParamSet_DefaultSet3(void) // beginner
{
CommonDefaults();
EE_Parameter.Stick_P = 8; // Wert : 1-20
EE_Parameter.Stick_D = 16; // Wert : 0-20
EE_Parameter.Gier_P = 6; // Wert : 1-20
EE_Parameter.Gyro_P = 100; // Wert : 0-247
EE_Parameter.Gyro_I = 120; // Wert : 0-247
EE_Parameter.Gyro_Gier_P = 100; // Wert : 0-247
EE_Parameter.Gyro_Gier_I = 120; // Wert : 0-247
EE_Parameter.Gyro_Stability = 6; // Wert : 1-8
EE_Parameter.I_Faktor = 16;
EE_Parameter.AchsKopplung1 = 90;
EE_Parameter.AchsKopplung2 = 80;
EE_Parameter.CouplingYawCorrection = 70;
EE_Parameter.GyroAccAbgleich = 32; // 1/k
EE_Parameter.DynamicStability = 70;
memcpy(EE_Parameter.Name, "Beginner\0", 12);
EE_Parameter.crc = RAM_Checksum((uint8_t*)(&EE_Parameter), sizeof(EE_Parameter)-1);
}
 
/***************************************************/
/* Read Parameter from EEPROM as byte */
/***************************************************/
uint8_t GetParamByte(uint16_t param_id)
{
return eeprom_read_byte((uint8_t*)(EEPROM_ADR_PARAM_BEGIN + param_id));
}
 
/***************************************************/
/* Write Parameter to EEPROM as byte */
/***************************************************/
void SetParamByte(uint16_t param_id, uint8_t value)
{
eeprom_write_byte((uint8_t*)(EEPROM_ADR_PARAM_BEGIN + param_id), value);
}
 
/***************************************************/
/* Read Parameter from EEPROM as word */
/***************************************************/
uint16_t GetParamWord(uint16_t param_id)
{
return eeprom_read_word((uint16_t *)(EEPROM_ADR_PARAM_BEGIN + param_id));
}
 
/***************************************************/
/* Write Parameter to EEPROM as word */
/***************************************************/
void SetParamWord(uint16_t param_id, uint16_t value)
{
eeprom_write_word((uint16_t*)(EEPROM_ADR_PARAM_BEGIN + param_id), value);
}
 
/***************************************************/
/* Read Parameter Set from EEPROM */
/***************************************************/
// number [1..5]
uint8_t ParamSet_ReadFromEEProm(uint8_t setnumber)
{
uint8_t crc;
uint16_t eeaddr;
 
// range the setnumber
if((1 > setnumber) || (setnumber > 5)) setnumber = 3;
 
// calculate eeprom addr
eeaddr = EEPROM_ADR_PARAMSET + PARAMSET_STRUCT_LEN * (setnumber - 1);
 
// calculate checksum from eeprom
crc = EEProm_Checksum(eeaddr, PARAMSET_STRUCT_LEN - 1);
 
// check crc
if(crc != eeprom_read_byte((uint8_t*)(eeaddr + PARAMSET_STRUCT_LEN - 1))) return 0;
 
// check revision
if(eeprom_read_byte((uint8_t*)(eeaddr)) != EEPARAM_REVISION) return 0;
 
// read paramset from eeprom
eeprom_read_block((void *) &EE_Parameter, (void*)(EEPROM_ADR_PARAMSET + PARAMSET_STRUCT_LEN * (setnumber - 1)), PARAMSET_STRUCT_LEN);
LED_Init();
return 1;
}
 
/***************************************************/
/* Write Parameter Set to EEPROM */
/***************************************************/
// number [1..5]
uint8_t ParamSet_WriteToEEProm(uint8_t setnumber)
{
uint8_t crc;
 
if(EE_Parameter.Revision == EEPARAM_REVISION) // write only the right revision to eeprom
{
if(setnumber > 5) setnumber = 5;
if(setnumber < 1) return 0;
 
// update checksum
EE_Parameter.crc = RAM_Checksum((uint8_t*)(&EE_Parameter), sizeof(EE_Parameter)-1);
 
// write paramset to eeprom
eeprom_write_block((void *) &EE_Parameter, (void*)(EEPROM_ADR_PARAMSET + PARAMSET_STRUCT_LEN * (setnumber - 1)), PARAMSET_STRUCT_LEN);
 
// backup channel settings to separate block in eeprom
eeprom_write_block( (void*)(EE_Parameter.Kanalbelegung), (void*)(EEPROM_ADR_CHANNELS), sizeof(EE_Parameter.Kanalbelegung));
 
// write crc of channel block to eeprom
crc = RAM_Checksum((uint8_t*)(EE_Parameter.Kanalbelegung), sizeof(EE_Parameter.Kanalbelegung));
eeprom_write_byte((uint8_t*)(EEPROM_ADR_CHANNELS + sizeof(EE_Parameter.Kanalbelegung)), crc);
 
// update active settings number
SetActiveParamSet(setnumber);
LED_Init();
return 1;
}
// wrong revision
return 0;
}
 
/***************************************************/
/* Read MixerTable from EEPROM */
/***************************************************/
uint8_t MixerTable_ReadFromEEProm(void)
{
uint8_t crc;
 
// calculate checksum in eeprom
crc = EEProm_Checksum(EEPROM_ADR_MIXERTABLE, sizeof(Mixer) - 1);
 
// check crc
if( crc != eeprom_read_byte((uint8_t*)(EEPROM_ADR_MIXERTABLE + sizeof(Mixer) - 1)) ) return 0;
 
// check revision
if(eeprom_read_byte((uint8_t*)(EEPROM_ADR_MIXERTABLE)) != EEMIXER_REVISION) return 0;
 
// read mixer table
eeprom_read_block((void *) &Mixer, (void*)(EEPROM_ADR_MIXERTABLE), sizeof(Mixer));
return 1;
}
 
/***************************************************/
/* Write Mixer Table to EEPROM */
/***************************************************/
uint8_t MixerTable_WriteToEEProm(void)
{
if(Mixer.Revision == EEMIXER_REVISION)
{
// update crc
Mixer.crc = RAM_Checksum((uint8_t*)(&Mixer), sizeof(Mixer) - 1);
 
// write to eeprom
eeprom_write_block((void *) &Mixer, (void*)(EEPROM_ADR_MIXERTABLE), sizeof(Mixer));
return 1;
}
else return 0;
}
 
/***************************************************/
/* Default Values for Mixer Table */
/***************************************************/
void MixerTable_Default(void) // Quadro
{
uint8_t i;
 
Mixer.Revision = EEMIXER_REVISION;
// clear mixer table
for(i = 0; i < 16; i++)
{
Mixer.Motor[i][MIX_GAS] = 0;
Mixer.Motor[i][MIX_NICK] = 0;
Mixer.Motor[i][MIX_ROLL] = 0;
Mixer.Motor[i][MIX_YAW] = 0;
}
// default = Quadro
Mixer.Motor[0][MIX_GAS] = 64; Mixer.Motor[0][MIX_NICK] = +64; Mixer.Motor[0][MIX_ROLL] = 0; Mixer.Motor[0][MIX_YAW] = +64;
Mixer.Motor[1][MIX_GAS] = 64; Mixer.Motor[1][MIX_NICK] = -64; Mixer.Motor[1][MIX_ROLL] = 0; Mixer.Motor[1][MIX_YAW] = +64;
Mixer.Motor[2][MIX_GAS] = 64; Mixer.Motor[2][MIX_NICK] = 0; Mixer.Motor[2][MIX_ROLL] = -64; Mixer.Motor[2][MIX_YAW] = -64;
Mixer.Motor[3][MIX_GAS] = 64; Mixer.Motor[3][MIX_NICK] = 0; Mixer.Motor[3][MIX_ROLL] = +64; Mixer.Motor[3][MIX_YAW] = -64;
memcpy(Mixer.Name, "Quadro\0", 7);
Mixer.crc = Mixer.crc = RAM_Checksum((uint8_t*)(&Mixer), sizeof(Mixer) - 1);
}
 
/***************************************************/
/* Get active parameter set */
/***************************************************/
uint8_t GetActiveParamSet(void)
{
uint8_t setnumber;
setnumber = eeprom_read_byte((uint8_t*)(EEPROM_ADR_PARAM_BEGIN + PID_ACTIVE_SET));
if(setnumber > 5)
{
setnumber = 3;
eeprom_write_byte((void*)(EEPROM_ADR_PARAM_BEGIN+PID_ACTIVE_SET), setnumber);
}
return(setnumber);
}
 
/***************************************************/
/* Set active parameter set */
/***************************************************/
void SetActiveParamSet(uint8_t setnumber)
{
if(setnumber > 5) setnumber = 5;
if(setnumber < 1) setnumber = 1;
eeprom_write_byte((uint8_t*)(EEPROM_ADR_PARAM_BEGIN + PID_ACTIVE_SET), setnumber);
}
 
/***************************************************/
/* Set default parameter set */
/***************************************************/
void SetDefaultParameter(uint8_t set, uint8_t restore_channels)
{
 
if(set > 5) set = 5;
else if(set < 1) set = 1;
 
switch(set)
{
case 1:
ParamSet_DefaultSet1(); // Fill ParamSet Structure to default parameter set 1 (Sport)
break;
case 2:
ParamSet_DefaultSet2(); // Kamera
break;
case 3:
ParamSet_DefaultSet3(); // Beginner
break;
default:
ParamSet_DefaultSet3(); // Beginner
break;
}
if(restore_channels)
{
uint8_t crc;
// 1st check for a valid channel backup in eeprom
crc = EEProm_Checksum(EEPROM_ADR_CHANNELS, sizeof(EE_Parameter.Kanalbelegung));
if(crc == eeprom_read_byte((uint8_t*)(EEPROM_ADR_CHANNELS + sizeof(EE_Parameter.Kanalbelegung))) )
{
eeprom_read_block((void *)EE_Parameter.Kanalbelegung, (void*)(EEPROM_ADR_CHANNELS), sizeof(EE_Parameter.Kanalbelegung));
}
else ParamSet_DefaultStickMapping();
}
else ParamSet_DefaultStickMapping();
ParamSet_WriteToEEProm(set);
}
 
/***************************************************/
/* Initialize EEPROM Parameter Sets */
/***************************************************/
void ParamSet_Init(void)
{
uint8_t channel_backup = 0, bad_params = 0, ee_default = 0,i;
 
 
if(EEPARAM_REVISION != GetParamByte(PID_EE_REVISION) )
{
ee_default = 1; // software update or forced by mktool
SetParamByte(PID_EE_REVISION, EEPARAM_REVISION);
}
 
 
// 1st check for a valid channel backup in eeprom
i = EEProm_Checksum(EEPROM_ADR_CHANNELS, sizeof(EE_Parameter.Kanalbelegung));
if(i == eeprom_read_byte((uint8_t*)(EEPROM_ADR_CHANNELS + sizeof(EE_Parameter.Kanalbelegung))) ) channel_backup = 1;
 
 
// parameter check
 
// check all 5 parameter settings
for (i = 1;i < 6; i++)
{
if(ee_default || !ParamSet_ReadFromEEProm(i)) // could not read paramset from eeprom
{
bad_params = 1;
printf("\n\rGenerating default Parameter Set %d",i);
switch(i)
{
case 1:
ParamSet_DefaultSet1(); // Fill ParamSet Structure to default parameter set 1 (Sport)
break;
case 2:
ParamSet_DefaultSet2(); // Kamera
break;
case 3:
ParamSet_DefaultSet3(); // Beginner
break;
default:
ParamSet_DefaultSet3(); // Kamera
break;
}
if(channel_backup) // if we have an channel mapping backup in eeprom
{ // restore it from eeprom
eeprom_read_block((void *)EE_Parameter.Kanalbelegung, (void*)(EEPROM_ADR_CHANNELS), sizeof(EE_Parameter.Kanalbelegung));
}
else
{ // use default mapping
ParamSet_DefaultStickMapping();
}
ParamSet_WriteToEEProm(i);
}
}
if(bad_params) // at least one of the parameter settings were invalid
{
// default-Setting is parameter set 3
SetActiveParamSet(3);
}
 
 
// read active parameter set to ParamSet stucture
i = GetActiveParamSet();
ParamSet_ReadFromEEProm(i);
printf("\n\rUsing Parameter Set %d", i);
 
// load mixer table
if(ee_default || !MixerTable_ReadFromEEProm() )
{
printf("\n\rGenerating default Mixer Table");
MixerTable_Default(); // Quadro
MixerTable_WriteToEEProm();
}
// determine motornumber
RequiredMotors = 0;
for(i = 0; i < 16; i++)
{
if(Mixer.Motor[i][MIX_GAS] > 0) RequiredMotors++;
}
 
printf("\n\rMixer-Config: '%s' (%u Motors)",Mixer.Name, RequiredMotors);
printf("\n\r==============================");
}
/branches/metro/v0.82a metro_Akku+/eeprom.d
0,0 → 1,3
eeprom.o eeprom.d : eeprom.c eeprom.h twimaster.h uart.h led.h main.h old_macros.h \
printf_P.h timer0.h analog.h menu.h rc.h fc.h gps.h spi.h spektrum.h \
capacity.h libfc.h debug.h
/branches/metro/v0.82a metro_Akku+/eeprom.h
0,0 → 1,241
#ifndef _EEPROM_H
#define _EEPROM_H
 
#include <inttypes.h>
#include "twimaster.h"
 
#define EEPARAM_REVISION 85 // is count up, if paramater stucture has changed (compatibility)
#define EEMIXER_REVISION 1 // is count up, if mixer stucture has changed (compatibility)
 
 
#define EEPROM_ADR_PARAM_BEGIN 0
#define PID_EE_REVISION 1 // byte
#define PID_ACTIVE_SET 2 // byte
#define PID_PRESSURE_OFFSET 3 // byte
 
#define PID_ACC_NICK 4 // word
#define PID_ACC_ROLL 6 // word
#define PID_ACC_TOP 8 // word
 
#define PID_FLIGHT_MINUTES_TOTAL 10 // word
#define PID_FLIGHT_MINUTES 14 // word
 
#define EEPROM_ADR_CHANNELS 80 // 80 - 93, 12 bytes + 1 byte crc
#define EEPROM_ADR_PARAMSET 100 // 100 - 650, 5 * 110 bytes
#define EEPROM_ADR_MIXERTABLE 1000 // 1000 - 1078, 78 bytes
#define EEPROM_ADR_BLCONFIG 1200 // 1200 - 1296, 12 * 8 bytes
 
#define MIX_GAS 0
#define MIX_NICK 1
#define MIX_ROLL 2
#define MIX_YAW 3
 
typedef struct
{
uint8_t Revision;
int8_t Name[12];
int8_t Motor[16][4];
uint8_t crc;
} __attribute__((packed)) MixerTable_t;
 
extern MixerTable_t Mixer;
extern uint8_t RequiredMotors;
 
#define CFG_HOEHENREGELUNG 0x01
#define CFG_HOEHEN_SCHALTER 0x02
#define CFG_HEADING_HOLD 0x04
#define CFG_KOMPASS_AKTIV 0x08
#define CFG_KOMPASS_FIX 0x10
#define CFG_GPS_AKTIV 0x20
#define CFG_ACHSENKOPPLUNG_AKTIV 0x40
#define CFG_DREHRATEN_BEGRENZER 0x80
 
#define CFG_LOOP_OBEN 0x01
#define CFG_LOOP_UNTEN 0x02
#define CFG_LOOP_LINKS 0x04
#define CFG_LOOP_RECHTS 0x08
#define CFG_MOTOR_BLINK 0x10
#define CFG_MOTOR_OFF_LED1 0x20
#define CFG_MOTOR_OFF_LED2 0x40
#define CFG_RES4 0x80
 
#define CFG2_HEIGHT_LIMIT 0x01
#define CFG2_VARIO_BEEP 0x02
#define CFG_SENSITIVE_RC 0x04
 
// bit mask for ParamSet.Config0
#define CFG0_AIRPRESS_SENSOR 0x01
#define CFG0_HEIGHT_SWITCH 0x02
#define CFG0_HEADING_HOLD 0x04
#define CFG0_COMPASS_ACTIVE 0x08
#define CFG0_COMPASS_FIX 0x10
#define CFG0_GPS_ACTIVE 0x20
#define CFG0_AXIS_COUPLING_ACTIVE 0x40
#define CFG0_ROTARY_RATE_LIMITER 0x80
 
// defines for the receiver selection
#define RECEIVER_PPM 0
#define RECEIVER_SPEKTRUM 1
#define RECEIVER_SPEKTRUM_HI_RES 2
#define RECEIVER_SPEKTRUM_LOW_RES 3
#define RECEIVER_JETI 4
#define RECEIVER_ACT_DSL 5
#define RECEIVER_UNKNOWN 0xFF
 
// defines for lookup ParamSet.ChannelAssignment
#define K_NICK 0
#define K_ROLL 1
#define K_GAS 2
#define K_GIER 3
#define K_POTI1 4
#define K_POTI2 5
#define K_POTI3 6
#define K_POTI4 7
#define K_POTI5 8
#define K_POTI6 9
#define K_POTI7 10
#define K_POTI8 11
 
 
// values above 247 representing poti1 to poti8
// poti1 = 255
// poti2 = 254
// poti3 = 253
// poti4 = 252
// poti5 = 251
// poti6 = 250
// poti7 = 249
// poti8 = 248
 
 
typedef struct
{
unsigned char Revision;
unsigned char Kanalbelegung[12]; // GAS[0], GIER[1],NICK[2], ROLL[3], POTI1, POTI2, POTI3
unsigned char GlobalConfig; // 0x01=Höhenregler aktiv,0x02=Kompass aktiv, 0x04=GPS aktiv, 0x08=Heading Hold aktiv
unsigned char Hoehe_MinGas; // Wert : 0-100
unsigned char Luftdruck_D; // Wert : 0-250
unsigned char MaxHoehe; // Wert : 0-32
unsigned char Hoehe_P; // Wert : 0-32
unsigned char Hoehe_Verstaerkung; // Wert : 0-50
unsigned char Hoehe_ACC_Wirkung; // Wert : 0-250
unsigned char Hoehe_HoverBand; // Wert : 0-250
unsigned char Hoehe_GPS_Z; // Wert : 0-250
unsigned char Hoehe_StickNeutralPoint;// Wert : 0-250
unsigned char Stick_P; // Wert : 1-6
unsigned char Stick_D; // Wert : 0-64
unsigned char Gier_P; // Wert : 1-20
unsigned char Gas_Min; // Wert : 0-32
unsigned char Gas_Max; // Wert : 33-250
unsigned char GyroAccFaktor; // Wert : 1-64
unsigned char KompassWirkung; // Wert : 0-32
unsigned char Gyro_P; // Wert : 10-250
unsigned char Gyro_I; // Wert : 0-250
unsigned char Gyro_D; // Wert : 0-250
unsigned char Gyro_Gier_P; // Wert : 10-250
unsigned char Gyro_Gier_I; // Wert : 0-250
unsigned char Gyro_Stability; // Wert : 0-16
unsigned char UnterspannungsWarnung; // Wert : 0-250
unsigned char NotGas; // Wert : 0-250 //Gaswert bei Empängsverlust
unsigned char NotGasZeit; // Wert : 0-250 // Zeitbis auf NotGas geschaltet wird, wg. Rx-Problemen
unsigned char Receiver; // 0= Summensignal, 1= Spektrum, 2 =Jeti, 3=ACT DSL, 4=ACT S3D
unsigned char I_Faktor; // Wert : 0-250
unsigned char UserParam1; // Wert : 0-250
unsigned char UserParam2; // Wert : 0-250
unsigned char UserParam3; // Wert : 0-250
unsigned char UserParam4; // Wert : 0-250
unsigned char ServoNickControl; // Wert : 0-250 // Stellung des Servos
unsigned char ServoNickComp; // Wert : 0-250 // Einfluss Gyro/Servo
unsigned char ServoNickMin; // Wert : 0-250 // Anschlag
unsigned char ServoNickMax; // Wert : 0-250 // Anschlag
//--- Seit V0.75
unsigned char ServoRollControl; // Wert : 0-250 // Stellung des Servos
unsigned char ServoRollComp; // Wert : 0-250
unsigned char ServoRollMin; // Wert : 0-250
unsigned char ServoRollMax; // Wert : 0-250
//---
unsigned char ServoNickRefresh; // Speed of the Servo
unsigned char ServoManualControlSpeed;//
unsigned char CamOrientation; //
unsigned char Servo3; // Value or mapping of the Servo Output
unsigned char Servo4; // Value or mapping of the Servo Output
unsigned char Servo5; // Value or mapping of the Servo Output
unsigned char LoopGasLimit; // Wert: 0-250 max. Gas während Looping
unsigned char LoopThreshold; // Wert: 0-250 Schwelle für Stickausschlag
unsigned char LoopHysterese; // Wert: 0-250 Hysterese für Stickausschlag
unsigned char AchsKopplung1; // Wert: 0-250 Faktor, mit dem Gier die Achsen Roll und Nick koppelt (NickRollMitkopplung)
unsigned char AchsKopplung2; // Wert: 0-250 Faktor, mit dem Nick und Roll verkoppelt werden
unsigned char CouplingYawCorrection; // Wert: 0-250 Faktor, mit dem Nick und Roll verkoppelt werden
unsigned char WinkelUmschlagNick; // Wert: 0-250 180°-Punkt
unsigned char WinkelUmschlagRoll; // Wert: 0-250 180°-Punkt
unsigned char GyroAccAbgleich; // 1/k (Koppel_ACC_Wirkung)
unsigned char Driftkomp;
unsigned char DynamicStability;
unsigned char UserParam5; // Wert : 0-250
unsigned char UserParam6; // Wert : 0-250
unsigned char UserParam7; // Wert : 0-250
unsigned char UserParam8; // Wert : 0-250
//---Output ---------------------------------------------
unsigned char J16Bitmask; // for the J16 Output
unsigned char J16Timing; // for the J16 Output
unsigned char J17Bitmask; // for the J17 Output
unsigned char J17Timing; // for the J17 Output
// seit version V0.75c
unsigned char WARN_J16_Bitmask; // for the J16 Output
unsigned char WARN_J17_Bitmask; // for the J17 Output
//---NaviCtrl---------------------------------------------
unsigned char NaviGpsModeControl; // Parameters for the Naviboard
unsigned char NaviGpsGain;
unsigned char NaviGpsP;
unsigned char NaviGpsI;
unsigned char NaviGpsD;
unsigned char NaviGpsPLimit;
unsigned char NaviGpsILimit;
unsigned char NaviGpsDLimit;
unsigned char NaviGpsACC;
unsigned char NaviGpsMinSat;
unsigned char NaviStickThreshold;
unsigned char NaviWindCorrection;
unsigned char NaviSpeedCompensation;
unsigned char NaviOperatingRadius;
unsigned char NaviAngleLimitation;
unsigned char NaviPH_LoginTime;
//---Ext.Ctrl---------------------------------------------
unsigned char ExternalControl; // for serial Control
//---CareFree---------------------------------------------
unsigned char OrientationAngle; // Where is the front-direction?
unsigned char OrientationModeControl; // switch for CareFree
unsigned char MotorSafetySwitch;
//------------------------------------------------
unsigned char BitConfig; // (war Loop-Cfg) Bitcodiert: 0x01=oben, 0x02=unten, 0x04=links, 0x08=rechts / wird getrennt behandelt
unsigned char ServoCompInvert; // // 0x01 = Nick, 0x02 = Roll 0 oder 1 // WICHTIG!!! am Ende lassen
unsigned char ExtraConfig; // bitcodiert
char Name[12];
unsigned char crc; // must be the last byte!
} paramset_t;
 
#define PARAMSET_STRUCT_LEN sizeof(paramset_t)
 
extern paramset_t EE_Parameter;
 
extern uint8_t RAM_Checksum(uint8_t* pBuffer, uint16_t len);
 
extern void ParamSet_Init(void);
extern void SetDefaultParameter(uint8_t set, uint8_t restore_channels);
 
extern uint8_t ParamSet_ReadFromEEProm(uint8_t setnumber);
extern uint8_t ParamSet_WriteToEEProm(uint8_t setnumber);
 
extern uint8_t GetActiveParamSet(void);
extern void SetActiveParamSet(uint8_t setnumber);
 
extern uint8_t MixerTable_ReadFromEEProm(void);
extern uint8_t MixerTable_WriteToEEProm(void);
 
extern uint8_t GetParamByte(uint16_t param_id);
extern void SetParamByte(uint16_t param_id, uint8_t value);
extern uint16_t GetParamWord(uint16_t param_id);
extern void SetParamWord(uint16_t param_id, uint16_t value);
 
 
#endif //_EEPROM_H
/branches/metro/v0.82a metro_Akku+/eeprom.lst
0,0 → 1,1178
1 .file "eeprom.c"
2 .arch atmega644p
3 __SREG__ = 0x3f
4 __SP_H__ = 0x3e
5 __SP_L__ = 0x3d
6 __tmp_reg__ = 0
7 __zero_reg__ = 1
8 .global __do_copy_data
9 .global __do_clear_bss
10 .text
11 .global RAM_Checksum
13 RAM_Checksum:
14 /* prologue: frame size=0 */
15 /* prologue end (size=0) */
16 0000 4AEA ldi r20,lo8(-86)
17 0002 20E0 ldi r18,lo8(0)
18 0004 30E0 ldi r19,hi8(0)
19 0006 2617 cp r18,r22
20 0008 3707 cpc r19,r23
21 000a 40F4 brsh .L7
22 000c FC01 movw r30,r24
23 .L5:
24 000e 8191 ld r24,Z+
25 0010 480F add r20,r24
26 0012 2F5F subi r18,lo8(-(1))
27 0014 3F4F sbci r19,hi8(-(1))
28 0016 2617 cp r18,r22
29 0018 3707 cpc r19,r23
30 001a C8F3 brlo .L5
31 .L7:
32 001c 842F mov r24,r20
33 001e 9927 clr r25
34 /* epilogue: frame size=0 */
35 0020 0895 ret
36 /* epilogue end (size=1) */
37 /* function RAM_Checksum size 17 (16) */
39 .global EEProm_Checksum
41 EEProm_Checksum:
42 /* prologue: frame size=0 */
43 /* prologue end (size=0) */
44 0022 AC01 movw r20,r24
45 0024 9AEA ldi r25,lo8(-86)
46 0026 20E0 ldi r18,lo8(0)
47 0028 30E0 ldi r19,hi8(0)
48 .L16:
49 002a 2617 cp r18,r22
50 002c 3707 cpc r19,r23
51 002e 50F4 brsh .L15
52 0030 DA01 movw r26,r20
53 0032 A20F add r26,r18
54 0034 B31F adc r27,r19
55 /* #APP */
56 0036 0E94 0000 call __eeprom_read_byte_1F2021
57 003a 802D mov r24,__tmp_reg__
58 /* #NOAPP */
59 003c 980F add r25,r24
60 003e 2F5F subi r18,lo8(-(1))
61 0040 3F4F sbci r19,hi8(-(1))
62 0042 F3CF rjmp .L16
63 .L15:
64 0044 892F mov r24,r25
65 0046 9927 clr r25
66 /* epilogue: frame size=0 */
67 0048 0895 ret
68 /* epilogue end (size=1) */
69 /* function EEProm_Checksum size 21 (20) */
71 .global ParamSet_DefaultStickMapping
73 ParamSet_DefaultStickMapping:
74 /* prologue: frame size=0 */
75 /* prologue end (size=0) */
76 004a 81E0 ldi r24,lo8(1)
77 004c 8093 0000 sts EE_Parameter+3,r24
78 0050 82E0 ldi r24,lo8(2)
79 0052 8093 0000 sts EE_Parameter+2,r24
80 0056 83E0 ldi r24,lo8(3)
81 0058 8093 0000 sts EE_Parameter+1,r24
82 005c 84E0 ldi r24,lo8(4)
83 005e 8093 0000 sts EE_Parameter+4,r24
84 0062 85E0 ldi r24,lo8(5)
85 0064 8093 0000 sts EE_Parameter+5,r24
86 0068 86E0 ldi r24,lo8(6)
87 006a 8093 0000 sts EE_Parameter+6,r24
88 006e 87E0 ldi r24,lo8(7)
89 0070 8093 0000 sts EE_Parameter+7,r24
90 0074 88E0 ldi r24,lo8(8)
91 0076 8093 0000 sts EE_Parameter+8,r24
92 007a 89E0 ldi r24,lo8(9)
93 007c 8093 0000 sts EE_Parameter+9,r24
94 0080 8AE0 ldi r24,lo8(10)
95 0082 8093 0000 sts EE_Parameter+10,r24
96 0086 8BE0 ldi r24,lo8(11)
97 0088 8093 0000 sts EE_Parameter+11,r24
98 008c 8CE0 ldi r24,lo8(12)
99 008e 8093 0000 sts EE_Parameter+12,r24
100 /* epilogue: frame size=0 */
101 0092 0895 ret
102 /* epilogue end (size=1) */
103 /* function ParamSet_DefaultStickMapping size 37 (36) */
105 .global CommonDefaults
107 CommonDefaults:
108 /* prologue: frame size=0 */
109 /* prologue end (size=0) */
110 0094 95E5 ldi r25,lo8(85)
111 0096 9093 0000 sts EE_Parameter,r25
112 009a 8091 0000 lds r24,PlatinenVersion
113 009e 8431 cpi r24,lo8(20)
114 00a0 70F0 brlo .L19
115 00a2 8AE0 ldi r24,lo8(10)
116 00a4 8093 0000 sts EE_Parameter+32,r24
117 00a8 1092 0000 sts EE_Parameter+68,__zero_reg__
118 00ac 8BE1 ldi r24,lo8(27)
119 00ae 8093 0000 sts EE_Parameter+28,r24
120 00b2 8EE4 ldi r24,lo8(78)
121 00b4 8093 0000 sts EE_Parameter+65,r24
122 00b8 8093 0000 sts EE_Parameter+66,r24
123 00bc 0DC0 rjmp .L20
124 .L19:
125 00be 83E0 ldi r24,lo8(3)
126 00c0 8093 0000 sts EE_Parameter+32,r24
127 00c4 80E2 ldi r24,lo8(32)
128 00c6 8093 0000 sts EE_Parameter+68,r24
129 00ca 8EE1 ldi r24,lo8(30)
130 00cc 8093 0000 sts EE_Parameter+28,r24
131 00d0 9093 0000 sts EE_Parameter+65,r25
132 00d4 9093 0000 sts EE_Parameter+66,r25
133 .L20:
134 00d8 8AE6 ldi r24,lo8(106)
135 00da 8093 0000 sts EE_Parameter+13,r24
136 00de 83E0 ldi r24,lo8(3)
137 00e0 8093 0000 sts EE_Parameter+102,r24
138 00e4 81E0 ldi r24,lo8(1)
139 00e6 8093 0000 sts EE_Parameter+39,r24
140 00ea 1092 0000 sts EE_Parameter+99,__zero_reg__
141 00ee 1092 0000 sts EE_Parameter+96,__zero_reg__
142 00f2 68E0 ldi r22,lo8(8)
143 00f4 6093 0000 sts EE_Parameter+26,r22
144 00f8 86EE ldi r24,lo8(-26)
145 00fa 8093 0000 sts EE_Parameter+27,r24
146 00fe 80E8 ldi r24,lo8(-128)
147 0100 8093 0000 sts EE_Parameter+29,r24
148 0104 5EE1 ldi r21,lo8(30)
149 0106 5093 0000 sts EE_Parameter+14,r21
150 010a 8FEF ldi r24,lo8(-1)
151 010c 8093 0000 sts EE_Parameter+16,r24
152 0110 9FE0 ldi r25,lo8(15)
153 0112 9093 0000 sts EE_Parameter+17,r25
154 0116 5093 0000 sts EE_Parameter+15,r21
155 011a 1092 0000 sts EE_Parameter+19,__zero_reg__
156 011e 6093 0000 sts EE_Parameter+20,r22
157 0122 80E4 ldi r24,lo8(64)
158 0124 8093 0000 sts EE_Parameter+21,r24
159 0128 1092 0000 sts EE_Parameter+22,__zero_reg__
160 012c 9093 0000 sts EE_Parameter+18,r25
161 0130 1092 0000 sts EE_Parameter+41,__zero_reg__
162 0134 1092 0000 sts EE_Parameter+42,__zero_reg__
163 0138 1092 0000 sts EE_Parameter+43,__zero_reg__
164 013c 1092 0000 sts EE_Parameter+44,__zero_reg__
165 0140 1092 0000 sts EE_Parameter+70,__zero_reg__
166 0144 1092 0000 sts EE_Parameter+71,__zero_reg__
167 0148 1092 0000 sts EE_Parameter+72,__zero_reg__
168 014c 1092 0000 sts EE_Parameter+73,__zero_reg__
169 0150 38E7 ldi r19,lo8(120)
170 0152 3093 0000 sts EE_Parameter+45,r19
171 0156 48E2 ldi r20,lo8(40)
172 0158 4093 0000 sts EE_Parameter+46,r20
173 015c 72E0 ldi r23,lo8(2)
174 015e 7093 0000 sts EE_Parameter+101,r23
175 0162 9093 0000 sts EE_Parameter+47,r25
176 0166 27EF ldi r18,lo8(-9)
177 0168 2093 0000 sts EE_Parameter+48,r18
178 016c 85E0 ldi r24,lo8(5)
179 016e 8093 0000 sts EE_Parameter+53,r24
180 0172 8DE7 ldi r24,lo8(125)
181 0174 8093 0000 sts EE_Parameter+56,r24
182 0178 8093 0000 sts EE_Parameter+57,r24
183 017c 8093 0000 sts EE_Parameter+58,r24
184 0180 3093 0000 sts EE_Parameter+49,r19
185 0184 9AE5 ldi r25,lo8(90)
186 0186 9093 0000 sts EE_Parameter+50,r25
187 018a 1092 0000 sts EE_Parameter+51,__zero_reg__
188 018e 2093 0000 sts EE_Parameter+52,r18
189 0192 4093 0000 sts EE_Parameter+54,r20
190 0196 1092 0000 sts EE_Parameter+55,__zero_reg__
191 019a 8FE5 ldi r24,lo8(95)
192 019c 8093 0000 sts EE_Parameter+74,r24
193 01a0 83EF ldi r24,lo8(-13)
194 01a2 8093 0000 sts EE_Parameter+76,r24
195 01a6 8AEA ldi r24,lo8(-86)
196 01a8 8093 0000 sts EE_Parameter+78,r24
197 01ac 8093 0000 sts EE_Parameter+79,r24
198 01b0 84E1 ldi r24,lo8(20)
199 01b2 8093 0000 sts EE_Parameter+75,r24
200 01b6 8093 0000 sts EE_Parameter+77,r24
201 01ba 82E3 ldi r24,lo8(50)
202 01bc 8093 0000 sts EE_Parameter+59,r24
203 01c0 9093 0000 sts EE_Parameter+60,r25
204 01c4 8093 0000 sts EE_Parameter+61,r24
205 01c8 1092 0000 sts EE_Parameter+100,__zero_reg__
206 01cc 8EEF ldi r24,lo8(-2)
207 01ce 8093 0000 sts EE_Parameter+80,r24
208 01d2 24E6 ldi r18,lo8(100)
209 01d4 2093 0000 sts EE_Parameter+81,r18
210 01d8 9093 0000 sts EE_Parameter+82,r25
211 01dc 9093 0000 sts EE_Parameter+83,r25
212 01e0 9093 0000 sts EE_Parameter+84,r25
213 01e4 8BE4 ldi r24,lo8(75)
214 01e6 8093 0000 sts EE_Parameter+85,r24
215 01ea 8093 0000 sts EE_Parameter+86,r24
216 01ee 8093 0000 sts EE_Parameter+87,r24
217 01f2 1092 0000 sts EE_Parameter+88,__zero_reg__
218 01f6 86E0 ldi r24,lo8(6)
219 01f8 8093 0000 sts EE_Parameter+89,r24
220 01fc 6093 0000 sts EE_Parameter+90,r22
221 0200 9093 0000 sts EE_Parameter+91,r25
222 0204 5093 0000 sts EE_Parameter+92,r21
223 0208 2093 0000 sts EE_Parameter+93,r18
224 020c 2093 0000 sts EE_Parameter+94,r18
225 0210 7093 0000 sts EE_Parameter+95,r23
226 0214 1092 0000 sts EE_Parameter+97,__zero_reg__
227 0218 1092 0000 sts EE_Parameter+98,__zero_reg__
228 021c 81E2 ldi r24,lo8(33)
229 021e 8093 0000 sts EE_Parameter+36,r24
230 0222 8DE2 ldi r24,lo8(45)
231 0224 8093 0000 sts EE_Parameter+37,r24
232 0228 9093 0000 sts EE_Parameter+38,r25
233 /* epilogue: frame size=0 */
234 022c 0895 ret
235 /* epilogue end (size=1) */
236 /* function CommonDefaults size 205 (204) */
238 .data
239 .LC0:
240 0000 5370 6F72 .string "Sport"
240 7400
241 0006 00 .string ""
242 .text
243 .global ParamSet_DefaultSet1
245 ParamSet_DefaultSet1:
246 /* prologue: frame size=0 */
247 022e CF93 push r28
248 0230 DF93 push r29
249 /* prologue end (size=2) */
250 0232 0E94 0000 call CommonDefaults
251 0236 8EE0 ldi r24,lo8(14)
252 0238 8093 0000 sts EE_Parameter+23,r24
253 023c 20E1 ldi r18,lo8(16)
254 023e 2093 0000 sts EE_Parameter+24,r18
255 0242 3CE0 ldi r19,lo8(12)
256 0244 3093 0000 sts EE_Parameter+25,r19
257 0248 90E5 ldi r25,lo8(80)
258 024a 9093 0000 sts EE_Parameter+30,r25
259 024e 86E9 ldi r24,lo8(-106)
260 0250 8093 0000 sts EE_Parameter+31,r24
261 0254 9093 0000 sts EE_Parameter+33,r25
262 0258 8093 0000 sts EE_Parameter+34,r24
263 025c 86E0 ldi r24,lo8(6)
264 025e 8093 0000 sts EE_Parameter+35,r24
265 0262 80E2 ldi r24,lo8(32)
266 0264 8093 0000 sts EE_Parameter+40,r24
267 0268 8AE5 ldi r24,lo8(90)
268 026a 8093 0000 sts EE_Parameter+62,r24
269 026e 9093 0000 sts EE_Parameter+63,r25
270 0272 81E0 ldi r24,lo8(1)
271 0274 8093 0000 sts EE_Parameter+64,r24
272 0278 2093 0000 sts EE_Parameter+67,r18
273 027c 84E6 ldi r24,lo8(100)
274 027e 8093 0000 sts EE_Parameter+69,r24
275 0282 A0E0 ldi r26,lo8(EE_Parameter+103)
276 0284 B0E0 ldi r27,hi8(EE_Parameter+103)
277 0286 E0E0 ldi r30,lo8(.LC0)
278 0288 F0E0 ldi r31,hi8(.LC0)
279 028a ED01 movw r28,r26
280 028c 0190 ld __tmp_reg__,Z+
281 028e 0992 st Y+,__tmp_reg__
282 0290 3A95 dec r19
283 0292 E1F7 brne .-8
284 0294 63E7 ldi r22,lo8(115)
285 0296 70E0 ldi r23,hi8(115)
286 0298 CD01 movw r24,r26
287 029a 8756 subi r24,lo8(-(-103))
288 029c 9040 sbci r25,hi8(-(-103))
289 029e 0E94 0000 call RAM_Checksum
290 02a2 8093 0000 sts EE_Parameter+115,r24
291 /* epilogue: frame size=0 */
292 02a6 DF91 pop r29
293 02a8 CF91 pop r28
294 02aa 0895 ret
295 /* epilogue end (size=3) */
296 /* function ParamSet_DefaultSet1 size 63 (58) */
298 .data
299 .LC1:
300 0007 4E6F 726D .string "Normal"
300 616C 00
301 000e 00 .string ""
302 .text
303 .global ParamSet_DefaultSet2
305 ParamSet_DefaultSet2:
306 /* prologue: frame size=0 */
307 02ac CF93 push r28
308 02ae DF93 push r29
309 /* prologue end (size=2) */
310 02b0 0E94 0000 call CommonDefaults
311 02b4 8AE0 ldi r24,lo8(10)
312 02b6 8093 0000 sts EE_Parameter+23,r24
313 02ba 80E1 ldi r24,lo8(16)
314 02bc 8093 0000 sts EE_Parameter+24,r24
315 02c0 26E0 ldi r18,lo8(6)
316 02c2 2093 0000 sts EE_Parameter+25,r18
317 02c6 9AE5 ldi r25,lo8(90)
318 02c8 9093 0000 sts EE_Parameter+30,r25
319 02cc 88E7 ldi r24,lo8(120)
320 02ce 8093 0000 sts EE_Parameter+31,r24
321 02d2 9093 0000 sts EE_Parameter+33,r25
322 02d6 8093 0000 sts EE_Parameter+34,r24
323 02da 2093 0000 sts EE_Parameter+35,r18
324 02de 20E2 ldi r18,lo8(32)
325 02e0 2093 0000 sts EE_Parameter+40,r18
326 02e4 9093 0000 sts EE_Parameter+62,r25
327 02e8 80E5 ldi r24,lo8(80)
328 02ea 8093 0000 sts EE_Parameter+63,r24
329 02ee 8CE3 ldi r24,lo8(60)
330 02f0 8093 0000 sts EE_Parameter+64,r24
331 02f4 2093 0000 sts EE_Parameter+67,r18
332 02f8 8BE4 ldi r24,lo8(75)
333 02fa 8093 0000 sts EE_Parameter+69,r24
334 02fe A0E0 ldi r26,lo8(EE_Parameter+103)
335 0300 B0E0 ldi r27,hi8(EE_Parameter+103)
336 0302 8CE0 ldi r24,lo8(12)
337 0304 E0E0 ldi r30,lo8(.LC1)
338 0306 F0E0 ldi r31,hi8(.LC1)
339 0308 ED01 movw r28,r26
340 030a 0190 ld __tmp_reg__,Z+
341 030c 0992 st Y+,__tmp_reg__
342 030e 8A95 dec r24
343 0310 E1F7 brne .-8
344 0312 63E7 ldi r22,lo8(115)
345 0314 70E0 ldi r23,hi8(115)
346 0316 CD01 movw r24,r26
347 0318 8756 subi r24,lo8(-(-103))
348 031a 9040 sbci r25,hi8(-(-103))
349 031c 0E94 0000 call RAM_Checksum
350 0320 8093 0000 sts EE_Parameter+115,r24
351 /* epilogue: frame size=0 */
352 0324 DF91 pop r29
353 0326 CF91 pop r28
354 0328 0895 ret
355 /* epilogue end (size=3) */
356 /* function ParamSet_DefaultSet2 size 63 (58) */
358 .data
359 .LC2:
360 000f 4265 6769 .string "Beginner"
360 6E6E 6572
360 00
361 0018 00 .string ""
362 .text
363 .global ParamSet_DefaultSet3
365 ParamSet_DefaultSet3:
366 /* prologue: frame size=0 */
367 032a CF93 push r28
368 032c DF93 push r29
369 /* prologue end (size=2) */
370 032e 0E94 0000 call CommonDefaults
371 0332 88E0 ldi r24,lo8(8)
372 0334 8093 0000 sts EE_Parameter+23,r24
373 0338 30E1 ldi r19,lo8(16)
374 033a 3093 0000 sts EE_Parameter+24,r19
375 033e 26E0 ldi r18,lo8(6)
376 0340 2093 0000 sts EE_Parameter+25,r18
377 0344 94E6 ldi r25,lo8(100)
378 0346 9093 0000 sts EE_Parameter+30,r25
379 034a 88E7 ldi r24,lo8(120)
380 034c 8093 0000 sts EE_Parameter+31,r24
381 0350 9093 0000 sts EE_Parameter+33,r25
382 0354 8093 0000 sts EE_Parameter+34,r24
383 0358 2093 0000 sts EE_Parameter+35,r18
384 035c 3093 0000 sts EE_Parameter+40,r19
385 0360 8AE5 ldi r24,lo8(90)
386 0362 8093 0000 sts EE_Parameter+62,r24
387 0366 80E5 ldi r24,lo8(80)
388 0368 8093 0000 sts EE_Parameter+63,r24
389 036c 96E4 ldi r25,lo8(70)
390 036e 9093 0000 sts EE_Parameter+64,r25
391 0372 80E2 ldi r24,lo8(32)
392 0374 8093 0000 sts EE_Parameter+67,r24
393 0378 9093 0000 sts EE_Parameter+69,r25
394 037c A0E0 ldi r26,lo8(EE_Parameter+103)
395 037e B0E0 ldi r27,hi8(EE_Parameter+103)
396 0380 8CE0 ldi r24,lo8(12)
397 0382 E0E0 ldi r30,lo8(.LC2)
398 0384 F0E0 ldi r31,hi8(.LC2)
399 0386 ED01 movw r28,r26
400 0388 0190 ld __tmp_reg__,Z+
401 038a 0992 st Y+,__tmp_reg__
402 038c 8A95 dec r24
403 038e E1F7 brne .-8
404 0390 63E7 ldi r22,lo8(115)
405 0392 70E0 ldi r23,hi8(115)
406 0394 CD01 movw r24,r26
407 0396 8756 subi r24,lo8(-(-103))
408 0398 9040 sbci r25,hi8(-(-103))
409 039a 0E94 0000 call RAM_Checksum
410 039e 8093 0000 sts EE_Parameter+115,r24
411 /* epilogue: frame size=0 */
412 03a2 DF91 pop r29
413 03a4 CF91 pop r28
414 03a6 0895 ret
415 /* epilogue end (size=3) */
416 /* function ParamSet_DefaultSet3 size 63 (58) */
418 .global GetParamByte
420 GetParamByte:
421 /* prologue: frame size=0 */
422 /* prologue end (size=0) */
423 03a8 DC01 movw r26,r24
424 /* #APP */
425 03aa 0E94 0000 call __eeprom_read_byte_1F2021
426 03ae 802D mov r24,__tmp_reg__
427 /* #NOAPP */
428 03b0 9927 clr r25
429 /* epilogue: frame size=0 */
430 03b2 0895 ret
431 /* epilogue end (size=1) */
432 /* function GetParamByte size 7 (6) */
434 .global SetParamByte
436 SetParamByte:
437 /* prologue: frame size=0 */
438 /* prologue end (size=0) */
439 03b4 DC01 movw r26,r24
440 /* #APP */
441 03b6 062E mov __tmp_reg__,r22
442 03b8 0E94 0000 call __eeprom_write_byte_1F2021
443 /* #NOAPP */
444 /* epilogue: frame size=0 */
445 03bc 0895 ret
446 /* epilogue end (size=1) */
447 /* function SetParamByte size 6 (5) */
449 .global GetParamWord
451 GetParamWord:
452 /* prologue: frame size=0 */
453 /* prologue end (size=0) */
454 03be DC01 movw r26,r24
455 /* #APP */
456 03c0 0E94 0000 call __eeprom_read_word_1F2021
457
458 /* #NOAPP */
459 03c4 CF01 movw r24,r30
460 /* epilogue: frame size=0 */
461 03c6 0895 ret
462 /* epilogue end (size=1) */
463 /* function GetParamWord size 7 (6) */
465 .global SetParamWord
467 SetParamWord:
468 /* prologue: frame size=0 */
469 /* prologue end (size=0) */
470 03c8 DC01 movw r26,r24
471 /* #APP */
472 03ca 0B01 movw __tmp_reg__,r22
473 03cc 0E94 0000 call __eeprom_write_word_1F2021
474
475 /* #NOAPP */
476 /* epilogue: frame size=0 */
477 03d0 0895 ret
478 /* epilogue end (size=1) */
479 /* function SetParamWord size 8 (7) */
481 .global ParamSet_ReadFromEEProm
483 ParamSet_ReadFromEEProm:
484 /* prologue: frame size=0 */
485 03d2 FF92 push r15
486 03d4 0F93 push r16
487 03d6 1F93 push r17
488 03d8 CF93 push r28
489 03da DF93 push r29
490 /* prologue end (size=5) */
491 03dc 982F mov r25,r24
492 03de 8150 subi r24,lo8(-(-1))
493 03e0 8530 cpi r24,lo8(5)
494 03e2 08F0 brlo .L33
495 03e4 93E0 ldi r25,lo8(3)
496 .L33:
497 03e6 84E7 ldi r24,lo8(116)
498 03e8 F82E mov r15,r24
499 03ea 9F9D mul r25,r15
500 03ec 8001 movw r16,r0
501 03ee 1124 clr r1
502 03f0 E801 movw r28,r16
503 03f2 6097 sbiw r28,16
504 03f4 63E7 ldi r22,lo8(115)
505 03f6 70E0 ldi r23,hi8(115)
506 03f8 CE01 movw r24,r28
507 03fa 0E94 0000 call EEProm_Checksum
508 03fe 982F mov r25,r24
509 0400 D801 movw r26,r16
510 0402 AD59 subi r26,lo8(-(99))
511 0404 BF4F sbci r27,hi8(-(99))
512 /* #APP */
513 0406 0E94 0000 call __eeprom_read_byte_1F2021
514 040a 802D mov r24,__tmp_reg__
515 /* #NOAPP */
516 040c 8917 cp r24,r25
517 040e 31F4 brne .L45
518 0410 DE01 movw r26,r28
519 /* #APP */
520 0412 0E94 0000 call __eeprom_read_byte_1F2021
521 0416 802D mov r24,__tmp_reg__
522 /* #NOAPP */
523 0418 8535 cpi r24,lo8(85)
524 041a 19F0 breq .L36
525 .L45:
526 041c 80E0 ldi r24,lo8(0)
527 041e 90E0 ldi r25,hi8(0)
528 0420 0AC0 rjmp .L32
529 .L36:
530 0422 E0E0 ldi r30,lo8(EE_Parameter)
531 0424 F0E0 ldi r31,hi8(EE_Parameter)
532 0426 DE01 movw r26,r28
533 /* #APP */
534 0428 1F2C mov __zero_reg__,r15
535 042a 0E94 0000 call __eeprom_read_block_1F2021
536 /* #NOAPP */
537 042e 0E94 0000 call LED_Init
538 0432 81E0 ldi r24,lo8(1)
539 0434 90E0 ldi r25,hi8(1)
540 .L32:
541 /* epilogue: frame size=0 */
542 0436 E5E0 ldi r30,5
543 0438 CDB7 in r28,__SP_L__
544 043a DEB7 in r29,__SP_H__
545 043c 0C94 0000 jmp __epilogue_restores__+26
546 /* epilogue end (size=5) */
547 /* function ParamSet_ReadFromEEProm size 58 (48) */
549 .global SetActiveParamSet
551 SetActiveParamSet:
552 /* prologue: frame size=0 */
553 /* prologue end (size=0) */
554 0440 8630 cpi r24,lo8(6)
555 0442 10F0 brlo .L47
556 0444 85E0 ldi r24,lo8(5)
557 0446 03C0 rjmp .L48
558 .L47:
559 0448 8823 tst r24
560 044a 09F4 brne .L48
561 044c 81E0 ldi r24,lo8(1)
562 .L48:
563 044e A2E0 ldi r26,lo8(2)
564 0450 B0E0 ldi r27,hi8(2)
565 /* #APP */
566 0452 082E mov __tmp_reg__,r24
567 0454 0E94 0000 call __eeprom_write_byte_1F2021
568 /* #NOAPP */
569 /* epilogue: frame size=0 */
570 0458 0895 ret
571 /* epilogue end (size=1) */
572 /* function SetActiveParamSet size 14 (13) */
574 .global ParamSet_WriteToEEProm
576 ParamSet_WriteToEEProm:
577 /* prologue: frame size=0 */
578 045a 1F93 push r17
579 045c CF93 push r28
580 045e DF93 push r29
581 /* prologue end (size=3) */
582 0460 182F mov r17,r24
583 0462 C0E0 ldi r28,lo8(EE_Parameter)
584 0464 D0E0 ldi r29,hi8(EE_Parameter)
585 0466 8091 0000 lds r24,EE_Parameter
586 046a 8535 cpi r24,lo8(85)
587 046c 91F5 brne .L51
588 046e 1630 cpi r17,lo8(6)
589 0470 10F0 brlo .L52
590 0472 15E0 ldi r17,lo8(5)
591 0474 02C0 rjmp .L53
592 .L52:
593 0476 1123 tst r17
594 0478 61F1 breq .L51
595 .L53:
596 047a 63E7 ldi r22,lo8(115)
597 047c 70E0 ldi r23,hi8(115)
598 047e 80E0 ldi r24,lo8(EE_Parameter)
599 0480 90E0 ldi r25,hi8(EE_Parameter)
600 0482 0E94 0000 call RAM_Checksum
601 0486 8093 0000 sts EE_Parameter+115,r24
602 048a 84E7 ldi r24,lo8(116)
603 048c 189F mul r17,r24
604 048e D001 movw r26,r0
605 0490 1124 clr r1
606 0492 5097 sbiw r26,16
607 0494 FE01 movw r30,r28
608 /* #APP */
609 0496 182E mov __zero_reg__,r24
610 0498 0E94 0000 call __eeprom_write_block_1F2021
611 /* #NOAPP */
612 049c E0E0 ldi r30,lo8(EE_Parameter+1)
613 049e F0E0 ldi r31,hi8(EE_Parameter+1)
614 04a0 A0E5 ldi r26,lo8(80)
615 04a2 B0E0 ldi r27,hi8(80)
616 04a4 2CE0 ldi r18,lo8(12)
617 04a6 30E0 ldi r19,hi8(12)
618 /* #APP */
619 04a8 122E mov __zero_reg__,r18
620 04aa 0E94 0000 call __eeprom_write_block_1F2021
621 /* #NOAPP */
622 04ae B901 movw r22,r18
623 04b0 80E0 ldi r24,lo8(EE_Parameter+1)
624 04b2 90E0 ldi r25,hi8(EE_Parameter+1)
625 04b4 0E94 0000 call RAM_Checksum
626 04b8 ACE5 ldi r26,lo8(92)
627 04ba B0E0 ldi r27,hi8(92)
628 /* #APP */
629 04bc 082E mov __tmp_reg__,r24
630 04be 0E94 0000 call __eeprom_write_byte_1F2021
631 /* #NOAPP */
632 04c2 812F mov r24,r17
633 04c4 0E94 0000 call SetActiveParamSet
634 04c8 0E94 0000 call LED_Init
635 04cc 81E0 ldi r24,lo8(1)
636 04ce 90E0 ldi r25,hi8(1)
637 04d0 02C0 rjmp .L50
638 .L51:
639 04d2 80E0 ldi r24,lo8(0)
640 04d4 90E0 ldi r25,hi8(0)
641 .L50:
642 /* epilogue: frame size=0 */
643 04d6 DF91 pop r29
644 04d8 CF91 pop r28
645 04da 1F91 pop r17
646 04dc 0895 ret
647 /* epilogue end (size=4) */
648 /* function ParamSet_WriteToEEProm size 69 (62) */
650 .global MixerTable_ReadFromEEProm
652 MixerTable_ReadFromEEProm:
653 /* prologue: frame size=0 */
654 /* prologue end (size=0) */
655 04de 6DE4 ldi r22,lo8(77)
656 04e0 70E0 ldi r23,hi8(77)
657 04e2 88EE ldi r24,lo8(1000)
658 04e4 93E0 ldi r25,hi8(1000)
659 04e6 0E94 0000 call EEProm_Checksum
660 04ea A5E3 ldi r26,lo8(1077)
661 04ec B4E0 ldi r27,hi8(1077)
662 /* #APP */
663 04ee 0E94 0000 call __eeprom_read_byte_1F2021
664 04f2 902D mov r25,__tmp_reg__
665 /* #NOAPP */
666 04f4 9817 cp r25,r24
667 04f6 39F4 brne .L81
668 04f8 A8EE ldi r26,lo8(1000)
669 04fa B3E0 ldi r27,hi8(1000)
670 /* #APP */
671 04fc 0E94 0000 call __eeprom_read_byte_1F2021
672 0500 802D mov r24,__tmp_reg__
673 /* #NOAPP */
674 0502 8130 cpi r24,lo8(1)
675 0504 19F0 breq .L72
676 .L81:
677 0506 80E0 ldi r24,lo8(0)
678 0508 90E0 ldi r25,hi8(0)
679 050a 0895 ret
680 .L72:
681 050c E0E0 ldi r30,lo8(Mixer)
682 050e F0E0 ldi r31,hi8(Mixer)
683 0510 A8EE ldi r26,lo8(1000)
684 0512 B3E0 ldi r27,hi8(1000)
685 0514 8EE4 ldi r24,lo8(78)
686 /* #APP */
687 0516 182E mov __zero_reg__,r24
688 0518 0E94 0000 call __eeprom_read_block_1F2021
689 /* #NOAPP */
690 051c 81E0 ldi r24,lo8(1)
691 051e 90E0 ldi r25,hi8(1)
692 0520 0895 ret
693 /* epilogue: frame size=0 */
694 /* epilogue: noreturn */
695 /* epilogue end (size=0) */
696 /* function MixerTable_ReadFromEEProm size 37 (37) */
698 .global MixerTable_WriteToEEProm
700 MixerTable_WriteToEEProm:
701 /* prologue: frame size=0 */
702 0522 CF93 push r28
703 0524 DF93 push r29
704 /* prologue end (size=2) */
705 0526 C0E0 ldi r28,lo8(Mixer)
706 0528 D0E0 ldi r29,hi8(Mixer)
707 052a 8091 0000 lds r24,Mixer
708 052e 8130 cpi r24,lo8(1)
709 0530 89F4 brne .L83
710 0532 6DE4 ldi r22,lo8(77)
711 0534 70E0 ldi r23,hi8(77)
712 0536 CE01 movw r24,r28
713 0538 0E94 0000 call RAM_Checksum
714 053c 8093 0000 sts Mixer+77,r24
715 0540 A8EE ldi r26,lo8(1000)
716 0542 B3E0 ldi r27,hi8(1000)
717 0544 8EE4 ldi r24,lo8(78)
718 0546 FE01 movw r30,r28
719 /* #APP */
720 0548 182E mov __zero_reg__,r24
721 054a 0E94 0000 call __eeprom_write_block_1F2021
722 /* #NOAPP */
723 054e 81E0 ldi r24,lo8(1)
724 0550 90E0 ldi r25,hi8(1)
725 0552 02C0 rjmp .L82
726 .L83:
727 0554 80E0 ldi r24,lo8(0)
728 0556 90E0 ldi r25,hi8(0)
729 .L82:
730 /* epilogue: frame size=0 */
731 0558 DF91 pop r29
732 055a CF91 pop r28
733 055c 0895 ret
734 /* epilogue end (size=3) */
735 /* function MixerTable_WriteToEEProm size 31 (26) */
737 .data
738 .LC3:
739 0019 5175 6164 .string "Quadro"
739 726F 00
740 0020 00 .string ""
741 .text
742 .global MixerTable_Default
744 MixerTable_Default:
745 /* prologue: frame size=0 */
746 055e CF93 push r28
747 0560 DF93 push r29
748 /* prologue end (size=2) */
749 0562 81E0 ldi r24,lo8(1)
750 0564 8093 0000 sts Mixer,r24
751 0568 E0E0 ldi r30,lo8(Mixer)
752 056a F0E0 ldi r31,hi8(Mixer)
753 056c 8FE0 ldi r24,lo8(15)
754 .L96:
755 056e 1586 std Z+13,__zero_reg__
756 0570 1686 std Z+14,__zero_reg__
757 0572 1786 std Z+15,__zero_reg__
758 0574 108A std Z+16,__zero_reg__
759 0576 8150 subi r24,lo8(-(-1))
760 0578 3496 adiw r30,4
761 057a 87FF sbrs r24,7
762 057c F8CF rjmp .L96
763 057e 80E4 ldi r24,lo8(64)
764 0580 8093 0000 sts Mixer+13,r24
765 0584 8093 0000 sts Mixer+14,r24
766 0588 1092 0000 sts Mixer+15,__zero_reg__
767 058c 8093 0000 sts Mixer+16,r24
768 0590 8093 0000 sts Mixer+17,r24
769 0594 90EC ldi r25,lo8(-64)
770 0596 9093 0000 sts Mixer+18,r25
771 059a 1092 0000 sts Mixer+19,__zero_reg__
772 059e 8093 0000 sts Mixer+20,r24
773 05a2 8093 0000 sts Mixer+21,r24
774 05a6 1092 0000 sts Mixer+22,__zero_reg__
775 05aa 9093 0000 sts Mixer+23,r25
776 05ae 9093 0000 sts Mixer+24,r25
777 05b2 8093 0000 sts Mixer+25,r24
778 05b6 1092 0000 sts Mixer+26,__zero_reg__
779 05ba 8093 0000 sts Mixer+27,r24
780 05be 9093 0000 sts Mixer+28,r25
781 05c2 A0E0 ldi r26,lo8(Mixer+1)
782 05c4 B0E0 ldi r27,hi8(Mixer+1)
783 05c6 87E0 ldi r24,lo8(7)
784 05c8 E0E0 ldi r30,lo8(.LC3)
785 05ca F0E0 ldi r31,hi8(.LC3)
786 05cc ED01 movw r28,r26
787 05ce 0190 ld __tmp_reg__,Z+
788 05d0 0992 st Y+,__tmp_reg__
789 05d2 8A95 dec r24
790 05d4 E1F7 brne .-8
791 05d6 6DE4 ldi r22,lo8(77)
792 05d8 70E0 ldi r23,hi8(77)
793 05da CD01 movw r24,r26
794 05dc 0197 sbiw r24,1
795 05de 0E94 0000 call RAM_Checksum
796 05e2 8093 0000 sts Mixer+77,r24
797 /* epilogue: frame size=0 */
798 05e6 DF91 pop r29
799 05e8 CF91 pop r28
800 05ea 0895 ret
801 /* epilogue end (size=3) */
802 /* function MixerTable_Default size 71 (66) */
804 .global GetActiveParamSet
806 GetActiveParamSet:
807 /* prologue: frame size=0 */
808 /* prologue end (size=0) */
809 05ec A2E0 ldi r26,lo8(2)
810 05ee B0E0 ldi r27,hi8(2)
811 /* #APP */
812 05f0 0E94 0000 call __eeprom_read_byte_1F2021
813 05f4 802D mov r24,__tmp_reg__
814 /* #NOAPP */
815 05f6 8630 cpi r24,lo8(6)
816 05f8 30F0 brlo .L101
817 05fa 83E0 ldi r24,lo8(3)
818 05fc A2E0 ldi r26,lo8(2)
819 05fe B0E0 ldi r27,hi8(2)
820 /* #APP */
821 0600 082E mov __tmp_reg__,r24
822 0602 0E94 0000 call __eeprom_write_byte_1F2021
823 /* #NOAPP */
824 .L101:
825 0606 9927 clr r25
826 /* epilogue: frame size=0 */
827 0608 0895 ret
828 /* epilogue end (size=1) */
829 /* function GetActiveParamSet size 17 (16) */
831 .global SetDefaultParameter
833 SetDefaultParameter:
834 /* prologue: frame size=0 */
835 060a 1F93 push r17
836 060c CF93 push r28
837 /* prologue end (size=2) */
838 060e C82F mov r28,r24
839 0610 162F mov r17,r22
840 0612 8630 cpi r24,lo8(6)
841 0614 10F0 brlo .L104
842 0616 C5E0 ldi r28,lo8(5)
843 0618 03C0 rjmp .L105
844 .L104:
845 061a 8823 tst r24
846 061c 09F4 brne .L105
847 061e C1E0 ldi r28,lo8(1)
848 .L105:
849 0620 8C2F mov r24,r28
850 0622 9927 clr r25
851 0624 8230 cpi r24,2
852 0626 9105 cpc r25,__zero_reg__
853 0628 41F0 breq .L109
854 062a 8330 cpi r24,3
855 062c 9105 cpc r25,__zero_reg__
856 062e 44F4 brge .L111
857 0630 0197 sbiw r24,1
858 0632 31F4 brne .L111
859 0634 0E94 0000 call ParamSet_DefaultSet1
860 0638 05C0 rjmp .L107
861 .L109:
862 063a 0E94 0000 call ParamSet_DefaultSet2
863 063e 02C0 rjmp .L107
864 .L111:
865 0640 0E94 0000 call ParamSet_DefaultSet3
866 .L107:
867 0644 1123 tst r17
868 0646 B1F0 breq .L113
869 0648 6CE0 ldi r22,lo8(12)
870 064a 70E0 ldi r23,hi8(12)
871 064c 80E5 ldi r24,lo8(80)
872 064e 90E0 ldi r25,hi8(80)
873 0650 0E94 0000 call EEProm_Checksum
874 0654 ACE5 ldi r26,lo8(92)
875 0656 B0E0 ldi r27,hi8(92)
876 /* #APP */
877 0658 0E94 0000 call __eeprom_read_byte_1F2021
878 065c 902D mov r25,__tmp_reg__
879 /* #NOAPP */
880 065e 9817 cp r25,r24
881 0660 49F4 brne .L113
882 0662 E0E0 ldi r30,lo8(EE_Parameter+1)
883 0664 F0E0 ldi r31,hi8(EE_Parameter+1)
884 0666 A0E5 ldi r26,lo8(80)
885 0668 B0E0 ldi r27,hi8(80)
886 066a 8CE0 ldi r24,lo8(12)
887 /* #APP */
888 066c 182E mov __zero_reg__,r24
889 066e 0E94 0000 call __eeprom_read_block_1F2021
890 /* #NOAPP */
891 0672 02C0 rjmp .L124
892 .L113:
893 0674 0E94 0000 call ParamSet_DefaultStickMapping
894 .L124:
895 0678 8C2F mov r24,r28
896 067a 0E94 0000 call ParamSet_WriteToEEProm
897 /* epilogue: frame size=0 */
898 067e CF91 pop r28
899 0680 1F91 pop r17
900 0682 0895 ret
901 /* epilogue end (size=3) */
902 /* function SetDefaultParameter size 64 (59) */
904 .section .progmem.data,"a",@progbits
907 __c.0:
908 0000 0A0D 4765 .string "\n\rGenerating default Parameter Set %d"
908 6E65 7261
908 7469 6E67
908 2064 6566
908 6175 6C74
911 __c.1:
912 0026 0A0D 5573 .string "\n\rUsing Parameter Set %d"
912 696E 6720
912 5061 7261
912 6D65 7465
912 7220 5365
915 __c.2:
916 003f 0A0D 4765 .string "\n\rGenerating default Mixer Table"
916 6E65 7261
916 7469 6E67
916 2064 6566
916 6175 6C74
919 __c.3:
920 0060 0A0D 4D69 .string "\n\rMixer-Config: '%s' (%u Motors)"
920 7865 722D
920 436F 6E66
920 6967 3A20
920 2725 7327
923 __c.4:
924 0081 0A0D 3D3D .string "\n\r=============================="
924 3D3D 3D3D
924 3D3D 3D3D
924 3D3D 3D3D
924 3D3D 3D3D
925 .text
926 .global ParamSet_Init
928 ParamSet_Init:
929 /* prologue: frame size=0 */
930 0684 DF92 push r13
931 0686 EF92 push r14
932 0688 FF92 push r15
933 068a 0F93 push r16
934 068c 1F93 push r17
935 068e CF93 push r28
936 /* prologue end (size=6) */
937 0690 FF24 clr r15
938 0692 DF2C mov r13,r15
939 0694 EF2C mov r14,r15
940 0696 81E0 ldi r24,lo8(1)
941 0698 90E0 ldi r25,hi8(1)
942 069a 0E94 0000 call GetParamByte
943 069e 8535 cpi r24,lo8(85)
944 06a0 39F0 breq .L126
945 06a2 31E0 ldi r19,lo8(1)
946 06a4 E32E mov r14,r19
947 06a6 65E5 ldi r22,lo8(85)
948 06a8 81E0 ldi r24,lo8(1)
949 06aa 90E0 ldi r25,hi8(1)
950 06ac 0E94 0000 call SetParamByte
951 .L126:
952 06b0 6CE0 ldi r22,lo8(12)
953 06b2 70E0 ldi r23,hi8(12)
954 06b4 80E5 ldi r24,lo8(80)
955 06b6 90E0 ldi r25,hi8(80)
956 06b8 0E94 0000 call EEProm_Checksum
957 06bc C82F mov r28,r24
958 06be ACE5 ldi r26,lo8(92)
959 06c0 B0E0 ldi r27,hi8(92)
960 /* #APP */
961 06c2 0E94 0000 call __eeprom_read_byte_1F2021
962 06c6 802D mov r24,__tmp_reg__
963 /* #NOAPP */
964 06c8 8C17 cp r24,r28
965 06ca 11F4 brne .L127
966 06cc 21E0 ldi r18,lo8(1)
967 06ce D22E mov r13,r18
968 .L127:
969 06d0 C1E0 ldi r28,lo8(1)
970 06d2 01E0 ldi r16,lo8(1)
971 06d4 10E0 ldi r17,hi8(1)
972 .L149:
973 06d6 EE20 tst r14
974 06d8 29F4 brne .L133
975 06da 8C2F mov r24,r28
976 06dc 0E94 0000 call ParamSet_ReadFromEEProm
977 06e0 8823 tst r24
978 06e2 B1F5 brne .L131
979 .L133:
980 06e4 91E0 ldi r25,lo8(1)
981 06e6 F92E mov r15,r25
982 06e8 1F93 push r17
983 06ea 0F93 push r16
984 06ec 80E0 ldi r24,lo8(__c.0)
985 06ee 90E0 ldi r25,hi8(__c.0)
986 06f0 9F93 push r25
987 06f2 8F93 push r24
988 06f4 80E0 ldi r24,lo8(pm(uart_putchar))
989 06f6 90E0 ldi r25,hi8(pm(uart_putchar))
990 06f8 9F93 push r25
991 06fa 8F93 push r24
992 06fc E091 0000 lds r30,_printf_P
993 0700 F091 0000 lds r31,(_printf_P)+1
994 0704 0995 icall
995 0706 8DB7 in r24,__SP_L__
996 0708 9EB7 in r25,__SP_H__
997 070a 0696 adiw r24,6
998 070c 8DBF out __SP_L__,r24
999 070e 0230 cpi r16,2
1000 0710 1105 cpc r17,__zero_reg__
1001 0712 49F0 breq .L136
1002 0714 0330 cpi r16,3
1003 0716 1105 cpc r17,__zero_reg__
1004 0718 4CF4 brge .L138
1005 071a 0130 cpi r16,1
1006 071c 1105 cpc r17,__zero_reg__
1007 071e 31F4 brne .L138
1008 0720 0E94 0000 call ParamSet_DefaultSet1
1009 0724 05C0 rjmp .L134
1010 .L136:
1011 0726 0E94 0000 call ParamSet_DefaultSet2
1012 072a 02C0 rjmp .L134
1013 .L138:
1014 072c 0E94 0000 call ParamSet_DefaultSet3
1015 .L134:
1016 0730 DD20 tst r13
1017 0732 49F0 breq .L140
1018 0734 E0E0 ldi r30,lo8(EE_Parameter+1)
1019 0736 F0E0 ldi r31,hi8(EE_Parameter+1)
1020 0738 A0E5 ldi r26,lo8(80)
1021 073a B0E0 ldi r27,hi8(80)
1022 073c 8CE0 ldi r24,lo8(12)
1023 /* #APP */
1024 073e 182E mov __zero_reg__,r24
1025 0740 0E94 0000 call __eeprom_read_block_1F2021
1026 /* #NOAPP */
1027 0744 02C0 rjmp .L148
1028 .L140:
1029 0746 0E94 0000 call ParamSet_DefaultStickMapping
1030 .L148:
1031 074a 8C2F mov r24,r28
1032 074c 0E94 0000 call ParamSet_WriteToEEProm
1033 .L131:
1034 0750 CF5F subi r28,lo8(-(1))
1035 0752 0F5F subi r16,lo8(-(1))
1036 0754 1F4F sbci r17,hi8(-(1))
1037 0756 C630 cpi r28,lo8(6)
1038 0758 08F4 brsh .+2
1039 075a BDCF rjmp .L149
1040 075c FF20 tst r15
1041 075e 19F0 breq .L150
1042 0760 83E0 ldi r24,lo8(3)
1043 0762 0E94 0000 call SetActiveParamSet
1044 .L150:
1045 0766 0E94 0000 call GetActiveParamSet
1046 076a C82F mov r28,r24
1047 076c 0E94 0000 call ParamSet_ReadFromEEProm
1048 0770 8C2F mov r24,r28
1049 0772 9927 clr r25
1050 0774 9F93 push r25
1051 0776 8F93 push r24
1052 0778 80E0 ldi r24,lo8(__c.1)
1053 077a 90E0 ldi r25,hi8(__c.1)
1054 077c 9F93 push r25
1055 077e 8F93 push r24
1056 0780 00E0 ldi r16,lo8(pm(uart_putchar))
1057 0782 10E0 ldi r17,hi8(pm(uart_putchar))
1058 0784 1F93 push r17
1059 0786 0F93 push r16
1060 0788 E091 0000 lds r30,_printf_P
1061 078c F091 0000 lds r31,(_printf_P)+1
1062 0790 0995 icall
1063 0792 8DB7 in r24,__SP_L__
1064 0794 9EB7 in r25,__SP_H__
1065 0796 0696 adiw r24,6
1066 0798 8DBF out __SP_L__,r24
1067 079a EE20 tst r14
1068 079c 21F4 brne .L152
1069 079e 0E94 0000 call MixerTable_ReadFromEEProm
1070 07a2 8823 tst r24
1071 07a4 99F4 brne .L151
1072 .L152:
1073 07a6 80E0 ldi r24,lo8(__c.2)
1074 07a8 90E0 ldi r25,hi8(__c.2)
1075 07aa 9F93 push r25
1076 07ac 8F93 push r24
1077 07ae 1F93 push r17
1078 07b0 0F93 push r16
1079 07b2 E091 0000 lds r30,_printf_P
1080 07b6 F091 0000 lds r31,(_printf_P)+1
1081 07ba 0995 icall
1082 07bc 0E94 0000 call MixerTable_Default
1083 07c0 0E94 0000 call MixerTable_WriteToEEProm
1084 07c4 0F90 pop __tmp_reg__
1085 07c6 0F90 pop __tmp_reg__
1086 07c8 0F90 pop __tmp_reg__
1087 07ca 0F90 pop __tmp_reg__
1088 .L151:
1089 07cc 1092 0000 sts RequiredMotors,__zero_reg__
1090 07d0 90E0 ldi r25,lo8(0)
1091 07d2 E0E0 ldi r30,lo8(Mixer+13)
1092 07d4 F0E0 ldi r31,hi8(Mixer+13)
1093 07d6 CFE0 ldi r28,lo8(15)
1094 .L157:
1095 07d8 8081 ld r24,Z
1096 07da 3496 adiw r30,4
1097 07dc 1816 cp __zero_reg__,r24
1098 07de 0CF4 brge .L155
1099 07e0 9F5F subi r25,lo8(-(1))
1100 .L155:
1101 07e2 C150 subi r28,lo8(-(-1))
1102 07e4 C7FF sbrs r28,7
1103 07e6 F8CF rjmp .L157
1104 07e8 9093 0000 sts RequiredMotors,r25
1105 07ec 892F mov r24,r25
1106 07ee 9927 clr r25
1107 07f0 9F93 push r25
1108 07f2 8F93 push r24
1109 07f4 80E0 ldi r24,lo8(Mixer+1)
1110 07f6 90E0 ldi r25,hi8(Mixer+1)
1111 07f8 9F93 push r25
1112 07fa 8F93 push r24
1113 07fc 80E0 ldi r24,lo8(__c.3)
1114 07fe 90E0 ldi r25,hi8(__c.3)
1115 0800 9F93 push r25
1116 0802 8F93 push r24
1117 0804 1F93 push r17
1118 0806 0F93 push r16
1119 0808 E091 0000 lds r30,_printf_P
1120 080c F091 0000 lds r31,(_printf_P)+1
1121 0810 0995 icall
1122 0812 8DB7 in r24,__SP_L__
1123 0814 9EB7 in r25,__SP_H__
1124 0816 0896 adiw r24,8
1125 0818 8DBF out __SP_L__,r24
1126 081a 80E0 ldi r24,lo8(__c.4)
1127 081c 90E0 ldi r25,hi8(__c.4)
1128 081e 9F93 push r25
1129 0820 8F93 push r24
1130 0822 1F93 push r17
1131 0824 0F93 push r16
1132 0826 E091 0000 lds r30,_printf_P
1133 082a F091 0000 lds r31,(_printf_P)+1
1134 082e 0995 icall
1135 0830 0F90 pop __tmp_reg__
1136 0832 0F90 pop __tmp_reg__
1137 0834 0F90 pop __tmp_reg__
1138 0836 0F90 pop __tmp_reg__
1139 /* epilogue: frame size=0 */
1140 0838 CF91 pop r28
1141 083a 1F91 pop r17
1142 083c 0F91 pop r16
1143 083e FF90 pop r15
1144 0840 EF90 pop r14
1145 0842 DF90 pop r13
1146 0844 0895 ret
1147 /* epilogue end (size=7) */
1148 /* function ParamSet_Init size 227 (214) */
1150 .comm Mixer,78,1
1151 .comm RequiredMotors,1,1
1152 .comm EE_Parameter,116,1
1153 /* File "eeprom.c": code 1085 = 0x043d (1015), prologues 26, epilogues 44 */
DEFINED SYMBOLS
*ABS*:00000000 eeprom.c
C:\Users\Thomas\AppData\Local\Temp/ccSSbaaa.s:3 *ABS*:0000003f __SREG__
C:\Users\Thomas\AppData\Local\Temp/ccSSbaaa.s:4 *ABS*:0000003e __SP_H__
C:\Users\Thomas\AppData\Local\Temp/ccSSbaaa.s:5 *ABS*:0000003d __SP_L__
C:\Users\Thomas\AppData\Local\Temp/ccSSbaaa.s:6 *ABS*:00000000 __tmp_reg__
C:\Users\Thomas\AppData\Local\Temp/ccSSbaaa.s:7 *ABS*:00000001 __zero_reg__
C:\Users\Thomas\AppData\Local\Temp/ccSSbaaa.s:13 .text:00000000 RAM_Checksum
C:\Users\Thomas\AppData\Local\Temp/ccSSbaaa.s:41 .text:00000022 EEProm_Checksum
C:\Users\Thomas\AppData\Local\Temp/ccSSbaaa.s:73 .text:0000004a ParamSet_DefaultStickMapping
*COM*:00000074 EE_Parameter
C:\Users\Thomas\AppData\Local\Temp/ccSSbaaa.s:107 .text:00000094 CommonDefaults
C:\Users\Thomas\AppData\Local\Temp/ccSSbaaa.s:245 .text:0000022e ParamSet_DefaultSet1
C:\Users\Thomas\AppData\Local\Temp/ccSSbaaa.s:305 .text:000002ac ParamSet_DefaultSet2
C:\Users\Thomas\AppData\Local\Temp/ccSSbaaa.s:365 .text:0000032a ParamSet_DefaultSet3
C:\Users\Thomas\AppData\Local\Temp/ccSSbaaa.s:420 .text:000003a8 GetParamByte
C:\Users\Thomas\AppData\Local\Temp/ccSSbaaa.s:436 .text:000003b4 SetParamByte
C:\Users\Thomas\AppData\Local\Temp/ccSSbaaa.s:451 .text:000003be GetParamWord
C:\Users\Thomas\AppData\Local\Temp/ccSSbaaa.s:467 .text:000003c8 SetParamWord
C:\Users\Thomas\AppData\Local\Temp/ccSSbaaa.s:483 .text:000003d2 ParamSet_ReadFromEEProm
C:\Users\Thomas\AppData\Local\Temp/ccSSbaaa.s:551 .text:00000440 SetActiveParamSet
C:\Users\Thomas\AppData\Local\Temp/ccSSbaaa.s:576 .text:0000045a ParamSet_WriteToEEProm
C:\Users\Thomas\AppData\Local\Temp/ccSSbaaa.s:652 .text:000004de MixerTable_ReadFromEEProm
*COM*:0000004e Mixer
C:\Users\Thomas\AppData\Local\Temp/ccSSbaaa.s:700 .text:00000522 MixerTable_WriteToEEProm
C:\Users\Thomas\AppData\Local\Temp/ccSSbaaa.s:744 .text:0000055e MixerTable_Default
C:\Users\Thomas\AppData\Local\Temp/ccSSbaaa.s:806 .text:000005ec GetActiveParamSet
C:\Users\Thomas\AppData\Local\Temp/ccSSbaaa.s:833 .text:0000060a SetDefaultParameter
C:\Users\Thomas\AppData\Local\Temp/ccSSbaaa.s:907 .progmem.data:00000000 __c.0
C:\Users\Thomas\AppData\Local\Temp/ccSSbaaa.s:911 .progmem.data:00000026 __c.1
C:\Users\Thomas\AppData\Local\Temp/ccSSbaaa.s:915 .progmem.data:0000003f __c.2
C:\Users\Thomas\AppData\Local\Temp/ccSSbaaa.s:919 .progmem.data:00000060 __c.3
C:\Users\Thomas\AppData\Local\Temp/ccSSbaaa.s:923 .progmem.data:00000081 __c.4
C:\Users\Thomas\AppData\Local\Temp/ccSSbaaa.s:928 .text:00000684 ParamSet_Init
*COM*:00000001 RequiredMotors
 
UNDEFINED SYMBOLS
__do_copy_data
__do_clear_bss
__eeprom_read_byte_1F2021
PlatinenVersion
__eeprom_write_byte_1F2021
__eeprom_read_word_1F2021
__eeprom_write_word_1F2021
__eeprom_read_block_1F2021
LED_Init
__epilogue_restores__
__eeprom_write_block_1F2021
uart_putchar
_printf_P
/branches/metro/v0.82a metro_Akku+/fc.c
0,0 → 1,1747
/*#######################################################################################
Flight Control
#######################################################################################*/
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// + Copyright (c) Holger Buss, Ingo Busker
// + Nur für den privaten Gebrauch / NON-COMMERCIAL USE ONLY
// + www.MikroKopter.com
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// + Es gilt für das gesamte Projekt (Hardware, Software, Binärfiles, Sourcecode und Dokumentation),
// + dass eine Nutzung (auch auszugsweise) nur für den privaten (nicht-kommerziellen) Gebrauch zulässig ist.
// + Sollten direkte oder indirekte kommerzielle Absichten verfolgt werden, ist mit uns (info@mikrokopter.de) Kontakt
// + bzgl. der Nutzungsbedingungen aufzunehmen.
// + Eine kommerzielle Nutzung ist z.B.Verkauf von MikroKoptern, Bestückung und Verkauf von Platinen oder Bausätzen,
// + Verkauf von Luftbildaufnahmen, usw.
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// + Werden Teile des Quellcodes (mit oder ohne Modifikation) weiterverwendet oder veröffentlicht,
// + unterliegen sie auch diesen Nutzungsbedingungen und diese Nutzungsbedingungen incl. Copyright müssen dann beiliegen
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// + Sollte die Software (auch auszugesweise) oder sonstige Informationen des MikroKopter-Projekts
// + auf anderen Webseiten oder sonstigen Medien veröffentlicht werden, muss unsere Webseite "http://www.mikrokopter.de"
// + eindeutig als Ursprung verlinkt werden
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// + Keine Gewähr auf Fehlerfreiheit, Vollständigkeit oder Funktion
// + Benutzung auf eigene Gefahr
// + Wir übernehmen keinerlei Haftung für direkte oder indirekte Personen- oder Sachschäden
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// + Die Portierung oder Nutzung der Software (oder Teile davon) auf andere Systeme (ausser der Hardware von www.mikrokopter.de) ist nur
// + mit unserer Zustimmung zulässig
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// + Die Funktion printf_P() unterliegt ihrer eigenen Lizenz und ist hiervon nicht betroffen
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// + Redistributions of source code (with or without modifications) must retain the above copyright notice,
// + this list of conditions and the following disclaimer.
// + * Neither the name of the copyright holders nor the names of contributors may be used to endorse or promote products derived
// + from this software without specific prior written permission.
// + * The use of this project (hardware, software, binary files, sources and documentation) is only permittet
// + for non-commercial use (directly or indirectly)
// + Commercial use (for excample: selling of MikroKopters, selling of PCBs, assembly, ...) is only permitted
// + with our written permission
// + * If sources or documentations are redistributet on other webpages, out webpage (http://www.MikroKopter.de) must be
// + clearly linked as origin
// + * porting the sources to other systems or using the software on other systems (except hardware from www.mikrokopter.de) is not allowed
// + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
// + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
// + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
// + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
// + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
// + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
// + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
// + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
// + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
// + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
// + POSSIBILITY OF SUCH DAMAGE.
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 
#include "main.h"
#include "mymath.h"
#include "isqrt.h"
 
//MartinW; added vars
unsigned char loop1, loop2, loop3;
unsigned char settingdest = 5;
int keynumber=-7;
 
unsigned short CurrentOffset = 0;///
 
unsigned char pos1, pos2, pos3, pos4=0;
unsigned char Motors0,Motors1,Motors2,Motors3,Motors4,Motors5,Motors6,Motors7;
unsigned char Motors0max,Motors1max,Motors2max,Motors3max,Motors4max,Motors5max,Motors6max,Motors7max;
unsigned short MotorsTmax;
unsigned char updatemotors=5;
//MartinW; added vars
 
 
unsigned char h,m,s;
unsigned int BaroExpandActive = 0;
int MesswertNick,MesswertRoll,MesswertGier,MesswertGierBias, RohMesswertNick,RohMesswertRoll;
int TrimNick, TrimRoll;
int AdNeutralNick = 0,AdNeutralRoll = 0,AdNeutralGier = 0,StartNeutralRoll = 0,StartNeutralNick = 0;
int Mittelwert_AccNick, Mittelwert_AccRoll;
unsigned int NeutralAccX=0, NeutralAccY=0;
int NaviAccNick, NaviAccRoll,NaviCntAcc = 0;
int NeutralAccZ = 0;
unsigned char ControlHeading = 0;// in 2°
long IntegralNick = 0,IntegralNick2 = 0;
long IntegralRoll = 0,IntegralRoll2 = 0;
long IntegralAccNick = 0,IntegralAccRoll = 0,IntegralAccZ = 0;
long Integral_Gier = 0;
long Mess_IntegralNick = 0,Mess_IntegralNick2 = 0;
long Mess_IntegralRoll = 0,Mess_IntegralRoll2 = 0;
long Mess_Integral_Gier = 0,Mess_Integral_Gier2 = 0;
long MittelIntegralNick,MittelIntegralRoll,MittelIntegralNick2,MittelIntegralRoll2;
long SummeNick=0,SummeRoll=0;
volatile long Mess_Integral_Hoch = 0;
int KompassValue = 0;
int KompassStartwert = 0;
int KompassRichtung = 0;
unsigned int KompassSignalSchlecht = 500;
unsigned char MAX_GAS,MIN_GAS;
unsigned char HoehenReglerAktiv = 0;
unsigned char TrichterFlug = 0;
long Umschlag180Nick = 250000L, Umschlag180Roll = 250000L;
long ErsatzKompass;
int ErsatzKompassInGrad; // Kompasswert in Grad
int GierGyroFehler = 0;
char GyroFaktor,GyroFaktorGier;
char IntegralFaktor,IntegralFaktorGier;
int DiffNick,DiffRoll;
//int Poti1 = 0, Poti2 = 0, Poti3 = 0, Poti4 = 0, Poti5 = 0, Poti6 = 0, Poti7 = 0, Poti8 = 0;
unsigned char Poti[9] = {0,0,0,0,0,0,0,0};
volatile unsigned char SenderOkay = 0;
int StickNick = 0,StickRoll = 0,StickGier = 0,StickGas = 0;
char MotorenEin = 0,StartTrigger = 0;
long HoehenWert = 0;
long SollHoehe = 0;
int LageKorrekturRoll = 0,LageKorrekturNick = 0, HoverGas = 0;
//float Ki = FAKTOR_I;
int Ki = 10300 / 33;
unsigned char Looping_Nick = 0,Looping_Roll = 0;
unsigned char Looping_Links = 0, Looping_Rechts = 0, Looping_Unten = 0, Looping_Oben = 0;
 
unsigned char Parameter_Luftdruck_D = 48; // Wert : 0-250
unsigned char Parameter_MaxHoehe = 251; // Wert : 0-250
unsigned char Parameter_Hoehe_P = 16; // Wert : 0-32
unsigned char Parameter_Hoehe_ACC_Wirkung = 58; // Wert : 0-250
unsigned char Parameter_KompassWirkung = 64; // Wert : 0-250
unsigned char Parameter_Hoehe_GPS_Z = 64; // Wert : 0-250
unsigned char Parameter_Gyro_D = 8; // Wert : 0-250
unsigned char Parameter_Gyro_P = 150; // Wert : 10-250
unsigned char Parameter_Gyro_I = 150; // Wert : 0-250
unsigned char Parameter_Gyro_Gier_P = 150; // Wert : 10-250
unsigned char Parameter_Gyro_Gier_I = 150; // Wert : 10-250
unsigned char Parameter_Gier_P = 2; // Wert : 1-20
unsigned char Parameter_I_Faktor = 10; // Wert : 1-20
unsigned char Parameter_UserParam1 = 0;
unsigned char Parameter_UserParam2 = 0;
unsigned char Parameter_UserParam3 = 0;
unsigned char Parameter_UserParam4 = 0;
unsigned char Parameter_UserParam5 = 0;
unsigned char Parameter_UserParam6 = 0;
unsigned char Parameter_UserParam7 = 0;
unsigned char Parameter_UserParam8 = 0;
unsigned char Parameter_ServoNickControl = 100;
unsigned char Parameter_ServoRollControl = 100;
unsigned char Parameter_LoopGasLimit = 70;
unsigned char Parameter_AchsKopplung1 = 90;
unsigned char Parameter_AchsKopplung2 = 65;
unsigned char Parameter_CouplingYawCorrection = 64;
//unsigned char Parameter_AchsGegenKopplung1 = 0;
unsigned char Parameter_DynamicStability = 100;
unsigned char Parameter_J16Bitmask; // for the J16 Output
unsigned char Parameter_J16Timing; // for the J16 Output
unsigned char Parameter_J17Bitmask; // for the J17 Output
unsigned char Parameter_J17Timing; // for the J17 Output
unsigned char Parameter_NaviGpsModeControl; // Parameters for the Naviboard
unsigned char Parameter_NaviGpsGain;
unsigned char Parameter_NaviGpsP;
unsigned char Parameter_NaviGpsI;
unsigned char Parameter_NaviGpsD;
unsigned char Parameter_NaviGpsACC;
unsigned char Parameter_NaviOperatingRadius;
unsigned char Parameter_NaviWindCorrection;
unsigned char Parameter_NaviSpeedCompensation;
unsigned char Parameter_ExternalControl;
unsigned char Parameter_Servo3,Parameter_Servo4,Parameter_Servo5;
unsigned char CareFree = 0;
const signed char sintab[31] = { 0, 2, 4, 6, 7, 8, 8, 8, 7, 6, 4, 2, 0, -2, -4, -6, -7, -8, -8, -8, -7, -6, -4, -2, 0, 2, 4, 6, 7, 8, 8};
 
signed int ExternStickNick = 0,ExternStickRoll = 0,ExternStickGier = 0, ExternHoehenValue = -20;
int MaxStickNick = 0,MaxStickRoll = 0;
unsigned int modell_fliegt = 0;
volatile unsigned char FC_StatusFlags = 0;
long GIER_GRAD_FAKTOR = 1291;
signed int KopplungsteilNickRoll,KopplungsteilRollNick;
signed int tmp_motorwert[MAX_MOTORS];
char VarioCharacter = ' ';
 
#define LIMIT_MIN(value, min) {if(value <= min) value = min;}
#define LIMIT_MAX(value, max) {if(value >= max) value = max;}
#define LIMIT_MIN_MAX(value, min, max) {if(value <= min) value = min; else if(value >= max) value = max;}
 
 
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// Debugwerte zuordnen
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
void CopyDebugValues(void)
{
DebugOut.Analog[0] = IntegralNick / (EE_Parameter.GyroAccFaktor * 4);
DebugOut.Analog[1] = IntegralRoll / (EE_Parameter.GyroAccFaktor * 4);
DebugOut.Analog[2] = Mittelwert_AccNick / 4;
DebugOut.Analog[3] = Mittelwert_AccRoll / 4;
DebugOut.Analog[4] = (signed int) AdNeutralGier - AdWertGier;
DebugOut.Analog[5] = HoehenWert/5;
DebugOut.Analog[6] = AdWertAccHoch;//(Mess_Integral_Hoch / 512);// Aktuell_az;
DebugOut.Analog[8] = KompassValue;
DebugOut.Analog[9] = UBat;
DebugOut.Analog[10] = SenderOkay;
DebugOut.Analog[11] = ErsatzKompass / GIER_GRAD_FAKTOR;
DebugOut.Analog[12] = Motor[0].SetPoint;
DebugOut.Analog[13] = Motor[1].SetPoint;
DebugOut.Analog[14] = Motor[2].SetPoint;
DebugOut.Analog[15] = Motor[3].SetPoint;
DebugOut.Analog[20] = ServoNickValue;
DebugOut.Analog[22] = Capacity.ActualCurrent;
DebugOut.Analog[23] = Capacity.RemainCapacity;
// DebugOut.Analog[22] = FromNaviCtrl_Value.GpsZ;
// DebugOut.Analog[29] = FromNaviCtrl_Value.SerialDataOkay;
DebugOut.Analog[29] = Capacity.MinOfMaxPWM;
DebugOut.Analog[30] = GPS_Nick;
DebugOut.Analog[31] = GPS_Roll;
if(VersionInfo.HardwareError[0] || VersionInfo.HardwareError[1]) DebugOut.Status[1] |= 1; else DebugOut.Status[1] &= 0xfe;
 
//if(Capacity.MinOfMaxPWM < 250/* && modell_fliegt > 500*/) { beeptime = 1000; DebugOut.Analog[25]++; }
}
 
 
 
void Piep(unsigned char Anzahl, unsigned int dauer)
{
if(MotorenEin) return; //auf keinen Fall im Flug!
while(Anzahl--)
{
beeptime = dauer;
while(beeptime);
Delay_ms(dauer * 2);
}
}
 
//############################################################################
// Messwerte beim Ermitteln der Nullage
void CalibrierMittelwert(void)
//############################################################################
{
unsigned char i;
if(PlatinenVersion == 13) SucheGyroOffset();
// ADC auschalten, damit die Werte sich nicht während der Berechnung ändern
ANALOG_OFF;
MesswertNick = AdWertNick;
MesswertRoll = AdWertRoll;
MesswertGier = AdWertGier;
Mittelwert_AccNick = ACC_AMPLIFY * AdWertAccNick;
Mittelwert_AccRoll = ACC_AMPLIFY * AdWertAccRoll;
// ADC einschalten
ANALOG_ON;
for(i=0;i<8;i++)
{
int tmp;
tmp = PPM_in[EE_Parameter.Kanalbelegung[K_POTI1 + i]] + 110;
LIMIT_MIN_MAX(tmp, 0, 255);
if(Poti[i] > tmp) Poti[i]--; else if(Poti[i] < tmp) Poti[i]++;
}
Umschlag180Nick = (long) EE_Parameter.WinkelUmschlagNick * 2500L;
Umschlag180Roll = (long) EE_Parameter.WinkelUmschlagRoll * 2500L;
}
 
//############################################################################
// Nullwerte ermitteln
void SetNeutral(unsigned char AccAdjustment)
//############################################################################
{
unsigned char i;
unsigned int gier_neutral=0, nick_neutral=0, roll_neutral=0;
VersionInfo.HardwareError[0] = 0;
HEF4017R_ON;
NeutralAccX = 0;
NeutralAccY = 0;
NeutralAccZ = 0;
 
AdNeutralNick = 0;
AdNeutralRoll = 0;
AdNeutralGier = 0;
 
Parameter_AchsKopplung1 = 0;
Parameter_AchsKopplung2 = 0;
 
ExpandBaro = 0;
 
CalibrierMittelwert();
Delay_ms_Mess(100);
 
CalibrierMittelwert();
 
if((EE_Parameter.GlobalConfig & CFG_HOEHENREGELUNG)) // Höhenregelung aktiviert?
{
if((MessLuftdruck > 950) || (MessLuftdruck < 750)) SucheLuftruckOffset();
}
#define NEUTRAL_FILTER 32
for(i=0; i<NEUTRAL_FILTER; i++)
{
Delay_ms_Mess(10);
gier_neutral += AdWertGier;
nick_neutral += AdWertNick;
roll_neutral += AdWertRoll;
}
AdNeutralNick= (nick_neutral+NEUTRAL_FILTER/2) / (NEUTRAL_FILTER / 8);
AdNeutralRoll= (roll_neutral+NEUTRAL_FILTER/2) / (NEUTRAL_FILTER / 8);
AdNeutralGier= (gier_neutral+NEUTRAL_FILTER/2) / (NEUTRAL_FILTER);
 
StartNeutralRoll = AdNeutralRoll;
StartNeutralNick = AdNeutralNick;
 
if(AccAdjustment)
{
NeutralAccX = abs(Mittelwert_AccNick) / (2*ACC_AMPLIFY);
NeutralAccY = abs(Mittelwert_AccRoll) / (2*ACC_AMPLIFY);
NeutralAccZ = Aktuell_az;
 
// Save ACC neutral settings to eeprom
SetParamWord(PID_ACC_NICK, (uint16_t)NeutralAccX);
SetParamWord(PID_ACC_ROLL, (uint16_t)NeutralAccY);
SetParamWord(PID_ACC_TOP, (uint16_t)NeutralAccZ);
}
else
{
// restore from eeprom
NeutralAccX = (int16_t)GetParamWord(PID_ACC_NICK);
NeutralAccY = (int16_t)GetParamWord(PID_ACC_ROLL);
NeutralAccZ = (int16_t)GetParamWord(PID_ACC_TOP);
// strange settings?
if(((unsigned int) NeutralAccX > 2048) || ((unsigned int) NeutralAccY > 2048) || ((unsigned int) NeutralAccZ > 1024))
{
printf("\n\rACC not calibrated!\r\n");
NeutralAccX = abs(Mittelwert_AccNick) / (2*ACC_AMPLIFY);
NeutralAccY = abs(Mittelwert_AccRoll) / (2*ACC_AMPLIFY);
NeutralAccZ = Aktuell_az;
}
}
 
MesswertNick = 0;
MesswertRoll = 0;
MesswertGier = 0;
Delay_ms_Mess(100);
Mittelwert_AccNick = ACC_AMPLIFY * AdWertAccNick;
Mittelwert_AccRoll = ACC_AMPLIFY * AdWertAccRoll;
IntegralNick = EE_Parameter.GyroAccFaktor * (long)Mittelwert_AccNick;
IntegralRoll = EE_Parameter.GyroAccFaktor * (long)Mittelwert_AccRoll;
Mess_IntegralNick2 = IntegralNick;
Mess_IntegralRoll2 = IntegralRoll;
Mess_Integral_Gier = 0;
StartLuftdruck = Luftdruck;
VarioMeter = 0;
Mess_Integral_Hoch = 0;
KompassStartwert = KompassValue;
GPS_Neutral();
beeptime = 50;
Umschlag180Nick = ((long) EE_Parameter.WinkelUmschlagNick * 2500L) + 15000L;
Umschlag180Roll = ((long) EE_Parameter.WinkelUmschlagRoll * 2500L) + 15000L;
ExternHoehenValue = 0;
ErsatzKompass = KompassValue * GIER_GRAD_FAKTOR;
GierGyroFehler = 0;
SendVersionToNavi = 1;
LED_Init();
FC_StatusFlags |= FC_STATUS_CALIBRATE;
FromNaviCtrl_Value.Kalman_K = -1;
FromNaviCtrl_Value.Kalman_MaxDrift = 0;
FromNaviCtrl_Value.Kalman_MaxFusion = 32;
 
for(i=0;i<8;i++)
{
Poti[i] = PPM_in[EE_Parameter.Kanalbelegung[K_POTI1 + i]] + 110;
}
SenderOkay = 100;
if(ServoActive)
{
HEF4017R_ON;
DDRD |=0x80; // enable J7 -> Servo signal
}
 
if((AdNeutralNick < 150 * 16) || (AdNeutralNick > 850 * 16)) { VersionInfo.HardwareError[0] |= FC_ERROR0_GYRO_NICK; };
if((AdNeutralRoll < 150 * 16) || (AdNeutralRoll > 850 * 16)) { VersionInfo.HardwareError[0] |= FC_ERROR0_GYRO_ROLL; };
if((AdNeutralGier < 150 * 2) || (AdNeutralGier > 850 * 2)) { VersionInfo.HardwareError[0] |= FC_ERROR0_GYRO_YAW; };
if((NeutralAccX < 300) || (NeutralAccX > 750)) { VersionInfo.HardwareError[0] |= FC_ERROR0_ACC_NICK; };
if((NeutralAccY < 300) || (NeutralAccY > 750)) { VersionInfo.HardwareError[0] |= FC_ERROR0_ACC_ROLL; };
if((NeutralAccZ < 512) || (NeutralAccZ > 850)) { VersionInfo.HardwareError[0] |= FC_ERROR0_ACC_TOP; };
}
 
 
//############################################################################
// Bearbeitet die Messwerte
void Mittelwert(void)
//############################################################################
{
static signed long tmpl,tmpl2,tmpl3,tmpl4;
static signed int oldNick, oldRoll, d2Roll, d2Nick;
signed long winkel_nick, winkel_roll;
// unsigned char i;
MesswertGier = (signed int) AdNeutralGier - AdWertGier;
MesswertNick = (signed int) AdWertNickFilter / 8;
MesswertRoll = (signed int) AdWertRollFilter / 8;
RohMesswertNick = MesswertNick;
RohMesswertRoll = MesswertRoll;
 
// Beschleunigungssensor ++++++++++++++++++++++++++++++++++++++++++++++++
Mittelwert_AccNick = (Mittelwert_AccNick * 3 + ((ACC_AMPLIFY * AdWertAccNick))) / 4L;
Mittelwert_AccRoll = (Mittelwert_AccRoll * 3 + ((ACC_AMPLIFY * AdWertAccRoll))) / 4L;
IntegralAccNick += ACC_AMPLIFY * AdWertAccNick;
IntegralAccRoll += ACC_AMPLIFY * AdWertAccRoll;
NaviAccNick += AdWertAccNick;
NaviAccRoll += AdWertAccRoll;
NaviCntAcc++;
IntegralAccZ += Aktuell_az - NeutralAccZ;
 
//++++++++++++++++++++++++++++++++++++++++++++++++
// ADC einschalten
ANALOG_ON;
AdReady = 0;
//++++++++++++++++++++++++++++++++++++++++++++++++
 
if(Mess_IntegralRoll > 93000L) winkel_roll = 93000L;
else if(Mess_IntegralRoll <-93000L) winkel_roll = -93000L;
else winkel_roll = Mess_IntegralRoll;
 
if(Mess_IntegralNick > 93000L) winkel_nick = 93000L;
else if(Mess_IntegralNick <-93000L) winkel_nick = -93000L;
else winkel_nick = Mess_IntegralNick;
 
// Gier ++++++++++++++++++++++++++++++++++++++++++++++++
Mess_Integral_Gier += MesswertGier;
ErsatzKompass += MesswertGier;
// Kopplungsanteil +++++++++++++++++++++++++++++++++++++
if(!Looping_Nick && !Looping_Roll && (EE_Parameter.GlobalConfig & CFG_ACHSENKOPPLUNG_AKTIV))
{
tmpl3 = (MesswertRoll * winkel_nick) / 2048L;
tmpl3 *= Parameter_AchsKopplung2; //65
tmpl3 /= 4096L;
tmpl4 = (MesswertNick * winkel_roll) / 2048L;
tmpl4 *= Parameter_AchsKopplung2; //65
tmpl4 /= 4096L;
KopplungsteilNickRoll = tmpl3;
KopplungsteilRollNick = tmpl4;
tmpl4 -= tmpl3;
ErsatzKompass += tmpl4;
if(!Parameter_CouplingYawCorrection) Mess_Integral_Gier -= tmpl4/2; // Gier nachhelfen
 
tmpl = ((MesswertGier + tmpl4) * winkel_nick) / 2048L;
tmpl *= Parameter_AchsKopplung1; // 90
tmpl /= 4096L;
tmpl2 = ((MesswertGier + tmpl4) * winkel_roll) / 2048L;
tmpl2 *= Parameter_AchsKopplung1;
tmpl2 /= 4096L;
if(abs(MesswertGier) > 64) if(labs(tmpl) > 128 || labs(tmpl2) > 128) TrichterFlug = 1;
//MesswertGier += (Parameter_CouplingYawCorrection * tmpl4) / 256;
}
else tmpl = tmpl2 = KopplungsteilNickRoll = KopplungsteilRollNick = 0;
TrimRoll = tmpl - tmpl2 / 100L;
TrimNick = -tmpl2 + tmpl / 100L;
// Kompasswert begrenzen ++++++++++++++++++++++++++++++++++++++++++++++++
if(ErsatzKompass >= (360L * GIER_GRAD_FAKTOR)) ErsatzKompass -= 360L * GIER_GRAD_FAKTOR; // 360° Umschlag
if(ErsatzKompass < 0) ErsatzKompass += 360L * GIER_GRAD_FAKTOR;
// Roll ++++++++++++++++++++++++++++++++++++++++++++++++
Mess_IntegralRoll2 += MesswertRoll + TrimRoll;
Mess_IntegralRoll += MesswertRoll + TrimRoll - LageKorrekturRoll;
if(Mess_IntegralRoll > Umschlag180Roll)
{
Mess_IntegralRoll = -(Umschlag180Roll - 25000L);
Mess_IntegralRoll2 = Mess_IntegralRoll;
}
if(Mess_IntegralRoll <-Umschlag180Roll)
{
Mess_IntegralRoll = (Umschlag180Roll - 25000L);
Mess_IntegralRoll2 = Mess_IntegralRoll;
}
// Nick ++++++++++++++++++++++++++++++++++++++++++++++++
Mess_IntegralNick2 += MesswertNick + TrimNick;
Mess_IntegralNick += MesswertNick + TrimNick - LageKorrekturNick;
if(Mess_IntegralNick > Umschlag180Nick)
{
Mess_IntegralNick = -(Umschlag180Nick - 25000L);
Mess_IntegralNick2 = Mess_IntegralNick;
}
if(Mess_IntegralNick <-Umschlag180Nick)
{
Mess_IntegralNick = (Umschlag180Nick - 25000L);
Mess_IntegralNick2 = Mess_IntegralNick;
}
 
Integral_Gier = Mess_Integral_Gier;
IntegralNick = Mess_IntegralNick;
IntegralRoll = Mess_IntegralRoll;
IntegralNick2 = Mess_IntegralNick2;
IntegralRoll2 = Mess_IntegralRoll2;
 
#define D_LIMIT 128
 
MesswertNick = HiResNick / 8;
MesswertRoll = HiResRoll / 8;
 
if(AdWertNick < 15) MesswertNick = -1000; if(AdWertNick < 7) MesswertNick = -2000;
if(PlatinenVersion == 10) { if(AdWertNick > 1010) MesswertNick = +1000; if(AdWertNick > 1017) MesswertNick = +2000; }
else { if(AdWertNick > 2000) MesswertNick = +1000; if(AdWertNick > 2015) MesswertNick = +2000; }
if(AdWertRoll < 15) MesswertRoll = -1000; if(AdWertRoll < 7) MesswertRoll = -2000;
if(PlatinenVersion == 10) { if(AdWertRoll > 1010) MesswertRoll = +1000; if(AdWertRoll > 1017) MesswertRoll = +2000; }
else { if(AdWertRoll > 2000) MesswertRoll = +1000; if(AdWertRoll > 2015) MesswertRoll = +2000; }
 
if(Parameter_Gyro_D)
{
d2Nick = HiResNick - oldNick;
oldNick = (oldNick + HiResNick)/2;
if(d2Nick > D_LIMIT) d2Nick = D_LIMIT;
else if(d2Nick < -D_LIMIT) d2Nick = -D_LIMIT;
 
d2Roll = HiResRoll - oldRoll;
oldRoll = (oldRoll + HiResRoll)/2;
if(d2Roll > D_LIMIT) d2Roll = D_LIMIT;
else if(d2Roll < -D_LIMIT) d2Roll = -D_LIMIT;
 
MesswertNick += (d2Nick * (signed int) Parameter_Gyro_D) / 16;
MesswertRoll += (d2Roll * (signed int) Parameter_Gyro_D) / 16;
HiResNick += (d2Nick * (signed int) Parameter_Gyro_D);
HiResRoll += (d2Roll * (signed int) Parameter_Gyro_D);
}
 
if(RohMesswertRoll > 0) TrimRoll += ((long) abs(KopplungsteilNickRoll) * Parameter_CouplingYawCorrection) / 64L;
else TrimRoll -= ((long) abs(KopplungsteilNickRoll) * Parameter_CouplingYawCorrection) / 64L;
if(RohMesswertNick > 0) TrimNick += ((long) abs(KopplungsteilRollNick) * Parameter_CouplingYawCorrection) / 64L;
else TrimNick -= ((long) abs(KopplungsteilRollNick) * Parameter_CouplingYawCorrection) / 64L;
 
if(EE_Parameter.GlobalConfig & CFG_DREHRATEN_BEGRENZER && !Looping_Nick && !Looping_Roll)
{
if(RohMesswertNick > 256) MesswertNick += 1 * (RohMesswertNick - 256);
else if(RohMesswertNick < -256) MesswertNick += 1 * (RohMesswertNick + 256);
if(RohMesswertRoll > 256) MesswertRoll += 1 * (RohMesswertRoll - 256);
else if(RohMesswertRoll < -256) MesswertRoll += 1 * (RohMesswertRoll + 256);
}
}
 
//############################################################################
// Senden der Motorwerte per I2C-Bus
void SendMotorData(void)
//############################################################################
{
unsigned char i;
if(!MotorenEin)
{
FC_StatusFlags &= ~(FC_STATUS_MOTOR_RUN | FC_STATUS_FLY);
for(i=0;i<MAX_MOTORS;i++)
{
if(!PC_MotortestActive) MotorTest[i] = 0;
Motor[i].SetPoint = MotorTest[i];
Motor[i].SetPointLowerBits = 0;
/*
Motor[i].SetPoint = MotorTest[i] / 4; // testing the high resolution
Motor[i].SetPointLowerBits = MotorTest[i] % 4;
*/
}
if(PC_MotortestActive) PC_MotortestActive--;
}
else FC_StatusFlags |= FC_STATUS_MOTOR_RUN;
 
if(I2C_TransferActive)
{
I2C_TransferActive = 0; // enable for the next time
}
else
{
motor_write = 0;
I2C_Start(TWI_STATE_MOTOR_TX); //Start I2C Interrupt Mode
}
}
 
 
 
//############################################################################
// Trägt ggf. das Poti als Parameter ein
void ParameterZuordnung(void)
//############################################################################
{
unsigned char tmp,i;
#define CHK_POTI(b,a) {if(a < 248) b = a; else b = Poti[255 - a];}
#define CHK_POTI_MM(b,a,min,max) {CHK_POTI(b,a); LIMIT_MIN_MAX(b, min, max);}
for(i=0;i<8;i++)
{
int tmp2;
tmp2 = PPM_in[EE_Parameter.Kanalbelegung[K_POTI1 + i]] + 110;
if(tmp2 > 255) tmp2 = 255; else if(tmp2 < 0) tmp2 = 0;
if(tmp2 != Poti[i])
{
Poti[i] += (tmp2 - Poti[i]) / 4;
if(Poti[i] > tmp2) Poti[i]--;
else Poti[i]++;
}
}
CHK_POTI_MM(Parameter_Luftdruck_D,EE_Parameter.Luftdruck_D,0,100);
CHK_POTI_MM(Parameter_Hoehe_P,EE_Parameter.Hoehe_P,0,100);
CHK_POTI_MM(Parameter_Gyro_P,EE_Parameter.Gyro_P,10,255);
CHK_POTI_MM(Parameter_J16Timing,EE_Parameter.J16Timing,1,255);
CHK_POTI_MM(Parameter_J17Timing,EE_Parameter.J17Timing,1,255);
CHK_POTI(Parameter_Servo3,EE_Parameter.Servo3);
CHK_POTI(Parameter_Servo4,EE_Parameter.Servo4);
CHK_POTI(Parameter_Servo5,EE_Parameter.Servo5);
CHK_POTI(Parameter_MaxHoehe,EE_Parameter.MaxHoehe);
CHK_POTI(Parameter_MaxHoehe,EE_Parameter.MaxHoehe);
CHK_POTI(Parameter_Hoehe_ACC_Wirkung,EE_Parameter.Hoehe_ACC_Wirkung);
CHK_POTI(Parameter_Hoehe_GPS_Z,EE_Parameter.Hoehe_GPS_Z);
CHK_POTI(Parameter_KompassWirkung,EE_Parameter.KompassWirkung);
CHK_POTI(Parameter_Gyro_I,EE_Parameter.Gyro_I);
CHK_POTI(Parameter_Gyro_D,EE_Parameter.Gyro_D);
CHK_POTI(Parameter_Gyro_Gier_P,EE_Parameter.Gyro_Gier_P);
CHK_POTI(Parameter_Gyro_Gier_I,EE_Parameter.Gyro_Gier_I);
CHK_POTI(Parameter_I_Faktor,EE_Parameter.I_Faktor);
CHK_POTI(Parameter_UserParam1,EE_Parameter.UserParam1);
CHK_POTI(Parameter_UserParam2,EE_Parameter.UserParam2);
CHK_POTI(Parameter_UserParam3,EE_Parameter.UserParam3);
CHK_POTI(Parameter_UserParam4,EE_Parameter.UserParam4);
CHK_POTI(Parameter_UserParam5,EE_Parameter.UserParam5);
CHK_POTI(Parameter_UserParam6,EE_Parameter.UserParam6);
CHK_POTI(Parameter_UserParam7,EE_Parameter.UserParam7);
CHK_POTI(Parameter_UserParam8,EE_Parameter.UserParam8);
CHK_POTI(Parameter_ServoNickControl,EE_Parameter.ServoNickControl);
CHK_POTI(Parameter_ServoRollControl,EE_Parameter.ServoRollControl);
CHK_POTI(Parameter_LoopGasLimit,EE_Parameter.LoopGasLimit);
CHK_POTI(Parameter_AchsKopplung1,EE_Parameter.AchsKopplung1);
CHK_POTI(Parameter_AchsKopplung2,EE_Parameter.AchsKopplung2);
CHK_POTI(Parameter_CouplingYawCorrection,EE_Parameter.CouplingYawCorrection);
// CHK_POTI(Parameter_AchsGegenKopplung1,EE_Parameter.AchsGegenKopplung1,0,255);
CHK_POTI(Parameter_DynamicStability,EE_Parameter.DynamicStability);
CHK_POTI(Parameter_ExternalControl,EE_Parameter.ExternalControl);
Ki = 10300 / (Parameter_I_Faktor + 1);
MAX_GAS = EE_Parameter.Gas_Max;
MIN_GAS = EE_Parameter.Gas_Min;
 
tmp = EE_Parameter.OrientationModeControl;
if(tmp > 50)
{
#ifdef SWITCH_LEARNS_CAREFREE
if(!CareFree) ControlHeading = (((int) EE_Parameter.OrientationAngle * 15 + KompassValue) % 360) / 2;
#endif
CareFree = 1;
if(tmp >= 248 && Poti[255 - tmp] < 50) CareFree = 0;
if(FromNaviCtrl.CompassValue < 0 && CareFree) VersionInfo.HardwareError[0] |= FC_ERROR0_CAREFREE; else VersionInfo.HardwareError[0] &= ~FC_ERROR0_CAREFREE;
}
else CareFree = 0;
 
if(FromNaviCtrl.CompassValue < 0 && MotorenEin && CareFree && BeepMuster == 0xffff) // ungültiger Kompasswert
{
beeptime = 15000;
BeepMuster = 0xA400;
CareFree = 0;
}
 
if(CareFree) {if(Parameter_AchsKopplung1 < 210) Parameter_AchsKopplung1 += 30;}
}
 
//############################################################################
//
void MotorRegler(void)
//############################################################################
{
int pd_ergebnis_nick,pd_ergebnis_roll,tmp_int, tmp_int2;
int GierMischanteil,GasMischanteil;
static long sollGier = 0,tmp_long,tmp_long2;
static long IntegralFehlerNick = 0;
static long IntegralFehlerRoll = 0;
static unsigned int RcLostTimer;
static unsigned char delay_neutral = 0;
static unsigned char delay_einschalten = 0,delay_ausschalten = 0;
static unsigned char calibration_done = 0;
static char NeueKompassRichtungMerken = 0;
static long ausgleichNick, ausgleichRoll;
int IntegralNickMalFaktor,IntegralRollMalFaktor;
unsigned char i;
Mittelwert();
GRN_ON;
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// Gaswert ermitteln
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
GasMischanteil = StickGas;
if(GasMischanteil < MIN_GAS + 10) GasMischanteil = MIN_GAS + 10;
 
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// Empfang schlecht
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
if(SenderOkay < 100)
{
if(RcLostTimer) RcLostTimer--;
else
{
MotorenEin = 0;
FC_StatusFlags &= ~FC_STATUS_EMERGENCY_LANDING;
}
ROT_ON;
if(modell_fliegt > 1000) // wahrscheinlich in der Luft --> langsam absenken
{
GasMischanteil = EE_Parameter.NotGas;
FC_StatusFlags |= FC_STATUS_EMERGENCY_LANDING;
PPM_diff[EE_Parameter.Kanalbelegung[K_NICK]] = 0;
PPM_diff[EE_Parameter.Kanalbelegung[K_ROLL]] = 0;
PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] = 0;
PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]] = 0;
PPM_in[EE_Parameter.Kanalbelegung[K_GIER]] = 0;
}
else MotorenEin = 0;
}
else
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// Emfang gut
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
if(SenderOkay > 140)
{
FC_StatusFlags &= ~FC_STATUS_EMERGENCY_LANDING;
RcLostTimer = EE_Parameter.NotGasZeit * 50;
if(GasMischanteil > 40 && MotorenEin)
{
if(modell_fliegt < 0xffff) modell_fliegt++;
}
if((modell_fliegt < 256))
{
SummeNick = 0;
SummeRoll = 0;
sollGier = 0;
Mess_Integral_Gier = 0;
if(modell_fliegt == 250)
{
NeueKompassRichtungMerken = 1;
}
} else FC_StatusFlags |= FC_STATUS_FLY;
 
if((PPM_in[EE_Parameter.Kanalbelegung[K_GAS]] > 80) && MotorenEin == 0)
{
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// auf Nullwerte kalibrieren
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
if(PPM_in[EE_Parameter.Kanalbelegung[K_GIER]] > 75) // Neutralwerte
{
if(++delay_neutral > 200) // nicht sofort
{
GRN_OFF;
MotorenEin = 0;
delay_neutral = 0;
modell_fliegt = 0;
if(PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] > 70 || abs(PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]]) > 70)
{
unsigned char setting=1;
if(PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]] > 70 && PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] < 70) setting = 1;
if(PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]] > 70 && PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] > 70) setting = 2;
if(PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]] < 70 && PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] > 70) setting = 3;
if(PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]] <-70 && PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] > 70) setting = 4;
if(PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]] <-70 && PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] < 70) setting = 5;
SetActiveParamSet(setting); // aktiven Datensatz merken
}
if(abs(PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]]) < 30 && PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] < -70)
{
WinkelOut.CalcState = 1;
beeptime = 1000;
}
else
{
ParamSet_ReadFromEEProm(GetActiveParamSet());
LipoDetection(0);
LIBFC_ReceiverInit(EE_Parameter.Receiver);
if((EE_Parameter.GlobalConfig & CFG_HOEHENREGELUNG)) // Höhenregelung aktiviert?
{
if((MessLuftdruck > 950) || (MessLuftdruck < 750)) SucheLuftruckOffset();
}
ServoActive = 0;
SetNeutral(0);
calibration_done = 1;
ServoActive = 1;
DDRD |=0x80; // enable J7 -> Servo signal
Piep(GetActiveParamSet(),120);
}
}
}
else
if(PPM_in[EE_Parameter.Kanalbelegung[K_GIER]] < -75) // ACC Neutralwerte speichern
{
if(++delay_neutral > 200) // nicht sofort
{
GRN_OFF;
MotorenEin = 0;
delay_neutral = 0;
modell_fliegt = 0;
SetNeutral(1);
calibration_done = 1;
Piep(GetActiveParamSet(),120);
}
}
else delay_neutral = 0;
}
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// Gas ist unten
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 
if(PPM_in[EE_Parameter.Kanalbelegung[K_GAS]] < 35-120)
{
// Motoren Starten
if(!MotorenEin)
{
if((PPM_in[EE_Parameter.Kanalbelegung[K_GIER]] < -75) && (PPM_in[EE_Parameter.MotorSafetySwitch] < -75 || EE_Parameter.MotorSafetySwitch == 0))
{
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// Einschalten
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
if(++delay_einschalten > 200)
{
delay_einschalten = 0;
if(!VersionInfo.HardwareError[0] && calibration_done)
{
modell_fliegt = 1;
MotorenEin = 1;
sollGier = 0;
Mess_Integral_Gier = 0;
Mess_Integral_Gier2 = 0;
Mess_IntegralNick = EE_Parameter.GyroAccFaktor * (long)Mittelwert_AccNick;
Mess_IntegralRoll = EE_Parameter.GyroAccFaktor * (long)Mittelwert_AccRoll;
Mess_IntegralNick2 = IntegralNick;
Mess_IntegralRoll2 = IntegralRoll;
SummeNick = 0;
SummeRoll = 0;
FC_StatusFlags |= FC_STATUS_START;
ControlHeading = (((int) EE_Parameter.OrientationAngle * 15 + KompassValue) % 360) / 2;
}
else
{
beeptime = 1500; // indicate missing calibration
}
}
}
else delay_einschalten = 0;
}
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// Auschalten
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
else // only if motors are running
{
if((PPM_in[EE_Parameter.Kanalbelegung[K_GIER]] > 75) && (PPM_in[EE_Parameter.MotorSafetySwitch] < -75 || EE_Parameter.MotorSafetySwitch == 0))
{
if(++delay_ausschalten > 200) // nicht sofort
{
MotorenEin = 0;
delay_ausschalten = 0;
modell_fliegt = 0;
}
}
else delay_ausschalten = 0;
}
}
}
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// neue Werte von der Funke
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 
if(!NewPpmData-- || (FC_StatusFlags & FC_STATUS_EMERGENCY_LANDING))
{
static int stick_nick,stick_roll;
ParameterZuordnung();
stick_nick = (stick_nick * 3 + PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] * EE_Parameter.Stick_P) / 4;
stick_nick += PPM_diff[EE_Parameter.Kanalbelegung[K_NICK]] * EE_Parameter.Stick_D;
stick_roll = (stick_roll * 3 + PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]] * EE_Parameter.Stick_P) / 4;
stick_roll += PPM_diff[EE_Parameter.Kanalbelegung[K_ROLL]] * EE_Parameter.Stick_D;
 
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// CareFree und freie Wahl der vorderen Richtung
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
if(CareFree)
{
signed int nick, roll;
nick = stick_nick / 4;
roll = stick_roll / 4;
StickNick = ((FromNC_Rotate_C * nick) + (FromNC_Rotate_S * roll)) / (32 / 4);
StickRoll = ((FromNC_Rotate_C * roll) - (FromNC_Rotate_S * nick)) / (32 / 4);
}
else
{
FromNC_Rotate_C = sintab[EE_Parameter.OrientationAngle + 6];
FromNC_Rotate_S = sintab[EE_Parameter.OrientationAngle];
StickNick = ((FromNC_Rotate_C * stick_nick) + (FromNC_Rotate_S * stick_roll)) / 8;
StickRoll = ((FromNC_Rotate_C * stick_roll) - (FromNC_Rotate_S * stick_nick)) / 8;
}
 
StickGier = -PPM_in[EE_Parameter.Kanalbelegung[K_GIER]];
if(StickGier > 2) StickGier -= 2; else
if(StickGier < -2) StickGier += 2; else StickGier = 0;
 
StickNick -= (GPS_Nick + GPS_Nick2);
StickRoll -= (GPS_Roll + GPS_Roll2);
StickGas = PPM_in[EE_Parameter.Kanalbelegung[K_GAS]] + 120;
 
GyroFaktor = (Parameter_Gyro_P + 10.0);
IntegralFaktor = Parameter_Gyro_I;
GyroFaktorGier = (Parameter_Gyro_Gier_P + 10.0);
IntegralFaktorGier = Parameter_Gyro_Gier_I;
 
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//+ Analoge Steuerung per Seriell
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
if(ExternControl.Config & 0x01 && Parameter_ExternalControl > 128)
{
StickNick += (int) ExternControl.Nick * (int) EE_Parameter.Stick_P;
StickRoll += (int) ExternControl.Roll * (int) EE_Parameter.Stick_P;
StickGier += ExternControl.Gier;
ExternHoehenValue = (int) ExternControl.Hight * (int)EE_Parameter.Hoehe_Verstaerkung;
if(ExternControl.Gas < StickGas) StickGas = ExternControl.Gas;
}
if(StickGas < 0) StickGas = 0;
 
if(EE_Parameter.GlobalConfig & CFG_HEADING_HOLD) IntegralFaktor = 0;
 
if(abs(StickNick/STICK_GAIN) > MaxStickNick)
{
MaxStickNick = abs(StickNick)/STICK_GAIN;
if(MaxStickNick > 100) MaxStickNick = 100;
}
else MaxStickNick--;
if(abs(StickRoll/STICK_GAIN) > MaxStickRoll)
{
MaxStickRoll = abs(StickRoll)/STICK_GAIN;
if(MaxStickRoll > 100) MaxStickRoll = 100;
}
else MaxStickRoll--;
if(FC_StatusFlags & FC_STATUS_EMERGENCY_LANDING) {MaxStickNick = 0; MaxStickRoll = 0;}
 
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// Looping?
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
if((PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]] > EE_Parameter.LoopThreshold) && EE_Parameter.BitConfig & CFG_LOOP_LINKS) Looping_Links = 1;
else
{
{
if((PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]] < (EE_Parameter.LoopThreshold - EE_Parameter.LoopHysterese))) Looping_Links = 0;
}
}
if((PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]] < -EE_Parameter.LoopThreshold) && EE_Parameter.BitConfig & CFG_LOOP_RECHTS) Looping_Rechts = 1;
else
{
if(Looping_Rechts) // Hysterese
{
if(PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]] > -(EE_Parameter.LoopThreshold - EE_Parameter.LoopHysterese)) Looping_Rechts = 0;
}
}
 
if((PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] > EE_Parameter.LoopThreshold) && EE_Parameter.BitConfig & CFG_LOOP_OBEN) Looping_Oben = 1;
else
{
if(Looping_Oben) // Hysterese
{
if((PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] < (EE_Parameter.LoopThreshold - EE_Parameter.LoopHysterese))) Looping_Oben = 0;
}
}
if((PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] < -EE_Parameter.LoopThreshold) && EE_Parameter.BitConfig & CFG_LOOP_UNTEN) Looping_Unten = 1;
else
{
if(Looping_Unten) // Hysterese
{
if(PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] > -(EE_Parameter.LoopThreshold - EE_Parameter.LoopHysterese)) Looping_Unten = 0;
}
}
 
if(Looping_Links || Looping_Rechts) Looping_Roll = 1; else Looping_Roll = 0;
if(Looping_Oben || Looping_Unten) { Looping_Nick = 1; Looping_Roll = 0; Looping_Links = 0; Looping_Rechts = 0;} else Looping_Nick = 0;
} // Ende neue Funken-Werte
 
if(Looping_Roll || Looping_Nick)
{
if(GasMischanteil > EE_Parameter.LoopGasLimit) GasMischanteil = EE_Parameter.LoopGasLimit;
TrichterFlug = 1;
}
 
 
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// Bei Empfangsausfall im Flug
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
if(FC_StatusFlags & FC_STATUS_EMERGENCY_LANDING)
{
StickGier = 0;
StickNick = 0;
StickRoll = 0;
GyroFaktor = 90;
IntegralFaktor = 120;
GyroFaktorGier = 90;
IntegralFaktorGier = 120;
Looping_Roll = 0;
Looping_Nick = 0;
}
 
 
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// Integrale auf ACC-Signal abgleichen
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#define ABGLEICH_ANZAHL 256L
 
MittelIntegralNick += IntegralNick; // Für die Mittelwertbildung aufsummieren
MittelIntegralRoll += IntegralRoll;
MittelIntegralNick2 += IntegralNick2;
MittelIntegralRoll2 += IntegralRoll2;
 
if(Looping_Nick || Looping_Roll)
{
IntegralAccNick = 0;
IntegralAccRoll = 0;
MittelIntegralNick = 0;
MittelIntegralRoll = 0;
MittelIntegralNick2 = 0;
MittelIntegralRoll2 = 0;
Mess_IntegralNick2 = Mess_IntegralNick;
Mess_IntegralRoll2 = Mess_IntegralRoll;
ZaehlMessungen = 0;
LageKorrekturNick = 0;
LageKorrekturRoll = 0;
}
 
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
if(!Looping_Nick && !Looping_Roll && (Aktuell_az > 512 || MotorenEin))
{
long tmp_long, tmp_long2;
if(FromNaviCtrl_Value.Kalman_K != -1 /*&& !TrichterFlug*/)
{
tmp_long = (long)(IntegralNick / EE_Parameter.GyroAccFaktor - (long)Mittelwert_AccNick);
tmp_long2 = (long)(IntegralRoll / EE_Parameter.GyroAccFaktor - (long)Mittelwert_AccRoll);
tmp_long = (tmp_long * FromNaviCtrl_Value.Kalman_K) / (32 * 16);
tmp_long2 = (tmp_long2 * FromNaviCtrl_Value.Kalman_K) / (32 * 16);
if((MaxStickNick > 64) || (MaxStickRoll > 64))
{
tmp_long /= 2;
tmp_long2 /= 2;
}
if(abs(PPM_in[EE_Parameter.Kanalbelegung[K_GIER]]) > 25)
{
tmp_long /= 3;
tmp_long2 /= 3;
}
if(tmp_long > (long) FromNaviCtrl_Value.Kalman_MaxFusion) tmp_long = (long) FromNaviCtrl_Value.Kalman_MaxFusion;
if(tmp_long < (long)-FromNaviCtrl_Value.Kalman_MaxFusion) tmp_long = (long)-FromNaviCtrl_Value.Kalman_MaxFusion;
if(tmp_long2 > (long) FromNaviCtrl_Value.Kalman_MaxFusion) tmp_long2 = (long) FromNaviCtrl_Value.Kalman_MaxFusion;
if(tmp_long2 < (long)-FromNaviCtrl_Value.Kalman_MaxFusion) tmp_long2 = (long)-FromNaviCtrl_Value.Kalman_MaxFusion;
}
else
{
tmp_long = (long)(IntegralNick / EE_Parameter.GyroAccFaktor - (long)Mittelwert_AccNick);
tmp_long2 = (long)(IntegralRoll / EE_Parameter.GyroAccFaktor - (long)Mittelwert_AccRoll);
tmp_long /= 16;
tmp_long2 /= 16;
if((MaxStickNick > 64) || (MaxStickRoll > 64))
{
tmp_long /= 3;
tmp_long2 /= 3;
}
if(abs(PPM_in[EE_Parameter.Kanalbelegung[K_GIER]]) > 25)
{
tmp_long /= 3;
tmp_long2 /= 3;
}
 
#define AUSGLEICH 32
if(tmp_long > AUSGLEICH) tmp_long = AUSGLEICH;
if(tmp_long < -AUSGLEICH) tmp_long =-AUSGLEICH;
if(tmp_long2 > AUSGLEICH) tmp_long2 = AUSGLEICH;
if(tmp_long2 <-AUSGLEICH) tmp_long2 =-AUSGLEICH;
}
 
Mess_IntegralNick -= tmp_long;
Mess_IntegralRoll -= tmp_long2;
}
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
if(ZaehlMessungen >= ABGLEICH_ANZAHL)
{
static int cnt = 0;
static char last_n_p,last_n_n,last_r_p,last_r_n;
static long MittelIntegralNick_Alt,MittelIntegralRoll_Alt;
if(!Looping_Nick && !Looping_Roll && !TrichterFlug && EE_Parameter.Driftkomp)
{
MittelIntegralNick /= ABGLEICH_ANZAHL;
MittelIntegralRoll /= ABGLEICH_ANZAHL;
IntegralAccNick = (EE_Parameter.GyroAccFaktor * IntegralAccNick) / ABGLEICH_ANZAHL;
IntegralAccRoll = (EE_Parameter.GyroAccFaktor * IntegralAccRoll) / ABGLEICH_ANZAHL;
IntegralAccZ = IntegralAccZ / ABGLEICH_ANZAHL;
#define MAX_I 0
// Nick ++++++++++++++++++++++++++++++++++++++++++++++++
IntegralFehlerNick = (long)(MittelIntegralNick - (long)IntegralAccNick);
ausgleichNick = IntegralFehlerNick / EE_Parameter.GyroAccAbgleich;
// Roll ++++++++++++++++++++++++++++++++++++++++++++++++
IntegralFehlerRoll = (long)(MittelIntegralRoll - (long)IntegralAccRoll);
ausgleichRoll = IntegralFehlerRoll / EE_Parameter.GyroAccAbgleich;
 
LageKorrekturNick = ausgleichNick / ABGLEICH_ANZAHL;
LageKorrekturRoll = ausgleichRoll / ABGLEICH_ANZAHL;
 
if(((MaxStickNick > 64) || (MaxStickRoll > 64) || (abs(PPM_in[EE_Parameter.Kanalbelegung[K_GIER]]) > 25)) && (FromNaviCtrl_Value.Kalman_K == -1))
{
LageKorrekturNick /= 2;
LageKorrekturRoll /= 2;
}
 
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// Gyro-Drift ermitteln
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
MittelIntegralNick2 /= ABGLEICH_ANZAHL;
MittelIntegralRoll2 /= ABGLEICH_ANZAHL;
tmp_long = IntegralNick2 - IntegralNick;
tmp_long2 = IntegralRoll2 - IntegralRoll;
 
IntegralFehlerNick = tmp_long;
IntegralFehlerRoll = tmp_long2;
Mess_IntegralNick2 -= IntegralFehlerNick;
Mess_IntegralRoll2 -= IntegralFehlerRoll;
 
if(EE_Parameter.Driftkomp)
{
if(GierGyroFehler > ABGLEICH_ANZAHL/2) { AdNeutralGier++; }
if(GierGyroFehler <-ABGLEICH_ANZAHL/2) { AdNeutralGier--; }
}
GierGyroFehler = 0;
 
#define FEHLER_LIMIT (ABGLEICH_ANZAHL / 2)
#define FEHLER_LIMIT1 (ABGLEICH_ANZAHL * 2) //4
#define FEHLER_LIMIT2 (ABGLEICH_ANZAHL * 16) //16
#define BEWEGUNGS_LIMIT 20000
// Nick +++++++++++++++++++++++++++++++++++++++++++++++++
cnt = 1;// + labs(IntegralFehlerNick) / 4096;
if(labs(IntegralFehlerNick) > FEHLER_LIMIT1) cnt = 4;
if(labs(MittelIntegralNick_Alt - MittelIntegralNick) < BEWEGUNGS_LIMIT || (FromNaviCtrl_Value.Kalman_MaxDrift > 3*8))
{
if(IntegralFehlerNick > FEHLER_LIMIT2)
{
if(last_n_p)
{
cnt += labs(IntegralFehlerNick) / (FEHLER_LIMIT2 / 8);
ausgleichNick = IntegralFehlerNick / 8;
if(ausgleichNick > 5000) ausgleichNick = 5000;
LageKorrekturNick += ausgleichNick / ABGLEICH_ANZAHL;
}
else last_n_p = 1;
} else last_n_p = 0;
if(IntegralFehlerNick < -FEHLER_LIMIT2)
{
if(last_n_n)
{
cnt += labs(IntegralFehlerNick) / (FEHLER_LIMIT2 / 8);
ausgleichNick = IntegralFehlerNick / 8;
if(ausgleichNick < -5000) ausgleichNick = -5000;
LageKorrekturNick += ausgleichNick / ABGLEICH_ANZAHL;
}
else last_n_n = 1;
} else last_n_n = 0;
}
else
{
cnt = 0;
KompassSignalSchlecht = 1000;
}
if(cnt > EE_Parameter.Driftkomp) cnt = EE_Parameter.Driftkomp;
if(FromNaviCtrl_Value.Kalman_MaxDrift) if(cnt > FromNaviCtrl_Value.Kalman_MaxDrift) cnt = FromNaviCtrl_Value.Kalman_MaxDrift;
if(IntegralFehlerNick > FEHLER_LIMIT) AdNeutralNick += cnt;
if(IntegralFehlerNick < -FEHLER_LIMIT) AdNeutralNick -= cnt;
 
// Roll +++++++++++++++++++++++++++++++++++++++++++++++++
cnt = 1;// + labs(IntegralFehlerRoll) / 4096;
if(labs(IntegralFehlerRoll) > FEHLER_LIMIT1) cnt = 4;
if(labs(MittelIntegralRoll_Alt - MittelIntegralRoll) < BEWEGUNGS_LIMIT || (FromNaviCtrl_Value.Kalman_MaxDrift > 3*8))
{
if(IntegralFehlerRoll > FEHLER_LIMIT2)
{
if(last_r_p)
{
cnt += labs(IntegralFehlerRoll) / (FEHLER_LIMIT2 / 8);
ausgleichRoll = IntegralFehlerRoll / 8;
if(ausgleichRoll > 5000) ausgleichRoll = 5000;
LageKorrekturRoll += ausgleichRoll / ABGLEICH_ANZAHL;
}
else last_r_p = 1;
} else last_r_p = 0;
if(IntegralFehlerRoll < -FEHLER_LIMIT2)
{
if(last_r_n)
{
cnt += labs(IntegralFehlerRoll) / (FEHLER_LIMIT2 / 8);
ausgleichRoll = IntegralFehlerRoll / 8;
if(ausgleichRoll < -5000) ausgleichRoll = -5000;
LageKorrekturRoll += ausgleichRoll / ABGLEICH_ANZAHL;
}
else last_r_n = 1;
} else last_r_n = 0;
} else
{
cnt = 0;
KompassSignalSchlecht = 1000;
}
if(cnt > EE_Parameter.Driftkomp) cnt = EE_Parameter.Driftkomp;
if(FromNaviCtrl_Value.Kalman_MaxDrift) if(cnt > FromNaviCtrl_Value.Kalman_MaxDrift) cnt = FromNaviCtrl_Value.Kalman_MaxDrift;
if(IntegralFehlerRoll > FEHLER_LIMIT) AdNeutralRoll += cnt;
if(IntegralFehlerRoll < -FEHLER_LIMIT) AdNeutralRoll -= cnt;
}
else
{
LageKorrekturRoll = 0;
LageKorrekturNick = 0;
TrichterFlug = 0;
}
 
if(!IntegralFaktor) { LageKorrekturRoll = 0; LageKorrekturNick = 0;} // z.B. bei HH
// +++++++++++++++++++++++++++++++++++++++++++++++++++++
MittelIntegralNick_Alt = MittelIntegralNick;
MittelIntegralRoll_Alt = MittelIntegralRoll;
// +++++++++++++++++++++++++++++++++++++++++++++++++++++
IntegralAccNick = 0;
IntegralAccRoll = 0;
IntegralAccZ = 0;
MittelIntegralNick = 0;
MittelIntegralRoll = 0;
MittelIntegralNick2 = 0;
MittelIntegralRoll2 = 0;
ZaehlMessungen = 0;
} // ZaehlMessungen >= ABGLEICH_ANZAHL
 
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// Gieren
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
if(abs(StickGier) > 15) // war 35
{
KompassSignalSchlecht = 1000;
if(!(EE_Parameter.GlobalConfig & CFG_KOMPASS_FIX))
{
NeueKompassRichtungMerken = 1;
};
}
tmp_int = (long) EE_Parameter.Gier_P * ((long)StickGier * abs(StickGier)) / 512L; // expo y = ax + bx²
tmp_int += (EE_Parameter.Gier_P * StickGier) / 4;
sollGier = tmp_int;
Mess_Integral_Gier -= tmp_int;
if(Mess_Integral_Gier > 50000) Mess_Integral_Gier = 50000; // begrenzen
if(Mess_Integral_Gier <-50000) Mess_Integral_Gier =-50000;
 
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// Kompass
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
if(KompassValue && (EE_Parameter.GlobalConfig & CFG_KOMPASS_AKTIV))
{
int w,v,r,fehler,korrektur;
w = abs(IntegralNick /512); // mit zunehmender Neigung den Einfluss drosseln
v = abs(IntegralRoll /512);
if(v > w) w = v; // grösste Neigung ermitteln
korrektur = w / 8 + 2;
fehler = ((540 + KompassValue - (ErsatzKompass/GIER_GRAD_FAKTOR)) % 360) - 180;
//fehler += MesswertGier / 12;
 
if(!KompassSignalSchlecht && w < 25)
{
GierGyroFehler += fehler;
if(NeueKompassRichtungMerken)
{
ErsatzKompass = KompassValue * GIER_GRAD_FAKTOR;
KompassStartwert = (ErsatzKompass/GIER_GRAD_FAKTOR);
NeueKompassRichtungMerken = 0;
}
}
ErsatzKompass += (fehler * 16) / korrektur;
w = (w * Parameter_KompassWirkung) / 32; // auf die Wirkung normieren
w = Parameter_KompassWirkung - w; // Wirkung ggf drosseln
if(w >= 0)
{
if(!KompassSignalSchlecht)
{
v = 64 + ((MaxStickNick + MaxStickRoll)) / 8;
r = ((540 + (ErsatzKompass/GIER_GRAD_FAKTOR) - KompassStartwert) % 360) - 180;
v = (r * w) / v; // nach Kompass ausrichten
w = 3 * Parameter_KompassWirkung;
if(v > w) v = w; // Begrenzen
else
if(v < -w) v = -w;
Mess_Integral_Gier += v;
}
if(KompassSignalSchlecht) KompassSignalSchlecht--;
}
else KompassSignalSchlecht = 500; // so lange das Signal taub stellen --> ca. 1 sek
}
 
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// Drehgeschwindigkeit und -winkel zu einem Istwert zusammenfassen
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
if(TrichterFlug) { SummeRoll = 0; SummeNick = 0;};
 
if(!Looping_Nick) IntegralNickMalFaktor = (IntegralNick * IntegralFaktor) / (44000 / STICK_GAIN); else IntegralNickMalFaktor = 0;
if(!Looping_Roll) IntegralRollMalFaktor = (IntegralRoll * IntegralFaktor) / (44000 / STICK_GAIN); else IntegralRollMalFaktor = 0;
 
#define TRIM_MAX 200
if(TrimNick > TRIM_MAX) TrimNick = TRIM_MAX; else if(TrimNick <-TRIM_MAX) TrimNick =-TRIM_MAX;
if(TrimRoll > TRIM_MAX) TrimRoll = TRIM_MAX; else if(TrimRoll <-TRIM_MAX) TrimRoll =-TRIM_MAX;
 
MesswertNick = IntegralNickMalFaktor + (long)((long)MesswertNick * GyroFaktor + (long)TrimNick * 128L) / (256L / STICK_GAIN);
MesswertRoll = IntegralRollMalFaktor + (long)((long)MesswertRoll * GyroFaktor + (long)TrimRoll * 128L) / (256L / STICK_GAIN);
MesswertGier = (long)(MesswertGier * 2 * (long)GyroFaktorGier) / (256L / STICK_GAIN) + (long)(Integral_Gier * IntegralFaktorGier) / (2 * (44000 / STICK_GAIN));
 
// Maximalwerte abfangen
// #define MAX_SENSOR (4096*STICK_GAIN)
#define MAX_SENSOR (4096)
if(MesswertNick > MAX_SENSOR) MesswertNick = MAX_SENSOR;
if(MesswertNick < -MAX_SENSOR) MesswertNick = -MAX_SENSOR;
if(MesswertRoll > MAX_SENSOR) MesswertRoll = MAX_SENSOR;
if(MesswertRoll < -MAX_SENSOR) MesswertRoll = -MAX_SENSOR;
if(MesswertGier > MAX_SENSOR) MesswertGier = MAX_SENSOR;
if(MesswertGier < -MAX_SENSOR) MesswertGier = -MAX_SENSOR;
 
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// Höhenregelung
// Die Höhenregelung schwächt lediglich das Gas ab, erhöht es allerdings nicht
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
if(UBat > BattLowVoltageWarning) GasMischanteil = ((unsigned int)GasMischanteil * BattLowVoltageWarning) / UBat; // Gas auf das aktuelle Spannungvieveau beziehen
GasMischanteil *= STICK_GAIN;
// if height control is activated
if((EE_Parameter.GlobalConfig & CFG_HOEHENREGELUNG) && !(Looping_Roll || Looping_Nick)) // Höhenregelung
{
#define HOVER_GAS_AVERAGE 16384L // 16384 * 2ms = 32s averaging
#define HC_GAS_AVERAGE 4 // 4 * 2ms= 8ms averaging
 
#if (defined(__AVR_ATmega1284__) || defined(__AVR_ATmega1284P__))
#define OPA_OFFSET_STEP 15
#else
#define OPA_OFFSET_STEP 10
#endif
int HCGas, HeightDeviation = 0,GasReduction = 0;
static int HeightTrimming = 0; // rate for change of height setpoint
static int FilterHCGas = 0;
static int StickGasHover = 120, HoverGasMin = 0, HoverGasMax = 1023;
static unsigned long HoverGasFilter = 0;
static unsigned char delay = 100, BaroAtUpperLimit = 0, BaroAtLowerLimit = 0;
int CosAttitude; // for projection of hoover gas
 
// get the current hooverpoint
DebugOut.Analog[21] = HoverGas;
 
// Expand the measurement
// measurement of air pressure close to upper limit and no overflow in correction of the new OCR0A value occurs
if(!BaroExpandActive)
{
if(MessLuftdruck > 920)
{ // increase offset
if(OCR0A < (255 - OPA_OFFSET_STEP))
{
ExpandBaro -= 1;
OCR0A = DruckOffsetSetting - OPA_OFFSET_STEP * ExpandBaro; // increase offset to shift ADC down
beeptime = 300;
BaroExpandActive = 350;
}
else
{
BaroAtLowerLimit = 1;
}
}
// measurement of air pressure close to lower limit and
else
if(MessLuftdruck < 100)
{ // decrease offset
if(OCR0A > OPA_OFFSET_STEP)
{
ExpandBaro += 1;
OCR0A = DruckOffsetSetting - OPA_OFFSET_STEP * ExpandBaro; // decrease offset to shift ADC up
beeptime = 300;
BaroExpandActive = 350;
}
else
{
BaroAtUpperLimit = 1;
}
}
else
{
BaroAtUpperLimit = 0;
BaroAtLowerLimit = 0;
}
}
else // delay, because of expanding the Baro-Range
{
// now clear the D-values
SummenHoehe = HoehenWert * SM_FILTER;
VarioMeter = 0;
BaroExpandActive--;
}
 
// if height control is activated by an rc channel
if(EE_Parameter.GlobalConfig & CFG_HOEHEN_SCHALTER) // Regler wird über Schalter gesteuert
{ // check if parameter is less than activation threshold
if(Parameter_MaxHoehe < 50) // for 3 or 2-state switch height control is disabled in lowest position
{ //height control not active
if(!delay--)
{
HoehenReglerAktiv = 0; // disable height control
SollHoehe = HoehenWert; // update SetPoint with current reading
delay = 1;
}
}
else
{ //height control is activated
HoehenReglerAktiv = 1; // enable height control
delay = 200;
}
}
else // no switchable height control
{
SollHoehe = ((int16_t) ExternHoehenValue + (int16_t) Parameter_MaxHoehe) * (int)EE_Parameter.Hoehe_Verstaerkung;
HoehenReglerAktiv = 1;
}
 
// calculate cos of nick and roll angle used for projection of the vertical hoover gas
tmp_int = (int)(IntegralNick/GIER_GRAD_FAKTOR); // nick angle in deg
tmp_int2 = (int)(IntegralRoll/GIER_GRAD_FAKTOR); // roll angle in deg
CosAttitude = (int16_t)ihypot(tmp_int, tmp_int2); // phytagoras gives effective attitude angle in deg
LIMIT_MAX(CosAttitude, 60); // limit effective attitude angle
CosAttitude = c_cos_8192(CosAttitude); // cos of actual attitude
VarioCharacter = ' ';
if(HoehenReglerAktiv && !(FC_StatusFlags & FC_STATUS_EMERGENCY_LANDING))
{
#define HEIGHT_CONTROL_STICKTHRESHOLD 15
// Holger original version
// start of height control algorithm
// the height control is only an attenuation of the actual gas stick.
// I.e. it will work only if the gas stick is higher than the hover gas
// and the hover height will be allways larger than height setpoint.
if((EE_Parameter.ExtraConfig & CFG2_HEIGHT_LIMIT) || !(EE_Parameter.GlobalConfig & CFG_HOEHEN_SCHALTER)) // Regler wird über Schalter gesteuert)
{ // old version
HCGas = GasMischanteil; // take current stick gas as neutral point for the height control
HeightTrimming = 0;
// set both flags to indicate no vario mode
FC_StatusFlags |= (FC_STATUS_VARIO_TRIM_UP|FC_STATUS_VARIO_TRIM_DOWN);
}
else
{
// alternative height control
// PD-Control with respect to hoover point
// the thrust loss out of horizontal attitude is compensated
// the setpoint will be fine adjusted with the gas stick position
if(FC_StatusFlags & FC_STATUS_FLY) // trim setpoint only when flying
{ // gas stick is above hoover point
if(StickGas > (StickGasHover + HEIGHT_CONTROL_STICKTHRESHOLD) && !BaroAtUpperLimit)
{
if(FC_StatusFlags & FC_STATUS_VARIO_TRIM_DOWN)
{
FC_StatusFlags &= ~FC_STATUS_VARIO_TRIM_DOWN;
SollHoehe = HoehenWert; // update setpoint to current heigth
}
FC_StatusFlags |= FC_STATUS_VARIO_TRIM_UP;
HeightTrimming += abs(StickGas - (StickGasHover + HEIGHT_CONTROL_STICKTHRESHOLD));
VarioCharacter = '+';
} // gas stick is below hoover point
else if(StickGas < (StickGasHover - HEIGHT_CONTROL_STICKTHRESHOLD) && !BaroAtLowerLimit )
{
if(FC_StatusFlags & FC_STATUS_VARIO_TRIM_UP)
{
FC_StatusFlags &= ~FC_STATUS_VARIO_TRIM_UP;
SollHoehe = HoehenWert; // update setpoint to current heigth
}
FC_StatusFlags |= FC_STATUS_VARIO_TRIM_DOWN;
HeightTrimming -= abs(StickGas - (StickGasHover - HEIGHT_CONTROL_STICKTHRESHOLD));
VarioCharacter = '-';
}
else // Gas Stick in Hover Range
{
if(FC_StatusFlags & (FC_STATUS_VARIO_TRIM_UP|FC_STATUS_VARIO_TRIM_DOWN))
{
FC_StatusFlags &= ~(FC_STATUS_VARIO_TRIM_UP|FC_STATUS_VARIO_TRIM_DOWN);
HeightTrimming = 0;
SollHoehe = HoehenWert; // update setpoint to current height
if(EE_Parameter.ExtraConfig & CFG2_VARIO_BEEP) beeptime = 500;
if(!StartTrigger && HoehenWert > 50)
{
StartTrigger = 1;
}
}
VarioCharacter = '=';
}
// Trim height set point
if(abs(HeightTrimming) > 512)
{
SollHoehe += (HeightTrimming * EE_Parameter.Hoehe_Verstaerkung)/(5 * 512 / 2); // move setpoint
HeightTrimming = 0;
LIMIT_MIN_MAX(SollHoehe, (HoehenWert-1024), (HoehenWert+1024)); // max. 10m Unterschied
if(EE_Parameter.ExtraConfig & CFG2_VARIO_BEEP) beeptime = 100;
//update hoover gas stick value when setpoint is shifted
if(!EE_Parameter.Hoehe_StickNeutralPoint)
{
StickGasHover = HoverGas/STICK_GAIN; //rescale back to stick value
StickGasHover = (StickGasHover * UBat) / BattLowVoltageWarning;
if(StickGasHover < 70) StickGasHover = 70;
else if(StickGasHover > 150) StickGasHover = 150;
}
}
if(BaroExpandActive) SollHoehe = HoehenWert; // update setpoint to current altitude if Expanding is active
} //if FCFlags & MKFCFLAG_FLY
else
{
SollHoehe = HoehenWert - 400;
if(EE_Parameter.Hoehe_StickNeutralPoint) StickGasHover = EE_Parameter.Hoehe_StickNeutralPoint;
else StickGasHover = 120;
HoverGas = GasMischanteil;
}
HCGas = HoverGas; // take hover gas (neutral point)
}
if(HoehenWert > SollHoehe || !(EE_Parameter.ExtraConfig & CFG2_HEIGHT_LIMIT))
{
// from this point the Heigth Control Algorithm is identical for both versions
if(BaroExpandActive) // baro range expanding active
{
HCGas = HoverGas; // hover while expanding baro adc range
HeightDeviation = 0;
} // EOF // baro range expanding active
else // valid data from air pressure sensor
{
// ------------------------- P-Part ----------------------------
tmp_long = (HoehenWert - SollHoehe); // positive when too high
LIMIT_MIN_MAX(tmp_long, -32767L, 32767L); // avoid overflov when casting to int16_t
HeightDeviation = (int)(tmp_long); // positive when too high
tmp_long = (tmp_long * (long)Parameter_Hoehe_P) / 32L; // p-part
LIMIT_MIN_MAX(tmp_long, -127 * STICK_GAIN, 256 * STICK_GAIN); // more than the full range makes no sense
GasReduction = tmp_long;
// ------------------------- D-Part 1: Vario Meter ----------------------------
tmp_int = VarioMeter / 8;
LIMIT_MIN_MAX(tmp_int, -127, 128);
tmp_int = (tmp_int * (long)Parameter_Luftdruck_D) / 4L; // scale to d-gain parameter
LIMIT_MIN_MAX(tmp_int,-64 * STICK_GAIN, 64 * STICK_GAIN);
if(FC_StatusFlags & (FC_STATUS_VARIO_TRIM_UP|FC_STATUS_VARIO_TRIM_DOWN)) tmp_int /= 4; // reduce d-part while trimming setpoint
else
if(EE_Parameter.ExtraConfig & CFG2_HEIGHT_LIMIT) tmp_int /= 8; // reduce d-part in "Deckel" mode
GasReduction += tmp_int;
} // EOF no baro range expanding
// ------------------------ D-Part 2: ACC-Z Integral ------------------------
if(Parameter_Hoehe_ACC_Wirkung)
{
tmp_long = ((Mess_Integral_Hoch / 128L) * (int32_t) Parameter_Hoehe_ACC_Wirkung) / (128L / STICK_GAIN);
LIMIT_MIN_MAX(tmp_long, -32 * STICK_GAIN, 64 * STICK_GAIN);
GasReduction += tmp_long;
}
// ------------------------ D-Part 3: GpsZ ----------------------------------
tmp_int = (Parameter_Hoehe_GPS_Z * (int)FromNaviCtrl_Value.GpsZ)/128L;
LIMIT_MIN_MAX(tmp_int, -32 * STICK_GAIN, 64 * STICK_GAIN);
GasReduction += tmp_int;
GasReduction = (long)((long)GasReduction * HoverGas) / 512; // scale to the gas value
// ------------------------ ----------------------------------
HCGas -= GasReduction;
// limit deviation from hoover point within the target region
if(!HeightTrimming && HoverGas > 0) // height setpoint is not changed and hoover gas not zero
{
unsigned int tmp;
tmp = abs(HeightDeviation);
if(tmp <= 60)
{
LIMIT_MIN_MAX(HCGas, HoverGasMin, HoverGasMax); // limit gas around the hoover point
}
else
{
tmp = (tmp - 60) / 32;
if(tmp > 15) tmp = 15;
if(HeightDeviation > 0)
{
tmp = (HoverGasMin * (16 - tmp)) / 16;
LIMIT_MIN_MAX(HCGas, tmp, HoverGasMax); // limit gas around the hoover point
}
else
{
tmp = (HoverGasMax * (tmp + 16)) / 16;
LIMIT_MIN_MAX(HCGas, HoverGasMin, tmp); // limit gas around the hoover point
}
}
}
// strech control output by inverse attitude projection 1/cos
// + 1/cos(angle) ++++++++++++++++++++++++++
tmp_long2 = (int32_t)HCGas;
tmp_long2 *= 8192L;
tmp_long2 /= CosAttitude;
HCGas = (int16_t)tmp_long2;
// update height control gas averaging
FilterHCGas = (FilterHCGas * (HC_GAS_AVERAGE - 1) + HCGas) / HC_GAS_AVERAGE;
// limit height control gas pd-control output
LIMIT_MIN_MAX(FilterHCGas, EE_Parameter.Hoehe_MinGas * STICK_GAIN, (MAX_GAS - 20) * STICK_GAIN);
// set GasMischanteil to HeightControlGasFilter
if(EE_Parameter.ExtraConfig & CFG2_HEIGHT_LIMIT)
{ // old version
LIMIT_MAX(FilterHCGas, GasMischanteil); // nicht mehr als Gas
GasMischanteil = FilterHCGas;
}
else GasMischanteil = FilterHCGas + (GasMischanteil - HoverGas) / 4; // only in Vario-Mode
}
}// EOF height control active
else // HC not active
{
//update hoover gas stick value when HC is not active
if(!EE_Parameter.Hoehe_StickNeutralPoint)
{
StickGasHover = HoverGas/STICK_GAIN; // rescale back to stick value
StickGasHover = (StickGasHover * UBat) / BattLowVoltageWarning;
}
else StickGasHover = EE_Parameter.Hoehe_StickNeutralPoint;
LIMIT_MIN_MAX(StickGasHover, 70, 150); // reserve some range for trim up and down
FilterHCGas = GasMischanteil;
// set both flags to indicate no vario mode
FC_StatusFlags |= (FC_STATUS_VARIO_TRIM_UP|FC_STATUS_VARIO_TRIM_DOWN);
}
 
// Hover gas estimation by averaging gas control output on small z-velocities
// this is done only if height contol option is selected in global config and aircraft is flying
if((FC_StatusFlags & FC_STATUS_FLY))// && !(FC_SatusFlags & FC_STATUS_EMERGENCY_LANDING))
{
if(HoverGasFilter == 0 || StartTrigger == 1) HoverGasFilter = HOVER_GAS_AVERAGE * (unsigned long)(GasMischanteil); // init estimation
if(StartTrigger == 1) StartTrigger = 2;
tmp_long2 = (int32_t)GasMischanteil; // take current thrust
tmp_long2 *= CosAttitude; // apply attitude projection
tmp_long2 /= 8192;
// average vertical projected thrust
if(modell_fliegt < 4000) // the first 8 seconds
{ // reduce the time constant of averaging by factor of 4 to get much faster a stable value
HoverGasFilter -= HoverGasFilter/(HOVER_GAS_AVERAGE/16L);
HoverGasFilter += 16L * tmp_long2;
}
if(modell_fliegt < 8000) // the first 16 seconds
{ // reduce the time constant of averaging by factor of 2 to get much faster a stable value
HoverGasFilter -= HoverGasFilter/(HOVER_GAS_AVERAGE/4L);
HoverGasFilter += 4L * tmp_long2;
}
else //later
if(abs(VarioMeter) < 100) // only on small vertical speed
{
HoverGasFilter -= HoverGasFilter/HOVER_GAS_AVERAGE;
HoverGasFilter += tmp_long2;
}
HoverGas = (int16_t)(HoverGasFilter/HOVER_GAS_AVERAGE);
if(EE_Parameter.Hoehe_HoverBand)
{
int16_t band;
band = HoverGas / EE_Parameter.Hoehe_HoverBand; // the higher the parameter the smaller the range
HoverGasMin = HoverGas - band;
HoverGasMax = HoverGas + band;
}
else
{ // no limit
HoverGasMin = 0;
HoverGasMax = 1023;
}
}
else
{
StartTrigger = 0;
HoverGasFilter = 0;
HoverGas = 0;
}
}// EOF ParamSet.GlobalConfig & CFG_HEIGHT_CONTROL
else
{
// set undefined state to indicate vario off
FC_StatusFlags |= (FC_STATUS_VARIO_TRIM_UP|FC_STATUS_VARIO_TRIM_DOWN);
} // EOF no height control
 
// limit gas to parameter setting
LIMIT_MIN(GasMischanteil, (MIN_GAS + 10) * STICK_GAIN);
if(GasMischanteil > (MAX_GAS - 20) * STICK_GAIN) GasMischanteil = (MAX_GAS - 20) * STICK_GAIN;
 
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// all BL-Ctrl connected?
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
if(MissingMotor || Capacity.MinOfMaxPWM != 255)
if(modell_fliegt > 1 && modell_fliegt < 50 && GasMischanteil > 0)
{
modell_fliegt = 1;
GasMischanteil = (MIN_GAS + 10) * STICK_GAIN;
}
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// + Mischer und PI-Regler
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
DebugOut.Analog[7] = GasMischanteil;
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// Gier-Anteil
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
GierMischanteil = MesswertGier - sollGier * STICK_GAIN; // Regler für Gier
#define MIN_GIERGAS (40*STICK_GAIN) // unter diesem Gaswert trotzdem Gieren
if(GasMischanteil > MIN_GIERGAS)
{
if(GierMischanteil > (GasMischanteil / 2)) GierMischanteil = GasMischanteil / 2;
if(GierMischanteil < -(GasMischanteil / 2)) GierMischanteil = -(GasMischanteil / 2);
}
else
{
if(GierMischanteil > (MIN_GIERGAS / 2)) GierMischanteil = MIN_GIERGAS / 2;
if(GierMischanteil < -(MIN_GIERGAS / 2)) GierMischanteil = -(MIN_GIERGAS / 2);
}
tmp_int = MAX_GAS*STICK_GAIN;
if(GierMischanteil > ((tmp_int - GasMischanteil))) GierMischanteil = ((tmp_int - GasMischanteil));
if(GierMischanteil < -((tmp_int - GasMischanteil))) GierMischanteil = -((tmp_int - GasMischanteil));
 
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// Nick-Achse
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
DiffNick = MesswertNick - StickNick; // Differenz bestimmen
if(IntegralFaktor) SummeNick += IntegralNickMalFaktor - StickNick; // I-Anteil bei Winkelregelung
else SummeNick += DiffNick; // I-Anteil bei HH
if(SummeNick > (STICK_GAIN * 16000L)) SummeNick = (STICK_GAIN * 16000L);
if(SummeNick < -(16000L * STICK_GAIN)) SummeNick = -(16000L * STICK_GAIN);
 
if(EE_Parameter.Gyro_Stability <= 8) pd_ergebnis_nick = (EE_Parameter.Gyro_Stability * DiffNick) / 8; // PI-Regler für Nick
else pd_ergebnis_nick = ((EE_Parameter.Gyro_Stability / 2) * DiffNick) / 4; // Überlauf verhindern
pd_ergebnis_nick += SummeNick / Ki;
 
tmp_int = (long)((long)Parameter_DynamicStability * (long)(GasMischanteil + abs(GierMischanteil)/2)) / 64;
if(pd_ergebnis_nick > tmp_int) pd_ergebnis_nick = tmp_int;
if(pd_ergebnis_nick < -tmp_int) pd_ergebnis_nick = -tmp_int;
 
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// Roll-Achse
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
DiffRoll = MesswertRoll - StickRoll; // Differenz bestimmen
if(IntegralFaktor) SummeRoll += IntegralRollMalFaktor - StickRoll;// I-Anteil bei Winkelregelung
else SummeRoll += DiffRoll; // I-Anteil bei HH
if(SummeRoll > (STICK_GAIN * 16000L)) SummeRoll = (STICK_GAIN * 16000L);
if(SummeRoll < -(16000L * STICK_GAIN)) SummeRoll = -(16000L * STICK_GAIN);
 
if(EE_Parameter.Gyro_Stability <= 8) pd_ergebnis_roll = (EE_Parameter.Gyro_Stability * DiffRoll) / 8; // PI-Regler für Roll
else pd_ergebnis_roll = ((EE_Parameter.Gyro_Stability / 2) * DiffRoll) / 4; // Überlauf verhindern
pd_ergebnis_roll += SummeRoll / Ki;
tmp_int = (long)((long)Parameter_DynamicStability * (long)(GasMischanteil + abs(GierMischanteil)/2)) / 64;
if(pd_ergebnis_roll > tmp_int) pd_ergebnis_roll = tmp_int;
if(pd_ergebnis_roll < -tmp_int) pd_ergebnis_roll = -tmp_int;
 
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// Universal Mixer
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
for(i=0; i<MAX_MOTORS; i++)
{
signed int tmp_int;
if(Mixer.Motor[i][0] > 0)
{
// Gas
if(Mixer.Motor[i][0] == 64) tmp_int = GasMischanteil; else tmp_int = ((long)GasMischanteil * Mixer.Motor[i][0]) / 64L;
// Nick
if(Mixer.Motor[i][1] == 64) tmp_int += pd_ergebnis_nick;
else if(Mixer.Motor[i][1] == -64) tmp_int -= pd_ergebnis_nick;
else tmp_int += ((long)pd_ergebnis_nick * Mixer.Motor[i][1]) / 64L;
// Roll
if(Mixer.Motor[i][2] == 64) tmp_int += pd_ergebnis_roll;
else if(Mixer.Motor[i][2] == -64) tmp_int -= pd_ergebnis_roll;
else tmp_int += ((long)pd_ergebnis_roll * Mixer.Motor[i][2]) / 64L;
// Gier
if(Mixer.Motor[i][3] == 64) tmp_int += GierMischanteil;
else if(Mixer.Motor[i][3] == -64) tmp_int -= GierMischanteil;
else tmp_int += ((long)GierMischanteil * Mixer.Motor[i][3]) / 64L;
 
if(tmp_int > tmp_motorwert[i]) tmp_int = (tmp_motorwert[i] + tmp_int) / 2; // MotorSmoothing
else tmp_int = 2 * tmp_int - tmp_motorwert[i]; // MotorSmoothing
 
LIMIT_MIN_MAX(tmp_int,(int) MIN_GAS * 4,(int) MAX_GAS * 4);
Motor[i].SetPoint = tmp_int / 4;
Motor[i].SetPointLowerBits = (tmp_int % 4)<<1; // (3 bits total)
tmp_motorwert[i] = tmp_int;
}
else
{
Motor[i].SetPoint = 0;
Motor[i].SetPointLowerBits = 0;
}
}
}
/branches/metro/v0.82a metro_Akku+/fc.c.bak
0,0 → 1,1733
/*#######################################################################################
Flight Control
#######################################################################################*/
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// + Copyright (c) Holger Buss, Ingo Busker
// + Nur für den privaten Gebrauch / NON-COMMERCIAL USE ONLY
// + www.MikroKopter.com
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// + Es gilt für das gesamte Projekt (Hardware, Software, Binärfiles, Sourcecode und Dokumentation),
// + dass eine Nutzung (auch auszugsweise) nur für den privaten (nicht-kommerziellen) Gebrauch zulässig ist.
// + Sollten direkte oder indirekte kommerzielle Absichten verfolgt werden, ist mit uns (info@mikrokopter.de) Kontakt
// + bzgl. der Nutzungsbedingungen aufzunehmen.
// + Eine kommerzielle Nutzung ist z.B.Verkauf von MikroKoptern, Bestückung und Verkauf von Platinen oder Bausätzen,
// + Verkauf von Luftbildaufnahmen, usw.
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// + Werden Teile des Quellcodes (mit oder ohne Modifikation) weiterverwendet oder veröffentlicht,
// + unterliegen sie auch diesen Nutzungsbedingungen und diese Nutzungsbedingungen incl. Copyright müssen dann beiliegen
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// + Sollte die Software (auch auszugesweise) oder sonstige Informationen des MikroKopter-Projekts
// + auf anderen Webseiten oder sonstigen Medien veröffentlicht werden, muss unsere Webseite "http://www.mikrokopter.de"
// + eindeutig als Ursprung verlinkt werden
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// + Keine Gewähr auf Fehlerfreiheit, Vollständigkeit oder Funktion
// + Benutzung auf eigene Gefahr
// + Wir übernehmen keinerlei Haftung für direkte oder indirekte Personen- oder Sachschäden
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// + Die Portierung oder Nutzung der Software (oder Teile davon) auf andere Systeme (ausser der Hardware von www.mikrokopter.de) ist nur
// + mit unserer Zustimmung zulässig
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// + Die Funktion printf_P() unterliegt ihrer eigenen Lizenz und ist hiervon nicht betroffen
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// + Redistributions of source code (with or without modifications) must retain the above copyright notice,
// + this list of conditions and the following disclaimer.
// + * Neither the name of the copyright holders nor the names of contributors may be used to endorse or promote products derived
// + from this software without specific prior written permission.
// + * The use of this project (hardware, software, binary files, sources and documentation) is only permittet
// + for non-commercial use (directly or indirectly)
// + Commercial use (for excample: selling of MikroKopters, selling of PCBs, assembly, ...) is only permitted
// + with our written permission
// + * If sources or documentations are redistributet on other webpages, out webpage (http://www.MikroKopter.de) must be
// + clearly linked as origin
// + * porting the sources to other systems or using the software on other systems (except hardware from www.mikrokopter.de) is not allowed
// + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
// + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
// + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
// + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
// + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
// + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
// + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
// + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
// + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
// + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
// + POSSIBILITY OF SUCH DAMAGE.
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 
#include "main.h"
#include "mymath.h"
#include "isqrt.h"
 
unsigned char h,m,s;
unsigned int BaroExpandActive = 0;
int MesswertNick,MesswertRoll,MesswertGier,MesswertGierBias, RohMesswertNick,RohMesswertRoll;
int TrimNick, TrimRoll;
int AdNeutralNick = 0,AdNeutralRoll = 0,AdNeutralGier = 0,StartNeutralRoll = 0,StartNeutralNick = 0;
int Mittelwert_AccNick, Mittelwert_AccRoll;
unsigned int NeutralAccX=0, NeutralAccY=0;
int NaviAccNick, NaviAccRoll,NaviCntAcc = 0;
int NeutralAccZ = 0;
unsigned char ControlHeading = 0;// in 2°
long IntegralNick = 0,IntegralNick2 = 0;
long IntegralRoll = 0,IntegralRoll2 = 0;
long IntegralAccNick = 0,IntegralAccRoll = 0,IntegralAccZ = 0;
long Integral_Gier = 0;
long Mess_IntegralNick = 0,Mess_IntegralNick2 = 0;
long Mess_IntegralRoll = 0,Mess_IntegralRoll2 = 0;
long Mess_Integral_Gier = 0,Mess_Integral_Gier2 = 0;
long MittelIntegralNick,MittelIntegralRoll,MittelIntegralNick2,MittelIntegralRoll2;
long SummeNick=0,SummeRoll=0;
volatile long Mess_Integral_Hoch = 0;
int KompassValue = 0;
int KompassStartwert = 0;
int KompassRichtung = 0;
unsigned int KompassSignalSchlecht = 500;
unsigned char MAX_GAS,MIN_GAS;
unsigned char HoehenReglerAktiv = 0;
unsigned char TrichterFlug = 0;
long Umschlag180Nick = 250000L, Umschlag180Roll = 250000L;
long ErsatzKompass;
int ErsatzKompassInGrad; // Kompasswert in Grad
int GierGyroFehler = 0;
char GyroFaktor,GyroFaktorGier;
char IntegralFaktor,IntegralFaktorGier;
int DiffNick,DiffRoll;
//int Poti1 = 0, Poti2 = 0, Poti3 = 0, Poti4 = 0, Poti5 = 0, Poti6 = 0, Poti7 = 0, Poti8 = 0;
unsigned char Poti[9] = {0,0,0,0,0,0,0,0};
volatile unsigned char SenderOkay = 0;
int StickNick = 0,StickRoll = 0,StickGier = 0,StickGas = 0;
char MotorenEin = 0,StartTrigger = 0;
long HoehenWert = 0;
long SollHoehe = 0;
int LageKorrekturRoll = 0,LageKorrekturNick = 0, HoverGas = 0;
//float Ki = FAKTOR_I;
int Ki = 10300 / 33;
unsigned char Looping_Nick = 0,Looping_Roll = 0;
unsigned char Looping_Links = 0, Looping_Rechts = 0, Looping_Unten = 0, Looping_Oben = 0;
 
unsigned char Parameter_Luftdruck_D = 48; // Wert : 0-250
unsigned char Parameter_MaxHoehe = 251; // Wert : 0-250
unsigned char Parameter_Hoehe_P = 16; // Wert : 0-32
unsigned char Parameter_Hoehe_ACC_Wirkung = 58; // Wert : 0-250
unsigned char Parameter_KompassWirkung = 64; // Wert : 0-250
unsigned char Parameter_Hoehe_GPS_Z = 64; // Wert : 0-250
unsigned char Parameter_Gyro_D = 8; // Wert : 0-250
unsigned char Parameter_Gyro_P = 150; // Wert : 10-250
unsigned char Parameter_Gyro_I = 150; // Wert : 0-250
unsigned char Parameter_Gyro_Gier_P = 150; // Wert : 10-250
unsigned char Parameter_Gyro_Gier_I = 150; // Wert : 10-250
unsigned char Parameter_Gier_P = 2; // Wert : 1-20
unsigned char Parameter_I_Faktor = 10; // Wert : 1-20
unsigned char Parameter_UserParam1 = 0;
unsigned char Parameter_UserParam2 = 0;
unsigned char Parameter_UserParam3 = 0;
unsigned char Parameter_UserParam4 = 0;
unsigned char Parameter_UserParam5 = 0;
unsigned char Parameter_UserParam6 = 0;
unsigned char Parameter_UserParam7 = 0;
unsigned char Parameter_UserParam8 = 0;
unsigned char Parameter_ServoNickControl = 100;
unsigned char Parameter_ServoRollControl = 100;
unsigned char Parameter_LoopGasLimit = 70;
unsigned char Parameter_AchsKopplung1 = 90;
unsigned char Parameter_AchsKopplung2 = 65;
unsigned char Parameter_CouplingYawCorrection = 64;
//unsigned char Parameter_AchsGegenKopplung1 = 0;
unsigned char Parameter_DynamicStability = 100;
unsigned char Parameter_J16Bitmask; // for the J16 Output
unsigned char Parameter_J16Timing; // for the J16 Output
unsigned char Parameter_J17Bitmask; // for the J17 Output
unsigned char Parameter_J17Timing; // for the J17 Output
unsigned char Parameter_NaviGpsModeControl; // Parameters for the Naviboard
unsigned char Parameter_NaviGpsGain;
unsigned char Parameter_NaviGpsP;
unsigned char Parameter_NaviGpsI;
unsigned char Parameter_NaviGpsD;
unsigned char Parameter_NaviGpsACC;
unsigned char Parameter_NaviOperatingRadius;
unsigned char Parameter_NaviWindCorrection;
unsigned char Parameter_NaviSpeedCompensation;
unsigned char Parameter_ExternalControl;
unsigned char Parameter_Servo3,Parameter_Servo4,Parameter_Servo5;
unsigned char CareFree = 0;
const signed char sintab[31] = { 0, 2, 4, 6, 7, 8, 8, 8, 7, 6, 4, 2, 0, -2, -4, -6, -7, -8, -8, -8, -7, -6, -4, -2, 0, 2, 4, 6, 7, 8, 8};
 
signed int ExternStickNick = 0,ExternStickRoll = 0,ExternStickGier = 0, ExternHoehenValue = -20;
int MaxStickNick = 0,MaxStickRoll = 0;
unsigned int modell_fliegt = 0;
volatile unsigned char FC_StatusFlags = 0;
long GIER_GRAD_FAKTOR = 1291;
signed int KopplungsteilNickRoll,KopplungsteilRollNick;
signed int tmp_motorwert[MAX_MOTORS];
char VarioCharacter = ' ';
 
#define LIMIT_MIN(value, min) {if(value <= min) value = min;}
#define LIMIT_MAX(value, max) {if(value >= max) value = max;}
#define LIMIT_MIN_MAX(value, min, max) {if(value <= min) value = min; else if(value >= max) value = max;}
 
 
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// Debugwerte zuordnen
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
void CopyDebugValues(void)
{
DebugOut.Analog[0] = IntegralNick / (EE_Parameter.GyroAccFaktor * 4);
DebugOut.Analog[1] = IntegralRoll / (EE_Parameter.GyroAccFaktor * 4);
DebugOut.Analog[2] = Mittelwert_AccNick / 4;
DebugOut.Analog[3] = Mittelwert_AccRoll / 4;
DebugOut.Analog[4] = (signed int) AdNeutralGier - AdWertGier;
DebugOut.Analog[5] = HoehenWert/5;
DebugOut.Analog[6] = AdWertAccHoch;//(Mess_Integral_Hoch / 512);// Aktuell_az;
DebugOut.Analog[8] = KompassValue;
DebugOut.Analog[9] = UBat;
DebugOut.Analog[10] = SenderOkay;
DebugOut.Analog[11] = ErsatzKompass / GIER_GRAD_FAKTOR;
DebugOut.Analog[12] = Motor[0].SetPoint;
DebugOut.Analog[13] = Motor[1].SetPoint;
DebugOut.Analog[14] = Motor[2].SetPoint;
DebugOut.Analog[15] = Motor[3].SetPoint;
DebugOut.Analog[20] = ServoNickValue;
DebugOut.Analog[22] = Capacity.ActualCurrent;
DebugOut.Analog[23] = Capacity.UsedCapacity;
DebugOut.Analog[24] =Capacity.RemainCapacity;
// DebugOut.Analog[22] = FromNaviCtrl_Value.GpsZ;
// DebugOut.Analog[29] = FromNaviCtrl_Value.SerialDataOkay;
DebugOut.Analog[29] = Capacity.MinOfMaxPWM;
DebugOut.Analog[30] = GPS_Nick;
DebugOut.Analog[31] = GPS_Roll;
if(VersionInfo.HardwareError[0] || VersionInfo.HardwareError[1]) DebugOut.Status[1] |= 1; else DebugOut.Status[1] &= 0xfe;
 
//if(Capacity.MinOfMaxPWM < 250/* && modell_fliegt > 500*/) { beeptime = 1000; DebugOut.Analog[25]++; }
}
 
 
 
void Piep(unsigned char Anzahl, unsigned int dauer)
{
if(MotorenEin) return; //auf keinen Fall im Flug!
while(Anzahl--)
{
beeptime = dauer;
while(beeptime);
Delay_ms(dauer * 2);
}
}
 
//############################################################################
// Messwerte beim Ermitteln der Nullage
void CalibrierMittelwert(void)
//############################################################################
{
unsigned char i;
if(PlatinenVersion == 13) SucheGyroOffset();
// ADC auschalten, damit die Werte sich nicht während der Berechnung ändern
ANALOG_OFF;
MesswertNick = AdWertNick;
MesswertRoll = AdWertRoll;
MesswertGier = AdWertGier;
Mittelwert_AccNick = ACC_AMPLIFY * AdWertAccNick;
Mittelwert_AccRoll = ACC_AMPLIFY * AdWertAccRoll;
// ADC einschalten
ANALOG_ON;
for(i=0;i<8;i++)
{
int tmp;
tmp = PPM_in[EE_Parameter.Kanalbelegung[K_POTI1 + i]] + 110;
LIMIT_MIN_MAX(tmp, 0, 255);
if(Poti[i] > tmp) Poti[i]--; else if(Poti[i] < tmp) Poti[i]++;
}
Umschlag180Nick = (long) EE_Parameter.WinkelUmschlagNick * 2500L;
Umschlag180Roll = (long) EE_Parameter.WinkelUmschlagRoll * 2500L;
}
 
//############################################################################
// Nullwerte ermitteln
void SetNeutral(unsigned char AccAdjustment)
//############################################################################
{
unsigned char i;
unsigned int gier_neutral=0, nick_neutral=0, roll_neutral=0;
VersionInfo.HardwareError[0] = 0;
HEF4017R_ON;
NeutralAccX = 0;
NeutralAccY = 0;
NeutralAccZ = 0;
 
AdNeutralNick = 0;
AdNeutralRoll = 0;
AdNeutralGier = 0;
 
Parameter_AchsKopplung1 = 0;
Parameter_AchsKopplung2 = 0;
 
ExpandBaro = 0;
 
CalibrierMittelwert();
Delay_ms_Mess(100);
 
CalibrierMittelwert();
 
if((EE_Parameter.GlobalConfig & CFG_HOEHENREGELUNG)) // Höhenregelung aktiviert?
{
if((MessLuftdruck > 950) || (MessLuftdruck < 750)) SucheLuftruckOffset();
}
#define NEUTRAL_FILTER 32
for(i=0; i<NEUTRAL_FILTER; i++)
{
Delay_ms_Mess(10);
gier_neutral += AdWertGier;
nick_neutral += AdWertNick;
roll_neutral += AdWertRoll;
}
AdNeutralNick= (nick_neutral+NEUTRAL_FILTER/2) / (NEUTRAL_FILTER / 8);
AdNeutralRoll= (roll_neutral+NEUTRAL_FILTER/2) / (NEUTRAL_FILTER / 8);
AdNeutralGier= (gier_neutral+NEUTRAL_FILTER/2) / (NEUTRAL_FILTER);
 
StartNeutralRoll = AdNeutralRoll;
StartNeutralNick = AdNeutralNick;
 
if(AccAdjustment)
{
NeutralAccX = abs(Mittelwert_AccNick) / (2*ACC_AMPLIFY);
NeutralAccY = abs(Mittelwert_AccRoll) / (2*ACC_AMPLIFY);
NeutralAccZ = Aktuell_az;
 
// Save ACC neutral settings to eeprom
SetParamWord(PID_ACC_NICK, (uint16_t)NeutralAccX);
SetParamWord(PID_ACC_ROLL, (uint16_t)NeutralAccY);
SetParamWord(PID_ACC_TOP, (uint16_t)NeutralAccZ);
}
else
{
// restore from eeprom
NeutralAccX = (int16_t)GetParamWord(PID_ACC_NICK);
NeutralAccY = (int16_t)GetParamWord(PID_ACC_ROLL);
NeutralAccZ = (int16_t)GetParamWord(PID_ACC_TOP);
// strange settings?
if(((unsigned int) NeutralAccX > 2048) || ((unsigned int) NeutralAccY > 2048) || ((unsigned int) NeutralAccZ > 1024))
{
printf("\n\rACC not calibrated!\r\n");
NeutralAccX = abs(Mittelwert_AccNick) / (2*ACC_AMPLIFY);
NeutralAccY = abs(Mittelwert_AccRoll) / (2*ACC_AMPLIFY);
NeutralAccZ = Aktuell_az;
}
}
 
MesswertNick = 0;
MesswertRoll = 0;
MesswertGier = 0;
Delay_ms_Mess(100);
Mittelwert_AccNick = ACC_AMPLIFY * AdWertAccNick;
Mittelwert_AccRoll = ACC_AMPLIFY * AdWertAccRoll;
IntegralNick = EE_Parameter.GyroAccFaktor * (long)Mittelwert_AccNick;
IntegralRoll = EE_Parameter.GyroAccFaktor * (long)Mittelwert_AccRoll;
Mess_IntegralNick2 = IntegralNick;
Mess_IntegralRoll2 = IntegralRoll;
Mess_Integral_Gier = 0;
StartLuftdruck = Luftdruck;
VarioMeter = 0;
Mess_Integral_Hoch = 0;
KompassStartwert = KompassValue;
GPS_Neutral();
beeptime = 50;
Umschlag180Nick = ((long) EE_Parameter.WinkelUmschlagNick * 2500L) + 15000L;
Umschlag180Roll = ((long) EE_Parameter.WinkelUmschlagRoll * 2500L) + 15000L;
ExternHoehenValue = 0;
ErsatzKompass = KompassValue * GIER_GRAD_FAKTOR;
GierGyroFehler = 0;
SendVersionToNavi = 1;
LED_Init();
FC_StatusFlags |= FC_STATUS_CALIBRATE;
FromNaviCtrl_Value.Kalman_K = -1;
FromNaviCtrl_Value.Kalman_MaxDrift = 0;
FromNaviCtrl_Value.Kalman_MaxFusion = 32;
 
for(i=0;i<8;i++)
{
Poti[i] = PPM_in[EE_Parameter.Kanalbelegung[K_POTI1 + i]] + 110;
}
SenderOkay = 100;
if(ServoActive)
{
HEF4017R_ON;
DDRD |=0x80; // enable J7 -> Servo signal
}
 
if((AdNeutralNick < 150 * 16) || (AdNeutralNick > 850 * 16)) { VersionInfo.HardwareError[0] |= FC_ERROR0_GYRO_NICK; };
if((AdNeutralRoll < 150 * 16) || (AdNeutralRoll > 850 * 16)) { VersionInfo.HardwareError[0] |= FC_ERROR0_GYRO_ROLL; };
if((AdNeutralGier < 150 * 2) || (AdNeutralGier > 850 * 2)) { VersionInfo.HardwareError[0] |= FC_ERROR0_GYRO_YAW; };
if((NeutralAccX < 300) || (NeutralAccX > 750)) { VersionInfo.HardwareError[0] |= FC_ERROR0_ACC_NICK; };
if((NeutralAccY < 300) || (NeutralAccY > 750)) { VersionInfo.HardwareError[0] |= FC_ERROR0_ACC_ROLL; };
if((NeutralAccZ < 512) || (NeutralAccZ > 850)) { VersionInfo.HardwareError[0] |= FC_ERROR0_ACC_TOP; };
}
 
 
//############################################################################
// Bearbeitet die Messwerte
void Mittelwert(void)
//############################################################################
{
static signed long tmpl,tmpl2,tmpl3,tmpl4;
static signed int oldNick, oldRoll, d2Roll, d2Nick;
signed long winkel_nick, winkel_roll;
// unsigned char i;
MesswertGier = (signed int) AdNeutralGier - AdWertGier;
MesswertNick = (signed int) AdWertNickFilter / 8;
MesswertRoll = (signed int) AdWertRollFilter / 8;
RohMesswertNick = MesswertNick;
RohMesswertRoll = MesswertRoll;
 
// Beschleunigungssensor ++++++++++++++++++++++++++++++++++++++++++++++++
Mittelwert_AccNick = (Mittelwert_AccNick * 3 + ((ACC_AMPLIFY * AdWertAccNick))) / 4L;
Mittelwert_AccRoll = (Mittelwert_AccRoll * 3 + ((ACC_AMPLIFY * AdWertAccRoll))) / 4L;
IntegralAccNick += ACC_AMPLIFY * AdWertAccNick;
IntegralAccRoll += ACC_AMPLIFY * AdWertAccRoll;
NaviAccNick += AdWertAccNick;
NaviAccRoll += AdWertAccRoll;
NaviCntAcc++;
IntegralAccZ += Aktuell_az - NeutralAccZ;
 
//++++++++++++++++++++++++++++++++++++++++++++++++
// ADC einschalten
ANALOG_ON;
AdReady = 0;
//++++++++++++++++++++++++++++++++++++++++++++++++
 
if(Mess_IntegralRoll > 93000L) winkel_roll = 93000L;
else if(Mess_IntegralRoll <-93000L) winkel_roll = -93000L;
else winkel_roll = Mess_IntegralRoll;
 
if(Mess_IntegralNick > 93000L) winkel_nick = 93000L;
else if(Mess_IntegralNick <-93000L) winkel_nick = -93000L;
else winkel_nick = Mess_IntegralNick;
 
// Gier ++++++++++++++++++++++++++++++++++++++++++++++++
Mess_Integral_Gier += MesswertGier;
ErsatzKompass += MesswertGier;
// Kopplungsanteil +++++++++++++++++++++++++++++++++++++
if(!Looping_Nick && !Looping_Roll && (EE_Parameter.GlobalConfig & CFG_ACHSENKOPPLUNG_AKTIV))
{
tmpl3 = (MesswertRoll * winkel_nick) / 2048L;
tmpl3 *= Parameter_AchsKopplung2; //65
tmpl3 /= 4096L;
tmpl4 = (MesswertNick * winkel_roll) / 2048L;
tmpl4 *= Parameter_AchsKopplung2; //65
tmpl4 /= 4096L;
KopplungsteilNickRoll = tmpl3;
KopplungsteilRollNick = tmpl4;
tmpl4 -= tmpl3;
ErsatzKompass += tmpl4;
if(!Parameter_CouplingYawCorrection) Mess_Integral_Gier -= tmpl4/2; // Gier nachhelfen
 
tmpl = ((MesswertGier + tmpl4) * winkel_nick) / 2048L;
tmpl *= Parameter_AchsKopplung1; // 90
tmpl /= 4096L;
tmpl2 = ((MesswertGier + tmpl4) * winkel_roll) / 2048L;
tmpl2 *= Parameter_AchsKopplung1;
tmpl2 /= 4096L;
if(abs(MesswertGier) > 64) if(labs(tmpl) > 128 || labs(tmpl2) > 128) TrichterFlug = 1;
//MesswertGier += (Parameter_CouplingYawCorrection * tmpl4) / 256;
}
else tmpl = tmpl2 = KopplungsteilNickRoll = KopplungsteilRollNick = 0;
TrimRoll = tmpl - tmpl2 / 100L;
TrimNick = -tmpl2 + tmpl / 100L;
// Kompasswert begrenzen ++++++++++++++++++++++++++++++++++++++++++++++++
if(ErsatzKompass >= (360L * GIER_GRAD_FAKTOR)) ErsatzKompass -= 360L * GIER_GRAD_FAKTOR; // 360° Umschlag
if(ErsatzKompass < 0) ErsatzKompass += 360L * GIER_GRAD_FAKTOR;
// Roll ++++++++++++++++++++++++++++++++++++++++++++++++
Mess_IntegralRoll2 += MesswertRoll + TrimRoll;
Mess_IntegralRoll += MesswertRoll + TrimRoll - LageKorrekturRoll;
if(Mess_IntegralRoll > Umschlag180Roll)
{
Mess_IntegralRoll = -(Umschlag180Roll - 25000L);
Mess_IntegralRoll2 = Mess_IntegralRoll;
}
if(Mess_IntegralRoll <-Umschlag180Roll)
{
Mess_IntegralRoll = (Umschlag180Roll - 25000L);
Mess_IntegralRoll2 = Mess_IntegralRoll;
}
// Nick ++++++++++++++++++++++++++++++++++++++++++++++++
Mess_IntegralNick2 += MesswertNick + TrimNick;
Mess_IntegralNick += MesswertNick + TrimNick - LageKorrekturNick;
if(Mess_IntegralNick > Umschlag180Nick)
{
Mess_IntegralNick = -(Umschlag180Nick - 25000L);
Mess_IntegralNick2 = Mess_IntegralNick;
}
if(Mess_IntegralNick <-Umschlag180Nick)
{
Mess_IntegralNick = (Umschlag180Nick - 25000L);
Mess_IntegralNick2 = Mess_IntegralNick;
}
 
Integral_Gier = Mess_Integral_Gier;
IntegralNick = Mess_IntegralNick;
IntegralRoll = Mess_IntegralRoll;
IntegralNick2 = Mess_IntegralNick2;
IntegralRoll2 = Mess_IntegralRoll2;
 
#define D_LIMIT 128
 
MesswertNick = HiResNick / 8;
MesswertRoll = HiResRoll / 8;
 
if(AdWertNick < 15) MesswertNick = -1000; if(AdWertNick < 7) MesswertNick = -2000;
if(PlatinenVersion == 10) { if(AdWertNick > 1010) MesswertNick = +1000; if(AdWertNick > 1017) MesswertNick = +2000; }
else { if(AdWertNick > 2000) MesswertNick = +1000; if(AdWertNick > 2015) MesswertNick = +2000; }
if(AdWertRoll < 15) MesswertRoll = -1000; if(AdWertRoll < 7) MesswertRoll = -2000;
if(PlatinenVersion == 10) { if(AdWertRoll > 1010) MesswertRoll = +1000; if(AdWertRoll > 1017) MesswertRoll = +2000; }
else { if(AdWertRoll > 2000) MesswertRoll = +1000; if(AdWertRoll > 2015) MesswertRoll = +2000; }
 
if(Parameter_Gyro_D)
{
d2Nick = HiResNick - oldNick;
oldNick = (oldNick + HiResNick)/2;
if(d2Nick > D_LIMIT) d2Nick = D_LIMIT;
else if(d2Nick < -D_LIMIT) d2Nick = -D_LIMIT;
 
d2Roll = HiResRoll - oldRoll;
oldRoll = (oldRoll + HiResRoll)/2;
if(d2Roll > D_LIMIT) d2Roll = D_LIMIT;
else if(d2Roll < -D_LIMIT) d2Roll = -D_LIMIT;
 
MesswertNick += (d2Nick * (signed int) Parameter_Gyro_D) / 16;
MesswertRoll += (d2Roll * (signed int) Parameter_Gyro_D) / 16;
HiResNick += (d2Nick * (signed int) Parameter_Gyro_D);
HiResRoll += (d2Roll * (signed int) Parameter_Gyro_D);
}
 
if(RohMesswertRoll > 0) TrimRoll += ((long) abs(KopplungsteilNickRoll) * Parameter_CouplingYawCorrection) / 64L;
else TrimRoll -= ((long) abs(KopplungsteilNickRoll) * Parameter_CouplingYawCorrection) / 64L;
if(RohMesswertNick > 0) TrimNick += ((long) abs(KopplungsteilRollNick) * Parameter_CouplingYawCorrection) / 64L;
else TrimNick -= ((long) abs(KopplungsteilRollNick) * Parameter_CouplingYawCorrection) / 64L;
 
if(EE_Parameter.GlobalConfig & CFG_DREHRATEN_BEGRENZER && !Looping_Nick && !Looping_Roll)
{
if(RohMesswertNick > 256) MesswertNick += 1 * (RohMesswertNick - 256);
else if(RohMesswertNick < -256) MesswertNick += 1 * (RohMesswertNick + 256);
if(RohMesswertRoll > 256) MesswertRoll += 1 * (RohMesswertRoll - 256);
else if(RohMesswertRoll < -256) MesswertRoll += 1 * (RohMesswertRoll + 256);
}
}
 
//############################################################################
// Senden der Motorwerte per I2C-Bus
void SendMotorData(void)
//############################################################################
{
unsigned char i;
if(!MotorenEin)
{
FC_StatusFlags &= ~(FC_STATUS_MOTOR_RUN | FC_STATUS_FLY);
for(i=0;i<MAX_MOTORS;i++)
{
if(!PC_MotortestActive) MotorTest[i] = 0;
Motor[i].SetPoint = MotorTest[i];
Motor[i].SetPointLowerBits = 0;
/*
Motor[i].SetPoint = MotorTest[i] / 4; // testing the high resolution
Motor[i].SetPointLowerBits = MotorTest[i] % 4;
*/
}
if(PC_MotortestActive) PC_MotortestActive--;
}
else FC_StatusFlags |= FC_STATUS_MOTOR_RUN;
 
if(I2C_TransferActive)
{
I2C_TransferActive = 0; // enable for the next time
}
else
{
motor_write = 0;
I2C_Start(TWI_STATE_MOTOR_TX); //Start I2C Interrupt Mode
}
}
 
 
 
//############################################################################
// Trägt ggf. das Poti als Parameter ein
void ParameterZuordnung(void)
//############################################################################
{
unsigned char tmp,i;
#define CHK_POTI(b,a) {if(a < 248) b = a; else b = Poti[255 - a];}
#define CHK_POTI_MM(b,a,min,max) {CHK_POTI(b,a); LIMIT_MIN_MAX(b, min, max);}
for(i=0;i<8;i++)
{
int tmp2;
tmp2 = PPM_in[EE_Parameter.Kanalbelegung[K_POTI1 + i]] + 110;
if(tmp2 > 255) tmp2 = 255; else if(tmp2 < 0) tmp2 = 0;
if(tmp2 != Poti[i])
{
Poti[i] += (tmp2 - Poti[i]) / 4;
if(Poti[i] > tmp2) Poti[i]--;
else Poti[i]++;
}
}
CHK_POTI_MM(Parameter_Luftdruck_D,EE_Parameter.Luftdruck_D,0,100);
CHK_POTI_MM(Parameter_Hoehe_P,EE_Parameter.Hoehe_P,0,100);
CHK_POTI_MM(Parameter_Gyro_P,EE_Parameter.Gyro_P,10,255);
CHK_POTI_MM(Parameter_J16Timing,EE_Parameter.J16Timing,1,255);
CHK_POTI_MM(Parameter_J17Timing,EE_Parameter.J17Timing,1,255);
CHK_POTI(Parameter_Servo3,EE_Parameter.Servo3);
CHK_POTI(Parameter_Servo4,EE_Parameter.Servo4);
CHK_POTI(Parameter_Servo5,EE_Parameter.Servo5);
CHK_POTI(Parameter_MaxHoehe,EE_Parameter.MaxHoehe);
CHK_POTI(Parameter_MaxHoehe,EE_Parameter.MaxHoehe);
CHK_POTI(Parameter_Hoehe_ACC_Wirkung,EE_Parameter.Hoehe_ACC_Wirkung);
CHK_POTI(Parameter_Hoehe_GPS_Z,EE_Parameter.Hoehe_GPS_Z);
CHK_POTI(Parameter_KompassWirkung,EE_Parameter.KompassWirkung);
CHK_POTI(Parameter_Gyro_I,EE_Parameter.Gyro_I);
CHK_POTI(Parameter_Gyro_D,EE_Parameter.Gyro_D);
CHK_POTI(Parameter_Gyro_Gier_P,EE_Parameter.Gyro_Gier_P);
CHK_POTI(Parameter_Gyro_Gier_I,EE_Parameter.Gyro_Gier_I);
CHK_POTI(Parameter_I_Faktor,EE_Parameter.I_Faktor);
CHK_POTI(Parameter_UserParam1,EE_Parameter.UserParam1);
CHK_POTI(Parameter_UserParam2,EE_Parameter.UserParam2);
CHK_POTI(Parameter_UserParam3,EE_Parameter.UserParam3);
CHK_POTI(Parameter_UserParam4,EE_Parameter.UserParam4);
CHK_POTI(Parameter_UserParam5,EE_Parameter.UserParam5);
CHK_POTI(Parameter_UserParam6,EE_Parameter.UserParam6);
CHK_POTI(Parameter_UserParam7,EE_Parameter.UserParam7);
CHK_POTI(Parameter_UserParam8,EE_Parameter.UserParam8);
CHK_POTI(Parameter_ServoNickControl,EE_Parameter.ServoNickControl);
CHK_POTI(Parameter_ServoRollControl,EE_Parameter.ServoRollControl);
CHK_POTI(Parameter_LoopGasLimit,EE_Parameter.LoopGasLimit);
CHK_POTI(Parameter_AchsKopplung1,EE_Parameter.AchsKopplung1);
CHK_POTI(Parameter_AchsKopplung2,EE_Parameter.AchsKopplung2);
CHK_POTI(Parameter_CouplingYawCorrection,EE_Parameter.CouplingYawCorrection);
// CHK_POTI(Parameter_AchsGegenKopplung1,EE_Parameter.AchsGegenKopplung1,0,255);
CHK_POTI(Parameter_DynamicStability,EE_Parameter.DynamicStability);
CHK_POTI(Parameter_ExternalControl,EE_Parameter.ExternalControl);
Ki = 10300 / (Parameter_I_Faktor + 1);
MAX_GAS = EE_Parameter.Gas_Max;
MIN_GAS = EE_Parameter.Gas_Min;
 
tmp = EE_Parameter.OrientationModeControl;
if(tmp > 50)
{
#ifdef SWITCH_LEARNS_CAREFREE
if(!CareFree) ControlHeading = (((int) EE_Parameter.OrientationAngle * 15 + KompassValue) % 360) / 2;
#endif
CareFree = 1;
if(tmp >= 248 && Poti[255 - tmp] < 50) CareFree = 0;
if(FromNaviCtrl.CompassValue < 0 && CareFree) VersionInfo.HardwareError[0] |= FC_ERROR0_CAREFREE; else VersionInfo.HardwareError[0] &= ~FC_ERROR0_CAREFREE;
}
else CareFree = 0;
 
if(FromNaviCtrl.CompassValue < 0 && MotorenEin && CareFree && BeepMuster == 0xffff) // ungültiger Kompasswert
{
beeptime = 15000;
BeepMuster = 0xA400;
CareFree = 0;
}
 
if(CareFree) {if(Parameter_AchsKopplung1 < 210) Parameter_AchsKopplung1 += 30;}
}
 
//############################################################################
//
void MotorRegler(void)
//############################################################################
{
int pd_ergebnis_nick,pd_ergebnis_roll,tmp_int, tmp_int2;
int GierMischanteil,GasMischanteil;
static long sollGier = 0,tmp_long,tmp_long2;
static long IntegralFehlerNick = 0;
static long IntegralFehlerRoll = 0;
static unsigned int RcLostTimer;
static unsigned char delay_neutral = 0;
static unsigned char delay_einschalten = 0,delay_ausschalten = 0;
static unsigned char calibration_done = 0;
static char NeueKompassRichtungMerken = 0;
static long ausgleichNick, ausgleichRoll;
int IntegralNickMalFaktor,IntegralRollMalFaktor;
unsigned char i;
Mittelwert();
GRN_ON;
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// Gaswert ermitteln
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
GasMischanteil = StickGas;
if(GasMischanteil < MIN_GAS + 10) GasMischanteil = MIN_GAS + 10;
 
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// Empfang schlecht
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
if(SenderOkay < 100)
{
if(RcLostTimer) RcLostTimer--;
else
{
MotorenEin = 0;
FC_StatusFlags &= ~FC_STATUS_EMERGENCY_LANDING;
}
ROT_ON;
if(modell_fliegt > 1000) // wahrscheinlich in der Luft --> langsam absenken
{
GasMischanteil = EE_Parameter.NotGas;
FC_StatusFlags |= FC_STATUS_EMERGENCY_LANDING;
PPM_diff[EE_Parameter.Kanalbelegung[K_NICK]] = 0;
PPM_diff[EE_Parameter.Kanalbelegung[K_ROLL]] = 0;
PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] = 0;
PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]] = 0;
PPM_in[EE_Parameter.Kanalbelegung[K_GIER]] = 0;
}
else MotorenEin = 0;
}
else
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// Emfang gut
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
if(SenderOkay > 140)
{
FC_StatusFlags &= ~FC_STATUS_EMERGENCY_LANDING;
RcLostTimer = EE_Parameter.NotGasZeit * 50;
if(GasMischanteil > 40 && MotorenEin)
{
if(modell_fliegt < 0xffff) modell_fliegt++;
}
if((modell_fliegt < 256))
{
SummeNick = 0;
SummeRoll = 0;
sollGier = 0;
Mess_Integral_Gier = 0;
if(modell_fliegt == 250)
{
NeueKompassRichtungMerken = 1;
}
} else FC_StatusFlags |= FC_STATUS_FLY;
 
if((PPM_in[EE_Parameter.Kanalbelegung[K_GAS]] > 80) && MotorenEin == 0)
{
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// auf Nullwerte kalibrieren
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
if(PPM_in[EE_Parameter.Kanalbelegung[K_GIER]] > 75) // Neutralwerte
{
if(++delay_neutral > 200) // nicht sofort
{
GRN_OFF;
MotorenEin = 0;
delay_neutral = 0;
modell_fliegt = 0;
if(PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] > 70 || abs(PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]]) > 70)
{
unsigned char setting=1;
if(PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]] > 70 && PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] < 70) setting = 1;
if(PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]] > 70 && PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] > 70) setting = 2;
if(PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]] < 70 && PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] > 70) setting = 3;
if(PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]] <-70 && PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] > 70) setting = 4;
if(PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]] <-70 && PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] < 70) setting = 5;
SetActiveParamSet(setting); // aktiven Datensatz merken
}
if(abs(PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]]) < 30 && PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] < -70)
{
WinkelOut.CalcState = 1;
beeptime = 1000;
}
else
{
ParamSet_ReadFromEEProm(GetActiveParamSet());
LipoDetection(0);
LIBFC_ReceiverInit(EE_Parameter.Receiver);
if((EE_Parameter.GlobalConfig & CFG_HOEHENREGELUNG)) // Höhenregelung aktiviert?
{
if((MessLuftdruck > 950) || (MessLuftdruck < 750)) SucheLuftruckOffset();
}
ServoActive = 0;
SetNeutral(0);
calibration_done = 1;
ServoActive = 1;
DDRD |=0x80; // enable J7 -> Servo signal
Piep(GetActiveParamSet(),120);
}
}
}
else
if(PPM_in[EE_Parameter.Kanalbelegung[K_GIER]] < -75) // ACC Neutralwerte speichern
{
if(++delay_neutral > 200) // nicht sofort
{
GRN_OFF;
MotorenEin = 0;
delay_neutral = 0;
modell_fliegt = 0;
SetNeutral(1);
calibration_done = 1;
Piep(GetActiveParamSet(),120);
}
}
else delay_neutral = 0;
}
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// Gas ist unten
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 
if(PPM_in[EE_Parameter.Kanalbelegung[K_GAS]] < 35-120)
{
// Motoren Starten
if(!MotorenEin)
{
if((PPM_in[EE_Parameter.Kanalbelegung[K_GIER]] < -75) && (PPM_in[EE_Parameter.MotorSafetySwitch] < -75 || EE_Parameter.MotorSafetySwitch == 0))
{
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// Einschalten
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
if(++delay_einschalten > 200)
{
delay_einschalten = 0;
if(!VersionInfo.HardwareError[0] && calibration_done)
{
modell_fliegt = 1;
MotorenEin = 1;
sollGier = 0;
Mess_Integral_Gier = 0;
Mess_Integral_Gier2 = 0;
Mess_IntegralNick = EE_Parameter.GyroAccFaktor * (long)Mittelwert_AccNick;
Mess_IntegralRoll = EE_Parameter.GyroAccFaktor * (long)Mittelwert_AccRoll;
Mess_IntegralNick2 = IntegralNick;
Mess_IntegralRoll2 = IntegralRoll;
SummeNick = 0;
SummeRoll = 0;
FC_StatusFlags |= FC_STATUS_START;
ControlHeading = (((int) EE_Parameter.OrientationAngle * 15 + KompassValue) % 360) / 2;
}
else
{
beeptime = 1500; // indicate missing calibration
}
}
}
else delay_einschalten = 0;
}
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// Auschalten
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
else // only if motors are running
{
if((PPM_in[EE_Parameter.Kanalbelegung[K_GIER]] > 75) && (PPM_in[EE_Parameter.MotorSafetySwitch] < -75 || EE_Parameter.MotorSafetySwitch == 0))
{
if(++delay_ausschalten > 200) // nicht sofort
{
MotorenEin = 0;
delay_ausschalten = 0;
modell_fliegt = 0;
}
}
else delay_ausschalten = 0;
}
}
}
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// neue Werte von der Funke
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 
if(!NewPpmData-- || (FC_StatusFlags & FC_STATUS_EMERGENCY_LANDING))
{
static int stick_nick,stick_roll;
ParameterZuordnung();
stick_nick = (stick_nick * 3 + PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] * EE_Parameter.Stick_P) / 4;
stick_nick += PPM_diff[EE_Parameter.Kanalbelegung[K_NICK]] * EE_Parameter.Stick_D;
stick_roll = (stick_roll * 3 + PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]] * EE_Parameter.Stick_P) / 4;
stick_roll += PPM_diff[EE_Parameter.Kanalbelegung[K_ROLL]] * EE_Parameter.Stick_D;
 
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// CareFree und freie Wahl der vorderen Richtung
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
if(CareFree)
{
signed int nick, roll;
nick = stick_nick / 4;
roll = stick_roll / 4;
StickNick = ((FromNC_Rotate_C * nick) + (FromNC_Rotate_S * roll)) / (32 / 4);
StickRoll = ((FromNC_Rotate_C * roll) - (FromNC_Rotate_S * nick)) / (32 / 4);
}
else
{
FromNC_Rotate_C = sintab[EE_Parameter.OrientationAngle + 6];
FromNC_Rotate_S = sintab[EE_Parameter.OrientationAngle];
StickNick = ((FromNC_Rotate_C * stick_nick) + (FromNC_Rotate_S * stick_roll)) / 8;
StickRoll = ((FromNC_Rotate_C * stick_roll) - (FromNC_Rotate_S * stick_nick)) / 8;
}
 
StickGier = -PPM_in[EE_Parameter.Kanalbelegung[K_GIER]];
if(StickGier > 2) StickGier -= 2; else
if(StickGier < -2) StickGier += 2; else StickGier = 0;
 
StickNick -= (GPS_Nick + GPS_Nick2);
StickRoll -= (GPS_Roll + GPS_Roll2);
StickGas = PPM_in[EE_Parameter.Kanalbelegung[K_GAS]] + 120;
 
GyroFaktor = (Parameter_Gyro_P + 10.0);
IntegralFaktor = Parameter_Gyro_I;
GyroFaktorGier = (Parameter_Gyro_Gier_P + 10.0);
IntegralFaktorGier = Parameter_Gyro_Gier_I;
 
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//+ Analoge Steuerung per Seriell
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
if(ExternControl.Config & 0x01 && Parameter_ExternalControl > 128)
{
StickNick += (int) ExternControl.Nick * (int) EE_Parameter.Stick_P;
StickRoll += (int) ExternControl.Roll * (int) EE_Parameter.Stick_P;
StickGier += ExternControl.Gier;
ExternHoehenValue = (int) ExternControl.Hight * (int)EE_Parameter.Hoehe_Verstaerkung;
if(ExternControl.Gas < StickGas) StickGas = ExternControl.Gas;
}
if(StickGas < 0) StickGas = 0;
 
if(EE_Parameter.GlobalConfig & CFG_HEADING_HOLD) IntegralFaktor = 0;
 
if(abs(StickNick/STICK_GAIN) > MaxStickNick)
{
MaxStickNick = abs(StickNick)/STICK_GAIN;
if(MaxStickNick > 100) MaxStickNick = 100;
}
else MaxStickNick--;
if(abs(StickRoll/STICK_GAIN) > MaxStickRoll)
{
MaxStickRoll = abs(StickRoll)/STICK_GAIN;
if(MaxStickRoll > 100) MaxStickRoll = 100;
}
else MaxStickRoll--;
if(FC_StatusFlags & FC_STATUS_EMERGENCY_LANDING) {MaxStickNick = 0; MaxStickRoll = 0;}
 
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// Looping?
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
if((PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]] > EE_Parameter.LoopThreshold) && EE_Parameter.BitConfig & CFG_LOOP_LINKS) Looping_Links = 1;
else
{
{
if((PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]] < (EE_Parameter.LoopThreshold - EE_Parameter.LoopHysterese))) Looping_Links = 0;
}
}
if((PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]] < -EE_Parameter.LoopThreshold) && EE_Parameter.BitConfig & CFG_LOOP_RECHTS) Looping_Rechts = 1;
else
{
if(Looping_Rechts) // Hysterese
{
if(PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]] > -(EE_Parameter.LoopThreshold - EE_Parameter.LoopHysterese)) Looping_Rechts = 0;
}
}
 
if((PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] > EE_Parameter.LoopThreshold) && EE_Parameter.BitConfig & CFG_LOOP_OBEN) Looping_Oben = 1;
else
{
if(Looping_Oben) // Hysterese
{
if((PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] < (EE_Parameter.LoopThreshold - EE_Parameter.LoopHysterese))) Looping_Oben = 0;
}
}
if((PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] < -EE_Parameter.LoopThreshold) && EE_Parameter.BitConfig & CFG_LOOP_UNTEN) Looping_Unten = 1;
else
{
if(Looping_Unten) // Hysterese
{
if(PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] > -(EE_Parameter.LoopThreshold - EE_Parameter.LoopHysterese)) Looping_Unten = 0;
}
}
 
if(Looping_Links || Looping_Rechts) Looping_Roll = 1; else Looping_Roll = 0;
if(Looping_Oben || Looping_Unten) { Looping_Nick = 1; Looping_Roll = 0; Looping_Links = 0; Looping_Rechts = 0;} else Looping_Nick = 0;
} // Ende neue Funken-Werte
 
if(Looping_Roll || Looping_Nick)
{
if(GasMischanteil > EE_Parameter.LoopGasLimit) GasMischanteil = EE_Parameter.LoopGasLimit;
TrichterFlug = 1;
}
 
 
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// Bei Empfangsausfall im Flug
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
if(FC_StatusFlags & FC_STATUS_EMERGENCY_LANDING)
{
StickGier = 0;
StickNick = 0;
StickRoll = 0;
GyroFaktor = 90;
IntegralFaktor = 120;
GyroFaktorGier = 90;
IntegralFaktorGier = 120;
Looping_Roll = 0;
Looping_Nick = 0;
}
 
 
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// Integrale auf ACC-Signal abgleichen
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#define ABGLEICH_ANZAHL 256L
 
MittelIntegralNick += IntegralNick; // Für die Mittelwertbildung aufsummieren
MittelIntegralRoll += IntegralRoll;
MittelIntegralNick2 += IntegralNick2;
MittelIntegralRoll2 += IntegralRoll2;
 
if(Looping_Nick || Looping_Roll)
{
IntegralAccNick = 0;
IntegralAccRoll = 0;
MittelIntegralNick = 0;
MittelIntegralRoll = 0;
MittelIntegralNick2 = 0;
MittelIntegralRoll2 = 0;
Mess_IntegralNick2 = Mess_IntegralNick;
Mess_IntegralRoll2 = Mess_IntegralRoll;
ZaehlMessungen = 0;
LageKorrekturNick = 0;
LageKorrekturRoll = 0;
}
 
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
if(!Looping_Nick && !Looping_Roll && (Aktuell_az > 512 || MotorenEin))
{
long tmp_long, tmp_long2;
if(FromNaviCtrl_Value.Kalman_K != -1 /*&& !TrichterFlug*/)
{
tmp_long = (long)(IntegralNick / EE_Parameter.GyroAccFaktor - (long)Mittelwert_AccNick);
tmp_long2 = (long)(IntegralRoll / EE_Parameter.GyroAccFaktor - (long)Mittelwert_AccRoll);
tmp_long = (tmp_long * FromNaviCtrl_Value.Kalman_K) / (32 * 16);
tmp_long2 = (tmp_long2 * FromNaviCtrl_Value.Kalman_K) / (32 * 16);
if((MaxStickNick > 64) || (MaxStickRoll > 64))
{
tmp_long /= 2;
tmp_long2 /= 2;
}
if(abs(PPM_in[EE_Parameter.Kanalbelegung[K_GIER]]) > 25)
{
tmp_long /= 3;
tmp_long2 /= 3;
}
if(tmp_long > (long) FromNaviCtrl_Value.Kalman_MaxFusion) tmp_long = (long) FromNaviCtrl_Value.Kalman_MaxFusion;
if(tmp_long < (long)-FromNaviCtrl_Value.Kalman_MaxFusion) tmp_long = (long)-FromNaviCtrl_Value.Kalman_MaxFusion;
if(tmp_long2 > (long) FromNaviCtrl_Value.Kalman_MaxFusion) tmp_long2 = (long) FromNaviCtrl_Value.Kalman_MaxFusion;
if(tmp_long2 < (long)-FromNaviCtrl_Value.Kalman_MaxFusion) tmp_long2 = (long)-FromNaviCtrl_Value.Kalman_MaxFusion;
}
else
{
tmp_long = (long)(IntegralNick / EE_Parameter.GyroAccFaktor - (long)Mittelwert_AccNick);
tmp_long2 = (long)(IntegralRoll / EE_Parameter.GyroAccFaktor - (long)Mittelwert_AccRoll);
tmp_long /= 16;
tmp_long2 /= 16;
if((MaxStickNick > 64) || (MaxStickRoll > 64))
{
tmp_long /= 3;
tmp_long2 /= 3;
}
if(abs(PPM_in[EE_Parameter.Kanalbelegung[K_GIER]]) > 25)
{
tmp_long /= 3;
tmp_long2 /= 3;
}
 
#define AUSGLEICH 32
if(tmp_long > AUSGLEICH) tmp_long = AUSGLEICH;
if(tmp_long < -AUSGLEICH) tmp_long =-AUSGLEICH;
if(tmp_long2 > AUSGLEICH) tmp_long2 = AUSGLEICH;
if(tmp_long2 <-AUSGLEICH) tmp_long2 =-AUSGLEICH;
}
 
Mess_IntegralNick -= tmp_long;
Mess_IntegralRoll -= tmp_long2;
}
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
if(ZaehlMessungen >= ABGLEICH_ANZAHL)
{
static int cnt = 0;
static char last_n_p,last_n_n,last_r_p,last_r_n;
static long MittelIntegralNick_Alt,MittelIntegralRoll_Alt;
if(!Looping_Nick && !Looping_Roll && !TrichterFlug && EE_Parameter.Driftkomp)
{
MittelIntegralNick /= ABGLEICH_ANZAHL;
MittelIntegralRoll /= ABGLEICH_ANZAHL;
IntegralAccNick = (EE_Parameter.GyroAccFaktor * IntegralAccNick) / ABGLEICH_ANZAHL;
IntegralAccRoll = (EE_Parameter.GyroAccFaktor * IntegralAccRoll) / ABGLEICH_ANZAHL;
IntegralAccZ = IntegralAccZ / ABGLEICH_ANZAHL;
#define MAX_I 0
// Nick ++++++++++++++++++++++++++++++++++++++++++++++++
IntegralFehlerNick = (long)(MittelIntegralNick - (long)IntegralAccNick);
ausgleichNick = IntegralFehlerNick / EE_Parameter.GyroAccAbgleich;
// Roll ++++++++++++++++++++++++++++++++++++++++++++++++
IntegralFehlerRoll = (long)(MittelIntegralRoll - (long)IntegralAccRoll);
ausgleichRoll = IntegralFehlerRoll / EE_Parameter.GyroAccAbgleich;
 
LageKorrekturNick = ausgleichNick / ABGLEICH_ANZAHL;
LageKorrekturRoll = ausgleichRoll / ABGLEICH_ANZAHL;
 
if(((MaxStickNick > 64) || (MaxStickRoll > 64) || (abs(PPM_in[EE_Parameter.Kanalbelegung[K_GIER]]) > 25)) && (FromNaviCtrl_Value.Kalman_K == -1))
{
LageKorrekturNick /= 2;
LageKorrekturRoll /= 2;
}
 
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// Gyro-Drift ermitteln
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
MittelIntegralNick2 /= ABGLEICH_ANZAHL;
MittelIntegralRoll2 /= ABGLEICH_ANZAHL;
tmp_long = IntegralNick2 - IntegralNick;
tmp_long2 = IntegralRoll2 - IntegralRoll;
 
IntegralFehlerNick = tmp_long;
IntegralFehlerRoll = tmp_long2;
Mess_IntegralNick2 -= IntegralFehlerNick;
Mess_IntegralRoll2 -= IntegralFehlerRoll;
 
if(EE_Parameter.Driftkomp)
{
if(GierGyroFehler > ABGLEICH_ANZAHL/2) { AdNeutralGier++; }
if(GierGyroFehler <-ABGLEICH_ANZAHL/2) { AdNeutralGier--; }
}
GierGyroFehler = 0;
 
#define FEHLER_LIMIT (ABGLEICH_ANZAHL / 2)
#define FEHLER_LIMIT1 (ABGLEICH_ANZAHL * 2) //4
#define FEHLER_LIMIT2 (ABGLEICH_ANZAHL * 16) //16
#define BEWEGUNGS_LIMIT 20000
// Nick +++++++++++++++++++++++++++++++++++++++++++++++++
cnt = 1;// + labs(IntegralFehlerNick) / 4096;
if(labs(IntegralFehlerNick) > FEHLER_LIMIT1) cnt = 4;
if(labs(MittelIntegralNick_Alt - MittelIntegralNick) < BEWEGUNGS_LIMIT || (FromNaviCtrl_Value.Kalman_MaxDrift > 3*8))
{
if(IntegralFehlerNick > FEHLER_LIMIT2)
{
if(last_n_p)
{
cnt += labs(IntegralFehlerNick) / (FEHLER_LIMIT2 / 8);
ausgleichNick = IntegralFehlerNick / 8;
if(ausgleichNick > 5000) ausgleichNick = 5000;
LageKorrekturNick += ausgleichNick / ABGLEICH_ANZAHL;
}
else last_n_p = 1;
} else last_n_p = 0;
if(IntegralFehlerNick < -FEHLER_LIMIT2)
{
if(last_n_n)
{
cnt += labs(IntegralFehlerNick) / (FEHLER_LIMIT2 / 8);
ausgleichNick = IntegralFehlerNick / 8;
if(ausgleichNick < -5000) ausgleichNick = -5000;
LageKorrekturNick += ausgleichNick / ABGLEICH_ANZAHL;
}
else last_n_n = 1;
} else last_n_n = 0;
}
else
{
cnt = 0;
KompassSignalSchlecht = 1000;
}
if(cnt > EE_Parameter.Driftkomp) cnt = EE_Parameter.Driftkomp;
if(FromNaviCtrl_Value.Kalman_MaxDrift) if(cnt > FromNaviCtrl_Value.Kalman_MaxDrift) cnt = FromNaviCtrl_Value.Kalman_MaxDrift;
if(IntegralFehlerNick > FEHLER_LIMIT) AdNeutralNick += cnt;
if(IntegralFehlerNick < -FEHLER_LIMIT) AdNeutralNick -= cnt;
 
// Roll +++++++++++++++++++++++++++++++++++++++++++++++++
cnt = 1;// + labs(IntegralFehlerRoll) / 4096;
if(labs(IntegralFehlerRoll) > FEHLER_LIMIT1) cnt = 4;
if(labs(MittelIntegralRoll_Alt - MittelIntegralRoll) < BEWEGUNGS_LIMIT || (FromNaviCtrl_Value.Kalman_MaxDrift > 3*8))
{
if(IntegralFehlerRoll > FEHLER_LIMIT2)
{
if(last_r_p)
{
cnt += labs(IntegralFehlerRoll) / (FEHLER_LIMIT2 / 8);
ausgleichRoll = IntegralFehlerRoll / 8;
if(ausgleichRoll > 5000) ausgleichRoll = 5000;
LageKorrekturRoll += ausgleichRoll / ABGLEICH_ANZAHL;
}
else last_r_p = 1;
} else last_r_p = 0;
if(IntegralFehlerRoll < -FEHLER_LIMIT2)
{
if(last_r_n)
{
cnt += labs(IntegralFehlerRoll) / (FEHLER_LIMIT2 / 8);
ausgleichRoll = IntegralFehlerRoll / 8;
if(ausgleichRoll < -5000) ausgleichRoll = -5000;
LageKorrekturRoll += ausgleichRoll / ABGLEICH_ANZAHL;
}
else last_r_n = 1;
} else last_r_n = 0;
} else
{
cnt = 0;
KompassSignalSchlecht = 1000;
}
if(cnt > EE_Parameter.Driftkomp) cnt = EE_Parameter.Driftkomp;
if(FromNaviCtrl_Value.Kalman_MaxDrift) if(cnt > FromNaviCtrl_Value.Kalman_MaxDrift) cnt = FromNaviCtrl_Value.Kalman_MaxDrift;
if(IntegralFehlerRoll > FEHLER_LIMIT) AdNeutralRoll += cnt;
if(IntegralFehlerRoll < -FEHLER_LIMIT) AdNeutralRoll -= cnt;
}
else
{
LageKorrekturRoll = 0;
LageKorrekturNick = 0;
TrichterFlug = 0;
}
 
if(!IntegralFaktor) { LageKorrekturRoll = 0; LageKorrekturNick = 0;} // z.B. bei HH
// +++++++++++++++++++++++++++++++++++++++++++++++++++++
MittelIntegralNick_Alt = MittelIntegralNick;
MittelIntegralRoll_Alt = MittelIntegralRoll;
// +++++++++++++++++++++++++++++++++++++++++++++++++++++
IntegralAccNick = 0;
IntegralAccRoll = 0;
IntegralAccZ = 0;
MittelIntegralNick = 0;
MittelIntegralRoll = 0;
MittelIntegralNick2 = 0;
MittelIntegralRoll2 = 0;
ZaehlMessungen = 0;
} // ZaehlMessungen >= ABGLEICH_ANZAHL
 
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// Gieren
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
if(abs(StickGier) > 15) // war 35
{
KompassSignalSchlecht = 1000;
if(!(EE_Parameter.GlobalConfig & CFG_KOMPASS_FIX))
{
NeueKompassRichtungMerken = 1;
};
}
tmp_int = (long) EE_Parameter.Gier_P * ((long)StickGier * abs(StickGier)) / 512L; // expo y = ax + bx²
tmp_int += (EE_Parameter.Gier_P * StickGier) / 4;
sollGier = tmp_int;
Mess_Integral_Gier -= tmp_int;
if(Mess_Integral_Gier > 50000) Mess_Integral_Gier = 50000; // begrenzen
if(Mess_Integral_Gier <-50000) Mess_Integral_Gier =-50000;
 
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// Kompass
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
if(KompassValue && (EE_Parameter.GlobalConfig & CFG_KOMPASS_AKTIV))
{
int w,v,r,fehler,korrektur;
w = abs(IntegralNick /512); // mit zunehmender Neigung den Einfluss drosseln
v = abs(IntegralRoll /512);
if(v > w) w = v; // grösste Neigung ermitteln
korrektur = w / 8 + 2;
fehler = ((540 + KompassValue - (ErsatzKompass/GIER_GRAD_FAKTOR)) % 360) - 180;
//fehler += MesswertGier / 12;
 
if(!KompassSignalSchlecht && w < 25)
{
GierGyroFehler += fehler;
if(NeueKompassRichtungMerken)
{
ErsatzKompass = KompassValue * GIER_GRAD_FAKTOR;
KompassStartwert = (ErsatzKompass/GIER_GRAD_FAKTOR);
NeueKompassRichtungMerken = 0;
}
}
ErsatzKompass += (fehler * 16) / korrektur;
w = (w * Parameter_KompassWirkung) / 32; // auf die Wirkung normieren
w = Parameter_KompassWirkung - w; // Wirkung ggf drosseln
if(w >= 0)
{
if(!KompassSignalSchlecht)
{
v = 64 + ((MaxStickNick + MaxStickRoll)) / 8;
r = ((540 + (ErsatzKompass/GIER_GRAD_FAKTOR) - KompassStartwert) % 360) - 180;
v = (r * w) / v; // nach Kompass ausrichten
w = 3 * Parameter_KompassWirkung;
if(v > w) v = w; // Begrenzen
else
if(v < -w) v = -w;
Mess_Integral_Gier += v;
}
if(KompassSignalSchlecht) KompassSignalSchlecht--;
}
else KompassSignalSchlecht = 500; // so lange das Signal taub stellen --> ca. 1 sek
}
 
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// Drehgeschwindigkeit und -winkel zu einem Istwert zusammenfassen
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
if(TrichterFlug) { SummeRoll = 0; SummeNick = 0;};
 
if(!Looping_Nick) IntegralNickMalFaktor = (IntegralNick * IntegralFaktor) / (44000 / STICK_GAIN); else IntegralNickMalFaktor = 0;
if(!Looping_Roll) IntegralRollMalFaktor = (IntegralRoll * IntegralFaktor) / (44000 / STICK_GAIN); else IntegralRollMalFaktor = 0;
 
#define TRIM_MAX 200
if(TrimNick > TRIM_MAX) TrimNick = TRIM_MAX; else if(TrimNick <-TRIM_MAX) TrimNick =-TRIM_MAX;
if(TrimRoll > TRIM_MAX) TrimRoll = TRIM_MAX; else if(TrimRoll <-TRIM_MAX) TrimRoll =-TRIM_MAX;
 
MesswertNick = IntegralNickMalFaktor + (long)((long)MesswertNick * GyroFaktor + (long)TrimNick * 128L) / (256L / STICK_GAIN);
MesswertRoll = IntegralRollMalFaktor + (long)((long)MesswertRoll * GyroFaktor + (long)TrimRoll * 128L) / (256L / STICK_GAIN);
MesswertGier = (long)(MesswertGier * 2 * (long)GyroFaktorGier) / (256L / STICK_GAIN) + (long)(Integral_Gier * IntegralFaktorGier) / (2 * (44000 / STICK_GAIN));
 
// Maximalwerte abfangen
// #define MAX_SENSOR (4096*STICK_GAIN)
#define MAX_SENSOR (4096)
if(MesswertNick > MAX_SENSOR) MesswertNick = MAX_SENSOR;
if(MesswertNick < -MAX_SENSOR) MesswertNick = -MAX_SENSOR;
if(MesswertRoll > MAX_SENSOR) MesswertRoll = MAX_SENSOR;
if(MesswertRoll < -MAX_SENSOR) MesswertRoll = -MAX_SENSOR;
if(MesswertGier > MAX_SENSOR) MesswertGier = MAX_SENSOR;
if(MesswertGier < -MAX_SENSOR) MesswertGier = -MAX_SENSOR;
 
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// Höhenregelung
// Die Höhenregelung schwächt lediglich das Gas ab, erhöht es allerdings nicht
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
if(UBat > BattLowVoltageWarning) GasMischanteil = ((unsigned int)GasMischanteil * BattLowVoltageWarning) / UBat; // Gas auf das aktuelle Spannungvieveau beziehen
GasMischanteil *= STICK_GAIN;
// if height control is activated
if((EE_Parameter.GlobalConfig & CFG_HOEHENREGELUNG) && !(Looping_Roll || Looping_Nick)) // Höhenregelung
{
#define HOVER_GAS_AVERAGE 16384L // 16384 * 2ms = 32s averaging
#define HC_GAS_AVERAGE 4 // 4 * 2ms= 8ms averaging
 
#if (defined(__AVR_ATmega1284__) || defined(__AVR_ATmega1284P__))
#define OPA_OFFSET_STEP 15
#else
#define OPA_OFFSET_STEP 10
#endif
int HCGas, HeightDeviation = 0,GasReduction = 0;
static int HeightTrimming = 0; // rate for change of height setpoint
static int FilterHCGas = 0;
static int StickGasHover = 120, HoverGasMin = 0, HoverGasMax = 1023;
static unsigned long HoverGasFilter = 0;
static unsigned char delay = 100, BaroAtUpperLimit = 0, BaroAtLowerLimit = 0;
int CosAttitude; // for projection of hoover gas
 
// get the current hooverpoint
DebugOut.Analog[21] = HoverGas;
 
// Expand the measurement
// measurement of air pressure close to upper limit and no overflow in correction of the new OCR0A value occurs
if(!BaroExpandActive)
{
if(MessLuftdruck > 920)
{ // increase offset
if(OCR0A < (255 - OPA_OFFSET_STEP))
{
ExpandBaro -= 1;
OCR0A = DruckOffsetSetting - OPA_OFFSET_STEP * ExpandBaro; // increase offset to shift ADC down
beeptime = 300;
BaroExpandActive = 350;
}
else
{
BaroAtLowerLimit = 1;
}
}
// measurement of air pressure close to lower limit and
else
if(MessLuftdruck < 100)
{ // decrease offset
if(OCR0A > OPA_OFFSET_STEP)
{
ExpandBaro += 1;
OCR0A = DruckOffsetSetting - OPA_OFFSET_STEP * ExpandBaro; // decrease offset to shift ADC up
beeptime = 300;
BaroExpandActive = 350;
}
else
{
BaroAtUpperLimit = 1;
}
}
else
{
BaroAtUpperLimit = 0;
BaroAtLowerLimit = 0;
}
}
else // delay, because of expanding the Baro-Range
{
// now clear the D-values
SummenHoehe = HoehenWert * SM_FILTER;
VarioMeter = 0;
BaroExpandActive--;
}
 
// if height control is activated by an rc channel
if(EE_Parameter.GlobalConfig & CFG_HOEHEN_SCHALTER) // Regler wird über Schalter gesteuert
{ // check if parameter is less than activation threshold
if(Parameter_MaxHoehe < 50) // for 3 or 2-state switch height control is disabled in lowest position
{ //height control not active
if(!delay--)
{
HoehenReglerAktiv = 0; // disable height control
SollHoehe = HoehenWert; // update SetPoint with current reading
delay = 1;
}
}
else
{ //height control is activated
HoehenReglerAktiv = 1; // enable height control
delay = 200;
}
}
else // no switchable height control
{
SollHoehe = ((int16_t) ExternHoehenValue + (int16_t) Parameter_MaxHoehe) * (int)EE_Parameter.Hoehe_Verstaerkung;
HoehenReglerAktiv = 1;
}
 
// calculate cos of nick and roll angle used for projection of the vertical hoover gas
tmp_int = (int)(IntegralNick/GIER_GRAD_FAKTOR); // nick angle in deg
tmp_int2 = (int)(IntegralRoll/GIER_GRAD_FAKTOR); // roll angle in deg
CosAttitude = (int16_t)ihypot(tmp_int, tmp_int2); // phytagoras gives effective attitude angle in deg
LIMIT_MAX(CosAttitude, 60); // limit effective attitude angle
CosAttitude = c_cos_8192(CosAttitude); // cos of actual attitude
VarioCharacter = ' ';
if(HoehenReglerAktiv && !(FC_StatusFlags & FC_STATUS_EMERGENCY_LANDING))
{
#define HEIGHT_CONTROL_STICKTHRESHOLD 15
// Holger original version
// start of height control algorithm
// the height control is only an attenuation of the actual gas stick.
// I.e. it will work only if the gas stick is higher than the hover gas
// and the hover height will be allways larger than height setpoint.
if((EE_Parameter.ExtraConfig & CFG2_HEIGHT_LIMIT) || !(EE_Parameter.GlobalConfig & CFG_HOEHEN_SCHALTER)) // Regler wird über Schalter gesteuert)
{ // old version
HCGas = GasMischanteil; // take current stick gas as neutral point for the height control
HeightTrimming = 0;
// set both flags to indicate no vario mode
FC_StatusFlags |= (FC_STATUS_VARIO_TRIM_UP|FC_STATUS_VARIO_TRIM_DOWN);
}
else
{
// alternative height control
// PD-Control with respect to hoover point
// the thrust loss out of horizontal attitude is compensated
// the setpoint will be fine adjusted with the gas stick position
if(FC_StatusFlags & FC_STATUS_FLY) // trim setpoint only when flying
{ // gas stick is above hoover point
if(StickGas > (StickGasHover + HEIGHT_CONTROL_STICKTHRESHOLD) && !BaroAtUpperLimit)
{
if(FC_StatusFlags & FC_STATUS_VARIO_TRIM_DOWN)
{
FC_StatusFlags &= ~FC_STATUS_VARIO_TRIM_DOWN;
SollHoehe = HoehenWert; // update setpoint to current heigth
}
FC_StatusFlags |= FC_STATUS_VARIO_TRIM_UP;
HeightTrimming += abs(StickGas - (StickGasHover + HEIGHT_CONTROL_STICKTHRESHOLD));
VarioCharacter = '+';
} // gas stick is below hoover point
else if(StickGas < (StickGasHover - HEIGHT_CONTROL_STICKTHRESHOLD) && !BaroAtLowerLimit )
{
if(FC_StatusFlags & FC_STATUS_VARIO_TRIM_UP)
{
FC_StatusFlags &= ~FC_STATUS_VARIO_TRIM_UP;
SollHoehe = HoehenWert; // update setpoint to current heigth
}
FC_StatusFlags |= FC_STATUS_VARIO_TRIM_DOWN;
HeightTrimming -= abs(StickGas - (StickGasHover - HEIGHT_CONTROL_STICKTHRESHOLD));
VarioCharacter = '-';
}
else // Gas Stick in Hover Range
{
if(FC_StatusFlags & (FC_STATUS_VARIO_TRIM_UP|FC_STATUS_VARIO_TRIM_DOWN))
{
FC_StatusFlags &= ~(FC_STATUS_VARIO_TRIM_UP|FC_STATUS_VARIO_TRIM_DOWN);
HeightTrimming = 0;
SollHoehe = HoehenWert; // update setpoint to current height
if(EE_Parameter.ExtraConfig & CFG2_VARIO_BEEP) beeptime = 500;
if(!StartTrigger && HoehenWert > 50)
{
StartTrigger = 1;
}
}
VarioCharacter = '=';
}
// Trim height set point
if(abs(HeightTrimming) > 512)
{
SollHoehe += (HeightTrimming * EE_Parameter.Hoehe_Verstaerkung)/(5 * 512 / 2); // move setpoint
HeightTrimming = 0;
LIMIT_MIN_MAX(SollHoehe, (HoehenWert-1024), (HoehenWert+1024)); // max. 10m Unterschied
if(EE_Parameter.ExtraConfig & CFG2_VARIO_BEEP) beeptime = 100;
//update hoover gas stick value when setpoint is shifted
if(!EE_Parameter.Hoehe_StickNeutralPoint)
{
StickGasHover = HoverGas/STICK_GAIN; //rescale back to stick value
StickGasHover = (StickGasHover * UBat) / BattLowVoltageWarning;
if(StickGasHover < 70) StickGasHover = 70;
else if(StickGasHover > 150) StickGasHover = 150;
}
}
if(BaroExpandActive) SollHoehe = HoehenWert; // update setpoint to current altitude if Expanding is active
} //if FCFlags & MKFCFLAG_FLY
else
{
SollHoehe = HoehenWert - 400;
if(EE_Parameter.Hoehe_StickNeutralPoint) StickGasHover = EE_Parameter.Hoehe_StickNeutralPoint;
else StickGasHover = 120;
HoverGas = GasMischanteil;
}
HCGas = HoverGas; // take hover gas (neutral point)
}
if(HoehenWert > SollHoehe || !(EE_Parameter.ExtraConfig & CFG2_HEIGHT_LIMIT))
{
// from this point the Heigth Control Algorithm is identical for both versions
if(BaroExpandActive) // baro range expanding active
{
HCGas = HoverGas; // hover while expanding baro adc range
HeightDeviation = 0;
} // EOF // baro range expanding active
else // valid data from air pressure sensor
{
// ------------------------- P-Part ----------------------------
tmp_long = (HoehenWert - SollHoehe); // positive when too high
LIMIT_MIN_MAX(tmp_long, -32767L, 32767L); // avoid overflov when casting to int16_t
HeightDeviation = (int)(tmp_long); // positive when too high
tmp_long = (tmp_long * (long)Parameter_Hoehe_P) / 32L; // p-part
LIMIT_MIN_MAX(tmp_long, -127 * STICK_GAIN, 256 * STICK_GAIN); // more than the full range makes no sense
GasReduction = tmp_long;
// ------------------------- D-Part 1: Vario Meter ----------------------------
tmp_int = VarioMeter / 8;
LIMIT_MIN_MAX(tmp_int, -127, 128);
tmp_int = (tmp_int * (long)Parameter_Luftdruck_D) / 4L; // scale to d-gain parameter
LIMIT_MIN_MAX(tmp_int,-64 * STICK_GAIN, 64 * STICK_GAIN);
if(FC_StatusFlags & (FC_STATUS_VARIO_TRIM_UP|FC_STATUS_VARIO_TRIM_DOWN)) tmp_int /= 4; // reduce d-part while trimming setpoint
else
if(EE_Parameter.ExtraConfig & CFG2_HEIGHT_LIMIT) tmp_int /= 8; // reduce d-part in "Deckel" mode
GasReduction += tmp_int;
} // EOF no baro range expanding
// ------------------------ D-Part 2: ACC-Z Integral ------------------------
if(Parameter_Hoehe_ACC_Wirkung)
{
tmp_long = ((Mess_Integral_Hoch / 128L) * (int32_t) Parameter_Hoehe_ACC_Wirkung) / (128L / STICK_GAIN);
LIMIT_MIN_MAX(tmp_long, -32 * STICK_GAIN, 64 * STICK_GAIN);
GasReduction += tmp_long;
}
// ------------------------ D-Part 3: GpsZ ----------------------------------
tmp_int = (Parameter_Hoehe_GPS_Z * (int)FromNaviCtrl_Value.GpsZ)/128L;
LIMIT_MIN_MAX(tmp_int, -32 * STICK_GAIN, 64 * STICK_GAIN);
GasReduction += tmp_int;
GasReduction = (long)((long)GasReduction * HoverGas) / 512; // scale to the gas value
// ------------------------ ----------------------------------
HCGas -= GasReduction;
// limit deviation from hoover point within the target region
if(!HeightTrimming && HoverGas > 0) // height setpoint is not changed and hoover gas not zero
{
unsigned int tmp;
tmp = abs(HeightDeviation);
if(tmp <= 60)
{
LIMIT_MIN_MAX(HCGas, HoverGasMin, HoverGasMax); // limit gas around the hoover point
}
else
{
tmp = (tmp - 60) / 32;
if(tmp > 15) tmp = 15;
if(HeightDeviation > 0)
{
tmp = (HoverGasMin * (16 - tmp)) / 16;
LIMIT_MIN_MAX(HCGas, tmp, HoverGasMax); // limit gas around the hoover point
}
else
{
tmp = (HoverGasMax * (tmp + 16)) / 16;
LIMIT_MIN_MAX(HCGas, HoverGasMin, tmp); // limit gas around the hoover point
}
}
}
// strech control output by inverse attitude projection 1/cos
// + 1/cos(angle) ++++++++++++++++++++++++++
tmp_long2 = (int32_t)HCGas;
tmp_long2 *= 8192L;
tmp_long2 /= CosAttitude;
HCGas = (int16_t)tmp_long2;
// update height control gas averaging
FilterHCGas = (FilterHCGas * (HC_GAS_AVERAGE - 1) + HCGas) / HC_GAS_AVERAGE;
// limit height control gas pd-control output
LIMIT_MIN_MAX(FilterHCGas, EE_Parameter.Hoehe_MinGas * STICK_GAIN, (MAX_GAS - 20) * STICK_GAIN);
// set GasMischanteil to HeightControlGasFilter
if(EE_Parameter.ExtraConfig & CFG2_HEIGHT_LIMIT)
{ // old version
LIMIT_MAX(FilterHCGas, GasMischanteil); // nicht mehr als Gas
GasMischanteil = FilterHCGas;
}
else GasMischanteil = FilterHCGas + (GasMischanteil - HoverGas) / 4; // only in Vario-Mode
}
}// EOF height control active
else // HC not active
{
//update hoover gas stick value when HC is not active
if(!EE_Parameter.Hoehe_StickNeutralPoint)
{
StickGasHover = HoverGas/STICK_GAIN; // rescale back to stick value
StickGasHover = (StickGasHover * UBat) / BattLowVoltageWarning;
}
else StickGasHover = EE_Parameter.Hoehe_StickNeutralPoint;
LIMIT_MIN_MAX(StickGasHover, 70, 150); // reserve some range for trim up and down
FilterHCGas = GasMischanteil;
// set both flags to indicate no vario mode
FC_StatusFlags |= (FC_STATUS_VARIO_TRIM_UP|FC_STATUS_VARIO_TRIM_DOWN);
}
 
// Hover gas estimation by averaging gas control output on small z-velocities
// this is done only if height contol option is selected in global config and aircraft is flying
if((FC_StatusFlags & FC_STATUS_FLY))// && !(FC_SatusFlags & FC_STATUS_EMERGENCY_LANDING))
{
if(HoverGasFilter == 0 || StartTrigger == 1) HoverGasFilter = HOVER_GAS_AVERAGE * (unsigned long)(GasMischanteil); // init estimation
if(StartTrigger == 1) StartTrigger = 2;
tmp_long2 = (int32_t)GasMischanteil; // take current thrust
tmp_long2 *= CosAttitude; // apply attitude projection
tmp_long2 /= 8192;
// average vertical projected thrust
if(modell_fliegt < 4000) // the first 8 seconds
{ // reduce the time constant of averaging by factor of 4 to get much faster a stable value
HoverGasFilter -= HoverGasFilter/(HOVER_GAS_AVERAGE/16L);
HoverGasFilter += 16L * tmp_long2;
}
if(modell_fliegt < 8000) // the first 16 seconds
{ // reduce the time constant of averaging by factor of 2 to get much faster a stable value
HoverGasFilter -= HoverGasFilter/(HOVER_GAS_AVERAGE/4L);
HoverGasFilter += 4L * tmp_long2;
}
else //later
if(abs(VarioMeter) < 100) // only on small vertical speed
{
HoverGasFilter -= HoverGasFilter/HOVER_GAS_AVERAGE;
HoverGasFilter += tmp_long2;
}
HoverGas = (int16_t)(HoverGasFilter/HOVER_GAS_AVERAGE);
if(EE_Parameter.Hoehe_HoverBand)
{
int16_t band;
band = HoverGas / EE_Parameter.Hoehe_HoverBand; // the higher the parameter the smaller the range
HoverGasMin = HoverGas - band;
HoverGasMax = HoverGas + band;
}
else
{ // no limit
HoverGasMin = 0;
HoverGasMax = 1023;
}
}
else
{
StartTrigger = 0;
HoverGasFilter = 0;
HoverGas = 0;
}
}// EOF ParamSet.GlobalConfig & CFG_HEIGHT_CONTROL
else
{
// set undefined state to indicate vario off
FC_StatusFlags |= (FC_STATUS_VARIO_TRIM_UP|FC_STATUS_VARIO_TRIM_DOWN);
} // EOF no height control
 
// limit gas to parameter setting
LIMIT_MIN(GasMischanteil, (MIN_GAS + 10) * STICK_GAIN);
if(GasMischanteil > (MAX_GAS - 20) * STICK_GAIN) GasMischanteil = (MAX_GAS - 20) * STICK_GAIN;
 
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// all BL-Ctrl connected?
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
if(MissingMotor || Capacity.MinOfMaxPWM != 255)
if(modell_fliegt > 1 && modell_fliegt < 50 && GasMischanteil > 0)
{
modell_fliegt = 1;
GasMischanteil = (MIN_GAS + 10) * STICK_GAIN;
}
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// + Mischer und PI-Regler
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
DebugOut.Analog[7] = GasMischanteil;
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// Gier-Anteil
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
GierMischanteil = MesswertGier - sollGier * STICK_GAIN; // Regler für Gier
#define MIN_GIERGAS (40*STICK_GAIN) // unter diesem Gaswert trotzdem Gieren
if(GasMischanteil > MIN_GIERGAS)
{
if(GierMischanteil > (GasMischanteil / 2)) GierMischanteil = GasMischanteil / 2;
if(GierMischanteil < -(GasMischanteil / 2)) GierMischanteil = -(GasMischanteil / 2);
}
else
{
if(GierMischanteil > (MIN_GIERGAS / 2)) GierMischanteil = MIN_GIERGAS / 2;
if(GierMischanteil < -(MIN_GIERGAS / 2)) GierMischanteil = -(MIN_GIERGAS / 2);
}
tmp_int = MAX_GAS*STICK_GAIN;
if(GierMischanteil > ((tmp_int - GasMischanteil))) GierMischanteil = ((tmp_int - GasMischanteil));
if(GierMischanteil < -((tmp_int - GasMischanteil))) GierMischanteil = -((tmp_int - GasMischanteil));
 
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// Nick-Achse
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
DiffNick = MesswertNick - StickNick; // Differenz bestimmen
if(IntegralFaktor) SummeNick += IntegralNickMalFaktor - StickNick; // I-Anteil bei Winkelregelung
else SummeNick += DiffNick; // I-Anteil bei HH
if(SummeNick > (STICK_GAIN * 16000L)) SummeNick = (STICK_GAIN * 16000L);
if(SummeNick < -(16000L * STICK_GAIN)) SummeNick = -(16000L * STICK_GAIN);
 
if(EE_Parameter.Gyro_Stability <= 8) pd_ergebnis_nick = (EE_Parameter.Gyro_Stability * DiffNick) / 8; // PI-Regler für Nick
else pd_ergebnis_nick = ((EE_Parameter.Gyro_Stability / 2) * DiffNick) / 4; // Überlauf verhindern
pd_ergebnis_nick += SummeNick / Ki;
 
tmp_int = (long)((long)Parameter_DynamicStability * (long)(GasMischanteil + abs(GierMischanteil)/2)) / 64;
if(pd_ergebnis_nick > tmp_int) pd_ergebnis_nick = tmp_int;
if(pd_ergebnis_nick < -tmp_int) pd_ergebnis_nick = -tmp_int;
 
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// Roll-Achse
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
DiffRoll = MesswertRoll - StickRoll; // Differenz bestimmen
if(IntegralFaktor) SummeRoll += IntegralRollMalFaktor - StickRoll;// I-Anteil bei Winkelregelung
else SummeRoll += DiffRoll; // I-Anteil bei HH
if(SummeRoll > (STICK_GAIN * 16000L)) SummeRoll = (STICK_GAIN * 16000L);
if(SummeRoll < -(16000L * STICK_GAIN)) SummeRoll = -(16000L * STICK_GAIN);
 
if(EE_Parameter.Gyro_Stability <= 8) pd_ergebnis_roll = (EE_Parameter.Gyro_Stability * DiffRoll) / 8; // PI-Regler für Roll
else pd_ergebnis_roll = ((EE_Parameter.Gyro_Stability / 2) * DiffRoll) / 4; // Überlauf verhindern
pd_ergebnis_roll += SummeRoll / Ki;
tmp_int = (long)((long)Parameter_DynamicStability * (long)(GasMischanteil + abs(GierMischanteil)/2)) / 64;
if(pd_ergebnis_roll > tmp_int) pd_ergebnis_roll = tmp_int;
if(pd_ergebnis_roll < -tmp_int) pd_ergebnis_roll = -tmp_int;
 
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// Universal Mixer
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
for(i=0; i<MAX_MOTORS; i++)
{
signed int tmp_int;
if(Mixer.Motor[i][0] > 0)
{
// Gas
if(Mixer.Motor[i][0] == 64) tmp_int = GasMischanteil; else tmp_int = ((long)GasMischanteil * Mixer.Motor[i][0]) / 64L;
// Nick
if(Mixer.Motor[i][1] == 64) tmp_int += pd_ergebnis_nick;
else if(Mixer.Motor[i][1] == -64) tmp_int -= pd_ergebnis_nick;
else tmp_int += ((long)pd_ergebnis_nick * Mixer.Motor[i][1]) / 64L;
// Roll
if(Mixer.Motor[i][2] == 64) tmp_int += pd_ergebnis_roll;
else if(Mixer.Motor[i][2] == -64) tmp_int -= pd_ergebnis_roll;
else tmp_int += ((long)pd_ergebnis_roll * Mixer.Motor[i][2]) / 64L;
// Gier
if(Mixer.Motor[i][3] == 64) tmp_int += GierMischanteil;
else if(Mixer.Motor[i][3] == -64) tmp_int -= GierMischanteil;
else tmp_int += ((long)GierMischanteil * Mixer.Motor[i][3]) / 64L;
 
if(tmp_int > tmp_motorwert[i]) tmp_int = (tmp_motorwert[i] + tmp_int) / 2; // MotorSmoothing
else tmp_int = 2 * tmp_int - tmp_motorwert[i]; // MotorSmoothing
 
LIMIT_MIN_MAX(tmp_int,(int) MIN_GAS * 4,(int) MAX_GAS * 4);
Motor[i].SetPoint = tmp_int / 4;
Motor[i].SetPointLowerBits = (tmp_int % 4)<<1; // (3 bits total)
tmp_motorwert[i] = tmp_int;
}
else
{
Motor[i].SetPoint = 0;
Motor[i].SetPointLowerBits = 0;
}
}
}
/branches/metro/v0.82a metro_Akku+/fc.d
0,0 → 1,3
fc.o fc.d : fc.c main.h old_macros.h printf_P.h timer0.h uart.h analog.h \
twimaster.h menu.h rc.h fc.h gps.h spi.h led.h spektrum.h capacity.h \
eeprom.h libfc.h debug.h mymath.h isqrt.h
/branches/metro/v0.82a metro_Akku+/fc.h
0,0 → 1,109
/*#######################################################################################
Flight Control
#######################################################################################*/
 
#ifndef _FC_H
#define _FC_H
//#define GIER_GRAD_FAKTOR 1291L // Abhängigkeit zwischen GyroIntegral und Winkel
//#define GIER_GRAD_FAKTOR 1160L
extern long GIER_GRAD_FAKTOR; // Abhängigkeit zwischen GyroIntegral und Winkel
#define STICK_GAIN 4
#define ACC_AMPLIFY 6
 
// FC STATUS FLAGS
#define FC_STATUS_MOTOR_RUN 0x01
#define FC_STATUS_FLY 0x02
#define FC_STATUS_CALIBRATE 0x04
#define FC_STATUS_START 0x08
#define FC_STATUS_EMERGENCY_LANDING 0x10
#define FC_STATUS_LOWBAT 0x20
#define FC_STATUS_VARIO_TRIM_UP 0x40
#define FC_STATUS_VARIO_TRIM_DOWN 0x80
 
extern volatile unsigned char FC_StatusFlags;
 
 
#define Poti1 Poti[0]
#define Poti2 Poti[1]
#define Poti3 Poti[2]
#define Poti4 Poti[3]
#define Poti5 Poti[4]
#define Poti6 Poti[5]
#define Poti7 Poti[6]
#define Poti8 Poti[7]
 
extern unsigned char Sekunde,Minute;
extern unsigned int BaroExpandActive;
extern long IntegralNick,IntegralNick2;
extern long IntegralRoll,IntegralRoll2;
//extern int IntegralNick,IntegralNick2;
//extern int IntegralRoll,IntegralRoll2;
extern unsigned char Poti[9];
 
extern long Mess_IntegralNick,Mess_IntegralNick2;
extern long Mess_IntegralRoll,Mess_IntegralRoll2;
extern long IntegralAccNick,IntegralAccRoll;
extern long SummeNick,SummeRoll;
extern volatile long Mess_Integral_Hoch;
extern long Integral_Gier,Mess_Integral_Gier,Mess_Integral_Gier2;
extern int KompassValue;
extern int KompassStartwert;
extern int KompassRichtung;
extern unsigned char ControlHeading;
extern int TrimNick, TrimRoll;
extern long ErsatzKompass;
extern int ErsatzKompassInGrad; // Kompasswert in Grad
extern long HoehenWert;
extern long SollHoehe;
extern unsigned char CareFree;
extern int MesswertNick,MesswertRoll,MesswertGier;
extern int AdNeutralNick,AdNeutralRoll,AdNeutralGier, Mittelwert_AccNick, Mittelwert_AccRoll;
extern unsigned int NeutralAccX, NeutralAccY;
extern unsigned char HoehenReglerAktiv;
extern int NeutralAccZ;
extern long Umschlag180Nick, Umschlag180Roll;
extern signed int ExternStickNick,ExternStickRoll,ExternStickGier;
extern unsigned char Parameter_UserParam1,Parameter_UserParam2,Parameter_UserParam3,Parameter_UserParam4,Parameter_UserParam5,Parameter_UserParam6,Parameter_UserParam7,Parameter_UserParam8;
extern int NaviAccNick,NaviAccRoll,NaviCntAcc;
extern unsigned int modell_fliegt;
extern void MotorRegler(void);
extern void SendMotorData(void);
//void CalibrierMittelwert(void);
//void Mittelwert(void);
extern void SetNeutral(unsigned char AccAdjustment);
extern void Piep(unsigned char Anzahl, unsigned int dauer);
extern void CopyDebugValues(void);
 
extern unsigned char h,m,s;
extern volatile unsigned char Timeout ;
extern unsigned char CosinusNickWinkel, CosinusRollWinkel;
extern int DiffNick,DiffRoll;
//extern int Poti1, Poti2, Poti3, Poti4;
extern volatile unsigned char SenderOkay;
extern int StickNick,StickRoll,StickGier;
extern char MotorenEin;
extern unsigned char Parameter_Servo3,Parameter_Servo4,Parameter_Servo5;
extern char VarioCharacter;
extern int HoverGas;
 
extern unsigned char Parameter_Luftdruck_D;
extern unsigned char Parameter_MaxHoehe;
extern unsigned char Parameter_Hoehe_P;
extern unsigned char Parameter_Hoehe_ACC_Wirkung;
extern unsigned char Parameter_KompassWirkung;
extern unsigned char Parameter_Gyro_P;
extern unsigned char Parameter_Gyro_I;
extern unsigned char Parameter_Gier_P;
extern unsigned char Parameter_ServoNickControl;
extern unsigned char Parameter_ServoRollControl;
extern unsigned char Parameter_AchsKopplung1;
extern unsigned char Parameter_AchsKopplung2;
//extern unsigned char Parameter_AchsGegenKopplung1;
extern unsigned char Parameter_J16Bitmask; // for the J16 Output
extern unsigned char Parameter_J16Timing; // for the J16 Output
extern unsigned char Parameter_J17Bitmask; // for the J17 Output
extern unsigned char Parameter_J17Timing; // for the J17 Output
extern signed char MixerTable[MAX_MOTORS][4];
extern const signed char sintab[31];
#endif //_FC_H
 
/branches/metro/v0.82a metro_Akku+/fc.h.bak
0,0 → 1,109
/*#######################################################################################
Flight Control
#######################################################################################*/
 
#ifndef _FC_H
#define _FC_H
//#define GIER_GRAD_FAKTOR 1291L // Abhängigkeit zwischen GyroIntegral und Winkel
//#define GIER_GRAD_FAKTOR 1160L
extern long GIER_GRAD_FAKTOR; // Abhängigkeit zwischen GyroIntegral und Winkel
#define STICK_GAIN 4
#define ACC_AMPLIFY 6
 
// FC STATUS FLAGS
#define FC_STATUS_MOTOR_RUN 0x01
#define FC_STATUS_FLY 0x02
#define FC_STATUS_CALIBRATE 0x04
#define FC_STATUS_START 0x08
#define FC_STATUS_EMERGENCY_LANDING 0x10
#define FC_STATUS_LOWBAT 0x20
#define FC_STATUS_VARIO_TRIM_UP 0x40
#define FC_STATUS_VARIO_TRIM_DOWN 0x80
 
extern volatile unsigned char FC_StatusFlags;
 
 
#define Poti1 Poti[0]
#define Poti2 Poti[1]
#define Poti3 Poti[2]
#define Poti4 Poti[3]
#define Poti5 Poti[4]
#define Poti6 Poti[5]
#define Poti7 Poti[6]
#define Poti8 Poti[7]
 
extern unsigned char Sekunde,Minute;
extern unsigned int BaroExpandActive;
extern long IntegralNick,IntegralNick2;
extern long IntegralRoll,IntegralRoll2;
//extern int IntegralNick,IntegralNick2;
//extern int IntegralRoll,IntegralRoll2;
extern unsigned char Poti[9];
 
extern long Mess_IntegralNick,Mess_IntegralNick2;
extern long Mess_IntegralRoll,Mess_IntegralRoll2;
extern long IntegralAccNick,IntegralAccRoll;
extern long SummeNick,SummeRoll;
extern volatile long Mess_Integral_Hoch;
extern long Integral_Gier,Mess_Integral_Gier,Mess_Integral_Gier2;
extern int KompassValue;
extern int KompassStartwert;
extern int KompassRichtung;
extern unsigned char ControlHeading;
extern int TrimNick, TrimRoll;
extern long ErsatzKompass;
extern int ErsatzKompassInGrad; // Kompasswert in Grad
extern long HoehenWert;
extern long SollHoehe;
extern unsigned char CareFree;
extern int MesswertNick,MesswertRoll,MesswertGier;
extern int AdNeutralNick,AdNeutralRoll,AdNeutralGier, Mittelwert_AccNick, Mittelwert_AccRoll;
extern unsigned int NeutralAccX, NeutralAccY;
extern unsigned char HoehenReglerAktiv;
extern int NeutralAccZ;
extern long Umschlag180Nick, Umschlag180Roll;
extern signed int ExternStickNick,ExternStickRoll,ExternStickGier;
extern unsigned char Parameter_UserParam1,Parameter_UserParam2,Parameter_UserParam3,Parameter_UserParam4,Parameter_UserParam5,Parameter_UserParam6,Parameter_UserParam7,Parameter_UserParam8;
extern int NaviAccNick,NaviAccRoll,NaviCntAcc;
extern unsigned int modell_fliegt;
extern void MotorRegler(void);
extern void SendMotorData(void);
//void CalibrierMittelwert(void);
//void Mittelwert(void);
extern void SetNeutral(unsigned char AccAdjustment);
extern void Piep(unsigned char Anzahl, unsigned int dauer);
extern void CopyDebugValues(void);
 
extern unsigned char h,m,s;
extern volatile unsigned char Timeout ;
extern unsigned char CosinusNickWinkel, CosinusRollWinkel;
extern int DiffNick,DiffRoll;
//extern int Poti1, Poti2, Poti3, Poti4;
extern volatile unsigned char SenderOkay;
extern int StickNick,StickRoll,StickGier;
extern char MotorenEin;
extern unsigned char Parameter_Servo3,Parameter_Servo4,Parameter_Servo5;
extern char VarioCharacter;
extern int HoverGas;
 
extern unsigned char Parameter_Luftdruck_D;
extern unsigned char Parameter_MaxHoehe;
extern unsigned char Parameter_Hoehe_P;
extern unsigned char Parameter_Hoehe_ACC_Wirkung;
extern unsigned char Parameter_KompassWirkung;
extern unsigned char Parameter_Gyro_P;
extern unsigned char Parameter_Gyro_I;
extern unsigned char Parameter_Gier_P;
extern unsigned char Parameter_ServoNickControl;
extern unsigned char Parameter_ServoRollControl;
extern unsigned char Parameter_AchsKopplung1;
extern unsigned char Parameter_AchsKopplung2;
//extern unsigned char Parameter_AchsGegenKopplung1;
extern unsigned char Parameter_J16Bitmask; // for the J16 Output
extern unsigned char Parameter_J16Timing; // for the J16 Output
extern unsigned char Parameter_J17Bitmask; // for the J17 Output
extern unsigned char Parameter_J17Timing; // for the J17 Output
extern signed char MixerTable[MAX_MOTORS][4];
extern const signed char sintab[31];
#endif //_FC_H
 
/branches/metro/v0.82a metro_Akku+/fc.lst
0,0 → 1,10398
1 .file "fc.c"
2 .arch atmega644p
3 __SREG__ = 0x3f
4 __SP_H__ = 0x3e
5 __SP_L__ = 0x3d
6 __tmp_reg__ = 0
7 __zero_reg__ = 1
8 .global __do_copy_data
9 .global __do_clear_bss
10 .global VarioCharacter
11 .data
14 VarioCharacter:
15 0000 20 .byte 32
16 .global GIER_GRAD_FAKTOR
19 GIER_GRAD_FAKTOR:
20 0001 0B05 0000 .long 1291
21 .global FC_StatusFlags
22 .global FC_StatusFlags
23 .section .bss
26 FC_StatusFlags:
27 0000 00 .skip 1,0
28 .global modell_fliegt
29 .global modell_fliegt
32 modell_fliegt:
33 0001 0000 .skip 2,0
34 .global MaxStickRoll
35 .global MaxStickRoll
38 MaxStickRoll:
39 0003 0000 .skip 2,0
40 .global MaxStickNick
41 .global MaxStickNick
44 MaxStickNick:
45 0005 0000 .skip 2,0
46 .global ExternHoehenValue
47 .data
50 ExternHoehenValue:
51 0005 ECFF .word -20
52 .global ExternStickGier
53 .global ExternStickGier
54 .section .bss
57 ExternStickGier:
58 0007 0000 .skip 2,0
59 .global ExternStickRoll
60 .global ExternStickRoll
63 ExternStickRoll:
64 0009 0000 .skip 2,0
65 .global ExternStickNick
66 .global ExternStickNick
69 ExternStickNick:
70 000b 0000 .skip 2,0
71 .global sintab
72 .data
75 sintab:
76 0007 00 .byte 0
77 0008 02 .byte 2
78 0009 04 .byte 4
79 000a 06 .byte 6
80 000b 07 .byte 7
81 000c 08 .byte 8
82 000d 08 .byte 8
83 000e 08 .byte 8
84 000f 07 .byte 7
85 0010 06 .byte 6
86 0011 04 .byte 4
87 0012 02 .byte 2
88 0013 00 .byte 0
89 0014 FE .byte -2
90 0015 FC .byte -4
91 0016 FA .byte -6
92 0017 F9 .byte -7
93 0018 F8 .byte -8
94 0019 F8 .byte -8
95 001a F8 .byte -8
96 001b F9 .byte -7
97 001c FA .byte -6
98 001d FC .byte -4
99 001e FE .byte -2
100 001f 00 .byte 0
101 0020 02 .byte 2
102 0021 04 .byte 4
103 0022 06 .byte 6
104 0023 07 .byte 7
105 0024 08 .byte 8
106 0025 08 .byte 8
107 .global CareFree
108 .global CareFree
109 .section .bss
112 CareFree:
113 000d 00 .skip 1,0
114 .global Parameter_DynamicStability
115 .data
118 Parameter_DynamicStability:
119 0026 64 .byte 100
120 .global Parameter_CouplingYawCorrection
123 Parameter_CouplingYawCorrection:
124 0027 40 .byte 64
125 .global Parameter_AchsKopplung2
128 Parameter_AchsKopplung2:
129 0028 41 .byte 65
130 .global Parameter_AchsKopplung1
133 Parameter_AchsKopplung1:
134 0029 5A .byte 90
135 .global Parameter_LoopGasLimit
138 Parameter_LoopGasLimit:
139 002a 46 .byte 70
140 .global Parameter_ServoRollControl
143 Parameter_ServoRollControl:
144 002b 64 .byte 100
145 .global Parameter_ServoNickControl
148 Parameter_ServoNickControl:
149 002c 64 .byte 100
150 .global Parameter_UserParam8
151 .global Parameter_UserParam8
152 .section .bss
155 Parameter_UserParam8:
156 000e 00 .skip 1,0
157 .global Parameter_UserParam7
158 .global Parameter_UserParam7
161 Parameter_UserParam7:
162 000f 00 .skip 1,0
163 .global Parameter_UserParam6
164 .global Parameter_UserParam6
167 Parameter_UserParam6:
168 0010 00 .skip 1,0
169 .global Parameter_UserParam5
170 .global Parameter_UserParam5
173 Parameter_UserParam5:
174 0011 00 .skip 1,0
175 .global Parameter_UserParam4
176 .global Parameter_UserParam4
179 Parameter_UserParam4:
180 0012 00 .skip 1,0
181 .global Parameter_UserParam3
182 .global Parameter_UserParam3
185 Parameter_UserParam3:
186 0013 00 .skip 1,0
187 .global Parameter_UserParam2
188 .global Parameter_UserParam2
191 Parameter_UserParam2:
192 0014 00 .skip 1,0
193 .global Parameter_UserParam1
194 .global Parameter_UserParam1
197 Parameter_UserParam1:
198 0015 00 .skip 1,0
199 .global Parameter_I_Faktor
200 .data
203 Parameter_I_Faktor:
204 002d 0A .byte 10
205 .global Parameter_Gier_P
208 Parameter_Gier_P:
209 002e 02 .byte 2
210 .global Parameter_Gyro_Gier_I
213 Parameter_Gyro_Gier_I:
214 002f 96 .byte -106
215 .global Parameter_Gyro_Gier_P
218 Parameter_Gyro_Gier_P:
219 0030 96 .byte -106
220 .global Parameter_Gyro_I
223 Parameter_Gyro_I:
224 0031 96 .byte -106
225 .global Parameter_Gyro_P
228 Parameter_Gyro_P:
229 0032 96 .byte -106
230 .global Parameter_Gyro_D
233 Parameter_Gyro_D:
234 0033 08 .byte 8
235 .global Parameter_Hoehe_GPS_Z
238 Parameter_Hoehe_GPS_Z:
239 0034 40 .byte 64
240 .global Parameter_KompassWirkung
243 Parameter_KompassWirkung:
244 0035 40 .byte 64
245 .global Parameter_Hoehe_ACC_Wirkung
248 Parameter_Hoehe_ACC_Wirkung:
249 0036 3A .byte 58
250 .global Parameter_Hoehe_P
253 Parameter_Hoehe_P:
254 0037 10 .byte 16
255 .global Parameter_MaxHoehe
258 Parameter_MaxHoehe:
259 0038 FB .byte -5
260 .global Parameter_Luftdruck_D
263 Parameter_Luftdruck_D:
264 0039 30 .byte 48
265 .global Looping_Oben
266 .global Looping_Oben
267 .section .bss
270 Looping_Oben:
271 0016 00 .skip 1,0
272 .global Looping_Unten
273 .global Looping_Unten
276 Looping_Unten:
277 0017 00 .skip 1,0
278 .global Looping_Rechts
279 .global Looping_Rechts
282 Looping_Rechts:
283 0018 00 .skip 1,0
284 .global Looping_Links
285 .global Looping_Links
288 Looping_Links:
289 0019 00 .skip 1,0
290 .global Looping_Roll
291 .global Looping_Roll
294 Looping_Roll:
295 001a 00 .skip 1,0
296 .global Looping_Nick
297 .global Looping_Nick
300 Looping_Nick:
301 001b 00 .skip 1,0
302 .global Ki
303 .data
306 Ki:
307 003a 3801 .word 312
308 .global HoverGas
309 .global HoverGas
310 .section .bss
313 HoverGas:
314 001c 0000 .skip 2,0
315 .global LageKorrekturNick
316 .global LageKorrekturNick
319 LageKorrekturNick:
320 001e 0000 .skip 2,0
321 .global LageKorrekturRoll
322 .global LageKorrekturRoll
325 LageKorrekturRoll:
326 0020 0000 .skip 2,0
327 .global SollHoehe
328 .global SollHoehe
331 SollHoehe:
332 0022 0000 0000 .skip 4,0
333 .global HoehenWert
334 .global HoehenWert
337 HoehenWert:
338 0026 0000 0000 .skip 4,0
339 .global StartTrigger
340 .global StartTrigger
343 StartTrigger:
344 002a 00 .skip 1,0
345 .global MotorenEin
346 .global MotorenEin
349 MotorenEin:
350 002b 00 .skip 1,0
351 .global StickGas
352 .global StickGas
355 StickGas:
356 002c 0000 .skip 2,0
357 .global StickGier
358 .global StickGier
361 StickGier:
362 002e 0000 .skip 2,0
363 .global StickRoll
364 .global StickRoll
367 StickRoll:
368 0030 0000 .skip 2,0
369 .global StickNick
370 .global StickNick
373 StickNick:
374 0032 0000 .skip 2,0
375 .global SenderOkay
376 .global SenderOkay
379 SenderOkay:
380 0034 00 .skip 1,0
381 .global Poti
382 .global Poti
385 Poti:
386 0035 0000 0000 .skip 9,0
386 0000 0000
386 00
387 .global GierGyroFehler
388 .global GierGyroFehler
391 GierGyroFehler:
392 003e 0000 .skip 2,0
393 .global Umschlag180Roll
394 .data
397 Umschlag180Roll:
398 003c 90D0 0300 .long 250000
399 .global Umschlag180Nick
402 Umschlag180Nick:
403 0040 90D0 0300 .long 250000
404 .global TrichterFlug
405 .global TrichterFlug
406 .section .bss
409 TrichterFlug:
410 0040 00 .skip 1,0
411 .global HoehenReglerAktiv
412 .global HoehenReglerAktiv
415 HoehenReglerAktiv:
416 0041 00 .skip 1,0
417 .global KompassSignalSchlecht
418 .data
421 KompassSignalSchlecht:
422 0044 F401 .word 500
423 .global KompassRichtung
424 .global KompassRichtung
425 .section .bss
428 KompassRichtung:
429 0042 0000 .skip 2,0
430 .global KompassStartwert
431 .global KompassStartwert
434 KompassStartwert:
435 0044 0000 .skip 2,0
436 .global KompassValue
437 .global KompassValue
440 KompassValue:
441 0046 0000 .skip 2,0
442 .global Mess_Integral_Hoch
443 .global Mess_Integral_Hoch
446 Mess_Integral_Hoch:
447 0048 0000 0000 .skip 4,0
448 .global SummeRoll
449 .global SummeRoll
452 SummeRoll:
453 004c 0000 0000 .skip 4,0
454 .global SummeNick
455 .global SummeNick
458 SummeNick:
459 0050 0000 0000 .skip 4,0
460 .global Mess_Integral_Gier2
461 .global Mess_Integral_Gier2
464 Mess_Integral_Gier2:
465 0054 0000 0000 .skip 4,0
466 .global Mess_Integral_Gier
467 .global Mess_Integral_Gier
470 Mess_Integral_Gier:
471 0058 0000 0000 .skip 4,0
472 .global Mess_IntegralRoll2
473 .global Mess_IntegralRoll2
476 Mess_IntegralRoll2:
477 005c 0000 0000 .skip 4,0
478 .global Mess_IntegralRoll
479 .global Mess_IntegralRoll
482 Mess_IntegralRoll:
483 0060 0000 0000 .skip 4,0
484 .global Mess_IntegralNick2
485 .global Mess_IntegralNick2
488 Mess_IntegralNick2:
489 0064 0000 0000 .skip 4,0
490 .global Mess_IntegralNick
491 .global Mess_IntegralNick
494 Mess_IntegralNick:
495 0068 0000 0000 .skip 4,0
496 .global Integral_Gier
497 .global Integral_Gier
500 Integral_Gier:
501 006c 0000 0000 .skip 4,0
502 .global IntegralAccZ
503 .global IntegralAccZ
506 IntegralAccZ:
507 0070 0000 0000 .skip 4,0
508 .global IntegralAccRoll
509 .global IntegralAccRoll
512 IntegralAccRoll:
513 0074 0000 0000 .skip 4,0
514 .global IntegralAccNick
515 .global IntegralAccNick
518 IntegralAccNick:
519 0078 0000 0000 .skip 4,0
520 .global IntegralRoll2
521 .global IntegralRoll2
524 IntegralRoll2:
525 007c 0000 0000 .skip 4,0
526 .global IntegralRoll
527 .global IntegralRoll
530 IntegralRoll:
531 0080 0000 0000 .skip 4,0
532 .global IntegralNick2
533 .global IntegralNick2
536 IntegralNick2:
537 0084 0000 0000 .skip 4,0
538 .global IntegralNick
539 .global IntegralNick
542 IntegralNick:
543 0088 0000 0000 .skip 4,0
544 .global ControlHeading
545 .global ControlHeading
548 ControlHeading:
549 008c 00 .skip 1,0
550 .global NeutralAccZ
551 .global NeutralAccZ
554 NeutralAccZ:
555 008d 0000 .skip 2,0
556 .global NaviCntAcc
557 .global NaviCntAcc
560 NaviCntAcc:
561 008f 0000 .skip 2,0
562 .global NeutralAccY
563 .global NeutralAccY
566 NeutralAccY:
567 0091 0000 .skip 2,0
568 .global NeutralAccX
569 .global NeutralAccX
572 NeutralAccX:
573 0093 0000 .skip 2,0
574 .global StartNeutralNick
575 .global StartNeutralNick
578 StartNeutralNick:
579 0095 0000 .skip 2,0
580 .global StartNeutralRoll
581 .global StartNeutralRoll
584 StartNeutralRoll:
585 0097 0000 .skip 2,0
586 .global AdNeutralGier
587 .global AdNeutralGier
590 AdNeutralGier:
591 0099 0000 .skip 2,0
592 .global AdNeutralRoll
593 .global AdNeutralRoll
596 AdNeutralRoll:
597 009b 0000 .skip 2,0
598 .global AdNeutralNick
599 .global AdNeutralNick
602 AdNeutralNick:
603 009d 0000 .skip 2,0
604 .global BaroExpandActive
605 .global BaroExpandActive
608 BaroExpandActive:
609 009f 0000 .skip 2,0
610 .global updatemotors
611 .data
614 updatemotors:
615 0046 05 .byte 5
616 .global pos4
617 .global pos4
618 .section .bss
621 pos4:
622 00a1 00 .skip 1,0
623 .global CurrentOffset
624 .global CurrentOffset
627 CurrentOffset:
628 00a2 0000 .skip 2,0
629 .global keynumber
630 .data
633 keynumber:
634 0047 F9FF .word -7
635 .global settingdest
638 settingdest:
639 0049 05 .byte 5
640 .text
641 .global CopyDebugValues
643 CopyDebugValues:
644 /* prologue: frame size=0 */
645 0000 EF92 push r14
646 0002 FF92 push r15
647 0004 0F93 push r16
648 0006 1F93 push r17
649 /* prologue end (size=4) */
650 0008 8091 0000 lds r24,EE_Parameter+28
651 000c 9927 clr r25
652 000e 880F lsl r24
653 0010 991F rol r25
654 0012 880F lsl r24
655 0014 991F rol r25
656 0016 7C01 movw r14,r24
657 0018 0027 clr r16
658 001a F7FC sbrc r15,7
659 001c 0095 com r16
660 001e 102F mov r17,r16
661 0020 8091 0000 lds r24,IntegralNick
662 0024 9091 0000 lds r25,(IntegralNick)+1
663 0028 A091 0000 lds r26,(IntegralNick)+2
664 002c B091 0000 lds r27,(IntegralNick)+3
665 0030 BC01 movw r22,r24
666 0032 CD01 movw r24,r26
667 0034 A801 movw r20,r16
668 0036 9701 movw r18,r14
669 0038 0E94 0000 call __divmodsi4
670 003c 3093 0000 sts (DebugOut+2)+1,r19
671 0040 2093 0000 sts DebugOut+2,r18
672 0044 8091 0000 lds r24,IntegralRoll
673 0048 9091 0000 lds r25,(IntegralRoll)+1
674 004c A091 0000 lds r26,(IntegralRoll)+2
675 0050 B091 0000 lds r27,(IntegralRoll)+3
676 0054 BC01 movw r22,r24
677 0056 CD01 movw r24,r26
678 0058 A801 movw r20,r16
679 005a 9701 movw r18,r14
680 005c 0E94 0000 call __divmodsi4
681 0060 3093 0000 sts (DebugOut+4)+1,r19
682 0064 2093 0000 sts DebugOut+4,r18
683 0068 8091 0000 lds r24,Mittelwert_AccNick
684 006c 9091 0000 lds r25,(Mittelwert_AccNick)+1
685 0070 97FD sbrc r25,7
686 0072 0396 adiw r24,3
687 .L2:
688 0074 9595 asr r25
689 0076 8795 ror r24
690 0078 9595 asr r25
691 007a 8795 ror r24
692 007c 9093 0000 sts (DebugOut+6)+1,r25
693 0080 8093 0000 sts DebugOut+6,r24
694 0084 8091 0000 lds r24,Mittelwert_AccRoll
695 0088 9091 0000 lds r25,(Mittelwert_AccRoll)+1
696 008c 97FD sbrc r25,7
697 008e 0396 adiw r24,3
698 .L3:
699 0090 9595 asr r25
700 0092 8795 ror r24
701 0094 9595 asr r25
702 0096 8795 ror r24
703 0098 9093 0000 sts (DebugOut+8)+1,r25
704 009c 8093 0000 sts DebugOut+8,r24
705 00a0 8091 0000 lds r24,AdNeutralGier
706 00a4 9091 0000 lds r25,(AdNeutralGier)+1
707 00a8 2091 0000 lds r18,AdWertGier
708 00ac 3091 0000 lds r19,(AdWertGier)+1
709 00b0 821B sub r24,r18
710 00b2 930B sbc r25,r19
711 00b4 9093 0000 sts (DebugOut+10)+1,r25
712 00b8 8093 0000 sts DebugOut+10,r24
713 00bc 8091 0000 lds r24,HoehenWert
714 00c0 9091 0000 lds r25,(HoehenWert)+1
715 00c4 A091 0000 lds r26,(HoehenWert)+2
716 00c8 B091 0000 lds r27,(HoehenWert)+3
717 00cc BC01 movw r22,r24
718 00ce CD01 movw r24,r26
719 00d0 25E0 ldi r18,lo8(5)
720 00d2 30E0 ldi r19,hi8(5)
721 00d4 40E0 ldi r20,hlo8(5)
722 00d6 50E0 ldi r21,hhi8(5)
723 00d8 0E94 0000 call __divmodsi4
724 00dc 3093 0000 sts (DebugOut+12)+1,r19
725 00e0 2093 0000 sts DebugOut+12,r18
726 00e4 8091 0000 lds r24,AdWertAccHoch
727 00e8 9091 0000 lds r25,(AdWertAccHoch)+1
728 00ec 9093 0000 sts (DebugOut+14)+1,r25
729 00f0 8093 0000 sts DebugOut+14,r24
730 00f4 8091 0000 lds r24,KompassValue
731 00f8 9091 0000 lds r25,(KompassValue)+1
732 00fc 9093 0000 sts (DebugOut+18)+1,r25
733 0100 8093 0000 sts DebugOut+18,r24
734 0104 8091 0000 lds r24,UBat
735 0108 9091 0000 lds r25,(UBat)+1
736 010c 9093 0000 sts (DebugOut+20)+1,r25
737 0110 8093 0000 sts DebugOut+20,r24
738 0114 8091 0000 lds r24,SenderOkay
739 0118 9927 clr r25
740 011a 9093 0000 sts (DebugOut+22)+1,r25
741 011e 8093 0000 sts DebugOut+22,r24
742 0122 8091 0000 lds r24,ErsatzKompass
743 0126 9091 0000 lds r25,(ErsatzKompass)+1
744 012a A091 0000 lds r26,(ErsatzKompass)+2
745 012e B091 0000 lds r27,(ErsatzKompass)+3
746 0132 2091 0000 lds r18,GIER_GRAD_FAKTOR
747 0136 3091 0000 lds r19,(GIER_GRAD_FAKTOR)+1
748 013a 4091 0000 lds r20,(GIER_GRAD_FAKTOR)+2
749 013e 5091 0000 lds r21,(GIER_GRAD_FAKTOR)+3
750 0142 BC01 movw r22,r24
751 0144 CD01 movw r24,r26
752 0146 0E94 0000 call __divmodsi4
753 014a 3093 0000 sts (DebugOut+24)+1,r19
754 014e 2093 0000 sts DebugOut+24,r18
755 0152 8091 0000 lds r24,Motor+1
756 0156 9927 clr r25
757 0158 9093 0000 sts (DebugOut+26)+1,r25
758 015c 8093 0000 sts DebugOut+26,r24
759 0160 8091 0000 lds r24,Motor+9
760 0164 9927 clr r25
761 0166 9093 0000 sts (DebugOut+28)+1,r25
762 016a 8093 0000 sts DebugOut+28,r24
763 016e 8091 0000 lds r24,Motor+17
764 0172 9927 clr r25
765 0174 9093 0000 sts (DebugOut+30)+1,r25
766 0178 8093 0000 sts DebugOut+30,r24
767 017c 8091 0000 lds r24,Motor+25
768 0180 9927 clr r25
769 0182 9093 0000 sts (DebugOut+32)+1,r25
770 0186 8093 0000 sts DebugOut+32,r24
771 018a 8091 0000 lds r24,ServoNickValue
772 018e 9091 0000 lds r25,(ServoNickValue)+1
773 0192 9093 0000 sts (DebugOut+42)+1,r25
774 0196 8093 0000 sts DebugOut+42,r24
775 019a 8091 0000 lds r24,Capacity
776 019e 9091 0000 lds r25,(Capacity)+1
777 01a2 9093 0000 sts (DebugOut+46)+1,r25
778 01a6 8093 0000 sts DebugOut+46,r24
779 01aa 8091 0000 lds r24,Capacity+6
780 01ae 9091 0000 lds r25,(Capacity+6)+1
781 01b2 9093 0000 sts (DebugOut+48)+1,r25
782 01b6 8093 0000 sts DebugOut+48,r24
783 01ba 8091 0000 lds r24,Capacity+8
784 01be 9927 clr r25
785 01c0 9093 0000 sts (DebugOut+60)+1,r25
786 01c4 8093 0000 sts DebugOut+60,r24
787 01c8 8091 0000 lds r24,GPS_Nick
788 01cc 9091 0000 lds r25,(GPS_Nick)+1
789 01d0 9093 0000 sts (DebugOut+62)+1,r25
790 01d4 8093 0000 sts DebugOut+62,r24
791 01d8 8091 0000 lds r24,GPS_Roll
792 01dc 9091 0000 lds r25,(GPS_Roll)+1
793 01e0 9093 0000 sts (DebugOut+64)+1,r25
794 01e4 8093 0000 sts DebugOut+64,r24
795 01e8 8091 0000 lds r24,VersionInfo+5
796 01ec 8823 tst r24
797 01ee 21F4 brne .L5
798 01f0 8091 0000 lds r24,VersionInfo+6
799 01f4 8823 tst r24
800 01f6 21F0 breq .L4
801 .L5:
802 01f8 8091 0000 lds r24,DebugOut+1
803 01fc 8160 ori r24,lo8(1)
804 01fe 03C0 rjmp .L7
805 .L4:
806 0200 8091 0000 lds r24,DebugOut+1
807 0204 8E7F andi r24,lo8(-2)
808 .L7:
809 0206 8093 0000 sts DebugOut+1,r24
810 /* epilogue: frame size=0 */
811 020a 1F91 pop r17
812 020c 0F91 pop r16
813 020e FF90 pop r15
814 0210 EF90 pop r14
815 0212 0895 ret
816 /* epilogue end (size=5) */
817 /* function CopyDebugValues size 268 (259) */
819 .global Piep
821 Piep:
822 /* prologue: frame size=0 */
823 0214 1F93 push r17
824 0216 CF93 push r28
825 0218 DF93 push r29
826 /* prologue end (size=3) */
827 021a 182F mov r17,r24
828 021c EB01 movw r28,r22
829 021e 8091 0000 lds r24,MotorenEin
830 0222 8823 tst r24
831 0224 A1F4 brne .L8
832 0226 1150 subi r17,lo8(-(-1))
833 0228 1F3F cpi r17,lo8(-1)
834 022a 89F0 breq .L8
835 .L15:
836 022c D093 0000 sts (beeptime)+1,r29
837 0230 C093 0000 sts beeptime,r28
838 .L12:
839 0234 8091 0000 lds r24,beeptime
840 0238 9091 0000 lds r25,(beeptime)+1
841 023c 892B or r24,r25
842 023e D1F7 brne .L12
843 0240 CE01 movw r24,r28
844 0242 8C0F add r24,r28
845 0244 9D1F adc r25,r29
846 0246 0E94 0000 call Delay_ms
847 024a 1150 subi r17,1
848 024c 78F7 brcc .L15
849 .L8:
850 /* epilogue: frame size=0 */
851 024e DF91 pop r29
852 0250 CF91 pop r28
853 0252 1F91 pop r17
854 0254 0895 ret
855 /* epilogue end (size=4) */
856 /* function Piep size 34 (27) */
858 .global CalibrierMittelwert
860 CalibrierMittelwert:
861 /* prologue: frame size=0 */
862 0256 CF93 push r28
863 0258 DF93 push r29
864 /* prologue end (size=2) */
865 025a 8091 0000 lds r24,PlatinenVersion
866 025e 8D30 cpi r24,lo8(13)
867 0260 11F4 brne .L18
868 0262 0E94 0000 call SucheGyroOffset
869 .L18:
870 0266 1092 7A00 sts 122,__zero_reg__
871 026a 8091 0000 lds r24,AdWertNick
872 026e 9091 0000 lds r25,(AdWertNick)+1
873 0272 9093 0000 sts (MesswertNick)+1,r25
874 0276 8093 0000 sts MesswertNick,r24
875 027a 8091 0000 lds r24,AdWertRoll
876 027e 9091 0000 lds r25,(AdWertRoll)+1
877 0282 9093 0000 sts (MesswertRoll)+1,r25
878 0286 8093 0000 sts MesswertRoll,r24
879 028a 8091 0000 lds r24,AdWertGier
880 028e 9091 0000 lds r25,(AdWertGier)+1
881 0292 9093 0000 sts (MesswertGier)+1,r25
882 0296 8093 0000 sts MesswertGier,r24
883 029a 2091 0000 lds r18,AdWertAccNick
884 029e 3091 0000 lds r19,(AdWertAccNick)+1
885 02a2 C901 movw r24,r18
886 02a4 880F lsl r24
887 02a6 991F rol r25
888 02a8 880F lsl r24
889 02aa 991F rol r25
890 02ac 820F add r24,r18
891 02ae 931F adc r25,r19
892 02b0 820F add r24,r18
893 02b2 931F adc r25,r19
894 02b4 9093 0000 sts (Mittelwert_AccNick)+1,r25
895 02b8 8093 0000 sts Mittelwert_AccNick,r24
896 02bc 2091 0000 lds r18,AdWertAccRoll
897 02c0 3091 0000 lds r19,(AdWertAccRoll)+1
898 02c4 C901 movw r24,r18
899 02c6 880F lsl r24
900 02c8 991F rol r25
901 02ca 880F lsl r24
902 02cc 991F rol r25
903 02ce 820F add r24,r18
904 02d0 931F adc r25,r19
905 02d2 820F add r24,r18
906 02d4 931F adc r25,r19
907 02d6 9093 0000 sts (Mittelwert_AccRoll)+1,r25
908 02da 8093 0000 sts Mittelwert_AccRoll,r24
909 02de 8FEC ldi r24,lo8(-49)
910 02e0 8093 7A00 sts 122,r24
911 02e4 A0E0 ldi r26,lo8(Poti)
912 02e6 B0E0 ldi r27,hi8(Poti)
913 02e8 C0E0 ldi r28,lo8(EE_Parameter+5)
914 02ea D0E0 ldi r29,hi8(EE_Parameter+5)
915 02ec 97E0 ldi r25,lo8(7)
916 .L28:
917 02ee 8991 ld r24,Y+
918 02f0 E82F mov r30,r24
919 02f2 FF27 clr r31
920 02f4 EE0F add r30,r30
921 02f6 FF1F adc r31,r31
922 02f8 E050 subi r30,lo8(-(PPM_in))
923 02fa F040 sbci r31,hi8(-(PPM_in))
924 02fc 0190 ld __tmp_reg__,Z+
925 02fe F081 ld r31,Z
926 0300 E02D mov r30,__tmp_reg__
927 0302 E259 subi r30,lo8(-(110))
928 0304 FF4F sbci r31,hi8(-(110))
929 0306 1E16 cp __zero_reg__,r30
930 0308 1F06 cpc __zero_reg__,r31
931 030a 1CF0 brlt .L22
932 030c E0E0 ldi r30,lo8(0)
933 030e F0E0 ldi r31,hi8(0)
934 0310 05C0 rjmp .L23
935 .L22:
936 0312 EF3F cpi r30,255
937 0314 F105 cpc r31,__zero_reg__
938 0316 14F0 brlt .L23
939 0318 EFEF ldi r30,lo8(255)
940 031a F0E0 ldi r31,hi8(255)
941 .L23:
942 031c 8C91 ld r24,X
943 031e 282F mov r18,r24
944 0320 3327 clr r19
945 0322 E217 cp r30,r18
946 0324 F307 cpc r31,r19
947 0326 14F4 brge .L25
948 0328 8150 subi r24,lo8(-(-1))
949 032a 04C0 rjmp .L31
950 .L25:
951 032c 2E17 cp r18,r30
952 032e 3F07 cpc r19,r31
953 0330 14F4 brge .L21
954 0332 8F5F subi r24,lo8(-(1))
955 .L31:
956 0334 8C93 st X,r24
957 .L21:
958 0336 9150 subi r25,lo8(-(-1))
959 0338 1196 adiw r26,1
960 033a 97FF sbrs r25,7
961 033c D8CF rjmp .L28
962 033e 8091 0000 lds r24,EE_Parameter+65
963 0342 9927 clr r25
964 0344 AA27 clr r26
965 0346 BB27 clr r27
966 0348 BC01 movw r22,r24
967 034a CD01 movw r24,r26
968 034c 24EC ldi r18,lo8(2500)
969 034e 39E0 ldi r19,hi8(2500)
970 0350 40E0 ldi r20,hlo8(2500)
971 0352 50E0 ldi r21,hhi8(2500)
972 0354 0E94 0000 call __mulsi3
973 0358 DC01 movw r26,r24
974 035a CB01 movw r24,r22
975 035c 8093 0000 sts Umschlag180Nick,r24
976 0360 9093 0000 sts (Umschlag180Nick)+1,r25
977 0364 A093 0000 sts (Umschlag180Nick)+2,r26
978 0368 B093 0000 sts (Umschlag180Nick)+3,r27
979 036c 8091 0000 lds r24,EE_Parameter+66
980 0370 9927 clr r25
981 0372 AA27 clr r26
982 0374 BB27 clr r27
983 0376 BC01 movw r22,r24
984 0378 CD01 movw r24,r26
985 037a 0E94 0000 call __mulsi3
986 037e DC01 movw r26,r24
987 0380 CB01 movw r24,r22
988 0382 8093 0000 sts Umschlag180Roll,r24
989 0386 9093 0000 sts (Umschlag180Roll)+1,r25
990 038a A093 0000 sts (Umschlag180Roll)+2,r26
991 038e B093 0000 sts (Umschlag180Roll)+3,r27
992 /* epilogue: frame size=0 */
993 0392 DF91 pop r29
994 0394 CF91 pop r28
995 0396 0895 ret
996 /* epilogue end (size=3) */
997 /* function CalibrierMittelwert size 161 (156) */
999 .section .progmem.data,"a",@progbits
1002 __c.39:
1003 0000 0A0D 4143 .string "\n\rACC not calibrated!\r\n"
1003 4320 6E6F
1003 7420 6361
1003 6C69 6272
1003 6174 6564
1004 .text
1005 .global SetNeutral
1007 SetNeutral:
1008 /* prologue: frame size=0 */
1009 0398 A0E0 ldi r26,lo8(0)
1010 039a B0E0 ldi r27,hi8(0)
1011 039c E0E0 ldi r30,pm_lo8(1f)
1012 039e F0E0 ldi r31,pm_hi8(1f)
1013 03a0 0C94 0000 jmp __prologue_saves__+12
1014 1:
1015 /* prologue end (size=6) */
1016 03a4 882E mov r8,r24
1017 03a6 C0E0 ldi r28,lo8(0)
1018 03a8 D0E0 ldi r29,hi8(0)
1019 03aa 7E01 movw r14,r28
1020 03ac 6E01 movw r12,r28
1021 03ae 1092 0000 sts VersionInfo+5,__zero_reg__
1022 03b2 469A sbi 40-0x20,6
1023 03b4 D093 0000 sts (NeutralAccX)+1,r29
1024 03b8 C093 0000 sts NeutralAccX,r28
1025 03bc D093 0000 sts (NeutralAccY)+1,r29
1026 03c0 C093 0000 sts NeutralAccY,r28
1027 03c4 D093 0000 sts (NeutralAccZ)+1,r29
1028 03c8 C093 0000 sts NeutralAccZ,r28
1029 03cc D093 0000 sts (AdNeutralNick)+1,r29
1030 03d0 C093 0000 sts AdNeutralNick,r28
1031 03d4 D093 0000 sts (AdNeutralRoll)+1,r29
1032 03d8 C093 0000 sts AdNeutralRoll,r28
1033 03dc D093 0000 sts (AdNeutralGier)+1,r29
1034 03e0 C093 0000 sts AdNeutralGier,r28
1035 03e4 1092 0000 sts Parameter_AchsKopplung1,__zero_reg__
1036 03e8 1092 0000 sts Parameter_AchsKopplung2,__zero_reg__
1037 03ec 1092 0000 sts ExpandBaro,__zero_reg__
1038 03f0 0E94 0000 call CalibrierMittelwert
1039 03f4 84E6 ldi r24,lo8(100)
1040 03f6 90E0 ldi r25,hi8(100)
1041 03f8 0E94 0000 call Delay_ms_Mess
1042 03fc 0E94 0000 call CalibrierMittelwert
1043 0400 8091 0000 lds r24,EE_Parameter+13
1044 0404 80FF sbrs r24,0
1045 0406 10C0 rjmp .L33
1046 0408 8091 0000 lds r24,MessLuftdruck
1047 040c 9091 0000 lds r25,(MessLuftdruck)+1
1048 0410 875B subi r24,lo8(951)
1049 0412 9340 sbci r25,hi8(951)
1050 0414 38F4 brsh .L35
1051 0416 8091 0000 lds r24,MessLuftdruck
1052 041a 9091 0000 lds r25,(MessLuftdruck)+1
1053 041e 8E5E subi r24,lo8(750)
1054 0420 9240 sbci r25,hi8(750)
1055 0422 10F4 brsh .L33
1056 .L35:
1057 0424 0E94 0000 call SucheLuftruckOffset
1058 .L33:
1059 0428 0FE1 ldi r16,lo8(31)
1060 .L39:
1061 042a 8AE0 ldi r24,lo8(10)
1062 042c 90E0 ldi r25,hi8(10)
1063 042e 0E94 0000 call Delay_ms_Mess
1064 0432 8091 0000 lds r24,AdWertGier
1065 0436 9091 0000 lds r25,(AdWertGier)+1
1066 043a C80F add r28,r24
1067 043c D91F adc r29,r25
1068 043e 8091 0000 lds r24,AdWertNick
1069 0442 9091 0000 lds r25,(AdWertNick)+1
1070 0446 E80E add r14,r24
1071 0448 F91E adc r15,r25
1072 044a 8091 0000 lds r24,AdWertRoll
1073 044e 9091 0000 lds r25,(AdWertRoll)+1
1074 0452 C80E add r12,r24
1075 0454 D91E adc r13,r25
1076 0456 0150 subi r16,lo8(-(-1))
1077 0458 07FF sbrs r16,7
1078 045a E7CF rjmp .L39
1079 045c 9701 movw r18,r14
1080 045e 205F subi r18,lo8(-(16))
1081 0460 3F4F sbci r19,hi8(-(16))
1082 0462 3695 lsr r19
1083 0464 2795 ror r18
1084 0466 3695 lsr r19
1085 0468 2795 ror r18
1086 046a 3093 0000 sts (AdNeutralNick)+1,r19
1087 046e 2093 0000 sts AdNeutralNick,r18
1088 0472 C601 movw r24,r12
1089 0474 4096 adiw r24,16
1090 0476 9695 lsr r25
1091 0478 8795 ror r24
1092 047a 9695 lsr r25
1093 047c 8795 ror r24
1094 047e 9093 0000 sts (AdNeutralRoll)+1,r25
1095 0482 8093 0000 sts AdNeutralRoll,r24
1096 0486 6096 adiw r28,16
1097 0488 F5E0 ldi r31,5
1098 048a D695 1: lsr r29
1099 048c C795 ror r28
1100 048e FA95 dec r31
1101 0490 E1F7 brne 1b
1102 0492 D093 0000 sts (AdNeutralGier)+1,r29
1103 0496 C093 0000 sts AdNeutralGier,r28
1104 049a 9093 0000 sts (StartNeutralRoll)+1,r25
1105 049e 8093 0000 sts StartNeutralRoll,r24
1106 04a2 3093 0000 sts (StartNeutralNick)+1,r19
1107 04a6 2093 0000 sts StartNeutralNick,r18
1108 04aa 8820 tst r8
1109 04ac 09F4 brne .+2
1110 04ae 41C0 rjmp .L40
1111 04b0 8091 0000 lds r24,Mittelwert_AccNick
1112 04b4 9091 0000 lds r25,(Mittelwert_AccNick)+1
1113 04b8 97FF sbrs r25,7
1114 04ba 03C0 rjmp .L41
1115 04bc 9095 com r25
1116 04be 8195 neg r24
1117 04c0 9F4F sbci r25,lo8(-1)
1118 .L41:
1119 04c2 6CE0 ldi r22,lo8(12)
1120 04c4 70E0 ldi r23,hi8(12)
1121 04c6 0E94 0000 call __divmodhi4
1122 04ca 9B01 movw r18,r22
1123 04cc 7093 0000 sts (NeutralAccX)+1,r23
1124 04d0 6093 0000 sts NeutralAccX,r22
1125 04d4 8091 0000 lds r24,Mittelwert_AccRoll
1126 04d8 9091 0000 lds r25,(Mittelwert_AccRoll)+1
1127 04dc 97FF sbrs r25,7
1128 04de 03C0 rjmp .L42
1129 04e0 9095 com r25
1130 04e2 8195 neg r24
1131 04e4 9F4F sbci r25,lo8(-1)
1132 .L42:
1133 04e6 6CE0 ldi r22,lo8(12)
1134 04e8 70E0 ldi r23,hi8(12)
1135 04ea 0E94 0000 call __divmodhi4
1136 04ee 7093 0000 sts (NeutralAccY)+1,r23
1137 04f2 6093 0000 sts NeutralAccY,r22
1138 04f6 8091 0000 lds r24,Aktuell_az
1139 04fa 9091 0000 lds r25,(Aktuell_az)+1
1140 04fe 9093 0000 sts (NeutralAccZ)+1,r25
1141 0502 8093 0000 sts NeutralAccZ,r24
1142 0506 B901 movw r22,r18
1143 0508 84E0 ldi r24,lo8(4)
1144 050a 90E0 ldi r25,hi8(4)
1145 050c 0E94 0000 call SetParamWord
1146 0510 6091 0000 lds r22,NeutralAccY
1147 0514 7091 0000 lds r23,(NeutralAccY)+1
1148 0518 86E0 ldi r24,lo8(6)
1149 051a 90E0 ldi r25,hi8(6)
1150 051c 0E94 0000 call SetParamWord
1151 0520 6091 0000 lds r22,NeutralAccZ
1152 0524 7091 0000 lds r23,(NeutralAccZ)+1
1153 0528 88E0 ldi r24,lo8(8)
1154 052a 90E0 ldi r25,hi8(8)
1155 052c 0E94 0000 call SetParamWord
1156 0530 65C0 rjmp .L43
1157 .L40:
1158 0532 84E0 ldi r24,lo8(4)
1159 0534 90E0 ldi r25,hi8(4)
1160 0536 0E94 0000 call GetParamWord
1161 053a 9093 0000 sts (NeutralAccX)+1,r25
1162 053e 8093 0000 sts NeutralAccX,r24
1163 0542 86E0 ldi r24,lo8(6)
1164 0544 90E0 ldi r25,hi8(6)
1165 0546 0E94 0000 call GetParamWord
1166 054a 9093 0000 sts (NeutralAccY)+1,r25
1167 054e 8093 0000 sts NeutralAccY,r24
1168 0552 88E0 ldi r24,lo8(8)
1169 0554 90E0 ldi r25,hi8(8)
1170 0556 0E94 0000 call GetParamWord
1171 055a 9C01 movw r18,r24
1172 055c 9093 0000 sts (NeutralAccZ)+1,r25
1173 0560 8093 0000 sts NeutralAccZ,r24
1174 0564 8091 0000 lds r24,NeutralAccX
1175 0568 9091 0000 lds r25,(NeutralAccX)+1
1176 056c 8150 subi r24,lo8(2049)
1177 056e 9840 sbci r25,hi8(2049)
1178 0570 50F4 brsh .L45
1179 0572 8091 0000 lds r24,NeutralAccY
1180 0576 9091 0000 lds r25,(NeutralAccY)+1
1181 057a 8150 subi r24,lo8(2049)
1182 057c 9840 sbci r25,hi8(2049)
1183 057e 18F4 brsh .L45
1184 0580 2150 subi r18,lo8(1025)
1185 0582 3440 sbci r19,hi8(1025)
1186 0584 D8F1 brlo .L43
1187 .L45:
1188 0586 80E0 ldi r24,lo8(__c.39)
1189 0588 90E0 ldi r25,hi8(__c.39)
1190 058a 9F93 push r25
1191 058c 8F93 push r24
1192 058e 80E0 ldi r24,lo8(pm(uart_putchar))
1193 0590 90E0 ldi r25,hi8(pm(uart_putchar))
1194 0592 9F93 push r25
1195 0594 8F93 push r24
1196 0596 E091 0000 lds r30,_printf_P
1197 059a F091 0000 lds r31,(_printf_P)+1
1198 059e 0995 icall
1199 05a0 8091 0000 lds r24,Mittelwert_AccNick
1200 05a4 9091 0000 lds r25,(Mittelwert_AccNick)+1
1201 05a8 97FF sbrs r25,7
1202 05aa 03C0 rjmp .L46
1203 05ac 9095 com r25
1204 05ae 8195 neg r24
1205 05b0 9F4F sbci r25,lo8(-1)
1206 .L46:
1207 05b2 6CE0 ldi r22,lo8(12)
1208 05b4 70E0 ldi r23,hi8(12)
1209 05b6 0E94 0000 call __divmodhi4
1210 05ba 7093 0000 sts (NeutralAccX)+1,r23
1211 05be 6093 0000 sts NeutralAccX,r22
1212 05c2 8091 0000 lds r24,Mittelwert_AccRoll
1213 05c6 9091 0000 lds r25,(Mittelwert_AccRoll)+1
1214 05ca 97FF sbrs r25,7
1215 05cc 03C0 rjmp .L47
1216 05ce 9095 com r25
1217 05d0 8195 neg r24
1218 05d2 9F4F sbci r25,lo8(-1)
1219 .L47:
1220 05d4 6CE0 ldi r22,lo8(12)
1221 05d6 70E0 ldi r23,hi8(12)
1222 05d8 0E94 0000 call __divmodhi4
1223 05dc 7093 0000 sts (NeutralAccY)+1,r23
1224 05e0 6093 0000 sts NeutralAccY,r22
1225 05e4 8091 0000 lds r24,Aktuell_az
1226 05e8 9091 0000 lds r25,(Aktuell_az)+1
1227 05ec 9093 0000 sts (NeutralAccZ)+1,r25
1228 05f0 8093 0000 sts NeutralAccZ,r24
1229 05f4 0F90 pop __tmp_reg__
1230 05f6 0F90 pop __tmp_reg__
1231 05f8 0F90 pop __tmp_reg__
1232 05fa 0F90 pop __tmp_reg__
1233 .L43:
1234 05fc 1092 0000 sts (MesswertNick)+1,__zero_reg__
1235 0600 1092 0000 sts MesswertNick,__zero_reg__
1236 0604 1092 0000 sts (MesswertRoll)+1,__zero_reg__
1237 0608 1092 0000 sts MesswertRoll,__zero_reg__
1238 060c 1092 0000 sts (MesswertGier)+1,__zero_reg__
1239 0610 1092 0000 sts MesswertGier,__zero_reg__
1240 0614 84E6 ldi r24,lo8(100)
1241 0616 90E0 ldi r25,hi8(100)
1242 0618 0E94 0000 call Delay_ms_Mess
1243 061c 8091 0000 lds r24,AdWertAccNick
1244 0620 9091 0000 lds r25,(AdWertAccNick)+1
1245 0624 9C01 movw r18,r24
1246 0626 220F lsl r18
1247 0628 331F rol r19
1248 062a 220F lsl r18
1249 062c 331F rol r19
1250 062e 280F add r18,r24
1251 0630 391F adc r19,r25
1252 0632 280F add r18,r24
1253 0634 391F adc r19,r25
1254 0636 3093 0000 sts (Mittelwert_AccNick)+1,r19
1255 063a 2093 0000 sts Mittelwert_AccNick,r18
1256 063e 8091 0000 lds r24,AdWertAccRoll
1257 0642 9091 0000 lds r25,(AdWertAccRoll)+1
1258 0646 8C01 movw r16,r24
1259 0648 000F lsl r16
1260 064a 111F rol r17
1261 064c 000F lsl r16
1262 064e 111F rol r17
1263 0650 080F add r16,r24
1264 0652 191F adc r17,r25
1265 0654 080F add r16,r24
1266 0656 191F adc r17,r25
1267 0658 1093 0000 sts (Mittelwert_AccRoll)+1,r17
1268 065c 0093 0000 sts Mittelwert_AccRoll,r16
1269 0660 8091 0000 lds r24,EE_Parameter+28
1270 0664 C82E mov r12,r24
1271 0666 DD24 clr r13
1272 0668 EE24 clr r14
1273 066a FF24 clr r15
1274 066c 4427 clr r20
1275 066e 37FD sbrc r19,7
1276 0670 4095 com r20
1277 0672 542F mov r21,r20
1278 0674 C701 movw r24,r14
1279 0676 B601 movw r22,r12
1280 0678 0E94 0000 call __mulsi3
1281 067c 4B01 movw r8,r22
1282 067e 5C01 movw r10,r24
1283 0680 6093 0000 sts IntegralNick,r22
1284 0684 7093 0000 sts (IntegralNick)+1,r23
1285 0688 8093 0000 sts (IntegralNick)+2,r24
1286 068c 9093 0000 sts (IntegralNick)+3,r25
1287 0690 9801 movw r18,r16
1288 0692 4427 clr r20
1289 0694 37FD sbrc r19,7
1290 0696 4095 com r20
1291 0698 542F mov r21,r20
1292 069a C701 movw r24,r14
1293 069c B601 movw r22,r12
1294 069e 0E94 0000 call __mulsi3
1295 06a2 DC01 movw r26,r24
1296 06a4 CB01 movw r24,r22
1297 06a6 8093 0000 sts IntegralRoll,r24
1298 06aa 9093 0000 sts (IntegralRoll)+1,r25
1299 06ae A093 0000 sts (IntegralRoll)+2,r26
1300 06b2 B093 0000 sts (IntegralRoll)+3,r27
1301 06b6 8092 0000 sts Mess_IntegralNick2,r8
1302 06ba 9092 0000 sts (Mess_IntegralNick2)+1,r9
1303 06be A092 0000 sts (Mess_IntegralNick2)+2,r10
1304 06c2 B092 0000 sts (Mess_IntegralNick2)+3,r11
1305 06c6 8093 0000 sts Mess_IntegralRoll2,r24
1306 06ca 9093 0000 sts (Mess_IntegralRoll2)+1,r25
1307 06ce A093 0000 sts (Mess_IntegralRoll2)+2,r26
1308 06d2 B093 0000 sts (Mess_IntegralRoll2)+3,r27
1309 06d6 1092 0000 sts Mess_Integral_Gier,__zero_reg__
1310 06da 1092 0000 sts (Mess_Integral_Gier)+1,__zero_reg__
1311 06de 1092 0000 sts (Mess_Integral_Gier)+2,__zero_reg__
1312 06e2 1092 0000 sts (Mess_Integral_Gier)+3,__zero_reg__
1313 06e6 8091 0000 lds r24,Luftdruck
1314 06ea 9091 0000 lds r25,(Luftdruck)+1
1315 06ee A091 0000 lds r26,(Luftdruck)+2
1316 06f2 B091 0000 lds r27,(Luftdruck)+3
1317 06f6 9093 0000 sts (StartLuftdruck)+1,r25
1318 06fa 8093 0000 sts StartLuftdruck,r24
1319 06fe 1092 0000 sts (VarioMeter)+1,__zero_reg__
1320 0702 1092 0000 sts VarioMeter,__zero_reg__
1321 0706 1092 0000 sts Mess_Integral_Hoch,__zero_reg__
1322 070a 1092 0000 sts (Mess_Integral_Hoch)+1,__zero_reg__
1323 070e 1092 0000 sts (Mess_Integral_Hoch)+2,__zero_reg__
1324 0712 1092 0000 sts (Mess_Integral_Hoch)+3,__zero_reg__
1325 0716 8091 0000 lds r24,KompassValue
1326 071a 9091 0000 lds r25,(KompassValue)+1
1327 071e 9093 0000 sts (KompassStartwert)+1,r25
1328 0722 8093 0000 sts KompassStartwert,r24
1329 0726 0E94 0000 call GPS_Neutral
1330 072a 82E3 ldi r24,lo8(50)
1331 072c 90E0 ldi r25,hi8(50)
1332 072e 9093 0000 sts (beeptime)+1,r25
1333 0732 8093 0000 sts beeptime,r24
1334 0736 8091 0000 lds r24,EE_Parameter+65
1335 073a 9927 clr r25
1336 073c AA27 clr r26
1337 073e BB27 clr r27
1338 0740 BC01 movw r22,r24
1339 0742 CD01 movw r24,r26
1340 0744 24EC ldi r18,lo8(2500)
1341 0746 39E0 ldi r19,hi8(2500)
1342 0748 40E0 ldi r20,hlo8(2500)
1343 074a 50E0 ldi r21,hhi8(2500)
1344 074c 0E94 0000 call __mulsi3
1345 0750 DC01 movw r26,r24
1346 0752 CB01 movw r24,r22
1347 0754 8856 subi r24,lo8(-(15000))
1348 0756 954C sbci r25,hi8(-(15000))
1349 0758 AF4F sbci r26,hlo8(-(15000))
1350 075a BF4F sbci r27,hhi8(-(15000))
1351 075c 8093 0000 sts Umschlag180Nick,r24
1352 0760 9093 0000 sts (Umschlag180Nick)+1,r25
1353 0764 A093 0000 sts (Umschlag180Nick)+2,r26
1354 0768 B093 0000 sts (Umschlag180Nick)+3,r27
1355 076c 8091 0000 lds r24,EE_Parameter+66
1356 0770 9927 clr r25
1357 0772 AA27 clr r26
1358 0774 BB27 clr r27
1359 0776 BC01 movw r22,r24
1360 0778 CD01 movw r24,r26
1361 077a 0E94 0000 call __mulsi3
1362 077e DC01 movw r26,r24
1363 0780 CB01 movw r24,r22
1364 0782 8856 subi r24,lo8(-(15000))
1365 0784 954C sbci r25,hi8(-(15000))
1366 0786 AF4F sbci r26,hlo8(-(15000))
1367 0788 BF4F sbci r27,hhi8(-(15000))
1368 078a 8093 0000 sts Umschlag180Roll,r24
1369 078e 9093 0000 sts (Umschlag180Roll)+1,r25
1370 0792 A093 0000 sts (Umschlag180Roll)+2,r26
1371 0796 B093 0000 sts (Umschlag180Roll)+3,r27
1372 079a 1092 0000 sts (ExternHoehenValue)+1,__zero_reg__
1373 079e 1092 0000 sts ExternHoehenValue,__zero_reg__
1374 07a2 8091 0000 lds r24,KompassValue
1375 07a6 9091 0000 lds r25,(KompassValue)+1
1376 07aa AA27 clr r26
1377 07ac 97FD sbrc r25,7
1378 07ae A095 com r26
1379 07b0 BA2F mov r27,r26
1380 07b2 2091 0000 lds r18,GIER_GRAD_FAKTOR
1381 07b6 3091 0000 lds r19,(GIER_GRAD_FAKTOR)+1
1382 07ba 4091 0000 lds r20,(GIER_GRAD_FAKTOR)+2
1383 07be 5091 0000 lds r21,(GIER_GRAD_FAKTOR)+3
1384 07c2 BC01 movw r22,r24
1385 07c4 CD01 movw r24,r26
1386 07c6 0E94 0000 call __mulsi3
1387 07ca DC01 movw r26,r24
1388 07cc CB01 movw r24,r22
1389 07ce 8093 0000 sts ErsatzKompass,r24
1390 07d2 9093 0000 sts (ErsatzKompass)+1,r25
1391 07d6 A093 0000 sts (ErsatzKompass)+2,r26
1392 07da B093 0000 sts (ErsatzKompass)+3,r27
1393 07de 1092 0000 sts (GierGyroFehler)+1,__zero_reg__
1394 07e2 1092 0000 sts GierGyroFehler,__zero_reg__
1395 07e6 81E0 ldi r24,lo8(1)
1396 07e8 8093 0000 sts SendVersionToNavi,r24
1397 07ec 0E94 0000 call LED_Init
1398 07f0 8091 0000 lds r24,FC_StatusFlags
1399 07f4 8460 ori r24,lo8(4)
1400 07f6 8093 0000 sts FC_StatusFlags,r24
1401 07fa 8FEF ldi r24,lo8(-1)
1402 07fc 8093 0000 sts FromNaviCtrl_Value,r24
1403 0800 1092 0000 sts FromNaviCtrl_Value+1,__zero_reg__
1404 0804 80E2 ldi r24,lo8(32)
1405 0806 8093 0000 sts FromNaviCtrl_Value+2,r24
1406 080a C0E0 ldi r28,lo8(Poti)
1407 080c D0E0 ldi r29,hi8(Poti)
1408 080e A0E0 ldi r26,lo8(EE_Parameter+5)
1409 0810 B0E0 ldi r27,hi8(EE_Parameter+5)
1410 0812 07E0 ldi r16,lo8(7)
1411 .L51:
1412 0814 8D91 ld r24,X+
1413 0816 E82F mov r30,r24
1414 0818 FF27 clr r31
1415 081a EE0F add r30,r30
1416 081c FF1F adc r31,r31
1417 081e E050 subi r30,lo8(-(PPM_in))
1418 0820 F040 sbci r31,hi8(-(PPM_in))
1419 0822 8081 ld r24,Z
1420 0824 9181 ldd r25,Z+1
1421 0826 8259 subi r24,lo8(-(110))
1422 0828 8993 st Y+,r24
1423 082a 0150 subi r16,lo8(-(-1))
1424 082c 07FF sbrs r16,7
1425 082e F2CF rjmp .L51
1426 0830 84E6 ldi r24,lo8(100)
1427 0832 8093 0000 sts SenderOkay,r24
1428 0836 8091 0000 lds r24,ServoActive
1429 083a 8823 tst r24
1430 083c 11F0 breq .L52
1431 083e 469A sbi 40-0x20,6
1432 0840 579A sbi 42-0x20,7
1433 .L52:
1434 0842 8091 0000 lds r24,AdNeutralNick
1435 0846 9091 0000 lds r25,(AdNeutralNick)+1
1436 084a 8056 subi r24,lo8(-(-2400))
1437 084c 9940 sbci r25,hi8(-(-2400))
1438 084e 815C subi r24,lo8(11201)
1439 0850 9B42 sbci r25,hi8(11201)
1440 0852 28F0 brlo .L53
1441 0854 8091 0000 lds r24,VersionInfo+5
1442 0858 8160 ori r24,lo8(1)
1443 085a 8093 0000 sts VersionInfo+5,r24
1444 .L53:
1445 085e 8091 0000 lds r24,AdNeutralRoll
1446 0862 9091 0000 lds r25,(AdNeutralRoll)+1
1447 0866 8056 subi r24,lo8(-(-2400))
1448 0868 9940 sbci r25,hi8(-(-2400))
1449 086a 815C subi r24,lo8(11201)
1450 086c 9B42 sbci r25,hi8(11201)
1451 086e 28F0 brlo .L54
1452 0870 8091 0000 lds r24,VersionInfo+5
1453 0874 8260 ori r24,lo8(2)
1454 0876 8093 0000 sts VersionInfo+5,r24
1455 .L54:
1456 087a 8091 0000 lds r24,AdNeutralGier
1457 087e 9091 0000 lds r25,(AdNeutralGier)+1
1458 0882 8C52 subi r24,lo8(-(-300))
1459 0884 9140 sbci r25,hi8(-(-300))
1460 0886 8957 subi r24,lo8(1401)
1461 0888 9540 sbci r25,hi8(1401)
1462 088a 28F0 brlo .L55
1463 088c 8091 0000 lds r24,VersionInfo+5
1464 0890 8460 ori r24,lo8(4)
1465 0892 8093 0000 sts VersionInfo+5,r24
1466 .L55:
1467 0896 8091 0000 lds r24,NeutralAccX
1468 089a 9091 0000 lds r25,(NeutralAccX)+1
1469 089e 8C52 subi r24,lo8(-(-300))
1470 08a0 9140 sbci r25,hi8(-(-300))
1471 08a2 835C subi r24,lo8(451)
1472 08a4 9140 sbci r25,hi8(451)
1473 08a6 28F0 brlo .L56
1474 08a8 8091 0000 lds r24,VersionInfo+5
1475 08ac 8860 ori r24,lo8(8)
1476 08ae 8093 0000 sts VersionInfo+5,r24
1477 .L56:
1478 08b2 8091 0000 lds r24,NeutralAccY
1479 08b6 9091 0000 lds r25,(NeutralAccY)+1
1480 08ba 8C52 subi r24,lo8(-(-300))
1481 08bc 9140 sbci r25,hi8(-(-300))
1482 08be 835C subi r24,lo8(451)
1483 08c0 9140 sbci r25,hi8(451)
1484 08c2 28F0 brlo .L57
1485 08c4 8091 0000 lds r24,VersionInfo+5
1486 08c8 8061 ori r24,lo8(16)
1487 08ca 8093 0000 sts VersionInfo+5,r24
1488 .L57:
1489 08ce 8091 0000 lds r24,NeutralAccZ
1490 08d2 9091 0000 lds r25,(NeutralAccZ)+1
1491 08d6 8050 subi r24,lo8(-(-512))
1492 08d8 9240 sbci r25,hi8(-(-512))
1493 08da 8355 subi r24,lo8(339)
1494 08dc 9140 sbci r25,hi8(339)
1495 08de 28F0 brlo .L32
1496 08e0 8091 0000 lds r24,VersionInfo+5
1497 08e4 8062 ori r24,lo8(32)
1498 08e6 8093 0000 sts VersionInfo+5,r24
1499 .L32:
1500 /* epilogue: frame size=0 */
1501 08ea ECE0 ldi r30,12
1502 08ec CDB7 in r28,__SP_L__
1503 08ee DEB7 in r29,__SP_H__
1504 08f0 0C94 0000 jmp __epilogue_restores__+12
1505 /* epilogue end (size=5) */
1506 /* function SetNeutral size 697 (686) */
1508 .lcomm tmpl.31,4
1509 .lcomm tmpl2.32,4
1510 .lcomm tmpl3.33,4
1511 .lcomm tmpl4.34,4
1512 .lcomm oldNick.35,2
1513 .lcomm oldRoll.36,2
1514 .lcomm d2Roll.37,2
1515 .lcomm d2Nick.38,2
1516 .global Mittelwert
1518 Mittelwert:
1519 /* prologue: frame size=19 */
1520 08f4 A3E1 ldi r26,lo8(19)
1521 08f6 B0E0 ldi r27,hi8(19)
1522 08f8 E0E0 ldi r30,pm_lo8(1f)
1523 08fa F0E0 ldi r31,pm_hi8(1f)
1524 08fc 0C94 0000 jmp __prologue_saves__+0
1525 1:
1526 /* prologue end (size=6) */
1527 0900 8091 0000 lds r24,AdNeutralGier
1528 0904 9091 0000 lds r25,(AdNeutralGier)+1
1529 0908 2091 0000 lds r18,AdWertGier
1530 090c 3091 0000 lds r19,(AdWertGier)+1
1531 0910 821B sub r24,r18
1532 0912 930B sbc r25,r19
1533 0914 9093 0000 sts (MesswertGier)+1,r25
1534 0918 8093 0000 sts MesswertGier,r24
1535 091c 8091 0000 lds r24,AdWertNickFilter
1536 0920 9091 0000 lds r25,(AdWertNickFilter)+1
1537 0924 97FD sbrc r25,7
1538 0926 0796 adiw r24,7
1539 .L64:
1540 0928 9C01 movw r18,r24
1541 092a 13E0 ldi r17,3
1542 092c 3595 1: asr r19
1543 092e 2795 ror r18
1544 0930 1A95 dec r17
1545 0932 E1F7 brne 1b
1546 0934 3093 0000 sts (MesswertNick)+1,r19
1547 0938 2093 0000 sts MesswertNick,r18
1548 093c 8091 0000 lds r24,AdWertRollFilter
1549 0940 9091 0000 lds r25,(AdWertRollFilter)+1
1550 0944 97FD sbrc r25,7
1551 0946 0796 adiw r24,7
1552 .L65:
1553 0948 B3E0 ldi r27,3
1554 094a 9595 1: asr r25
1555 094c 8795 ror r24
1556 094e BA95 dec r27
1557 0950 E1F7 brne 1b
1558 0952 9093 0000 sts (MesswertRoll)+1,r25
1559 0956 8093 0000 sts MesswertRoll,r24
1560 095a 3093 0000 sts (RohMesswertNick)+1,r19
1561 095e 2093 0000 sts RohMesswertNick,r18
1562 0962 9093 0000 sts (RohMesswertRoll)+1,r25
1563 0966 8093 0000 sts RohMesswertRoll,r24
1564 096a 8091 0000 lds r24,Mittelwert_AccNick
1565 096e 9091 0000 lds r25,(Mittelwert_AccNick)+1
1566 0972 AC01 movw r20,r24
1567 0974 440F lsl r20
1568 0976 551F rol r21
1569 0978 480F add r20,r24
1570 097a 591F adc r21,r25
1571 097c 2091 0000 lds r18,AdWertAccNick
1572 0980 3091 0000 lds r19,(AdWertAccNick)+1
1573 0984 C901 movw r24,r18
1574 0986 880F lsl r24
1575 0988 991F rol r25
1576 098a 880F lsl r24
1577 098c 991F rol r25
1578 098e 820F add r24,r18
1579 0990 931F adc r25,r19
1580 0992 820F add r24,r18
1581 0994 931F adc r25,r19
1582 0996 480F add r20,r24
1583 0998 591F adc r21,r25
1584 099a 57FF sbrs r21,7
1585 099c 02C0 rjmp .L66
1586 099e 4D5F subi r20,lo8(-(3))
1587 09a0 5F4F sbci r21,hi8(-(3))
1588 .L66:
1589 09a2 5595 asr r21
1590 09a4 4795 ror r20
1591 09a6 5595 asr r21
1592 09a8 4795 ror r20
1593 09aa 5093 0000 sts (Mittelwert_AccNick)+1,r21
1594 09ae 4093 0000 sts Mittelwert_AccNick,r20
1595 09b2 8091 0000 lds r24,Mittelwert_AccRoll
1596 09b6 9091 0000 lds r25,(Mittelwert_AccRoll)+1
1597 09ba AC01 movw r20,r24
1598 09bc 440F lsl r20
1599 09be 551F rol r21
1600 09c0 480F add r20,r24
1601 09c2 591F adc r21,r25
1602 09c4 2091 0000 lds r18,AdWertAccRoll
1603 09c8 3091 0000 lds r19,(AdWertAccRoll)+1
1604 09cc C901 movw r24,r18
1605 09ce 880F lsl r24
1606 09d0 991F rol r25
1607 09d2 880F lsl r24
1608 09d4 991F rol r25
1609 09d6 820F add r24,r18
1610 09d8 931F adc r25,r19
1611 09da 820F add r24,r18
1612 09dc 931F adc r25,r19
1613 09de 480F add r20,r24
1614 09e0 591F adc r21,r25
1615 09e2 57FF sbrs r21,7
1616 09e4 02C0 rjmp .L67
1617 09e6 4D5F subi r20,lo8(-(3))
1618 09e8 5F4F sbci r21,hi8(-(3))
1619 .L67:
1620 09ea 5595 asr r21
1621 09ec 4795 ror r20
1622 09ee 5595 asr r21
1623 09f0 4795 ror r20
1624 09f2 5093 0000 sts (Mittelwert_AccRoll)+1,r21
1625 09f6 4093 0000 sts Mittelwert_AccRoll,r20
1626 09fa 2091 0000 lds r18,AdWertAccNick
1627 09fe 3091 0000 lds r19,(AdWertAccNick)+1
1628 0a02 C901 movw r24,r18
1629 0a04 880F lsl r24
1630 0a06 991F rol r25
1631 0a08 880F lsl r24
1632 0a0a 991F rol r25
1633 0a0c 820F add r24,r18
1634 0a0e 931F adc r25,r19
1635 0a10 820F add r24,r18
1636 0a12 931F adc r25,r19
1637 0a14 9C01 movw r18,r24
1638 0a16 4427 clr r20
1639 0a18 37FD sbrc r19,7
1640 0a1a 4095 com r20
1641 0a1c 542F mov r21,r20
1642 0a1e 8091 0000 lds r24,IntegralAccNick
1643 0a22 9091 0000 lds r25,(IntegralAccNick)+1
1644 0a26 A091 0000 lds r26,(IntegralAccNick)+2
1645 0a2a B091 0000 lds r27,(IntegralAccNick)+3
1646 0a2e 820F add r24,r18
1647 0a30 931F adc r25,r19
1648 0a32 A41F adc r26,r20
1649 0a34 B51F adc r27,r21
1650 0a36 8093 0000 sts IntegralAccNick,r24
1651 0a3a 9093 0000 sts (IntegralAccNick)+1,r25
1652 0a3e A093 0000 sts (IntegralAccNick)+2,r26
1653 0a42 B093 0000 sts (IntegralAccNick)+3,r27
1654 0a46 2091 0000 lds r18,AdWertAccRoll
1655 0a4a 3091 0000 lds r19,(AdWertAccRoll)+1
1656 0a4e C901 movw r24,r18
1657 0a50 880F lsl r24
1658 0a52 991F rol r25
1659 0a54 880F lsl r24
1660 0a56 991F rol r25
1661 0a58 820F add r24,r18
1662 0a5a 931F adc r25,r19
1663 0a5c 820F add r24,r18
1664 0a5e 931F adc r25,r19
1665 0a60 9C01 movw r18,r24
1666 0a62 4427 clr r20
1667 0a64 37FD sbrc r19,7
1668 0a66 4095 com r20
1669 0a68 542F mov r21,r20
1670 0a6a 8091 0000 lds r24,IntegralAccRoll
1671 0a6e 9091 0000 lds r25,(IntegralAccRoll)+1
1672 0a72 A091 0000 lds r26,(IntegralAccRoll)+2
1673 0a76 B091 0000 lds r27,(IntegralAccRoll)+3
1674 0a7a 820F add r24,r18
1675 0a7c 931F adc r25,r19
1676 0a7e A41F adc r26,r20
1677 0a80 B51F adc r27,r21
1678 0a82 8093 0000 sts IntegralAccRoll,r24
1679 0a86 9093 0000 sts (IntegralAccRoll)+1,r25
1680 0a8a A093 0000 sts (IntegralAccRoll)+2,r26
1681 0a8e B093 0000 sts (IntegralAccRoll)+3,r27
1682 0a92 8091 0000 lds r24,NaviAccNick
1683 0a96 9091 0000 lds r25,(NaviAccNick)+1
1684 0a9a 2091 0000 lds r18,AdWertAccNick
1685 0a9e 3091 0000 lds r19,(AdWertAccNick)+1
1686 0aa2 820F add r24,r18
1687 0aa4 931F adc r25,r19
1688 0aa6 9093 0000 sts (NaviAccNick)+1,r25
1689 0aaa 8093 0000 sts NaviAccNick,r24
1690 0aae 8091 0000 lds r24,NaviAccRoll
1691 0ab2 9091 0000 lds r25,(NaviAccRoll)+1
1692 0ab6 2091 0000 lds r18,AdWertAccRoll
1693 0aba 3091 0000 lds r19,(AdWertAccRoll)+1
1694 0abe 820F add r24,r18
1695 0ac0 931F adc r25,r19
1696 0ac2 9093 0000 sts (NaviAccRoll)+1,r25
1697 0ac6 8093 0000 sts NaviAccRoll,r24
1698 0aca 8091 0000 lds r24,NaviCntAcc
1699 0ace 9091 0000 lds r25,(NaviCntAcc)+1
1700 0ad2 0196 adiw r24,1
1701 0ad4 9093 0000 sts (NaviCntAcc)+1,r25
1702 0ad8 8093 0000 sts NaviCntAcc,r24
1703 0adc 8091 0000 lds r24,Aktuell_az
1704 0ae0 9091 0000 lds r25,(Aktuell_az)+1
1705 0ae4 2091 0000 lds r18,NeutralAccZ
1706 0ae8 3091 0000 lds r19,(NeutralAccZ)+1
1707 0aec 821B sub r24,r18
1708 0aee 930B sbc r25,r19
1709 0af0 9C01 movw r18,r24
1710 0af2 4427 clr r20
1711 0af4 37FD sbrc r19,7
1712 0af6 4095 com r20
1713 0af8 542F mov r21,r20
1714 0afa 8091 0000 lds r24,IntegralAccZ
1715 0afe 9091 0000 lds r25,(IntegralAccZ)+1
1716 0b02 A091 0000 lds r26,(IntegralAccZ)+2
1717 0b06 B091 0000 lds r27,(IntegralAccZ)+3
1718 0b0a 820F add r24,r18
1719 0b0c 931F adc r25,r19
1720 0b0e A41F adc r26,r20
1721 0b10 B51F adc r27,r21
1722 0b12 8093 0000 sts IntegralAccZ,r24
1723 0b16 9093 0000 sts (IntegralAccZ)+1,r25
1724 0b1a A093 0000 sts (IntegralAccZ)+2,r26
1725 0b1e B093 0000 sts (IntegralAccZ)+3,r27
1726 0b22 8FEC ldi r24,lo8(-49)
1727 0b24 8093 7A00 sts 122,r24
1728 0b28 1092 0000 sts AdReady,__zero_reg__
1729 0b2c 2091 0000 lds r18,Mess_IntegralRoll
1730 0b30 3091 0000 lds r19,(Mess_IntegralRoll)+1
1731 0b34 4091 0000 lds r20,(Mess_IntegralRoll)+2
1732 0b38 5091 0000 lds r21,(Mess_IntegralRoll)+3
1733 0b3c 2987 std Y+9,r18
1734 0b3e 3A87 std Y+10,r19
1735 0b40 4B87 std Y+11,r20
1736 0b42 5C87 std Y+12,r21
1737 0b44 2954 subi r18,lo8(93001)
1738 0b46 3B46 sbci r19,hi8(93001)
1739 0b48 4140 sbci r20,hlo8(93001)
1740 0b4a 5040 sbci r21,hhi8(93001)
1741 0b4c 2CF0 brlt .L68
1742 0b4e 28E4 ldi r18,lo8(93000)
1743 0b50 3BE6 ldi r19,hi8(93000)
1744 0b52 41E0 ldi r20,hlo8(93000)
1745 0b54 50E0 ldi r21,hhi8(93000)
1746 0b56 0DC0 rjmp .L148
1747 .L68:
1748 0b58 8985 ldd r24,Y+9
1749 0b5a 9A85 ldd r25,Y+10
1750 0b5c AB85 ldd r26,Y+11
1751 0b5e BC85 ldd r27,Y+12
1752 0b60 885B subi r24,lo8(-93000)
1753 0b62 9449 sbci r25,hi8(-93000)
1754 0b64 AE4F sbci r26,hlo8(-93000)
1755 0b66 BF4F sbci r27,hhi8(-93000)
1756 0b68 4CF4 brge .L70
1757 0b6a 28EB ldi r18,lo8(-93000)
1758 0b6c 34E9 ldi r19,hi8(-93000)
1759 0b6e 4EEF ldi r20,hlo8(-93000)
1760 0b70 5FEF ldi r21,hhi8(-93000)
1761 .L148:
1762 0b72 2D83 std Y+5,r18
1763 0b74 3E83 std Y+6,r19
1764 0b76 4F83 std Y+7,r20
1765 0b78 5887 std Y+8,r21
1766 0b7a 08C0 rjmp .L69
1767 .L70:
1768 0b7c 8985 ldd r24,Y+9
1769 0b7e 9A85 ldd r25,Y+10
1770 0b80 AB85 ldd r26,Y+11
1771 0b82 BC85 ldd r27,Y+12
1772 0b84 8D83 std Y+5,r24
1773 0b86 9E83 std Y+6,r25
1774 0b88 AF83 std Y+7,r26
1775 0b8a B887 std Y+8,r27
1776 .L69:
1777 0b8c 2091 0000 lds r18,Mess_IntegralNick
1778 0b90 3091 0000 lds r19,(Mess_IntegralNick)+1
1779 0b94 4091 0000 lds r20,(Mess_IntegralNick)+2
1780 0b98 5091 0000 lds r21,(Mess_IntegralNick)+3
1781 0b9c 2D87 std Y+13,r18
1782 0b9e 3E87 std Y+14,r19
1783 0ba0 4F87 std Y+15,r20
1784 0ba2 588B std Y+16,r21
1785 0ba4 2954 subi r18,lo8(93001)
1786 0ba6 3B46 sbci r19,hi8(93001)
1787 0ba8 4140 sbci r20,hlo8(93001)
1788 0baa 5040 sbci r21,hhi8(93001)
1789 0bac 2CF0 brlt .L72
1790 0bae 28E4 ldi r18,lo8(93000)
1791 0bb0 3BE6 ldi r19,hi8(93000)
1792 0bb2 41E0 ldi r20,hlo8(93000)
1793 0bb4 50E0 ldi r21,hhi8(93000)
1794 0bb6 0DC0 rjmp .L149
1795 .L72:
1796 0bb8 8D85 ldd r24,Y+13
1797 0bba 9E85 ldd r25,Y+14
1798 0bbc AF85 ldd r26,Y+15
1799 0bbe B889 ldd r27,Y+16
1800 0bc0 885B subi r24,lo8(-93000)
1801 0bc2 9449 sbci r25,hi8(-93000)
1802 0bc4 AE4F sbci r26,hlo8(-93000)
1803 0bc6 BF4F sbci r27,hhi8(-93000)
1804 0bc8 4CF4 brge .L74
1805 0bca 28EB ldi r18,lo8(-93000)
1806 0bcc 34E9 ldi r19,hi8(-93000)
1807 0bce 4EEF ldi r20,hlo8(-93000)
1808 0bd0 5FEF ldi r21,hhi8(-93000)
1809 .L149:
1810 0bd2 2983 std Y+1,r18
1811 0bd4 3A83 std Y+2,r19
1812 0bd6 4B83 std Y+3,r20
1813 0bd8 5C83 std Y+4,r21
1814 0bda 08C0 rjmp .L73
1815 .L74:
1816 0bdc 8D85 ldd r24,Y+13
1817 0bde 9E85 ldd r25,Y+14
1818 0be0 AF85 ldd r26,Y+15
1819 0be2 B889 ldd r27,Y+16
1820 0be4 8983 std Y+1,r24
1821 0be6 9A83 std Y+2,r25
1822 0be8 AB83 std Y+3,r26
1823 0bea BC83 std Y+4,r27
1824 .L73:
1825 0bec A091 0000 lds r26,MesswertGier
1826 0bf0 B091 0000 lds r27,(MesswertGier)+1
1827 0bf4 BB8B std Y+19,r27
1828 0bf6 AA8B std Y+18,r26
1829 0bf8 FD01 movw r30,r26
1830 0bfa CF01 movw r24,r30
1831 0bfc AA27 clr r26
1832 0bfe 97FD sbrc r25,7
1833 0c00 A095 com r26
1834 0c02 BA2F mov r27,r26
1835 0c04 A090 0000 lds r10,Mess_Integral_Gier
1836 0c08 B090 0000 lds r11,(Mess_Integral_Gier)+1
1837 0c0c C090 0000 lds r12,(Mess_Integral_Gier)+2
1838 0c10 D090 0000 lds r13,(Mess_Integral_Gier)+3
1839 0c14 A80E add r10,r24
1840 0c16 B91E adc r11,r25
1841 0c18 CA1E adc r12,r26
1842 0c1a DB1E adc r13,r27
1843 0c1c A092 0000 sts Mess_Integral_Gier,r10
1844 0c20 B092 0000 sts (Mess_Integral_Gier)+1,r11
1845 0c24 C092 0000 sts (Mess_Integral_Gier)+2,r12
1846 0c28 D092 0000 sts (Mess_Integral_Gier)+3,r13
1847 0c2c E090 0000 lds r14,ErsatzKompass
1848 0c30 F090 0000 lds r15,(ErsatzKompass)+1
1849 0c34 0091 0000 lds r16,(ErsatzKompass)+2
1850 0c38 1091 0000 lds r17,(ErsatzKompass)+3
1851 0c3c E80E add r14,r24
1852 0c3e F91E adc r15,r25
1853 0c40 0A1F adc r16,r26
1854 0c42 1B1F adc r17,r27
1855 0c44 E092 0000 sts ErsatzKompass,r14
1856 0c48 F092 0000 sts (ErsatzKompass)+1,r15
1857 0c4c 0093 0000 sts (ErsatzKompass)+2,r16
1858 0c50 1093 0000 sts (ErsatzKompass)+3,r17
1859 0c54 F091 0000 lds r31,Looping_Nick
1860 0c58 F98B std Y+17,r31
1861 0c5a FF23 tst r31
1862 0c5c 09F0 breq .+2
1863 0c5e 98C1 rjmp .L76
1864 0c60 8091 0000 lds r24,Looping_Roll
1865 0c64 8823 tst r24
1866 0c66 09F0 breq .+2
1867 0c68 93C1 rjmp .L76
1868 0c6a 8091 0000 lds r24,EE_Parameter+13
1869 0c6e 86FF sbrs r24,6
1870 0c70 8FC1 rjmp .L76
1871 0c72 8091 0000 lds r24,MesswertRoll
1872 0c76 9091 0000 lds r25,(MesswertRoll)+1
1873 0c7a AA27 clr r26
1874 0c7c 97FD sbrc r25,7
1875 0c7e A095 com r26
1876 0c80 BA2F mov r27,r26
1877 0c82 BC01 movw r22,r24
1878 0c84 CD01 movw r24,r26
1879 0c86 2981 ldd r18,Y+1
1880 0c88 3A81 ldd r19,Y+2
1881 0c8a 4B81 ldd r20,Y+3
1882 0c8c 5C81 ldd r21,Y+4
1883 0c8e 0E94 0000 call __mulsi3
1884 0c92 9B01 movw r18,r22
1885 0c94 AC01 movw r20,r24
1886 0c96 97FF sbrs r25,7
1887 0c98 04C0 rjmp .L77
1888 0c9a 2150 subi r18,lo8(-(2047))
1889 0c9c 384F sbci r19,hi8(-(2047))
1890 0c9e 4F4F sbci r20,hlo8(-(2047))
1891 0ca0 5F4F sbci r21,hhi8(-(2047))
1892 .L77:
1893 0ca2 BBE0 ldi r27,11
1894 0ca4 5595 1: asr r21
1895 0ca6 4795 ror r20
1896 0ca8 3795 ror r19
1897 0caa 2795 ror r18
1898 0cac BA95 dec r27
1899 0cae D1F7 brne 1b
1900 0cb0 8091 0000 lds r24,Parameter_AchsKopplung2
1901 0cb4 682E mov r6,r24
1902 0cb6 7724 clr r7
1903 0cb8 8824 clr r8
1904 0cba 9924 clr r9
1905 0cbc CA01 movw r24,r20
1906 0cbe B901 movw r22,r18
1907 0cc0 A401 movw r20,r8
1908 0cc2 9301 movw r18,r6
1909 0cc4 0E94 0000 call __mulsi3
1910 0cc8 DC01 movw r26,r24
1911 0cca CB01 movw r24,r22
1912 0ccc 8093 0000 sts tmpl3.33,r24
1913 0cd0 9093 0000 sts (tmpl3.33)+1,r25
1914 0cd4 A093 0000 sts (tmpl3.33)+2,r26
1915 0cd8 B093 0000 sts (tmpl3.33)+3,r27
1916 0cdc B7FF sbrs r27,7
1917 0cde 04C0 rjmp .L78
1918 0ce0 8150 subi r24,lo8(-(4095))
1919 0ce2 904F sbci r25,hi8(-(4095))
1920 0ce4 AF4F sbci r26,hlo8(-(4095))
1921 0ce6 BF4F sbci r27,hhi8(-(4095))
1922 .L78:
1923 0ce8 1C01 movw r2,r24
1924 0cea 2D01 movw r4,r26
1925 0cec ACE0 ldi r26,12
1926 0cee 5594 1: asr r5
1927 0cf0 4794 ror r4
1928 0cf2 3794 ror r3
1929 0cf4 2794 ror r2
1930 0cf6 AA95 dec r26
1931 0cf8 D1F7 brne 1b
1932 0cfa 2092 0000 sts tmpl3.33,r2
1933 0cfe 3092 0000 sts (tmpl3.33)+1,r3
1934 0d02 4092 0000 sts (tmpl3.33)+2,r4
1935 0d06 5092 0000 sts (tmpl3.33)+3,r5
1936 0d0a 8091 0000 lds r24,MesswertNick
1937 0d0e 9091 0000 lds r25,(MesswertNick)+1
1938 0d12 AA27 clr r26
1939 0d14 97FD sbrc r25,7
1940 0d16 A095 com r26
1941 0d18 BA2F mov r27,r26
1942 0d1a BC01 movw r22,r24
1943 0d1c CD01 movw r24,r26
1944 0d1e 2D81 ldd r18,Y+5
1945 0d20 3E81 ldd r19,Y+6
1946 0d22 4F81 ldd r20,Y+7
1947 0d24 5885 ldd r21,Y+8
1948 0d26 0E94 0000 call __mulsi3
1949 0d2a 97FF sbrs r25,7
1950 0d2c 04C0 rjmp .L79
1951 0d2e 6150 subi r22,lo8(-(2047))
1952 0d30 784F sbci r23,hi8(-(2047))
1953 0d32 8F4F sbci r24,hlo8(-(2047))
1954 0d34 9F4F sbci r25,hhi8(-(2047))
1955 .L79:
1956 0d36 FBE0 ldi r31,11
1957 0d38 9595 1: asr r25
1958 0d3a 8795 ror r24
1959 0d3c 7795 ror r23
1960 0d3e 6795 ror r22
1961 0d40 FA95 dec r31
1962 0d42 D1F7 brne 1b
1963 0d44 A401 movw r20,r8
1964 0d46 9301 movw r18,r6
1965 0d48 0E94 0000 call __mulsi3
1966 0d4c DC01 movw r26,r24
1967 0d4e CB01 movw r24,r22
1968 0d50 8093 0000 sts tmpl4.34,r24
1969 0d54 9093 0000 sts (tmpl4.34)+1,r25
1970 0d58 A093 0000 sts (tmpl4.34)+2,r26
1971 0d5c B093 0000 sts (tmpl4.34)+3,r27
1972 0d60 B7FF sbrs r27,7
1973 0d62 04C0 rjmp .L80
1974 0d64 8150 subi r24,lo8(-(4095))
1975 0d66 904F sbci r25,hi8(-(4095))
1976 0d68 AF4F sbci r26,hlo8(-(4095))
1977 0d6a BF4F sbci r27,hhi8(-(4095))
1978 .L80:
1979 0d6c 9C01 movw r18,r24
1980 0d6e AD01 movw r20,r26
1981 0d70 ECE0 ldi r30,12
1982 0d72 5595 1: asr r21
1983 0d74 4795 ror r20
1984 0d76 3795 ror r19
1985 0d78 2795 ror r18
1986 0d7a EA95 dec r30
1987 0d7c D1F7 brne 1b
1988 0d7e 2093 0000 sts tmpl4.34,r18
1989 0d82 3093 0000 sts (tmpl4.34)+1,r19
1990 0d86 4093 0000 sts (tmpl4.34)+2,r20
1991 0d8a 5093 0000 sts (tmpl4.34)+3,r21
1992 0d8e 8091 0000 lds r24,tmpl3.33
1993 0d92 9091 0000 lds r25,(tmpl3.33)+1
1994 0d96 9093 0000 sts (KopplungsteilNickRoll)+1,r25
1995 0d9a 8093 0000 sts KopplungsteilNickRoll,r24
1996 0d9e 8091 0000 lds r24,tmpl4.34
1997 0da2 9091 0000 lds r25,(tmpl4.34)+1
1998 0da6 9093 0000 sts (KopplungsteilRollNick)+1,r25
1999 0daa 8093 0000 sts KopplungsteilRollNick,r24
2000 0dae 2219 sub r18,r2
2001 0db0 3309 sbc r19,r3
2002 0db2 4409 sbc r20,r4
2003 0db4 5509 sbc r21,r5
2004 0db6 2093 0000 sts tmpl4.34,r18
2005 0dba 3093 0000 sts (tmpl4.34)+1,r19
2006 0dbe 4093 0000 sts (tmpl4.34)+2,r20
2007 0dc2 5093 0000 sts (tmpl4.34)+3,r21
2008 0dc6 E20E add r14,r18
2009 0dc8 F31E adc r15,r19
2010 0dca 041F adc r16,r20
2011 0dcc 151F adc r17,r21
2012 0dce E092 0000 sts ErsatzKompass,r14
2013 0dd2 F092 0000 sts (ErsatzKompass)+1,r15
2014 0dd6 0093 0000 sts (ErsatzKompass)+2,r16
2015 0dda 1093 0000 sts (ErsatzKompass)+3,r17
2016 0dde 8091 0000 lds r24,Parameter_CouplingYawCorrection
2017 0de2 8823 tst r24
2018 0de4 B1F4 brne .L81
2019 0de6 57FF sbrs r21,7
2020 0de8 04C0 rjmp .L82
2021 0dea 2F5F subi r18,lo8(-(1))
2022 0dec 3F4F sbci r19,hi8(-(1))
2023 0dee 4F4F sbci r20,hlo8(-(1))
2024 0df0 5F4F sbci r21,hhi8(-(1))
2025 .L82:
2026 0df2 5595 asr r21
2027 0df4 4795 ror r20
2028 0df6 3795 ror r19
2029 0df8 2795 ror r18
2030 0dfa A21A sub r10,r18
2031 0dfc B30A sbc r11,r19
2032 0dfe C40A sbc r12,r20
2033 0e00 D50A sbc r13,r21
2034 0e02 A092 0000 sts Mess_Integral_Gier,r10
2035 0e06 B092 0000 sts (Mess_Integral_Gier)+1,r11
2036 0e0a C092 0000 sts (Mess_Integral_Gier)+2,r12
2037 0e0e D092 0000 sts (Mess_Integral_Gier)+3,r13
2038 .L81:
2039 0e12 2A89 ldd r18,Y+18
2040 0e14 3B89 ldd r19,Y+19
2041 0e16 7901 movw r14,r18
2042 0e18 0027 clr r16
2043 0e1a F7FC sbrc r15,7
2044 0e1c 0095 com r16
2045 0e1e 102F mov r17,r16
2046 0e20 8091 0000 lds r24,tmpl4.34
2047 0e24 9091 0000 lds r25,(tmpl4.34)+1
2048 0e28 A091 0000 lds r26,(tmpl4.34)+2
2049 0e2c B091 0000 lds r27,(tmpl4.34)+3
2050 0e30 E80E add r14,r24
2051 0e32 F91E adc r15,r25
2052 0e34 0A1F adc r16,r26
2053 0e36 1B1F adc r17,r27
2054 0e38 C801 movw r24,r16
2055 0e3a B701 movw r22,r14
2056 0e3c 2981 ldd r18,Y+1
2057 0e3e 3A81 ldd r19,Y+2
2058 0e40 4B81 ldd r20,Y+3
2059 0e42 5C81 ldd r21,Y+4
2060 0e44 0E94 0000 call __mulsi3
2061 0e48 9B01 movw r18,r22
2062 0e4a AC01 movw r20,r24
2063 0e4c 97FF sbrs r25,7
2064 0e4e 04C0 rjmp .L83
2065 0e50 2150 subi r18,lo8(-(2047))
2066 0e52 384F sbci r19,hi8(-(2047))
2067 0e54 4F4F sbci r20,hlo8(-(2047))
2068 0e56 5F4F sbci r21,hhi8(-(2047))
2069 .L83:
2070 0e58 6BE0 ldi r22,11
2071 0e5a 5595 1: asr r21
2072 0e5c 4795 ror r20
2073 0e5e 3795 ror r19
2074 0e60 2795 ror r18
2075 0e62 6A95 dec r22
2076 0e64 D1F7 brne 1b
2077 0e66 8091 0000 lds r24,Parameter_AchsKopplung1
2078 0e6a A82E mov r10,r24
2079 0e6c BB24 clr r11
2080 0e6e CC24 clr r12
2081 0e70 DD24 clr r13
2082 0e72 CA01 movw r24,r20
2083 0e74 B901 movw r22,r18
2084 0e76 A601 movw r20,r12
2085 0e78 9501 movw r18,r10
2086 0e7a 0E94 0000 call __mulsi3
2087 0e7e DC01 movw r26,r24
2088 0e80 CB01 movw r24,r22
2089 0e82 8093 0000 sts tmpl.31,r24
2090 0e86 9093 0000 sts (tmpl.31)+1,r25
2091 0e8a A093 0000 sts (tmpl.31)+2,r26
2092 0e8e B093 0000 sts (tmpl.31)+3,r27
2093 0e92 B7FF sbrs r27,7
2094 0e94 04C0 rjmp .L84
2095 0e96 8150 subi r24,lo8(-(4095))
2096 0e98 904F sbci r25,hi8(-(4095))
2097 0e9a AF4F sbci r26,hlo8(-(4095))
2098 0e9c BF4F sbci r27,hhi8(-(4095))
2099 .L84:
2100 0e9e 3C01 movw r6,r24
2101 0ea0 4D01 movw r8,r26
2102 0ea2 3CE0 ldi r19,12
2103 0ea4 9594 1: asr r9
2104 0ea6 8794 ror r8
2105 0ea8 7794 ror r7
2106 0eaa 6794 ror r6
2107 0eac 3A95 dec r19
2108 0eae D1F7 brne 1b
2109 0eb0 6092 0000 sts tmpl.31,r6
2110 0eb4 7092 0000 sts (tmpl.31)+1,r7
2111 0eb8 8092 0000 sts (tmpl.31)+2,r8
2112 0ebc 9092 0000 sts (tmpl.31)+3,r9
2113 0ec0 C801 movw r24,r16
2114 0ec2 B701 movw r22,r14
2115 0ec4 2D81 ldd r18,Y+5
2116 0ec6 3E81 ldd r19,Y+6
2117 0ec8 4F81 ldd r20,Y+7
2118 0eca 5885 ldd r21,Y+8
2119 0ecc 0E94 0000 call __mulsi3
2120 0ed0 97FF sbrs r25,7
2121 0ed2 04C0 rjmp .L85
2122 0ed4 6150 subi r22,lo8(-(2047))
2123 0ed6 784F sbci r23,hi8(-(2047))
2124 0ed8 8F4F sbci r24,hlo8(-(2047))
2125 0eda 9F4F sbci r25,hhi8(-(2047))
2126 .L85:
2127 0edc 2BE0 ldi r18,11
2128 0ede 9595 1: asr r25
2129 0ee0 8795 ror r24
2130 0ee2 7795 ror r23
2131 0ee4 6795 ror r22
2132 0ee6 2A95 dec r18
2133 0ee8 D1F7 brne 1b
2134 0eea A601 movw r20,r12
2135 0eec 9501 movw r18,r10
2136 0eee 0E94 0000 call __mulsi3
2137 0ef2 DC01 movw r26,r24
2138 0ef4 CB01 movw r24,r22
2139 0ef6 8093 0000 sts tmpl2.32,r24
2140 0efa 9093 0000 sts (tmpl2.32)+1,r25
2141 0efe A093 0000 sts (tmpl2.32)+2,r26
2142 0f02 B093 0000 sts (tmpl2.32)+3,r27
2143 0f06 B7FF sbrs r27,7
2144 0f08 04C0 rjmp .L86
2145 0f0a 8150 subi r24,lo8(-(4095))
2146 0f0c 904F sbci r25,hi8(-(4095))
2147 0f0e AF4F sbci r26,hlo8(-(4095))
2148 0f10 BF4F sbci r27,hhi8(-(4095))
2149 .L86:
2150 0f12 AC01 movw r20,r24
2151 0f14 BD01 movw r22,r26
2152 0f16 8CE0 ldi r24,12
2153 0f18 7595 1: asr r23
2154 0f1a 6795 ror r22
2155 0f1c 5795 ror r21
2156 0f1e 4795 ror r20
2157 0f20 8A95 dec r24
2158 0f22 D1F7 brne 1b
2159 0f24 4093 0000 sts tmpl2.32,r20
2160 0f28 5093 0000 sts (tmpl2.32)+1,r21
2161 0f2c 6093 0000 sts (tmpl2.32)+2,r22
2162 0f30 7093 0000 sts (tmpl2.32)+3,r23
2163 0f34 2A89 ldd r18,Y+18
2164 0f36 3B89 ldd r19,Y+19
2165 0f38 37FF sbrs r19,7
2166 0f3a 03C0 rjmp .L88
2167 0f3c 3095 com r19
2168 0f3e 2195 neg r18
2169 0f40 3F4F sbci r19,lo8(-1)
2170 .L88:
2171 0f42 2134 cpi r18,65
2172 0f44 3105 cpc r19,__zero_reg__
2173 0f46 E4F1 brlt .L93
2174 0f48 D401 movw r26,r8
2175 0f4a C301 movw r24,r6
2176 0f4c 97FE sbrs r9,7
2177 0f4e 07C0 rjmp .L91
2178 0f50 B095 com r27
2179 0f52 A095 com r26
2180 0f54 9095 com r25
2181 0f56 8195 neg r24
2182 0f58 9F4F sbci r25,lo8(-1)
2183 0f5a AF4F sbci r26,lo8(-1)
2184 0f5c BF4F sbci r27,lo8(-1)
2185 .L91:
2186 0f5e 8138 cpi r24,lo8(129)
2187 0f60 9105 cpc r25,__zero_reg__
2188 0f62 A105 cpc r26,__zero_reg__
2189 0f64 B105 cpc r27,__zero_reg__
2190 0f66 84F4 brge .L90
2191 0f68 DB01 movw r26,r22
2192 0f6a CA01 movw r24,r20
2193 0f6c 77FF sbrs r23,7
2194 0f6e 07C0 rjmp .L92
2195 0f70 B095 com r27
2196 0f72 A095 com r26
2197 0f74 9095 com r25
2198 0f76 8195 neg r24
2199 0f78 9F4F sbci r25,lo8(-1)
2200 0f7a AF4F sbci r26,lo8(-1)
2201 0f7c BF4F sbci r27,lo8(-1)
2202 .L92:
2203 0f7e 8138 cpi r24,lo8(129)
2204 0f80 9105 cpc r25,__zero_reg__
2205 0f82 A105 cpc r26,__zero_reg__
2206 0f84 B105 cpc r27,__zero_reg__
2207 0f86 E4F0 brlt .L93
2208 .L90:
2209 0f88 81E0 ldi r24,lo8(1)
2210 0f8a 8093 0000 sts TrichterFlug,r24
2211 0f8e 18C0 rjmp .L93
2212 .L76:
2213 0f90 1092 0000 sts (KopplungsteilRollNick)+1,__zero_reg__
2214 0f94 1092 0000 sts KopplungsteilRollNick,__zero_reg__
2215 0f98 1092 0000 sts (KopplungsteilNickRoll)+1,__zero_reg__
2216 0f9c 1092 0000 sts KopplungsteilNickRoll,__zero_reg__
2217 0fa0 1092 0000 sts tmpl2.32,__zero_reg__
2218 0fa4 1092 0000 sts (tmpl2.32)+1,__zero_reg__
2219 0fa8 1092 0000 sts (tmpl2.32)+2,__zero_reg__
2220 0fac 1092 0000 sts (tmpl2.32)+3,__zero_reg__
2221 0fb0 1092 0000 sts tmpl.31,__zero_reg__
2222 0fb4 1092 0000 sts (tmpl.31)+1,__zero_reg__
2223 0fb8 1092 0000 sts (tmpl.31)+2,__zero_reg__
2224 0fbc 1092 0000 sts (tmpl.31)+3,__zero_reg__
2225 .L93:
2226 0fc0 8091 0000 lds r24,tmpl2.32
2227 0fc4 9091 0000 lds r25,(tmpl2.32)+1
2228 0fc8 A091 0000 lds r26,(tmpl2.32)+2
2229 0fcc B091 0000 lds r27,(tmpl2.32)+3
2230 0fd0 BC01 movw r22,r24
2231 0fd2 CD01 movw r24,r26
2232 0fd4 24E6 ldi r18,lo8(100)
2233 0fd6 30E0 ldi r19,hi8(100)
2234 0fd8 40E0 ldi r20,hlo8(100)
2235 0fda 50E0 ldi r21,hhi8(100)
2236 0fdc 0E94 0000 call __divmodsi4
2237 0fe0 E090 0000 lds r14,tmpl.31
2238 0fe4 F090 0000 lds r15,(tmpl.31)+1
2239 0fe8 E21A sub r14,r18
2240 0fea F30A sbc r15,r19
2241 0fec F092 0000 sts (TrimRoll)+1,r15
2242 0ff0 E092 0000 sts TrimRoll,r14
2243 0ff4 8091 0000 lds r24,tmpl.31
2244 0ff8 9091 0000 lds r25,(tmpl.31)+1
2245 0ffc A091 0000 lds r26,(tmpl.31)+2
2246 1000 B091 0000 lds r27,(tmpl.31)+3
2247 1004 BC01 movw r22,r24
2248 1006 CD01 movw r24,r26
2249 1008 24E6 ldi r18,lo8(100)
2250 100a 30E0 ldi r19,hi8(100)
2251 100c 40E0 ldi r20,hlo8(100)
2252 100e 50E0 ldi r21,hhi8(100)
2253 1010 0E94 0000 call __divmodsi4
2254 1014 DA01 movw r26,r20
2255 1016 C901 movw r24,r18
2256 1018 2091 0000 lds r18,tmpl2.32
2257 101c 3091 0000 lds r19,(tmpl2.32)+1
2258 1020 8C01 movw r16,r24
2259 1022 021B sub r16,r18
2260 1024 130B sbc r17,r19
2261 1026 1093 0000 sts (TrimNick)+1,r17
2262 102a 0093 0000 sts TrimNick,r16
2263 102e 8091 0000 lds r24,GIER_GRAD_FAKTOR
2264 1032 9091 0000 lds r25,(GIER_GRAD_FAKTOR)+1
2265 1036 A091 0000 lds r26,(GIER_GRAD_FAKTOR)+2
2266 103a B091 0000 lds r27,(GIER_GRAD_FAKTOR)+3
2267 103e BC01 movw r22,r24
2268 1040 CD01 movw r24,r26
2269 1042 28E6 ldi r18,lo8(360)
2270 1044 31E0 ldi r19,hi8(360)
2271 1046 40E0 ldi r20,hlo8(360)
2272 1048 50E0 ldi r21,hhi8(360)
2273 104a 0E94 0000 call __mulsi3
2274 104e 2091 0000 lds r18,ErsatzKompass
2275 1052 3091 0000 lds r19,(ErsatzKompass)+1
2276 1056 4091 0000 lds r20,(ErsatzKompass)+2
2277 105a 5091 0000 lds r21,(ErsatzKompass)+3
2278 105e 2617 cp r18,r22
2279 1060 3707 cpc r19,r23
2280 1062 4807 cpc r20,r24
2281 1064 5907 cpc r21,r25
2282 1066 64F0 brlt .L94
2283 1068 261B sub r18,r22
2284 106a 370B sbc r19,r23
2285 106c 480B sbc r20,r24
2286 106e 590B sbc r21,r25
2287 1070 2093 0000 sts ErsatzKompass,r18
2288 1074 3093 0000 sts (ErsatzKompass)+1,r19
2289 1078 4093 0000 sts (ErsatzKompass)+2,r20
2290 107c 5093 0000 sts (ErsatzKompass)+3,r21
2291 .L94:
2292 1080 2091 0000 lds r18,ErsatzKompass
2293 1084 3091 0000 lds r19,(ErsatzKompass)+1
2294 1088 4091 0000 lds r20,(ErsatzKompass)+2
2295 108c 5091 0000 lds r21,(ErsatzKompass)+3
2296 1090 57FF sbrs r21,7
2297 1092 0CC0 rjmp .L95
2298 1094 260F add r18,r22
2299 1096 371F adc r19,r23
2300 1098 481F adc r20,r24
2301 109a 591F adc r21,r25
2302 109c 2093 0000 sts ErsatzKompass,r18
2303 10a0 3093 0000 sts (ErsatzKompass)+1,r19
2304 10a4 4093 0000 sts (ErsatzKompass)+2,r20
2305 10a8 5093 0000 sts (ErsatzKompass)+3,r21
2306 .L95:
2307 10ac 6091 0000 lds r22,MesswertRoll
2308 10b0 7091 0000 lds r23,(MesswertRoll)+1
2309 10b4 6E0D add r22,r14
2310 10b6 7F1D adc r23,r15
2311 10b8 9B01 movw r18,r22
2312 10ba 4427 clr r20
2313 10bc 37FD sbrc r19,7
2314 10be 4095 com r20
2315 10c0 542F mov r21,r20
2316 10c2 8091 0000 lds r24,Mess_IntegralRoll2
2317 10c6 9091 0000 lds r25,(Mess_IntegralRoll2)+1
2318 10ca A091 0000 lds r26,(Mess_IntegralRoll2)+2
2319 10ce B091 0000 lds r27,(Mess_IntegralRoll2)+3
2320 10d2 820F add r24,r18
2321 10d4 931F adc r25,r19
2322 10d6 A41F adc r26,r20
2323 10d8 B51F adc r27,r21
2324 10da 8093 0000 sts Mess_IntegralRoll2,r24
2325 10de 9093 0000 sts (Mess_IntegralRoll2)+1,r25
2326 10e2 A093 0000 sts (Mess_IntegralRoll2)+2,r26
2327 10e6 B093 0000 sts (Mess_IntegralRoll2)+3,r27
2328 10ea 8091 0000 lds r24,LageKorrekturRoll
2329 10ee 9091 0000 lds r25,(LageKorrekturRoll)+1
2330 10f2 681B sub r22,r24
2331 10f4 790B sbc r23,r25
2332 10f6 CB01 movw r24,r22
2333 10f8 AA27 clr r26
2334 10fa 97FD sbrc r25,7
2335 10fc A095 com r26
2336 10fe BA2F mov r27,r26
2337 1100 2985 ldd r18,Y+9
2338 1102 3A85 ldd r19,Y+10
2339 1104 4B85 ldd r20,Y+11
2340 1106 5C85 ldd r21,Y+12
2341 1108 820F add r24,r18
2342 110a 931F adc r25,r19
2343 110c A41F adc r26,r20
2344 110e B51F adc r27,r21
2345 1110 8093 0000 sts Mess_IntegralRoll,r24
2346 1114 9093 0000 sts (Mess_IntegralRoll)+1,r25
2347 1118 A093 0000 sts (Mess_IntegralRoll)+2,r26
2348 111c B093 0000 sts (Mess_IntegralRoll)+3,r27
2349 1120 C090 0000 lds r12,Umschlag180Roll
2350 1124 D090 0000 lds r13,(Umschlag180Roll)+1
2351 1128 E090 0000 lds r14,(Umschlag180Roll)+2
2352 112c F090 0000 lds r15,(Umschlag180Roll)+3
2353 1130 C816 cp r12,r24
2354 1132 D906 cpc r13,r25
2355 1134 EA06 cpc r14,r26
2356 1136 FB06 cpc r15,r27
2357 1138 C4F4 brge .L96
2358 113a 88EA ldi r24,lo8(25000)
2359 113c 91E6 ldi r25,hi8(25000)
2360 113e A0E0 ldi r26,hlo8(25000)
2361 1140 B0E0 ldi r27,hhi8(25000)
2362 1142 8C19 sub r24,r12
2363 1144 9D09 sbc r25,r13
2364 1146 AE09 sbc r26,r14
2365 1148 BF09 sbc r27,r15
2366 114a 8093 0000 sts Mess_IntegralRoll,r24
2367 114e 9093 0000 sts (Mess_IntegralRoll)+1,r25
2368 1152 A093 0000 sts (Mess_IntegralRoll)+2,r26
2369 1156 B093 0000 sts (Mess_IntegralRoll)+3,r27
2370 115a 8093 0000 sts Mess_IntegralRoll2,r24
2371 115e 9093 0000 sts (Mess_IntegralRoll2)+1,r25
2372 1162 A093 0000 sts (Mess_IntegralRoll2)+2,r26
2373 1166 B093 0000 sts (Mess_IntegralRoll2)+3,r27
2374 .L96:
2375 116a 2227 clr r18
2376 116c 3327 clr r19
2377 116e A901 movw r20,r18
2378 1170 2C19 sub r18,r12
2379 1172 3D09 sbc r19,r13
2380 1174 4E09 sbc r20,r14
2381 1176 5F09 sbc r21,r15
2382 1178 8091 0000 lds r24,Mess_IntegralRoll
2383 117c 9091 0000 lds r25,(Mess_IntegralRoll)+1
2384 1180 A091 0000 lds r26,(Mess_IntegralRoll)+2
2385 1184 B091 0000 lds r27,(Mess_IntegralRoll)+3
2386 1188 8217 cp r24,r18
2387 118a 9307 cpc r25,r19
2388 118c A407 cpc r26,r20
2389 118e B507 cpc r27,r21
2390 1190 B4F4 brge .L97
2391 1192 D701 movw r26,r14
2392 1194 C601 movw r24,r12
2393 1196 885A subi r24,lo8(-(-25000))
2394 1198 9146 sbci r25,hi8(-(-25000))
2395 119a A040 sbci r26,hlo8(-(-25000))
2396 119c B040 sbci r27,hhi8(-(-25000))
2397 119e 8093 0000 sts Mess_IntegralRoll,r24
2398 11a2 9093 0000 sts (Mess_IntegralRoll)+1,r25
2399 11a6 A093 0000 sts (Mess_IntegralRoll)+2,r26
2400 11aa B093 0000 sts (Mess_IntegralRoll)+3,r27
2401 11ae 8093 0000 sts Mess_IntegralRoll2,r24
2402 11b2 9093 0000 sts (Mess_IntegralRoll2)+1,r25
2403 11b6 A093 0000 sts (Mess_IntegralRoll2)+2,r26
2404 11ba B093 0000 sts (Mess_IntegralRoll2)+3,r27
2405 .L97:
2406 11be 6091 0000 lds r22,MesswertNick
2407 11c2 7091 0000 lds r23,(MesswertNick)+1
2408 11c6 600F add r22,r16
2409 11c8 711F adc r23,r17
2410 11ca 9B01 movw r18,r22
2411 11cc 4427 clr r20
2412 11ce 37FD sbrc r19,7
2413 11d0 4095 com r20
2414 11d2 542F mov r21,r20
2415 11d4 8091 0000 lds r24,Mess_IntegralNick2
2416 11d8 9091 0000 lds r25,(Mess_IntegralNick2)+1
2417 11dc A091 0000 lds r26,(Mess_IntegralNick2)+2
2418 11e0 B091 0000 lds r27,(Mess_IntegralNick2)+3
2419 11e4 820F add r24,r18
2420 11e6 931F adc r25,r19
2421 11e8 A41F adc r26,r20
2422 11ea B51F adc r27,r21
2423 11ec 8093 0000 sts Mess_IntegralNick2,r24
2424 11f0 9093 0000 sts (Mess_IntegralNick2)+1,r25
2425 11f4 A093 0000 sts (Mess_IntegralNick2)+2,r26
2426 11f8 B093 0000 sts (Mess_IntegralNick2)+3,r27
2427 11fc 8091 0000 lds r24,LageKorrekturNick
2428 1200 9091 0000 lds r25,(LageKorrekturNick)+1
2429 1204 681B sub r22,r24
2430 1206 790B sbc r23,r25
2431 1208 CB01 movw r24,r22
2432 120a AA27 clr r26
2433 120c 97FD sbrc r25,7
2434 120e A095 com r26
2435 1210 BA2F mov r27,r26
2436 1212 2D85 ldd r18,Y+13
2437 1214 3E85 ldd r19,Y+14
2438 1216 4F85 ldd r20,Y+15
2439 1218 5889 ldd r21,Y+16
2440 121a 820F add r24,r18
2441 121c 931F adc r25,r19
2442 121e A41F adc r26,r20
2443 1220 B51F adc r27,r21
2444 1222 8093 0000 sts Mess_IntegralNick,r24
2445 1226 9093 0000 sts (Mess_IntegralNick)+1,r25
2446 122a A093 0000 sts (Mess_IntegralNick)+2,r26
2447 122e B093 0000 sts (Mess_IntegralNick)+3,r27
2448 1232 E090 0000 lds r14,Umschlag180Nick
2449 1236 F090 0000 lds r15,(Umschlag180Nick)+1
2450 123a 0091 0000 lds r16,(Umschlag180Nick)+2
2451 123e 1091 0000 lds r17,(Umschlag180Nick)+3
2452 1242 E816 cp r14,r24
2453 1244 F906 cpc r15,r25
2454 1246 0A07 cpc r16,r26
2455 1248 1B07 cpc r17,r27
2456 124a C4F4 brge .L98
2457 124c 88EA ldi r24,lo8(25000)
2458 124e 91E6 ldi r25,hi8(25000)
2459 1250 A0E0 ldi r26,hlo8(25000)
2460 1252 B0E0 ldi r27,hhi8(25000)
2461 1254 8E19 sub r24,r14
2462 1256 9F09 sbc r25,r15
2463 1258 A00B sbc r26,r16
2464 125a B10B sbc r27,r17
2465 125c 8093 0000 sts Mess_IntegralNick,r24
2466 1260 9093 0000 sts (Mess_IntegralNick)+1,r25
2467 1264 A093 0000 sts (Mess_IntegralNick)+2,r26
2468 1268 B093 0000 sts (Mess_IntegralNick)+3,r27
2469 126c 8093 0000 sts Mess_IntegralNick2,r24
2470 1270 9093 0000 sts (Mess_IntegralNick2)+1,r25
2471 1274 A093 0000 sts (Mess_IntegralNick2)+2,r26
2472 1278 B093 0000 sts (Mess_IntegralNick2)+3,r27
2473 .L98:
2474 127c 2227 clr r18
2475 127e 3327 clr r19
2476 1280 A901 movw r20,r18
2477 1282 2E19 sub r18,r14
2478 1284 3F09 sbc r19,r15
2479 1286 400B sbc r20,r16
2480 1288 510B sbc r21,r17
2481 128a 8091 0000 lds r24,Mess_IntegralNick
2482 128e 9091 0000 lds r25,(Mess_IntegralNick)+1
2483 1292 A091 0000 lds r26,(Mess_IntegralNick)+2
2484 1296 B091 0000 lds r27,(Mess_IntegralNick)+3
2485 129a 8217 cp r24,r18
2486 129c 9307 cpc r25,r19
2487 129e A407 cpc r26,r20
2488 12a0 B507 cpc r27,r21
2489 12a2 B4F4 brge .L99
2490 12a4 D801 movw r26,r16
2491 12a6 C701 movw r24,r14
2492 12a8 885A subi r24,lo8(-(-25000))
2493 12aa 9146 sbci r25,hi8(-(-25000))
2494 12ac A040 sbci r26,hlo8(-(-25000))
2495 12ae B040 sbci r27,hhi8(-(-25000))
2496 12b0 8093 0000 sts Mess_IntegralNick,r24
2497 12b4 9093 0000 sts (Mess_IntegralNick)+1,r25
2498 12b8 A093 0000 sts (Mess_IntegralNick)+2,r26
2499 12bc B093 0000 sts (Mess_IntegralNick)+3,r27
2500 12c0 8093 0000 sts Mess_IntegralNick2,r24
2501 12c4 9093 0000 sts (Mess_IntegralNick2)+1,r25
2502 12c8 A093 0000 sts (Mess_IntegralNick2)+2,r26
2503 12cc B093 0000 sts (Mess_IntegralNick2)+3,r27
2504 .L99:
2505 12d0 8091 0000 lds r24,Mess_Integral_Gier
2506 12d4 9091 0000 lds r25,(Mess_Integral_Gier)+1
2507 12d8 A091 0000 lds r26,(Mess_Integral_Gier)+2
2508 12dc B091 0000 lds r27,(Mess_Integral_Gier)+3
2509 12e0 8093 0000 sts Integral_Gier,r24
2510 12e4 9093 0000 sts (Integral_Gier)+1,r25
2511 12e8 A093 0000 sts (Integral_Gier)+2,r26
2512 12ec B093 0000 sts (Integral_Gier)+3,r27
2513 12f0 8091 0000 lds r24,Mess_IntegralNick
2514 12f4 9091 0000 lds r25,(Mess_IntegralNick)+1
2515 12f8 A091 0000 lds r26,(Mess_IntegralNick)+2
2516 12fc B091 0000 lds r27,(Mess_IntegralNick)+3
2517 1300 8093 0000 sts IntegralNick,r24
2518 1304 9093 0000 sts (IntegralNick)+1,r25
2519 1308 A093 0000 sts (IntegralNick)+2,r26
2520 130c B093 0000 sts (IntegralNick)+3,r27
2521 1310 8091 0000 lds r24,Mess_IntegralRoll
2522 1314 9091 0000 lds r25,(Mess_IntegralRoll)+1
2523 1318 A091 0000 lds r26,(Mess_IntegralRoll)+2
2524 131c B091 0000 lds r27,(Mess_IntegralRoll)+3
2525 1320 8093 0000 sts IntegralRoll,r24
2526 1324 9093 0000 sts (IntegralRoll)+1,r25
2527 1328 A093 0000 sts (IntegralRoll)+2,r26
2528 132c B093 0000 sts (IntegralRoll)+3,r27
2529 1330 8091 0000 lds r24,Mess_IntegralNick2
2530 1334 9091 0000 lds r25,(Mess_IntegralNick2)+1
2531 1338 A091 0000 lds r26,(Mess_IntegralNick2)+2
2532 133c B091 0000 lds r27,(Mess_IntegralNick2)+3
2533 1340 8093 0000 sts IntegralNick2,r24
2534 1344 9093 0000 sts (IntegralNick2)+1,r25
2535 1348 A093 0000 sts (IntegralNick2)+2,r26
2536 134c B093 0000 sts (IntegralNick2)+3,r27
2537 1350 8091 0000 lds r24,Mess_IntegralRoll2
2538 1354 9091 0000 lds r25,(Mess_IntegralRoll2)+1
2539 1358 A091 0000 lds r26,(Mess_IntegralRoll2)+2
2540 135c B091 0000 lds r27,(Mess_IntegralRoll2)+3
2541 1360 8093 0000 sts IntegralRoll2,r24
2542 1364 9093 0000 sts (IntegralRoll2)+1,r25
2543 1368 A093 0000 sts (IntegralRoll2)+2,r26
2544 136c B093 0000 sts (IntegralRoll2)+3,r27
2545 1370 8091 0000 lds r24,HiResNick
2546 1374 9091 0000 lds r25,(HiResNick)+1
2547 1378 97FD sbrc r25,7
2548 137a 0796 adiw r24,7
2549 .L100:
2550 137c 03E0 ldi r16,3
2551 137e 9595 1: asr r25
2552 1380 8795 ror r24
2553 1382 0A95 dec r16
2554 1384 E1F7 brne 1b
2555 1386 9093 0000 sts (MesswertNick)+1,r25
2556 138a 8093 0000 sts MesswertNick,r24
2557 138e 8091 0000 lds r24,HiResRoll
2558 1392 9091 0000 lds r25,(HiResRoll)+1
2559 1396 97FD sbrc r25,7
2560 1398 0796 adiw r24,7
2561 .L101:
2562 139a 13E0 ldi r17,3
2563 139c 9595 1: asr r25
2564 139e 8795 ror r24
2565 13a0 1A95 dec r17
2566 13a2 E1F7 brne 1b
2567 13a4 9093 0000 sts (MesswertRoll)+1,r25
2568 13a8 8093 0000 sts MesswertRoll,r24
2569 13ac 8091 0000 lds r24,AdWertNick
2570 13b0 9091 0000 lds r25,(AdWertNick)+1
2571 13b4 0F97 sbiw r24,15
2572 13b6 34F4 brge .L102
2573 13b8 88E1 ldi r24,lo8(-1000)
2574 13ba 9CEF ldi r25,hi8(-1000)
2575 13bc 9093 0000 sts (MesswertNick)+1,r25
2576 13c0 8093 0000 sts MesswertNick,r24
2577 .L102:
2578 13c4 8091 0000 lds r24,AdWertNick
2579 13c8 9091 0000 lds r25,(AdWertNick)+1
2580 13cc 0797 sbiw r24,7
2581 13ce 34F4 brge .L103
2582 13d0 80E3 ldi r24,lo8(-2000)
2583 13d2 98EF ldi r25,hi8(-2000)
2584 13d4 9093 0000 sts (MesswertNick)+1,r25
2585 13d8 8093 0000 sts MesswertNick,r24
2586 .L103:
2587 13dc 2091 0000 lds r18,PlatinenVersion
2588 13e0 2A30 cpi r18,lo8(10)
2589 13e2 A9F4 brne .L104
2590 13e4 8091 0000 lds r24,AdWertNick
2591 13e8 9091 0000 lds r25,(AdWertNick)+1
2592 13ec 835F subi r24,lo8(1011)
2593 13ee 9340 sbci r25,hi8(1011)
2594 13f0 34F0 brlt .L105
2595 13f2 88EE ldi r24,lo8(1000)
2596 13f4 93E0 ldi r25,hi8(1000)
2597 13f6 9093 0000 sts (MesswertNick)+1,r25
2598 13fa 8093 0000 sts MesswertNick,r24
2599 .L105:
2600 13fe 8091 0000 lds r24,AdWertNick
2601 1402 9091 0000 lds r25,(AdWertNick)+1
2602 1406 8A5F subi r24,lo8(1018)
2603 1408 9340 sbci r25,hi8(1018)
2604 140a DCF0 brlt .L107
2605 140c 14C0 rjmp .L150
2606 .L104:
2607 140e 8091 0000 lds r24,AdWertNick
2608 1412 9091 0000 lds r25,(AdWertNick)+1
2609 1416 815D subi r24,lo8(2001)
2610 1418 9740 sbci r25,hi8(2001)
2611 141a 34F0 brlt .L108
2612 141c 88EE ldi r24,lo8(1000)
2613 141e 93E0 ldi r25,hi8(1000)
2614 1420 9093 0000 sts (MesswertNick)+1,r25
2615 1424 8093 0000 sts MesswertNick,r24
2616 .L108:
2617 1428 8091 0000 lds r24,AdWertNick
2618 142c 9091 0000 lds r25,(AdWertNick)+1
2619 1430 805E subi r24,lo8(2016)
2620 1432 9740 sbci r25,hi8(2016)
2621 1434 34F0 brlt .L107
2622 .L150:
2623 1436 80ED ldi r24,lo8(2000)
2624 1438 97E0 ldi r25,hi8(2000)
2625 143a 9093 0000 sts (MesswertNick)+1,r25
2626 143e 8093 0000 sts MesswertNick,r24
2627 .L107:
2628 1442 8091 0000 lds r24,AdWertRoll
2629 1446 9091 0000 lds r25,(AdWertRoll)+1
2630 144a 0F97 sbiw r24,15
2631 144c 34F4 brge .L110
2632 144e 88E1 ldi r24,lo8(-1000)
2633 1450 9CEF ldi r25,hi8(-1000)
2634 1452 9093 0000 sts (MesswertRoll)+1,r25
2635 1456 8093 0000 sts MesswertRoll,r24
2636 .L110:
2637 145a 8091 0000 lds r24,AdWertRoll
2638 145e 9091 0000 lds r25,(AdWertRoll)+1
2639 1462 0797 sbiw r24,7
2640 1464 34F4 brge .L111
2641 1466 80E3 ldi r24,lo8(-2000)
2642 1468 98EF ldi r25,hi8(-2000)
2643 146a 9093 0000 sts (MesswertRoll)+1,r25
2644 146e 8093 0000 sts MesswertRoll,r24
2645 .L111:
2646 1472 2A30 cpi r18,lo8(10)
2647 1474 A9F4 brne .L112
2648 1476 8091 0000 lds r24,AdWertRoll
2649 147a 9091 0000 lds r25,(AdWertRoll)+1
2650 147e 835F subi r24,lo8(1011)
2651 1480 9340 sbci r25,hi8(1011)
2652 1482 34F0 brlt .L113
2653 1484 88EE ldi r24,lo8(1000)
2654 1486 93E0 ldi r25,hi8(1000)
2655 1488 9093 0000 sts (MesswertRoll)+1,r25
2656 148c 8093 0000 sts MesswertRoll,r24
2657 .L113:
2658 1490 8091 0000 lds r24,AdWertRoll
2659 1494 9091 0000 lds r25,(AdWertRoll)+1
2660 1498 8A5F subi r24,lo8(1018)
2661 149a 9340 sbci r25,hi8(1018)
2662 149c DCF0 brlt .L115
2663 149e 14C0 rjmp .L151
2664 .L112:
2665 14a0 8091 0000 lds r24,AdWertRoll
2666 14a4 9091 0000 lds r25,(AdWertRoll)+1
2667 14a8 815D subi r24,lo8(2001)
2668 14aa 9740 sbci r25,hi8(2001)
2669 14ac 34F0 brlt .L116
2670 14ae 88EE ldi r24,lo8(1000)
2671 14b0 93E0 ldi r25,hi8(1000)
2672 14b2 9093 0000 sts (MesswertRoll)+1,r25
2673 14b6 8093 0000 sts MesswertRoll,r24
2674 .L116:
2675 14ba 8091 0000 lds r24,AdWertRoll
2676 14be 9091 0000 lds r25,(AdWertRoll)+1
2677 14c2 805E subi r24,lo8(2016)
2678 14c4 9740 sbci r25,hi8(2016)
2679 14c6 34F0 brlt .L115
2680 .L151:
2681 14c8 80ED ldi r24,lo8(2000)
2682 14ca 97E0 ldi r25,hi8(2000)
2683 14cc 9093 0000 sts (MesswertRoll)+1,r25
2684 14d0 8093 0000 sts MesswertRoll,r24
2685 .L115:
2686 14d4 6091 0000 lds r22,Parameter_Gyro_D
2687 14d8 6623 tst r22
2688 14da 09F4 brne .+2
2689 14dc AFC0 rjmp .L118
2690 14de 4091 0000 lds r20,HiResNick
2691 14e2 5091 0000 lds r21,(HiResNick)+1
2692 14e6 8091 0000 lds r24,oldNick.35
2693 14ea 9091 0000 lds r25,(oldNick.35)+1
2694 14ee 481B sub r20,r24
2695 14f0 590B sbc r21,r25
2696 14f2 5093 0000 sts (d2Nick.38)+1,r21
2697 14f6 4093 0000 sts d2Nick.38,r20
2698 14fa 2091 0000 lds r18,HiResNick
2699 14fe 3091 0000 lds r19,(HiResNick)+1
2700 1502 280F add r18,r24
2701 1504 391F adc r19,r25
2702 1506 37FF sbrs r19,7
2703 1508 02C0 rjmp .L119
2704 150a 2F5F subi r18,lo8(-(1))
2705 150c 3F4F sbci r19,hi8(-(1))
2706 .L119:
2707 150e 3595 asr r19
2708 1510 2795 ror r18
2709 1512 3093 0000 sts (oldNick.35)+1,r19
2710 1516 2093 0000 sts oldNick.35,r18
2711 151a 4138 cpi r20,129
2712 151c 5105 cpc r21,__zero_reg__
2713 151e 1CF0 brlt .L120
2714 1520 80E8 ldi r24,lo8(128)
2715 1522 90E0 ldi r25,hi8(128)
2716 1524 05C0 rjmp .L152
2717 .L120:
2718 1526 4058 subi r20,lo8(-128)
2719 1528 5F4F sbci r21,hi8(-128)
2720 152a 34F4 brge .L121
2721 152c 80E8 ldi r24,lo8(-128)
2722 152e 9FEF ldi r25,hi8(-128)
2723 .L152:
2724 1530 9093 0000 sts (d2Nick.38)+1,r25
2725 1534 8093 0000 sts d2Nick.38,r24
2726 .L121:
2727 1538 4091 0000 lds r20,HiResRoll
2728 153c 5091 0000 lds r21,(HiResRoll)+1
2729 1540 8091 0000 lds r24,oldRoll.36
2730 1544 9091 0000 lds r25,(oldRoll.36)+1
2731 1548 481B sub r20,r24
2732 154a 590B sbc r21,r25
2733 154c 5093 0000 sts (d2Roll.37)+1,r21
2734 1550 4093 0000 sts d2Roll.37,r20
2735 1554 2091 0000 lds r18,HiResRoll
2736 1558 3091 0000 lds r19,(HiResRoll)+1
2737 155c 280F add r18,r24
2738 155e 391F adc r19,r25
2739 1560 37FF sbrs r19,7
2740 1562 02C0 rjmp .L123
2741 1564 2F5F subi r18,lo8(-(1))
2742 1566 3F4F sbci r19,hi8(-(1))
2743 .L123:
2744 1568 3595 asr r19
2745 156a 2795 ror r18
2746 156c 3093 0000 sts (oldRoll.36)+1,r19
2747 1570 2093 0000 sts oldRoll.36,r18
2748 1574 4138 cpi r20,129
2749 1576 5105 cpc r21,__zero_reg__
2750 1578 1CF0 brlt .L124
2751 157a 80E8 ldi r24,lo8(128)
2752 157c 90E0 ldi r25,hi8(128)
2753 157e 05C0 rjmp .L153
2754 .L124:
2755 1580 4058 subi r20,lo8(-128)
2756 1582 5F4F sbci r21,hi8(-128)
2757 1584 34F4 brge .L125
2758 1586 80E8 ldi r24,lo8(-128)
2759 1588 9FEF ldi r25,hi8(-128)
2760 .L153:
2761 158a 9093 0000 sts (d2Roll.37)+1,r25
2762 158e 8093 0000 sts d2Roll.37,r24
2763 .L125:
2764 1592 462F mov r20,r22
2765 1594 5527 clr r21
2766 1596 8091 0000 lds r24,d2Nick.38
2767 159a 9091 0000 lds r25,(d2Nick.38)+1
2768 159e 849F mul r24,r20
2769 15a0 B001 movw r22,r0
2770 15a2 859F mul r24,r21
2771 15a4 700D add r23,r0
2772 15a6 949F mul r25,r20
2773 15a8 700D add r23,r0
2774 15aa 1124 clr r1
2775 15ac 9B01 movw r18,r22
2776 15ae 77FF sbrs r23,7
2777 15b0 02C0 rjmp .L127
2778 15b2 215F subi r18,lo8(-(15))
2779 15b4 3F4F sbci r19,hi8(-(15))
2780 .L127:
2781 15b6 F4E0 ldi r31,4
2782 15b8 3595 1: asr r19
2783 15ba 2795 ror r18
2784 15bc FA95 dec r31
2785 15be E1F7 brne 1b
2786 15c0 8091 0000 lds r24,MesswertNick
2787 15c4 9091 0000 lds r25,(MesswertNick)+1
2788 15c8 820F add r24,r18
2789 15ca 931F adc r25,r19
2790 15cc 9093 0000 sts (MesswertNick)+1,r25
2791 15d0 8093 0000 sts MesswertNick,r24
2792 15d4 8091 0000 lds r24,d2Roll.37
2793 15d8 9091 0000 lds r25,(d2Roll.37)+1
2794 15dc 849F mul r24,r20
2795 15de D001 movw r26,r0
2796 15e0 859F mul r24,r21
2797 15e2 B00D add r27,r0
2798 15e4 949F mul r25,r20
2799 15e6 B00D add r27,r0
2800 15e8 1124 clr r1
2801 15ea AD01 movw r20,r26
2802 15ec 9D01 movw r18,r26
2803 15ee B7FF sbrs r27,7
2804 15f0 02C0 rjmp .L128
2805 15f2 215F subi r18,lo8(-(15))
2806 15f4 3F4F sbci r19,hi8(-(15))
2807 .L128:
2808 15f6 E4E0 ldi r30,4
2809 15f8 3595 1: asr r19
2810 15fa 2795 ror r18
2811 15fc EA95 dec r30
2812 15fe E1F7 brne 1b
2813 1600 8091 0000 lds r24,MesswertRoll
2814 1604 9091 0000 lds r25,(MesswertRoll)+1
2815 1608 820F add r24,r18
2816 160a 931F adc r25,r19
2817 160c 9093 0000 sts (MesswertRoll)+1,r25
2818 1610 8093 0000 sts MesswertRoll,r24
2819 1614 8091 0000 lds r24,HiResNick
2820 1618 9091 0000 lds r25,(HiResNick)+1
2821 161c 860F add r24,r22
2822 161e 971F adc r25,r23
2823 1620 9093 0000 sts (HiResNick)+1,r25
2824 1624 8093 0000 sts HiResNick,r24
2825 1628 8091 0000 lds r24,HiResRoll
2826 162c 9091 0000 lds r25,(HiResRoll)+1
2827 1630 840F add r24,r20
2828 1632 951F adc r25,r21
2829 1634 9093 0000 sts (HiResRoll)+1,r25
2830 1638 8093 0000 sts HiResRoll,r24
2831 .L118:
2832 163c 0091 0000 lds r16,RohMesswertRoll
2833 1640 1091 0000 lds r17,(RohMesswertRoll)+1
2834 1644 8091 0000 lds r24,KopplungsteilNickRoll
2835 1648 9091 0000 lds r25,(KopplungsteilNickRoll)+1
2836 164c 1016 cp __zero_reg__,r16
2837 164e 1106 cpc __zero_reg__,r17
2838 1650 5CF5 brge .L129
2839 1652 9C01 movw r18,r24
2840 1654 97FF sbrs r25,7
2841 1656 04C0 rjmp .L130
2842 1658 2227 clr r18
2843 165a 3327 clr r19
2844 165c 281B sub r18,r24
2845 165e 390B sbc r19,r25
2846 .L130:
2847 1660 C901 movw r24,r18
2848 1662 AA27 clr r26
2849 1664 97FD sbrc r25,7
2850 1666 A095 com r26
2851 1668 BA2F mov r27,r26
2852 166a 2091 0000 lds r18,Parameter_CouplingYawCorrection
2853 166e 3327 clr r19
2854 1670 4427 clr r20
2855 1672 5527 clr r21
2856 1674 BC01 movw r22,r24
2857 1676 CD01 movw r24,r26
2858 1678 0E94 0000 call __mulsi3
2859 167c 9B01 movw r18,r22
2860 167e AC01 movw r20,r24
2861 1680 97FF sbrs r25,7
2862 1682 04C0 rjmp .L131
2863 1684 215C subi r18,lo8(-(63))
2864 1686 3F4F sbci r19,hi8(-(63))
2865 1688 4F4F sbci r20,hlo8(-(63))
2866 168a 5F4F sbci r21,hhi8(-(63))
2867 .L131:
2868 168c 76E0 ldi r23,6
2869 168e 5595 1: asr r21
2870 1690 4795 ror r20
2871 1692 3795 ror r19
2872 1694 2795 ror r18
2873 1696 7A95 dec r23
2874 1698 D1F7 brne 1b
2875 169a 8091 0000 lds r24,TrimRoll
2876 169e 9091 0000 lds r25,(TrimRoll)+1
2877 16a2 820F add r24,r18
2878 16a4 931F adc r25,r19
2879 16a6 27C0 rjmp .L154
2880 .L129:
2881 16a8 97FF sbrs r25,7
2882 16aa 03C0 rjmp .L133
2883 16ac 9095 com r25
2884 16ae 8195 neg r24
2885 16b0 9F4F sbci r25,lo8(-1)
2886 .L133:
2887 16b2 AA27 clr r26
2888 16b4 97FD sbrc r25,7
2889 16b6 A095 com r26
2890 16b8 BA2F mov r27,r26
2891 16ba 2091 0000 lds r18,Parameter_CouplingYawCorrection
2892 16be 3327 clr r19
2893 16c0 4427 clr r20
2894 16c2 5527 clr r21
2895 16c4 BC01 movw r22,r24
2896 16c6 CD01 movw r24,r26
2897 16c8 0E94 0000 call __mulsi3
2898 16cc 9B01 movw r18,r22
2899 16ce AC01 movw r20,r24
2900 16d0 97FF sbrs r25,7
2901 16d2 04C0 rjmp .L134
2902 16d4 215C subi r18,lo8(-(63))
2903 16d6 3F4F sbci r19,hi8(-(63))
2904 16d8 4F4F sbci r20,hlo8(-(63))
2905 16da 5F4F sbci r21,hhi8(-(63))
2906 .L134:
2907 16dc 66E0 ldi r22,6
2908 16de 5595 1: asr r21
2909 16e0 4795 ror r20
2910 16e2 3795 ror r19
2911 16e4 2795 ror r18
2912 16e6 6A95 dec r22
2913 16e8 D1F7 brne 1b
2914 16ea 8091 0000 lds r24,TrimRoll
2915 16ee 9091 0000 lds r25,(TrimRoll)+1
2916 16f2 821B sub r24,r18
2917 16f4 930B sbc r25,r19
2918 .L154:
2919 16f6 9093 0000 sts (TrimRoll)+1,r25
2920 16fa 8093 0000 sts TrimRoll,r24
2921 16fe E090 0000 lds r14,RohMesswertNick
2922 1702 F090 0000 lds r15,(RohMesswertNick)+1
2923 1706 8091 0000 lds r24,KopplungsteilRollNick
2924 170a 9091 0000 lds r25,(KopplungsteilRollNick)+1
2925 170e 1E14 cp __zero_reg__,r14
2926 1710 1F04 cpc __zero_reg__,r15
2927 1712 5CF5 brge .L135
2928 1714 9C01 movw r18,r24
2929 1716 97FF sbrs r25,7
2930 1718 04C0 rjmp .L136
2931 171a 2227 clr r18
2932 171c 3327 clr r19
2933 171e 281B sub r18,r24
2934 1720 390B sbc r19,r25
2935 .L136:
2936 1722 C901 movw r24,r18
2937 1724 AA27 clr r26
2938 1726 97FD sbrc r25,7
2939 1728 A095 com r26
2940 172a BA2F mov r27,r26
2941 172c 2091 0000 lds r18,Parameter_CouplingYawCorrection
2942 1730 3327 clr r19
2943 1732 4427 clr r20
2944 1734 5527 clr r21
2945 1736 BC01 movw r22,r24
2946 1738 CD01 movw r24,r26
2947 173a 0E94 0000 call __mulsi3
2948 173e 9B01 movw r18,r22
2949 1740 AC01 movw r20,r24
2950 1742 97FF sbrs r25,7
2951 1744 04C0 rjmp .L137
2952 1746 215C subi r18,lo8(-(63))
2953 1748 3F4F sbci r19,hi8(-(63))
2954 174a 4F4F sbci r20,hlo8(-(63))
2955 174c 5F4F sbci r21,hhi8(-(63))
2956 .L137:
2957 174e 96E0 ldi r25,6
2958 1750 5595 1: asr r21
2959 1752 4795 ror r20
2960 1754 3795 ror r19
2961 1756 2795 ror r18
2962 1758 9A95 dec r25
2963 175a D1F7 brne 1b
2964 175c 8091 0000 lds r24,TrimNick
2965 1760 9091 0000 lds r25,(TrimNick)+1
2966 1764 820F add r24,r18
2967 1766 931F adc r25,r19
2968 1768 27C0 rjmp .L155
2969 .L135:
2970 176a 97FF sbrs r25,7
2971 176c 03C0 rjmp .L139
2972 176e 9095 com r25
2973 1770 8195 neg r24
2974 1772 9F4F sbci r25,lo8(-1)
2975 .L139:
2976 1774 AA27 clr r26
2977 1776 97FD sbrc r25,7
2978 1778 A095 com r26
2979 177a BA2F mov r27,r26
2980 177c 2091 0000 lds r18,Parameter_CouplingYawCorrection
2981 1780 3327 clr r19
2982 1782 4427 clr r20
2983 1784 5527 clr r21
2984 1786 BC01 movw r22,r24
2985 1788 CD01 movw r24,r26
2986 178a 0E94 0000 call __mulsi3
2987 178e 9B01 movw r18,r22
2988 1790 AC01 movw r20,r24
2989 1792 97FF sbrs r25,7
2990 1794 04C0 rjmp .L140
2991 1796 215C subi r18,lo8(-(63))
2992 1798 3F4F sbci r19,hi8(-(63))
2993 179a 4F4F sbci r20,hlo8(-(63))
2994 179c 5F4F sbci r21,hhi8(-(63))
2995 .L140:
2996 179e 86E0 ldi r24,6
2997 17a0 5595 1: asr r21
2998 17a2 4795 ror r20
2999 17a4 3795 ror r19
3000 17a6 2795 ror r18
3001 17a8 8A95 dec r24
3002 17aa D1F7 brne 1b
3003 17ac 8091 0000 lds r24,TrimNick
3004 17b0 9091 0000 lds r25,(TrimNick)+1
3005 17b4 821B sub r24,r18
3006 17b6 930B sbc r25,r19
3007 .L155:
3008 17b8 9093 0000 sts (TrimNick)+1,r25
3009 17bc 8093 0000 sts TrimNick,r24
3010 17c0 8091 0000 lds r24,EE_Parameter+13
3011 17c4 87FF sbrs r24,7
3012 17c6 44C0 rjmp .L63
3013 17c8 B989 ldd r27,Y+17
3014 17ca BB23 tst r27
3015 17cc 09F0 breq .+2
3016 17ce 40C0 rjmp .L63
3017 17d0 8091 0000 lds r24,Looping_Roll
3018 17d4 8823 tst r24
3019 17d6 E1F5 brne .L63
3020 17d8 E1E0 ldi r30,lo8(257)
3021 17da EE16 cp r14,r30
3022 17dc E1E0 ldi r30,hi8(257)
3023 17de FE06 cpc r15,r30
3024 17e0 4CF0 brlt .L142
3025 17e2 8091 0000 lds r24,MesswertNick
3026 17e6 9091 0000 lds r25,(MesswertNick)+1
3027 17ea 8E0D add r24,r14
3028 17ec 9F1D adc r25,r15
3029 17ee 8050 subi r24,lo8(-(-256))
3030 17f0 9140 sbci r25,hi8(-(-256))
3031 17f2 0DC0 rjmp .L156
3032 .L142:
3033 17f4 F0E0 ldi r31,lo8(-256)
3034 17f6 EF16 cp r14,r31
3035 17f8 FFEF ldi r31,hi8(-256)
3036 17fa FF06 cpc r15,r31
3037 17fc 64F4 brge .L143
3038 17fe 8091 0000 lds r24,MesswertNick
3039 1802 9091 0000 lds r25,(MesswertNick)+1
3040 1806 8E0D add r24,r14
3041 1808 9F1D adc r25,r15
3042 180a 8050 subi r24,lo8(-(256))
3043 180c 9F4F sbci r25,hi8(-(256))
3044 .L156:
3045 180e 9093 0000 sts (MesswertNick)+1,r25
3046 1812 8093 0000 sts MesswertNick,r24
3047 .L143:
3048 1816 21E0 ldi r18,hi8(257)
3049 1818 0130 cpi r16,lo8(257)
3050 181a 1207 cpc r17,r18
3051 181c 4CF0 brlt .L145
3052 181e 8091 0000 lds r24,MesswertRoll
3053 1822 9091 0000 lds r25,(MesswertRoll)+1
3054 1826 800F add r24,r16
3055 1828 911F adc r25,r17
3056 182a 8050 subi r24,lo8(-(-256))
3057 182c 9140 sbci r25,hi8(-(-256))
3058 182e 0CC0 rjmp .L157
3059 .L145:
3060 1830 3FEF ldi r19,hi8(-256)
3061 1832 0030 cpi r16,lo8(-256)
3062 1834 1307 cpc r17,r19
3063 1836 64F4 brge .L63
3064 1838 8091 0000 lds r24,MesswertRoll
3065 183c 9091 0000 lds r25,(MesswertRoll)+1
3066 1840 800F add r24,r16
3067 1842 911F adc r25,r17
3068 1844 8050 subi r24,lo8(-(256))
3069 1846 9F4F sbci r25,hi8(-(256))
3070 .L157:
3071 1848 9093 0000 sts (MesswertRoll)+1,r25
3072 184c 8093 0000 sts MesswertRoll,r24
3073 .L63:
3074 /* epilogue: frame size=19 */
3075 1850 E2E1 ldi r30,18
3076 1852 CD5E subi r28,-19
3077 1854 0C94 0000 jmp __epilogue_restores__+0
3078 /* epilogue end (size=4) */
3079 /* function Mittelwert size 2000 (1990) */
3081 .global SendMotorData
3083 SendMotorData:
3084 /* prologue: frame size=0 */
3085 /* prologue end (size=0) */
3086 1858 8091 0000 lds r24,MotorenEin
3087 185c 8823 tst r24
3088 185e 01F5 brne .L159
3089 1860 8091 0000 lds r24,FC_StatusFlags
3090 1864 8C7F andi r24,lo8(-4)
3091 1866 8093 0000 sts FC_StatusFlags,r24
3092 186a A0E0 ldi r26,lo8(MotorTest)
3093 186c B0E0 ldi r27,hi8(MotorTest)
3094 186e E0E0 ldi r30,lo8(Motor)
3095 1870 F0E0 ldi r31,hi8(Motor)
3096 1872 9BE0 ldi r25,lo8(11)
3097 .L164:
3098 1874 8091 0000 lds r24,PC_MotortestActive
3099 1878 8823 tst r24
3100 187a 09F4 brne .L163
3101 187c 8C93 st X,r24
3102 .L163:
3103 187e 8D91 ld r24,X+
3104 1880 8183 std Z+1,r24
3105 1882 1282 std Z+2,__zero_reg__
3106 1884 9150 subi r25,lo8(-(-1))
3107 1886 3896 adiw r30,8
3108 1888 97FF sbrs r25,7
3109 188a F4CF rjmp .L164
3110 188c 8091 0000 lds r24,PC_MotortestActive
3111 1890 8823 tst r24
3112 1892 59F0 breq .L166
3113 1894 8091 0000 lds r24,PC_MotortestActive
3114 1898 8150 subi r24,lo8(-(-1))
3115 189a 8093 0000 sts PC_MotortestActive,r24
3116 189e 05C0 rjmp .L166
3117 .L159:
3118 18a0 8091 0000 lds r24,FC_StatusFlags
3119 18a4 8160 ori r24,lo8(1)
3120 18a6 8093 0000 sts FC_StatusFlags,r24
3121 .L166:
3122 18aa 8091 0000 lds r24,I2C_TransferActive
3123 18ae 8823 tst r24
3124 18b0 19F0 breq .L167
3125 18b2 1092 0000 sts I2C_TransferActive,__zero_reg__
3126 18b6 0895 ret
3127 .L167:
3128 18b8 8093 0000 sts motor_write,r24
3129 18bc 8093 0000 sts twi_state,r24
3130 18c0 8091 0000 lds r24,BLFlags
3131 18c4 8E7F andi r24,lo8(-2)
3132 18c6 8093 0000 sts BLFlags,r24
3133 18ca 85EA ldi r24,lo8(-91)
3134 18cc 8093 BC00 sts 188,r24
3135 18d0 0895 ret
3136 /* epilogue: frame size=0 */
3137 /* epilogue: noreturn */
3138 /* epilogue end (size=0) */
3139 /* function SendMotorData size 61 (61) */
3141 .global ParameterZuordnung
3143 ParameterZuordnung:
3144 /* prologue: frame size=0 */
3145 18d2 CF93 push r28
3146 18d4 DF93 push r29
3147 /* prologue end (size=2) */
3148 18d6 A0E0 ldi r26,lo8(Poti)
3149 18d8 B0E0 ldi r27,hi8(Poti)
3150 18da C0E0 ldi r28,lo8(EE_Parameter+5)
3151 18dc D0E0 ldi r29,hi8(EE_Parameter+5)
3152 18de 57E0 ldi r21,lo8(7)
3153 .L182:
3154 18e0 8991 ld r24,Y+
3155 18e2 E82F mov r30,r24
3156 18e4 FF27 clr r31
3157 18e6 EE0F add r30,r30
3158 18e8 FF1F adc r31,r31
3159 18ea E050 subi r30,lo8(-(PPM_in))
3160 18ec F040 sbci r31,hi8(-(PPM_in))
3161 18ee 0190 ld __tmp_reg__,Z+
3162 18f0 F081 ld r31,Z
3163 18f2 E02D mov r30,__tmp_reg__
3164 18f4 E259 subi r30,lo8(-(110))
3165 18f6 FF4F sbci r31,hi8(-(110))
3166 18f8 EF3F cpi r30,255
3167 18fa F105 cpc r31,__zero_reg__
3168 18fc 21F0 breq .L175
3169 18fe 1CF0 brlt .L175
3170 1900 EFEF ldi r30,lo8(255)
3171 1902 F0E0 ldi r31,hi8(255)
3172 1904 04C0 rjmp .L176
3173 .L175:
3174 1906 F7FF sbrs r31,7
3175 1908 02C0 rjmp .L176
3176 190a E0E0 ldi r30,lo8(0)
3177 190c F0E0 ldi r31,hi8(0)
3178 .L176:
3179 190e 4C91 ld r20,X
3180 1910 242F mov r18,r20
3181 1912 3327 clr r19
3182 1914 E217 cp r30,r18
3183 1916 F307 cpc r31,r19
3184 1918 A9F0 breq .L174
3185 191a CF01 movw r24,r30
3186 191c 821B sub r24,r18
3187 191e 930B sbc r25,r19
3188 1920 97FD sbrc r25,7
3189 1922 0396 adiw r24,3
3190 .L179:
3191 1924 9595 asr r25
3192 1926 8795 ror r24
3193 1928 9595 asr r25
3194 192a 8795 ror r24
3195 192c 242F mov r18,r20
3196 192e 280F add r18,r24
3197 1930 2C93 st X,r18
3198 1932 822F mov r24,r18
3199 1934 9927 clr r25
3200 1936 E817 cp r30,r24
3201 1938 F907 cpc r31,r25
3202 193a 14F4 brge .L180
3203 193c 2150 subi r18,lo8(-(-1))
3204 193e 01C0 rjmp .L276
3205 .L180:
3206 1940 2F5F subi r18,lo8(-(1))
3207 .L276:
3208 1942 2C93 st X,r18
3209 .L174:
3210 1944 5150 subi r21,lo8(-(-1))
3211 1946 1196 adiw r26,1
3212 1948 57FF sbrs r21,7
3213 194a CACF rjmp .L182
3214 194c 8091 0000 lds r24,EE_Parameter+15
3215 1950 883F cpi r24,lo8(-8)
3216 1952 38F0 brlo .L277
3217 1954 EFEF ldi r30,lo8(255)
3218 1956 F0E0 ldi r31,hi8(255)
3219 1958 E81B sub r30,r24
3220 195a F109 sbc r31,__zero_reg__
3221 195c E050 subi r30,lo8(-(Poti))
3222 195e F040 sbci r31,hi8(-(Poti))
3223 1960 8081 ld r24,Z
3224 .L277:
3225 1962 8093 0000 sts Parameter_Luftdruck_D,r24
3226 1966 8091 0000 lds r24,Parameter_Luftdruck_D
3227 196a 8823 tst r24
3228 196c 29F0 breq .L186
3229 196e 8436 cpi r24,lo8(100)
3230 1970 18F0 brlo .L186
3231 1972 84E6 ldi r24,lo8(100)
3232 1974 8093 0000 sts Parameter_Luftdruck_D,r24
3233 .L186:
3234 1978 8091 0000 lds r24,EE_Parameter+17
3235 197c 883F cpi r24,lo8(-8)
3236 197e 38F0 brlo .L278
3237 1980 EFEF ldi r30,lo8(255)
3238 1982 F0E0 ldi r31,hi8(255)
3239 1984 E81B sub r30,r24
3240 1986 F109 sbc r31,__zero_reg__
3241 1988 E050 subi r30,lo8(-(Poti))
3242 198a F040 sbci r31,hi8(-(Poti))
3243 198c 8081 ld r24,Z
3244 .L278:
3245 198e 8093 0000 sts Parameter_Hoehe_P,r24
3246 1992 8091 0000 lds r24,Parameter_Hoehe_P
3247 1996 8823 tst r24
3248 1998 29F0 breq .L191
3249 199a 8436 cpi r24,lo8(100)
3250 199c 18F0 brlo .L191
3251 199e 84E6 ldi r24,lo8(100)
3252 19a0 8093 0000 sts Parameter_Hoehe_P,r24
3253 .L191:
3254 19a4 8091 0000 lds r24,EE_Parameter+30
3255 19a8 883F cpi r24,lo8(-8)
3256 19aa 38F0 brlo .L279
3257 19ac EFEF ldi r30,lo8(255)
3258 19ae F0E0 ldi r31,hi8(255)
3259 19b0 E81B sub r30,r24
3260 19b2 F109 sbc r31,__zero_reg__
3261 19b4 E050 subi r30,lo8(-(Poti))
3262 19b6 F040 sbci r31,hi8(-(Poti))
3263 19b8 8081 ld r24,Z
3264 .L279:
3265 19ba 8093 0000 sts Parameter_Gyro_P,r24
3266 19be 8091 0000 lds r24,Parameter_Gyro_P
3267 19c2 8B30 cpi r24,lo8(11)
3268 19c4 10F4 brsh .L195
3269 19c6 8AE0 ldi r24,lo8(10)
3270 19c8 02C0 rjmp .L280
3271 .L195:
3272 19ca 8F3F cpi r24,lo8(-1)
3273 19cc 11F4 brne .L196
3274 .L280:
3275 19ce 8093 0000 sts Parameter_Gyro_P,r24
3276 .L196:
3277 19d2 8091 0000 lds r24,EE_Parameter+75
3278 19d6 883F cpi r24,lo8(-8)
3279 19d8 38F0 brlo .L281
3280 19da EFEF ldi r30,lo8(255)
3281 19dc F0E0 ldi r31,hi8(255)
3282 19de E81B sub r30,r24
3283 19e0 F109 sbc r31,__zero_reg__
3284 19e2 E050 subi r30,lo8(-(Poti))
3285 19e4 F040 sbci r31,hi8(-(Poti))
3286 19e6 8081 ld r24,Z
3287 .L281:
3288 19e8 8093 0000 sts Parameter_J16Timing,r24
3289 19ec 8091 0000 lds r24,Parameter_J16Timing
3290 19f0 8230 cpi r24,lo8(2)
3291 19f2 10F4 brsh .L200
3292 19f4 81E0 ldi r24,lo8(1)
3293 19f6 02C0 rjmp .L282
3294 .L200:
3295 19f8 8F3F cpi r24,lo8(-1)
3296 19fa 11F4 brne .L201
3297 .L282:
3298 19fc 8093 0000 sts Parameter_J16Timing,r24
3299 .L201:
3300 1a00 8091 0000 lds r24,EE_Parameter+77
3301 1a04 883F cpi r24,lo8(-8)
3302 1a06 38F0 brlo .L283
3303 1a08 EFEF ldi r30,lo8(255)
3304 1a0a F0E0 ldi r31,hi8(255)
3305 1a0c E81B sub r30,r24
3306 1a0e F109 sbc r31,__zero_reg__
3307 1a10 E050 subi r30,lo8(-(Poti))
3308 1a12 F040 sbci r31,hi8(-(Poti))
3309 1a14 8081 ld r24,Z
3310 .L283:
3311 1a16 8093 0000 sts Parameter_J17Timing,r24
3312 1a1a 8091 0000 lds r24,Parameter_J17Timing
3313 1a1e 8230 cpi r24,lo8(2)
3314 1a20 10F4 brsh .L205
3315 1a22 81E0 ldi r24,lo8(1)
3316 1a24 02C0 rjmp .L284
3317 .L205:
3318 1a26 8F3F cpi r24,lo8(-1)
3319 1a28 11F4 brne .L206
3320 .L284:
3321 1a2a 8093 0000 sts Parameter_J17Timing,r24
3322 .L206:
3323 1a2e 8091 0000 lds r24,EE_Parameter+56
3324 1a32 883F cpi r24,lo8(-8)
3325 1a34 38F0 brlo .L285
3326 1a36 EFEF ldi r30,lo8(255)
3327 1a38 F0E0 ldi r31,hi8(255)
3328 1a3a E81B sub r30,r24
3329 1a3c F109 sbc r31,__zero_reg__
3330 1a3e E050 subi r30,lo8(-(Poti))
3331 1a40 F040 sbci r31,hi8(-(Poti))
3332 1a42 8081 ld r24,Z
3333 .L285:
3334 1a44 8093 0000 sts Parameter_Servo3,r24
3335 1a48 8091 0000 lds r24,EE_Parameter+57
3336 1a4c 883F cpi r24,lo8(-8)
3337 1a4e 38F0 brlo .L286
3338 1a50 EFEF ldi r30,lo8(255)
3339 1a52 F0E0 ldi r31,hi8(255)
3340 1a54 E81B sub r30,r24
3341 1a56 F109 sbc r31,__zero_reg__
3342 1a58 E050 subi r30,lo8(-(Poti))
3343 1a5a F040 sbci r31,hi8(-(Poti))
3344 1a5c 8081 ld r24,Z
3345 .L286:
3346 1a5e 8093 0000 sts Parameter_Servo4,r24
3347 1a62 8091 0000 lds r24,EE_Parameter+58
3348 1a66 883F cpi r24,lo8(-8)
3349 1a68 38F0 brlo .L287
3350 1a6a EFEF ldi r30,lo8(255)
3351 1a6c F0E0 ldi r31,hi8(255)
3352 1a6e E81B sub r30,r24
3353 1a70 F109 sbc r31,__zero_reg__
3354 1a72 E050 subi r30,lo8(-(Poti))
3355 1a74 F040 sbci r31,hi8(-(Poti))
3356 1a76 8081 ld r24,Z
3357 .L287:
3358 1a78 8093 0000 sts Parameter_Servo5,r24
3359 1a7c 9091 0000 lds r25,EE_Parameter+16
3360 1a80 983F cpi r25,lo8(-8)
3361 1a82 18F4 brsh .L214
3362 1a84 9093 0000 sts Parameter_MaxHoehe,r25
3363 1a88 09C0 rjmp .L215
3364 .L214:
3365 1a8a EFEF ldi r30,lo8(255)
3366 1a8c F0E0 ldi r31,hi8(255)
3367 1a8e E91B sub r30,r25
3368 1a90 F109 sbc r31,__zero_reg__
3369 1a92 E050 subi r30,lo8(-(Poti))
3370 1a94 F040 sbci r31,hi8(-(Poti))
3371 1a96 8081 ld r24,Z
3372 1a98 8093 0000 sts Parameter_MaxHoehe,r24
3373 .L215:
3374 1a9c 983F cpi r25,lo8(-8)
3375 1a9e 18F4 brsh .L216
3376 1aa0 9093 0000 sts Parameter_MaxHoehe,r25
3377 1aa4 09C0 rjmp .L217
3378 .L216:
3379 1aa6 EFEF ldi r30,lo8(255)
3380 1aa8 F0E0 ldi r31,hi8(255)
3381 1aaa E91B sub r30,r25
3382 1aac F109 sbc r31,__zero_reg__
3383 1aae E050 subi r30,lo8(-(Poti))
3384 1ab0 F040 sbci r31,hi8(-(Poti))
3385 1ab2 8081 ld r24,Z
3386 1ab4 8093 0000 sts Parameter_MaxHoehe,r24
3387 .L217:
3388 1ab8 8091 0000 lds r24,EE_Parameter+19
3389 1abc 883F cpi r24,lo8(-8)
3390 1abe 38F0 brlo .L288
3391 1ac0 EFEF ldi r30,lo8(255)
3392 1ac2 F0E0 ldi r31,hi8(255)
3393 1ac4 E81B sub r30,r24
3394 1ac6 F109 sbc r31,__zero_reg__
3395 1ac8 E050 subi r30,lo8(-(Poti))
3396 1aca F040 sbci r31,hi8(-(Poti))
3397 1acc 8081 ld r24,Z
3398 .L288:
3399 1ace 8093 0000 sts Parameter_Hoehe_ACC_Wirkung,r24
3400 1ad2 8091 0000 lds r24,EE_Parameter+21
3401 1ad6 883F cpi r24,lo8(-8)
3402 1ad8 38F0 brlo .L289
3403 1ada EFEF ldi r30,lo8(255)
3404 1adc F0E0 ldi r31,hi8(255)
3405 1ade E81B sub r30,r24
3406 1ae0 F109 sbc r31,__zero_reg__
3407 1ae2 E050 subi r30,lo8(-(Poti))
3408 1ae4 F040 sbci r31,hi8(-(Poti))
3409 1ae6 8081 ld r24,Z
3410 .L289:
3411 1ae8 8093 0000 sts Parameter_Hoehe_GPS_Z,r24
3412 1aec 8091 0000 lds r24,EE_Parameter+29
3413 1af0 883F cpi r24,lo8(-8)
3414 1af2 38F0 brlo .L290
3415 1af4 EFEF ldi r30,lo8(255)
3416 1af6 F0E0 ldi r31,hi8(255)
3417 1af8 E81B sub r30,r24
3418 1afa F109 sbc r31,__zero_reg__
3419 1afc E050 subi r30,lo8(-(Poti))
3420 1afe F040 sbci r31,hi8(-(Poti))
3421 1b00 8081 ld r24,Z
3422 .L290:
3423 1b02 8093 0000 sts Parameter_KompassWirkung,r24
3424 1b06 8091 0000 lds r24,EE_Parameter+31
3425 1b0a 883F cpi r24,lo8(-8)
3426 1b0c 38F0 brlo .L291
3427 1b0e EFEF ldi r30,lo8(255)
3428 1b10 F0E0 ldi r31,hi8(255)
3429 1b12 E81B sub r30,r24
3430 1b14 F109 sbc r31,__zero_reg__
3431 1b16 E050 subi r30,lo8(-(Poti))
3432 1b18 F040 sbci r31,hi8(-(Poti))
3433 1b1a 8081 ld r24,Z
3434 .L291:
3435 1b1c 8093 0000 sts Parameter_Gyro_I,r24
3436 1b20 8091 0000 lds r24,EE_Parameter+32
3437 1b24 883F cpi r24,lo8(-8)
3438 1b26 38F0 brlo .L292
3439 1b28 EFEF ldi r30,lo8(255)
3440 1b2a F0E0 ldi r31,hi8(255)
3441 1b2c E81B sub r30,r24
3442 1b2e F109 sbc r31,__zero_reg__
3443 1b30 E050 subi r30,lo8(-(Poti))
3444 1b32 F040 sbci r31,hi8(-(Poti))
3445 1b34 8081 ld r24,Z
3446 .L292:
3447 1b36 8093 0000 sts Parameter_Gyro_D,r24
3448 1b3a 8091 0000 lds r24,EE_Parameter+33
3449 1b3e 883F cpi r24,lo8(-8)
3450 1b40 38F0 brlo .L293
3451 1b42 EFEF ldi r30,lo8(255)
3452 1b44 F0E0 ldi r31,hi8(255)
3453 1b46 E81B sub r30,r24
3454 1b48 F109 sbc r31,__zero_reg__
3455 1b4a E050 subi r30,lo8(-(Poti))
3456 1b4c F040 sbci r31,hi8(-(Poti))
3457 1b4e 8081 ld r24,Z
3458 .L293:
3459 1b50 8093 0000 sts Parameter_Gyro_Gier_P,r24
3460 1b54 8091 0000 lds r24,EE_Parameter+34
3461 1b58 883F cpi r24,lo8(-8)
3462 1b5a 38F0 brlo .L294
3463 1b5c EFEF ldi r30,lo8(255)
3464 1b5e F0E0 ldi r31,hi8(255)
3465 1b60 E81B sub r30,r24
3466 1b62 F109 sbc r31,__zero_reg__
3467 1b64 E050 subi r30,lo8(-(Poti))
3468 1b66 F040 sbci r31,hi8(-(Poti))
3469 1b68 8081 ld r24,Z
3470 .L294:
3471 1b6a 8093 0000 sts Parameter_Gyro_Gier_I,r24
3472 1b6e 8091 0000 lds r24,EE_Parameter+40
3473 1b72 883F cpi r24,lo8(-8)
3474 1b74 38F0 brlo .L295
3475 1b76 EFEF ldi r30,lo8(255)
3476 1b78 F0E0 ldi r31,hi8(255)
3477 1b7a E81B sub r30,r24
3478 1b7c F109 sbc r31,__zero_reg__
3479 1b7e E050 subi r30,lo8(-(Poti))
3480 1b80 F040 sbci r31,hi8(-(Poti))
3481 1b82 8081 ld r24,Z
3482 .L295:
3483 1b84 8093 0000 sts Parameter_I_Faktor,r24
3484 1b88 8091 0000 lds r24,EE_Parameter+41
3485 1b8c 883F cpi r24,lo8(-8)
3486 1b8e 38F0 brlo .L296
3487 1b90 EFEF ldi r30,lo8(255)
3488 1b92 F0E0 ldi r31,hi8(255)
3489 1b94 E81B sub r30,r24
3490 1b96 F109 sbc r31,__zero_reg__
3491 1b98 E050 subi r30,lo8(-(Poti))
3492 1b9a F040 sbci r31,hi8(-(Poti))
3493 1b9c 8081 ld r24,Z
3494 .L296:
3495 1b9e 8093 0000 sts Parameter_UserParam1,r24
3496 1ba2 8091 0000 lds r24,EE_Parameter+42
3497 1ba6 883F cpi r24,lo8(-8)
3498 1ba8 38F0 brlo .L297
3499 1baa EFEF ldi r30,lo8(255)
3500 1bac F0E0 ldi r31,hi8(255)
3501 1bae E81B sub r30,r24
3502 1bb0 F109 sbc r31,__zero_reg__
3503 1bb2 E050 subi r30,lo8(-(Poti))
3504 1bb4 F040 sbci r31,hi8(-(Poti))
3505 1bb6 8081 ld r24,Z
3506 .L297:
3507 1bb8 8093 0000 sts Parameter_UserParam2,r24
3508 1bbc 8091 0000 lds r24,EE_Parameter+43
3509 1bc0 883F cpi r24,lo8(-8)
3510 1bc2 38F0 brlo .L298
3511 1bc4 EFEF ldi r30,lo8(255)
3512 1bc6 F0E0 ldi r31,hi8(255)
3513 1bc8 E81B sub r30,r24
3514 1bca F109 sbc r31,__zero_reg__
3515 1bcc E050 subi r30,lo8(-(Poti))
3516 1bce F040 sbci r31,hi8(-(Poti))
3517 1bd0 8081 ld r24,Z
3518 .L298:
3519 1bd2 8093 0000 sts Parameter_UserParam3,r24
3520 1bd6 8091 0000 lds r24,EE_Parameter+44
3521 1bda 883F cpi r24,lo8(-8)
3522 1bdc 38F0 brlo .L299
3523 1bde EFEF ldi r30,lo8(255)
3524 1be0 F0E0 ldi r31,hi8(255)
3525 1be2 E81B sub r30,r24
3526 1be4 F109 sbc r31,__zero_reg__
3527 1be6 E050 subi r30,lo8(-(Poti))
3528 1be8 F040 sbci r31,hi8(-(Poti))
3529 1bea 8081 ld r24,Z
3530 .L299:
3531 1bec 8093 0000 sts Parameter_UserParam4,r24
3532 1bf0 8091 0000 lds r24,EE_Parameter+70
3533 1bf4 883F cpi r24,lo8(-8)
3534 1bf6 38F0 brlo .L300
3535 1bf8 EFEF ldi r30,lo8(255)
3536 1bfa F0E0 ldi r31,hi8(255)
3537 1bfc E81B sub r30,r24
3538 1bfe F109 sbc r31,__zero_reg__
3539 1c00 E050 subi r30,lo8(-(Poti))
3540 1c02 F040 sbci r31,hi8(-(Poti))
3541 1c04 8081 ld r24,Z
3542 .L300:
3543 1c06 8093 0000 sts Parameter_UserParam5,r24
3544 1c0a 8091 0000 lds r24,EE_Parameter+71
3545 1c0e 883F cpi r24,lo8(-8)
3546 1c10 38F0 brlo .L301
3547 1c12 EFEF ldi r30,lo8(255)
3548 1c14 F0E0 ldi r31,hi8(255)
3549 1c16 E81B sub r30,r24
3550 1c18 F109 sbc r31,__zero_reg__
3551 1c1a E050 subi r30,lo8(-(Poti))
3552 1c1c F040 sbci r31,hi8(-(Poti))
3553 1c1e 8081 ld r24,Z
3554 .L301:
3555 1c20 8093 0000 sts Parameter_UserParam6,r24
3556 1c24 8091 0000 lds r24,EE_Parameter+72
3557 1c28 883F cpi r24,lo8(-8)
3558 1c2a 38F0 brlo .L302
3559 1c2c EFEF ldi r30,lo8(255)
3560 1c2e F0E0 ldi r31,hi8(255)
3561 1c30 E81B sub r30,r24
3562 1c32 F109 sbc r31,__zero_reg__
3563 1c34 E050 subi r30,lo8(-(Poti))
3564 1c36 F040 sbci r31,hi8(-(Poti))
3565 1c38 8081 ld r24,Z
3566 .L302:
3567 1c3a 8093 0000 sts Parameter_UserParam7,r24
3568 1c3e 8091 0000 lds r24,EE_Parameter+73
3569 1c42 883F cpi r24,lo8(-8)
3570 1c44 38F0 brlo .L303
3571 1c46 EFEF ldi r30,lo8(255)
3572 1c48 F0E0 ldi r31,hi8(255)
3573 1c4a E81B sub r30,r24
3574 1c4c F109 sbc r31,__zero_reg__
3575 1c4e E050 subi r30,lo8(-(Poti))
3576 1c50 F040 sbci r31,hi8(-(Poti))
3577 1c52 8081 ld r24,Z
3578 .L303:
3579 1c54 8093 0000 sts Parameter_UserParam8,r24
3580 1c58 8091 0000 lds r24,EE_Parameter+45
3581 1c5c 883F cpi r24,lo8(-8)
3582 1c5e 38F0 brlo .L304
3583 1c60 EFEF ldi r30,lo8(255)
3584 1c62 F0E0 ldi r31,hi8(255)
3585 1c64 E81B sub r30,r24
3586 1c66 F109 sbc r31,__zero_reg__
3587 1c68 E050 subi r30,lo8(-(Poti))
3588 1c6a F040 sbci r31,hi8(-(Poti))
3589 1c6c 8081 ld r24,Z
3590 .L304:
3591 1c6e 8093 0000 sts Parameter_ServoNickControl,r24
3592 1c72 8091 0000 lds r24,EE_Parameter+49
3593 1c76 883F cpi r24,lo8(-8)
3594 1c78 38F0 brlo .L305
3595 1c7a EFEF ldi r30,lo8(255)
3596 1c7c F0E0 ldi r31,hi8(255)
3597 1c7e E81B sub r30,r24
3598 1c80 F109 sbc r31,__zero_reg__
3599 1c82 E050 subi r30,lo8(-(Poti))
3600 1c84 F040 sbci r31,hi8(-(Poti))
3601 1c86 8081 ld r24,Z
3602 .L305:
3603 1c88 8093 0000 sts Parameter_ServoRollControl,r24
3604 1c8c 8091 0000 lds r24,EE_Parameter+59
3605 1c90 883F cpi r24,lo8(-8)
3606 1c92 38F0 brlo .L306
3607 1c94 EFEF ldi r30,lo8(255)
3608 1c96 F0E0 ldi r31,hi8(255)
3609 1c98 E81B sub r30,r24
3610 1c9a F109 sbc r31,__zero_reg__
3611 1c9c E050 subi r30,lo8(-(Poti))
3612 1c9e F040 sbci r31,hi8(-(Poti))
3613 1ca0 8081 ld r24,Z
3614 .L306:
3615 1ca2 8093 0000 sts Parameter_LoopGasLimit,r24
3616 1ca6 8091 0000 lds r24,EE_Parameter+62
3617 1caa 883F cpi r24,lo8(-8)
3618 1cac 38F0 brlo .L307
3619 1cae EFEF ldi r30,lo8(255)
3620 1cb0 F0E0 ldi r31,hi8(255)
3621 1cb2 E81B sub r30,r24
3622 1cb4 F109 sbc r31,__zero_reg__
3623 1cb6 E050 subi r30,lo8(-(Poti))
3624 1cb8 F040 sbci r31,hi8(-(Poti))
3625 1cba 8081 ld r24,Z
3626 .L307:
3627 1cbc 8093 0000 sts Parameter_AchsKopplung1,r24
3628 1cc0 8091 0000 lds r24,EE_Parameter+63
3629 1cc4 883F cpi r24,lo8(-8)
3630 1cc6 38F0 brlo .L308
3631 1cc8 EFEF ldi r30,lo8(255)
3632 1cca F0E0 ldi r31,hi8(255)
3633 1ccc E81B sub r30,r24
3634 1cce F109 sbc r31,__zero_reg__
3635 1cd0 E050 subi r30,lo8(-(Poti))
3636 1cd2 F040 sbci r31,hi8(-(Poti))
3637 1cd4 8081 ld r24,Z
3638 .L308:
3639 1cd6 8093 0000 sts Parameter_AchsKopplung2,r24
3640 1cda 8091 0000 lds r24,EE_Parameter+64
3641 1cde 883F cpi r24,lo8(-8)
3642 1ce0 38F0 brlo .L309
3643 1ce2 EFEF ldi r30,lo8(255)
3644 1ce4 F0E0 ldi r31,hi8(255)
3645 1ce6 E81B sub r30,r24
3646 1ce8 F109 sbc r31,__zero_reg__
3647 1cea E050 subi r30,lo8(-(Poti))
3648 1cec F040 sbci r31,hi8(-(Poti))
3649 1cee 8081 ld r24,Z
3650 .L309:
3651 1cf0 8093 0000 sts Parameter_CouplingYawCorrection,r24
3652 1cf4 8091 0000 lds r24,EE_Parameter+69
3653 1cf8 883F cpi r24,lo8(-8)
3654 1cfa 38F0 brlo .L310
3655 1cfc EFEF ldi r30,lo8(255)
3656 1cfe F0E0 ldi r31,hi8(255)
3657 1d00 E81B sub r30,r24
3658 1d02 F109 sbc r31,__zero_reg__
3659 1d04 E050 subi r30,lo8(-(Poti))
3660 1d06 F040 sbci r31,hi8(-(Poti))
3661 1d08 8081 ld r24,Z
3662 .L310:
3663 1d0a 8093 0000 sts Parameter_DynamicStability,r24
3664 1d0e 8091 0000 lds r24,EE_Parameter+96
3665 1d12 883F cpi r24,lo8(-8)
3666 1d14 38F0 brlo .L311
3667 1d16 EFEF ldi r30,lo8(255)
3668 1d18 F0E0 ldi r31,hi8(255)
3669 1d1a E81B sub r30,r24
3670 1d1c F109 sbc r31,__zero_reg__
3671 1d1e E050 subi r30,lo8(-(Poti))
3672 1d20 F040 sbci r31,hi8(-(Poti))
3673 1d22 8081 ld r24,Z
3674 .L311:
3675 1d24 8093 0000 sts Parameter_ExternalControl,r24
3676 1d28 8091 0000 lds r24,Parameter_I_Faktor
3677 1d2c 282F mov r18,r24
3678 1d2e 3327 clr r19
3679 1d30 2F5F subi r18,lo8(-(1))
3680 1d32 3F4F sbci r19,hi8(-(1))
3681 1d34 8CE3 ldi r24,lo8(10300)
3682 1d36 98E2 ldi r25,hi8(10300)
3683 1d38 B901 movw r22,r18
3684 1d3a 0E94 0000 call __divmodhi4
3685 1d3e 7093 0000 sts (Ki)+1,r23
3686 1d42 6093 0000 sts Ki,r22
3687 1d46 8091 0000 lds r24,EE_Parameter+27
3688 1d4a 8093 0000 sts MAX_GAS,r24
3689 1d4e 8091 0000 lds r24,EE_Parameter+26
3690 1d52 8093 0000 sts MIN_GAS,r24
3691 1d56 9091 0000 lds r25,EE_Parameter+98
3692 1d5a 9333 cpi r25,lo8(51)
3693 1d5c 20F1 brlo .L266
3694 1d5e 81E0 ldi r24,lo8(1)
3695 1d60 8093 0000 sts CareFree,r24
3696 1d64 983F cpi r25,lo8(-8)
3697 1d66 58F0 brlo .L267
3698 1d68 EFEF ldi r30,lo8(255)
3699 1d6a F0E0 ldi r31,hi8(255)
3700 1d6c E91B sub r30,r25
3701 1d6e F109 sbc r31,__zero_reg__
3702 1d70 E050 subi r30,lo8(-(Poti))
3703 1d72 F040 sbci r31,hi8(-(Poti))
3704 1d74 8081 ld r24,Z
3705 1d76 8233 cpi r24,lo8(50)
3706 1d78 10F4 brsh .L267
3707 1d7a 1092 0000 sts CareFree,__zero_reg__
3708 .L267:
3709 1d7e 8091 0000 lds r24,FromNaviCtrl+7
3710 1d82 9091 0000 lds r25,(FromNaviCtrl+7)+1
3711 1d86 97FF sbrs r25,7
3712 1d88 08C0 rjmp .L268
3713 1d8a 8091 0000 lds r24,CareFree
3714 1d8e 8823 tst r24
3715 1d90 21F0 breq .L268
3716 1d92 8091 0000 lds r24,VersionInfo+5
3717 1d96 8068 ori r24,lo8(-128)
3718 1d98 03C0 rjmp .L312
3719 .L268:
3720 1d9a 8091 0000 lds r24,VersionInfo+5
3721 1d9e 8F77 andi r24,lo8(127)
3722 .L312:
3723 1da0 8093 0000 sts VersionInfo+5,r24
3724 1da4 02C0 rjmp .L270
3725 .L266:
3726 1da6 1092 0000 sts CareFree,__zero_reg__
3727 .L270:
3728 1daa 8091 0000 lds r24,FromNaviCtrl+7
3729 1dae 9091 0000 lds r25,(FromNaviCtrl+7)+1
3730 1db2 97FF sbrs r25,7
3731 1db4 1DC0 rjmp .L271
3732 1db6 8091 0000 lds r24,MotorenEin
3733 1dba 8823 tst r24
3734 1dbc C9F0 breq .L271
3735 1dbe 8091 0000 lds r24,CareFree
3736 1dc2 8823 tst r24
3737 1dc4 A9F0 breq .L271
3738 1dc6 8091 0000 lds r24,BeepMuster
3739 1dca 9091 0000 lds r25,(BeepMuster)+1
3740 1dce 8F5F subi r24,lo8(-1)
3741 1dd0 9F4F sbci r25,hi8(-1)
3742 1dd2 71F4 brne .L271
3743 1dd4 88E9 ldi r24,lo8(15000)
3744 1dd6 9AE3 ldi r25,hi8(15000)
3745 1dd8 9093 0000 sts (beeptime)+1,r25
3746 1ddc 8093 0000 sts beeptime,r24
3747 1de0 80E0 ldi r24,lo8(-23552)
3748 1de2 94EA ldi r25,hi8(-23552)
3749 1de4 9093 0000 sts (BeepMuster)+1,r25
3750 1de8 8093 0000 sts BeepMuster,r24
3751 1dec 1092 0000 sts CareFree,__zero_reg__
3752 .L271:
3753 1df0 8091 0000 lds r24,CareFree
3754 1df4 8823 tst r24
3755 1df6 39F0 breq .L171
3756 1df8 8091 0000 lds r24,Parameter_AchsKopplung1
3757 1dfc 823D cpi r24,lo8(-46)
3758 1dfe 18F4 brsh .L171
3759 1e00 825E subi r24,lo8(-(30))
3760 1e02 8093 0000 sts Parameter_AchsKopplung1,r24
3761 .L171:
3762 /* epilogue: frame size=0 */
3763 1e06 DF91 pop r29
3764 1e08 CF91 pop r28
3765 1e0a 0895 ret
3766 /* epilogue end (size=3) */
3767 /* function ParameterZuordnung size 671 (666) */
3769 .lcomm sollGier.0,4
3770 .lcomm tmp_long.1,4
3771 .lcomm tmp_long2.2,4
3772 .lcomm IntegralFehlerNick.3,4
3773 .lcomm IntegralFehlerRoll.4,4
3774 .lcomm RcLostTimer.5,2
3775 .lcomm delay_neutral.6,1
3776 .lcomm delay_einschalten.7,1
3777 .lcomm delay_ausschalten.8,1
3778 .lcomm calibration_done.9,1
3779 .lcomm NeueKompassRichtungMerken.10,1
3780 .lcomm ausgleichNick.11,4
3781 .lcomm ausgleichRoll.12,4
3782 .lcomm stick_nick.13,2
3783 .lcomm stick_roll.14,2
3784 .lcomm cnt.15,2
3785 .lcomm last_n_p.16,1
3786 .lcomm last_n_n.17,1
3787 .lcomm last_r_p.18,1
3788 .lcomm last_r_n.19,1
3789 .lcomm MittelIntegralNick_Alt.20,4
3790 .lcomm MittelIntegralRoll_Alt.21,4
3791 .lcomm HeightTrimming.22,2
3792 .lcomm FilterHCGas.23,2
3793 .data
3796 StickGasHover.24:
3797 004a 7800 .word 120
3798 .lcomm HoverGasMin.25,2
3801 HoverGasMax.26:
3802 004c FF03 .word 1023
3803 .lcomm HoverGasFilter.27,4
3806 delay.28:
3807 004e 64 .byte 100
3808 .lcomm BaroAtUpperLimit.29,1
3809 .lcomm BaroAtLowerLimit.30,1
3810 .text
3811 .global MotorRegler
3813 MotorRegler:
3814 /* prologue: frame size=24 */
3815 1e0c A8E1 ldi r26,lo8(24)
3816 1e0e B0E0 ldi r27,hi8(24)
3817 1e10 E0E0 ldi r30,pm_lo8(1f)
3818 1e12 F0E0 ldi r31,pm_hi8(1f)
3819 1e14 0C94 0000 jmp __prologue_saves__+0
3820 1:
3821 /* prologue end (size=6) */
3822 1e18 0E94 0000 call Mittelwert
3823 1e1c 3091 0000 lds r19,PlatinenVersion
3824 1e20 3C30 cpi r19,lo8(12)
3825 1e22 10F4 brsh .L314
3826 1e24 299A sbi 37-0x20,1
3827 1e26 01C0 rjmp .L315
3828 .L314:
3829 1e28 2998 cbi 37-0x20,1
3830 .L315:
3831 1e2a E090 0000 lds r14,StickGas
3832 1e2e F090 0000 lds r15,(StickGas)+1
3833 1e32 FA82 std Y+2,r15
3834 1e34 E982 std Y+1,r14
3835 1e36 8091 0000 lds r24,MIN_GAS
3836 1e3a 9927 clr r25
3837 1e3c 0A96 adiw r24,10
3838 1e3e E816 cp r14,r24
3839 1e40 F906 cpc r15,r25
3840 1e42 14F4 brge .L316
3841 1e44 9A83 std Y+2,r25
3842 1e46 8983 std Y+1,r24
3843 .L316:
3844 1e48 8091 0000 lds r24,SenderOkay
3845 1e4c 8436 cpi r24,lo8(100)
3846 1e4e 08F0 brlo .+2
3847 1e50 5CC0 rjmp .L317
3848 1e52 8091 0000 lds r24,RcLostTimer.5
3849 1e56 9091 0000 lds r25,(RcLostTimer.5)+1
3850 1e5a 0097 sbiw r24,0
3851 1e5c 31F0 breq .L318
3852 1e5e 0197 sbiw r24,1
3853 1e60 9093 0000 sts (RcLostTimer.5)+1,r25
3854 1e64 8093 0000 sts RcLostTimer.5,r24
3855 1e68 07C0 rjmp .L319
3856 .L318:
3857 1e6a 1092 0000 sts MotorenEin,__zero_reg__
3858 1e6e 8091 0000 lds r24,FC_StatusFlags
3859 1e72 8F7E andi r24,lo8(-17)
3860 1e74 8093 0000 sts FC_StatusFlags,r24
3861 .L319:
3862 1e78 3A30 cpi r19,lo8(10)
3863 1e7a 11F0 breq .L321
3864 1e7c 3431 cpi r19,lo8(20)
3865 1e7e 10F0 brlo .L320
3866 .L321:
3867 1e80 289A sbi 37-0x20,0
3868 1e82 01C0 rjmp .L322
3869 .L320:
3870 1e84 2898 cbi 37-0x20,0
3871 .L322:
3872 1e86 8091 0000 lds r24,modell_fliegt
3873 1e8a 9091 0000 lds r25,(modell_fliegt)+1
3874 1e8e 895E subi r24,lo8(1001)
3875 1e90 9340 sbci r25,hi8(1001)
3876 1e92 C0F1 brlo .L323
3877 1e94 8091 0000 lds r24,EE_Parameter+37
3878 1e98 282F mov r18,r24
3879 1e9a 3327 clr r19
3880 1e9c 3A83 std Y+2,r19
3881 1e9e 2983 std Y+1,r18
3882 1ea0 8091 0000 lds r24,FC_StatusFlags
3883 1ea4 8061 ori r24,lo8(16)
3884 1ea6 8093 0000 sts FC_StatusFlags,r24
3885 1eaa 8091 0000 lds r24,EE_Parameter+1
3886 1eae A82F mov r26,r24
3887 1eb0 BB27 clr r27
3888 1eb2 AA0F add r26,r26
3889 1eb4 BB1F adc r27,r27
3890 1eb6 FD01 movw r30,r26
3891 1eb8 E050 subi r30,lo8(-(PPM_diff))
3892 1eba F040 sbci r31,hi8(-(PPM_diff))
3893 1ebc 1182 std Z+1,__zero_reg__
3894 1ebe 1082 st Z,__zero_reg__
3895 1ec0 8091 0000 lds r24,EE_Parameter+2
3896 1ec4 282F mov r18,r24
3897 1ec6 3327 clr r19
3898 1ec8 220F add r18,r18
3899 1eca 331F adc r19,r19
3900 1ecc C901 movw r24,r18
3901 1ece 8050 subi r24,lo8(-(PPM_diff))
3902 1ed0 9040 sbci r25,hi8(-(PPM_diff))
3903 1ed2 FC01 movw r30,r24
3904 1ed4 1182 std Z+1,__zero_reg__
3905 1ed6 1082 st Z,__zero_reg__
3906 1ed8 A050 subi r26,lo8(-(PPM_in))
3907 1eda B040 sbci r27,hi8(-(PPM_in))
3908 1edc 1196 adiw r26,1
3909 1ede 1C92 st X,__zero_reg__
3910 1ee0 1E92 st -X,__zero_reg__
3911 1ee2 2050 subi r18,lo8(-(PPM_in))
3912 1ee4 3040 sbci r19,hi8(-(PPM_in))
3913 1ee6 D901 movw r26,r18
3914 1ee8 1196 adiw r26,1
3915 1eea 1C92 st X,__zero_reg__
3916 1eec 1E92 st -X,__zero_reg__
3917 1eee 8091 0000 lds r24,EE_Parameter+4
3918 1ef2 E82F mov r30,r24
3919 1ef4 FF27 clr r31
3920 1ef6 EE0F add r30,r30
3921 1ef8 FF1F adc r31,r31
3922 1efa E050 subi r30,lo8(-(PPM_in))
3923 1efc F040 sbci r31,hi8(-(PPM_in))
3924 1efe 1182 std Z+1,__zero_reg__
3925 1f00 1082 st Z,__zero_reg__
3926 1f02 C9C2 rjmp .L325
3927 .L323:
3928 1f04 1092 0000 sts MotorenEin,__zero_reg__
3929 1f08 C6C2 rjmp .L325
3930 .L317:
3931 1f0a 8091 0000 lds r24,SenderOkay
3932 1f0e 8D38 cpi r24,lo8(-115)
3933 1f10 08F4 brsh .+2
3934 1f12 C1C2 rjmp .L325
3935 1f14 8091 0000 lds r24,FC_StatusFlags
3936 1f18 8F7E andi r24,lo8(-17)
3937 1f1a 8093 0000 sts FC_StatusFlags,r24
3938 1f1e 9091 0000 lds r25,EE_Parameter+38
3939 1f22 82E3 ldi r24,lo8(50)
3940 1f24 989F mul r25,r24
3941 1f26 C001 movw r24,r0
3942 1f28 1124 clr r1
3943 1f2a 9093 0000 sts (RcLostTimer.5)+1,r25
3944 1f2e 8093 0000 sts RcLostTimer.5,r24
3945 1f32 E981 ldd r30,Y+1
3946 1f34 FA81 ldd r31,Y+2
3947 1f36 B997 sbiw r30,41
3948 1f38 8CF0 brlt .L327
3949 1f3a 8091 0000 lds r24,MotorenEin
3950 1f3e 8823 tst r24
3951 1f40 69F0 breq .L327
3952 1f42 8091 0000 lds r24,modell_fliegt
3953 1f46 9091 0000 lds r25,(modell_fliegt)+1
3954 1f4a FFEF ldi r31,hi8(-1)
3955 1f4c 8F3F cpi r24,lo8(-1)
3956 1f4e 9F07 cpc r25,r31
3957 1f50 29F0 breq .L327
3958 1f52 0196 adiw r24,1
3959 1f54 9093 0000 sts (modell_fliegt)+1,r25
3960 1f58 8093 0000 sts modell_fliegt,r24
3961 .L327:
3962 1f5c 8091 0000 lds r24,modell_fliegt
3963 1f60 9091 0000 lds r25,(modell_fliegt)+1
3964 1f64 8F3F cpi r24,255
3965 1f66 9105 cpc r25,__zero_reg__
3966 1f68 09F0 breq .+2
3967 1f6a 38F5 brsh .L329
3968 1f6c 1092 0000 sts SummeNick,__zero_reg__
3969 1f70 1092 0000 sts (SummeNick)+1,__zero_reg__
3970 1f74 1092 0000 sts (SummeNick)+2,__zero_reg__
3971 1f78 1092 0000 sts (SummeNick)+3,__zero_reg__
3972 1f7c 1092 0000 sts SummeRoll,__zero_reg__
3973 1f80 1092 0000 sts (SummeRoll)+1,__zero_reg__
3974 1f84 1092 0000 sts (SummeRoll)+2,__zero_reg__
3975 1f88 1092 0000 sts (SummeRoll)+3,__zero_reg__
3976 1f8c 1092 0000 sts sollGier.0,__zero_reg__
3977 1f90 1092 0000 sts (sollGier.0)+1,__zero_reg__
3978 1f94 1092 0000 sts (sollGier.0)+2,__zero_reg__
3979 1f98 1092 0000 sts (sollGier.0)+3,__zero_reg__
3980 1f9c 1092 0000 sts Mess_Integral_Gier,__zero_reg__
3981 1fa0 1092 0000 sts (Mess_Integral_Gier)+1,__zero_reg__
3982 1fa4 1092 0000 sts (Mess_Integral_Gier)+2,__zero_reg__
3983 1fa8 1092 0000 sts (Mess_Integral_Gier)+3,__zero_reg__
3984 1fac 8A3F cpi r24,250
3985 1fae 9105 cpc r25,__zero_reg__
3986 1fb0 49F4 brne .L331
3987 1fb2 81E0 ldi r24,lo8(1)
3988 1fb4 8093 0000 sts NeueKompassRichtungMerken.10,r24
3989 1fb8 05C0 rjmp .L331
3990 .L329:
3991 1fba 8091 0000 lds r24,FC_StatusFlags
3992 1fbe 8260 ori r24,lo8(2)
3993 1fc0 8093 0000 sts FC_StatusFlags,r24
3994 .L331:
3995 1fc4 8091 0000 lds r24,EE_Parameter+3
3996 1fc8 E82F mov r30,r24
3997 1fca FF27 clr r31
3998 1fcc EE0F add r30,r30
3999 1fce FF1F adc r31,r31
4000 1fd0 E050 subi r30,lo8(-(PPM_in))
4001 1fd2 F040 sbci r31,hi8(-(PPM_in))
4002 1fd4 8081 ld r24,Z
4003 1fd6 9181 ldd r25,Z+1
4004 1fd8 8135 cpi r24,81
4005 1fda 9105 cpc r25,__zero_reg__
4006 1fdc 0CF4 brge .+2
4007 1fde 41C1 rjmp .L332
4008 1fe0 2091 0000 lds r18,MotorenEin
4009 1fe4 2223 tst r18
4010 1fe6 09F0 breq .+2
4011 1fe8 3CC1 rjmp .L332
4012 1fea 8091 0000 lds r24,EE_Parameter+4
4013 1fee E82F mov r30,r24
4014 1ff0 FF27 clr r31
4015 1ff2 EE0F add r30,r30
4016 1ff4 FF1F adc r31,r31
4017 1ff6 E050 subi r30,lo8(-(PPM_in))
4018 1ff8 F040 sbci r31,hi8(-(PPM_in))
4019 1ffa 8081 ld r24,Z
4020 1ffc 9181 ldd r25,Z+1
4021 1ffe 8C34 cpi r24,76
4022 2000 9105 cpc r25,__zero_reg__
4023 2002 0CF4 brge .+2
4024 2004 06C1 rjmp .L333
4025 2006 8091 0000 lds r24,delay_neutral.6
4026 200a 8F5F subi r24,lo8(-(1))
4027 200c 8093 0000 sts delay_neutral.6,r24
4028 2010 893C cpi r24,lo8(-55)
4029 2012 08F4 brsh .+2
4030 2014 26C1 rjmp .L332
4031 2016 3C30 cpi r19,lo8(12)
4032 2018 10F4 brsh .L335
4033 201a 2998 cbi 37-0x20,1
4034 201c 01C0 rjmp .L336
4035 .L335:
4036 201e 299A sbi 37-0x20,1
4037 .L336:
4038 2020 1092 0000 sts MotorenEin,__zero_reg__
4039 2024 1092 0000 sts delay_neutral.6,__zero_reg__
4040 2028 1092 0000 sts (modell_fliegt)+1,__zero_reg__
4041 202c 1092 0000 sts modell_fliegt,__zero_reg__
4042 2030 3091 0000 lds r19,EE_Parameter+1
4043 2034 E32F mov r30,r19
4044 2036 FF27 clr r31
4045 2038 EE0F add r30,r30
4046 203a FF1F adc r31,r31
4047 203c E050 subi r30,lo8(-(PPM_in))
4048 203e F040 sbci r31,hi8(-(PPM_in))
4049 2040 8081 ld r24,Z
4050 2042 9181 ldd r25,Z+1
4051 2044 8734 cpi r24,71
4052 2046 9105 cpc r25,__zero_reg__
4053 2048 B4F4 brge .L338
4054 204a 8091 0000 lds r24,EE_Parameter+2
4055 204e E82F mov r30,r24
4056 2050 FF27 clr r31
4057 2052 EE0F add r30,r30
4058 2054 FF1F adc r31,r31
4059 2056 E050 subi r30,lo8(-(PPM_in))
4060 2058 F040 sbci r31,hi8(-(PPM_in))
4061 205a 8081 ld r24,Z
4062 205c 9181 ldd r25,Z+1
4063 205e 0190 ld __tmp_reg__,Z+
4064 2060 F081 ld r31,Z
4065 2062 E02D mov r30,__tmp_reg__
4066 2064 F7FF sbrs r31,7
4067 2066 03C0 rjmp .L339
4068 2068 F095 com r31
4069 206a E195 neg r30
4070 206c FF4F sbci r31,lo8(-1)
4071 .L339:
4072 206e E734 cpi r30,71
4073 2070 F105 cpc r31,__zero_reg__
4074 2072 0CF4 brge .+2
4075 2074 78C0 rjmp .L337
4076 .L338:
4077 2076 41E0 ldi r20,lo8(1)
4078 2078 2091 0000 lds r18,EE_Parameter+2
4079 207c A22F mov r26,r18
4080 207e BB27 clr r27
4081 2080 AA0F add r26,r26
4082 2082 BB1F adc r27,r27
4083 2084 A050 subi r26,lo8(-(PPM_in))
4084 2086 B040 sbci r27,hi8(-(PPM_in))
4085 2088 8D91 ld r24,X+
4086 208a 9C91 ld r25,X
4087 208c 1197 sbiw r26,1
4088 208e 8734 cpi r24,71
4089 2090 9105 cpc r25,__zero_reg__
4090 2092 44F0 brlt .L340
4091 2094 E32F mov r30,r19
4092 2096 FF27 clr r31
4093 2098 EE0F add r30,r30
4094 209a FF1F adc r31,r31
4095 209c E050 subi r30,lo8(-(PPM_in))
4096 209e F040 sbci r31,hi8(-(PPM_in))
4097 20a0 8081 ld r24,Z
4098 20a2 9181 ldd r25,Z+1
4099 .L340:
4100 20a4 8D91 ld r24,X+
4101 20a6 9C91 ld r25,X
4102 20a8 8734 cpi r24,71
4103 20aa 9105 cpc r25,__zero_reg__
4104 20ac 74F0 brlt .L341
4105 20ae 8091 0000 lds r24,EE_Parameter+1
4106 20b2 E82F mov r30,r24
4107 20b4 FF27 clr r31
4108 20b6 EE0F add r30,r30
4109 20b8 FF1F adc r31,r31
4110 20ba E050 subi r30,lo8(-(PPM_in))
4111 20bc F040 sbci r31,hi8(-(PPM_in))
4112 20be 8081 ld r24,Z
4113 20c0 9181 ldd r25,Z+1
4114 20c2 8734 cpi r24,71
4115 20c4 9105 cpc r25,__zero_reg__
4116 20c6 0CF0 brlt .L341
4117 20c8 42E0 ldi r20,lo8(2)
4118 .L341:
4119 20ca E22F mov r30,r18
4120 20cc FF27 clr r31
4121 20ce EE0F add r30,r30
4122 20d0 FF1F adc r31,r31
4123 20d2 E050 subi r30,lo8(-(PPM_in))
4124 20d4 F040 sbci r31,hi8(-(PPM_in))
4125 20d6 8081 ld r24,Z
4126 20d8 9181 ldd r25,Z+1
4127 20da 8634 cpi r24,70
4128 20dc 9105 cpc r25,__zero_reg__
4129 20de 74F4 brge .L342
4130 20e0 8091 0000 lds r24,EE_Parameter+1
4131 20e4 E82F mov r30,r24
4132 20e6 FF27 clr r31
4133 20e8 EE0F add r30,r30
4134 20ea FF1F adc r31,r31
4135 20ec E050 subi r30,lo8(-(PPM_in))
4136 20ee F040 sbci r31,hi8(-(PPM_in))
4137 20f0 8081 ld r24,Z
4138 20f2 9181 ldd r25,Z+1
4139 20f4 8734 cpi r24,71
4140 20f6 9105 cpc r25,__zero_reg__
4141 20f8 0CF0 brlt .L342
4142 20fa 43E0 ldi r20,lo8(3)
4143 .L342:
4144 20fc E22F mov r30,r18
4145 20fe FF27 clr r31
4146 2100 EE0F add r30,r30
4147 2102 FF1F adc r31,r31
4148 2104 E050 subi r30,lo8(-(PPM_in))
4149 2106 F040 sbci r31,hi8(-(PPM_in))
4150 2108 8081 ld r24,Z
4151 210a 9181 ldd r25,Z+1
4152 210c 8A5B subi r24,lo8(-70)
4153 210e 9F4F sbci r25,hi8(-70)
4154 2110 74F4 brge .L343
4155 2112 8091 0000 lds r24,EE_Parameter+1
4156 2116 E82F mov r30,r24
4157 2118 FF27 clr r31
4158 211a EE0F add r30,r30
4159 211c FF1F adc r31,r31
4160 211e E050 subi r30,lo8(-(PPM_in))
4161 2120 F040 sbci r31,hi8(-(PPM_in))
4162 2122 8081 ld r24,Z
4163 2124 9181 ldd r25,Z+1
4164 2126 8734 cpi r24,71
4165 2128 9105 cpc r25,__zero_reg__
4166 212a 0CF0 brlt .L343
4167 212c 44E0 ldi r20,lo8(4)
4168 .L343:
4169 212e E22F mov r30,r18
4170 2130 FF27 clr r31
4171 2132 EE0F add r30,r30
4172 2134 FF1F adc r31,r31
4173 2136 E050 subi r30,lo8(-(PPM_in))
4174 2138 F040 sbci r31,hi8(-(PPM_in))
4175 213a 8081 ld r24,Z
4176 213c 9181 ldd r25,Z+1
4177 213e 8A5B subi r24,lo8(-70)
4178 2140 9F4F sbci r25,hi8(-70)
4179 2142 74F4 brge .L344
4180 2144 8091 0000 lds r24,EE_Parameter+1
4181 2148 E82F mov r30,r24
4182 214a FF27 clr r31
4183 214c EE0F add r30,r30
4184 214e FF1F adc r31,r31
4185 2150 E050 subi r30,lo8(-(PPM_in))
4186 2152 F040 sbci r31,hi8(-(PPM_in))
4187 2154 8081 ld r24,Z
4188 2156 9181 ldd r25,Z+1
4189 2158 8634 cpi r24,70
4190 215a 9105 cpc r25,__zero_reg__
4191 215c 0CF4 brge .L344
4192 215e 45E0 ldi r20,lo8(5)
4193 .L344:
4194 2160 842F mov r24,r20
4195 2162 0E94 0000 call SetActiveParamSet
4196 .L337:
4197 2166 8091 0000 lds r24,EE_Parameter+2
4198 216a E82F mov r30,r24
4199 216c FF27 clr r31
4200 216e EE0F add r30,r30
4201 2170 FF1F adc r31,r31
4202 2172 E050 subi r30,lo8(-(PPM_in))
4203 2174 F040 sbci r31,hi8(-(PPM_in))
4204 2176 8081 ld r24,Z
4205 2178 9181 ldd r25,Z+1
4206 217a 0190 ld __tmp_reg__,Z+
4207 217c F081 ld r31,Z
4208 217e E02D mov r30,__tmp_reg__
4209 2180 F7FF sbrs r31,7
4210 2182 03C0 rjmp .L346
4211 2184 F095 com r31
4212 2186 E195 neg r30
4213 2188 FF4F sbci r31,lo8(-1)
4214 .L346:
4215 218a 7E97 sbiw r30,30
4216 218c BCF4 brge .L345
4217 218e 8091 0000 lds r24,EE_Parameter+1
4218 2192 E82F mov r30,r24
4219 2194 FF27 clr r31
4220 2196 EE0F add r30,r30
4221 2198 FF1F adc r31,r31
4222 219a E050 subi r30,lo8(-(PPM_in))
4223 219c F040 sbci r31,hi8(-(PPM_in))
4224 219e 8081 ld r24,Z
4225 21a0 9181 ldd r25,Z+1
4226 21a2 8A5B subi r24,lo8(-70)
4227 21a4 9F4F sbci r25,hi8(-70)
4228 21a6 54F4 brge .L345
4229 21a8 81E0 ldi r24,lo8(1)
4230 21aa 8093 0000 sts WinkelOut+6,r24
4231 21ae 88EE ldi r24,lo8(1000)
4232 21b0 93E0 ldi r25,hi8(1000)
4233 21b2 9093 0000 sts (beeptime)+1,r25
4234 21b6 8093 0000 sts beeptime,r24
4235 21ba 53C0 rjmp .L332
4236 .L345:
4237 21bc 0E94 0000 call GetActiveParamSet
4238 21c0 0E94 0000 call ParamSet_ReadFromEEProm
4239 21c4 80E0 ldi r24,lo8(0)
4240 21c6 0E94 0000 call LipoDetection
4241 21ca 8091 0000 lds r24,EE_Parameter+39
4242 21ce 0E94 0000 call LIBFC_ReceiverInit
4243 21d2 8091 0000 lds r24,EE_Parameter+13
4244 21d6 80FF sbrs r24,0
4245 21d8 10C0 rjmp .L348
4246 21da 8091 0000 lds r24,MessLuftdruck
4247 21de 9091 0000 lds r25,(MessLuftdruck)+1
4248 21e2 875B subi r24,lo8(951)
4249 21e4 9340 sbci r25,hi8(951)
4250 21e6 38F4 brsh .L350
4251 21e8 8091 0000 lds r24,MessLuftdruck
4252 21ec 9091 0000 lds r25,(MessLuftdruck)+1
4253 21f0 8E5E subi r24,lo8(750)
4254 21f2 9240 sbci r25,hi8(750)
4255 21f4 10F4 brsh .L348
4256 .L350:
4257 21f6 0E94 0000 call SucheLuftruckOffset
4258 .L348:
4259 21fa 1092 0000 sts ServoActive,__zero_reg__
4260 21fe 80E0 ldi r24,lo8(0)
4261 2200 0E94 0000 call SetNeutral
4262 2204 81E0 ldi r24,lo8(1)
4263 2206 8093 0000 sts calibration_done.9,r24
4264 220a 8093 0000 sts ServoActive,r24
4265 220e 579A sbi 42-0x20,7
4266 2210 1FC0 rjmp .L790
4267 .L333:
4268 2212 8081 ld r24,Z
4269 2214 9181 ldd r25,Z+1
4270 2216 855B subi r24,lo8(-75)
4271 2218 9F4F sbci r25,hi8(-75)
4272 221a 0CF5 brge .L352
4273 221c 8091 0000 lds r24,delay_neutral.6
4274 2220 8F5F subi r24,lo8(-(1))
4275 2222 8093 0000 sts delay_neutral.6,r24
4276 2226 893C cpi r24,lo8(-55)
4277 2228 E0F0 brlo .L332
4278 222a 3C30 cpi r19,lo8(12)
4279 222c 10F4 brsh .L354
4280 222e 2998 cbi 37-0x20,1
4281 2230 01C0 rjmp .L355
4282 .L354:
4283 2232 299A sbi 37-0x20,1
4284 .L355:
4285 2234 1092 0000 sts MotorenEin,__zero_reg__
4286 2238 1092 0000 sts delay_neutral.6,__zero_reg__
4287 223c 1092 0000 sts (modell_fliegt)+1,__zero_reg__
4288 2240 1092 0000 sts modell_fliegt,__zero_reg__
4289 2244 81E0 ldi r24,lo8(1)
4290 2246 0E94 0000 call SetNeutral
4291 224a 81E0 ldi r24,lo8(1)
4292 224c 8093 0000 sts calibration_done.9,r24
4293 .L790:
4294 2250 0E94 0000 call GetActiveParamSet
4295 2254 68E7 ldi r22,lo8(120)
4296 2256 70E0 ldi r23,hi8(120)
4297 2258 0E94 0000 call Piep
4298 225c 02C0 rjmp .L332
4299 .L352:
4300 225e 2093 0000 sts delay_neutral.6,r18
4301 .L332:
4302 2262 8091 0000 lds r24,EE_Parameter+3
4303 2266 E82F mov r30,r24
4304 2268 FF27 clr r31
4305 226a EE0F add r30,r30
4306 226c FF1F adc r31,r31
4307 226e E050 subi r30,lo8(-(PPM_in))
4308 2270 F040 sbci r31,hi8(-(PPM_in))
4309 2272 8081 ld r24,Z
4310 2274 9181 ldd r25,Z+1
4311 2276 8B5A subi r24,lo8(-85)
4312 2278 9F4F sbci r25,hi8(-85)
4313 227a 0CF0 brlt .+2
4314 227c 0CC1 rjmp .L325
4315 227e 3091 0000 lds r19,MotorenEin
4316 2282 E091 0000 lds r30,EE_Parameter+4
4317 2286 3323 tst r19
4318 2288 09F0 breq .+2
4319 228a DAC0 rjmp .L358
4320 228c FF27 clr r31
4321 228e EE0F add r30,r30
4322 2290 FF1F adc r31,r31
4323 2292 E050 subi r30,lo8(-(PPM_in))
4324 2294 F040 sbci r31,hi8(-(PPM_in))
4325 2296 8081 ld r24,Z
4326 2298 9181 ldd r25,Z+1
4327 229a 855B subi r24,lo8(-75)
4328 229c 9F4F sbci r25,hi8(-75)
4329 229e 0CF0 brlt .+2
4330 22a0 CCC0 rjmp .L359
4331 22a2 2091 0000 lds r18,EE_Parameter+99
4332 22a6 E22F mov r30,r18
4333 22a8 FF27 clr r31
4334 22aa EE0F add r30,r30
4335 22ac FF1F adc r31,r31
4336 22ae E050 subi r30,lo8(-(PPM_in))
4337 22b0 F040 sbci r31,hi8(-(PPM_in))
4338 22b2 8081 ld r24,Z
4339 22b4 9181 ldd r25,Z+1
4340 22b6 855B subi r24,lo8(-75)
4341 22b8 9F4F sbci r25,hi8(-75)
4342 22ba 1CF0 brlt .L360
4343 22bc 2223 tst r18
4344 22be 09F0 breq .+2
4345 22c0 BCC0 rjmp .L359
4346 .L360:
4347 22c2 8091 0000 lds r24,delay_einschalten.7
4348 22c6 8F5F subi r24,lo8(-(1))
4349 22c8 8093 0000 sts delay_einschalten.7,r24
4350 22cc 893C cpi r24,lo8(-55)
4351 22ce 08F4 brsh .+2
4352 22d0 E2C0 rjmp .L325
4353 22d2 3093 0000 sts delay_einschalten.7,r19
4354 22d6 8091 0000 lds r24,VersionInfo+5
4355 22da 8823 tst r24
4356 22dc 09F0 breq .+2
4357 22de A6C0 rjmp .L362
4358 22e0 8091 0000 lds r24,calibration_done.9
4359 22e4 8823 tst r24
4360 22e6 09F4 brne .+2
4361 22e8 A1C0 rjmp .L362
4362 22ea 81E0 ldi r24,lo8(1)
4363 22ec 90E0 ldi r25,hi8(1)
4364 22ee 9093 0000 sts (modell_fliegt)+1,r25
4365 22f2 8093 0000 sts modell_fliegt,r24
4366 22f6 81E0 ldi r24,lo8(1)
4367 22f8 8093 0000 sts MotorenEin,r24
4368 22fc 1092 0000 sts sollGier.0,__zero_reg__
4369 2300 1092 0000 sts (sollGier.0)+1,__zero_reg__
4370 2304 1092 0000 sts (sollGier.0)+2,__zero_reg__
4371 2308 1092 0000 sts (sollGier.0)+3,__zero_reg__
4372 230c 1092 0000 sts Mess_Integral_Gier,__zero_reg__
4373 2310 1092 0000 sts (Mess_Integral_Gier)+1,__zero_reg__
4374 2314 1092 0000 sts (Mess_Integral_Gier)+2,__zero_reg__
4375 2318 1092 0000 sts (Mess_Integral_Gier)+3,__zero_reg__
4376 231c 1092 0000 sts Mess_Integral_Gier2,__zero_reg__
4377 2320 1092 0000 sts (Mess_Integral_Gier2)+1,__zero_reg__
4378 2324 1092 0000 sts (Mess_Integral_Gier2)+2,__zero_reg__
4379 2328 1092 0000 sts (Mess_Integral_Gier2)+3,__zero_reg__
4380 232c 8091 0000 lds r24,EE_Parameter+28
4381 2330 E82E mov r14,r24
4382 2332 FF24 clr r15
4383 2334 0027 clr r16
4384 2336 1127 clr r17
4385 2338 8091 0000 lds r24,Mittelwert_AccNick
4386 233c 9091 0000 lds r25,(Mittelwert_AccNick)+1
4387 2340 9C01 movw r18,r24
4388 2342 4427 clr r20
4389 2344 37FD sbrc r19,7
4390 2346 4095 com r20
4391 2348 542F mov r21,r20
4392 234a C801 movw r24,r16
4393 234c B701 movw r22,r14
4394 234e 0E94 0000 call __mulsi3
4395 2352 DC01 movw r26,r24
4396 2354 CB01 movw r24,r22
4397 2356 8093 0000 sts Mess_IntegralNick,r24
4398 235a 9093 0000 sts (Mess_IntegralNick)+1,r25
4399 235e A093 0000 sts (Mess_IntegralNick)+2,r26
4400 2362 B093 0000 sts (Mess_IntegralNick)+3,r27
4401 2366 8091 0000 lds r24,Mittelwert_AccRoll
4402 236a 9091 0000 lds r25,(Mittelwert_AccRoll)+1
4403 236e 9C01 movw r18,r24
4404 2370 4427 clr r20
4405 2372 37FD sbrc r19,7
4406 2374 4095 com r20
4407 2376 542F mov r21,r20
4408 2378 C801 movw r24,r16
4409 237a B701 movw r22,r14
4410 237c 0E94 0000 call __mulsi3
4411 2380 DC01 movw r26,r24
4412 2382 CB01 movw r24,r22
4413 2384 8093 0000 sts Mess_IntegralRoll,r24
4414 2388 9093 0000 sts (Mess_IntegralRoll)+1,r25
4415 238c A093 0000 sts (Mess_IntegralRoll)+2,r26
4416 2390 B093 0000 sts (Mess_IntegralRoll)+3,r27
4417 2394 8091 0000 lds r24,IntegralNick
4418 2398 9091 0000 lds r25,(IntegralNick)+1
4419 239c A091 0000 lds r26,(IntegralNick)+2
4420 23a0 B091 0000 lds r27,(IntegralNick)+3
4421 23a4 8093 0000 sts Mess_IntegralNick2,r24
4422 23a8 9093 0000 sts (Mess_IntegralNick2)+1,r25
4423 23ac A093 0000 sts (Mess_IntegralNick2)+2,r26
4424 23b0 B093 0000 sts (Mess_IntegralNick2)+3,r27
4425 23b4 8091 0000 lds r24,IntegralRoll
4426 23b8 9091 0000 lds r25,(IntegralRoll)+1
4427 23bc A091 0000 lds r26,(IntegralRoll)+2
4428 23c0 B091 0000 lds r27,(IntegralRoll)+3
4429 23c4 8093 0000 sts Mess_IntegralRoll2,r24
4430 23c8 9093 0000 sts (Mess_IntegralRoll2)+1,r25
4431 23cc A093 0000 sts (Mess_IntegralRoll2)+2,r26
4432 23d0 B093 0000 sts (Mess_IntegralRoll2)+3,r27
4433 23d4 1092 0000 sts SummeNick,__zero_reg__
4434 23d8 1092 0000 sts (SummeNick)+1,__zero_reg__
4435 23dc 1092 0000 sts (SummeNick)+2,__zero_reg__
4436 23e0 1092 0000 sts (SummeNick)+3,__zero_reg__
4437 23e4 1092 0000 sts SummeRoll,__zero_reg__
4438 23e8 1092 0000 sts (SummeRoll)+1,__zero_reg__
4439 23ec 1092 0000 sts (SummeRoll)+2,__zero_reg__
4440 23f0 1092 0000 sts (SummeRoll)+3,__zero_reg__
4441 23f4 8091 0000 lds r24,FC_StatusFlags
4442 23f8 8860 ori r24,lo8(8)
4443 23fa 8093 0000 sts FC_StatusFlags,r24
4444 23fe 9091 0000 lds r25,EE_Parameter+97
4445 2402 8FE0 ldi r24,lo8(15)
4446 2404 989F mul r25,r24
4447 2406 9001 movw r18,r0
4448 2408 1124 clr r1
4449 240a 8091 0000 lds r24,KompassValue
4450 240e 9091 0000 lds r25,(KompassValue)+1
4451 2412 820F add r24,r18
4452 2414 931F adc r25,r19
4453 2416 68E6 ldi r22,lo8(360)
4454 2418 71E0 ldi r23,hi8(360)
4455 241a 0E94 0000 call __divmodhi4
4456 241e 97FD sbrc r25,7
4457 2420 0196 adiw r24,1
4458 .L363:
4459 2422 9595 asr r25
4460 2424 8795 ror r24
4461 2426 8093 0000 sts ControlHeading,r24
4462 242a 35C0 rjmp .L325
4463 .L362:
4464 242c 8CED ldi r24,lo8(1500)
4465 242e 95E0 ldi r25,hi8(1500)
4466 2430 9093 0000 sts (beeptime)+1,r25
4467 2434 8093 0000 sts beeptime,r24
4468 2438 2EC0 rjmp .L325
4469 .L359:
4470 243a 1092 0000 sts delay_einschalten.7,__zero_reg__
4471 243e 2BC0 rjmp .L325
4472 .L358:
4473 2440 FF27 clr r31
4474 2442 EE0F add r30,r30
4475 2444 FF1F adc r31,r31
4476 2446 E050 subi r30,lo8(-(PPM_in))
4477 2448 F040 sbci r31,hi8(-(PPM_in))
4478 244a 8081 ld r24,Z
4479 244c 9181 ldd r25,Z+1
4480 244e 8C34 cpi r24,76
4481 2450 9105 cpc r25,__zero_reg__
4482 2452 FCF0 brlt .L367
4483 2454 2091 0000 lds r18,EE_Parameter+99
4484 2458 E22F mov r30,r18
4485 245a FF27 clr r31
4486 245c EE0F add r30,r30
4487 245e FF1F adc r31,r31
4488 2460 E050 subi r30,lo8(-(PPM_in))
4489 2462 F040 sbci r31,hi8(-(PPM_in))
4490 2464 8081 ld r24,Z
4491 2466 9181 ldd r25,Z+1
4492 2468 855B subi r24,lo8(-75)
4493 246a 9F4F sbci r25,hi8(-75)
4494 246c 14F0 brlt .L368
4495 246e 2223 tst r18
4496 2470 81F4 brne .L367
4497 .L368:
4498 2472 8091 0000 lds r24,delay_ausschalten.8
4499 2476 8F5F subi r24,lo8(-(1))
4500 2478 8093 0000 sts delay_ausschalten.8,r24
4501 247c 893C cpi r24,lo8(-55)
4502 247e 58F0 brlo .L325
4503 2480 1092 0000 sts MotorenEin,__zero_reg__
4504 2484 1092 0000 sts delay_ausschalten.8,__zero_reg__
4505 2488 1092 0000 sts (modell_fliegt)+1,__zero_reg__
4506 248c 1092 0000 sts modell_fliegt,__zero_reg__
4507 2490 02C0 rjmp .L325
4508 .L367:
4509 2492 1092 0000 sts delay_ausschalten.8,__zero_reg__
4510 .L325:
4511 2496 8091 0000 lds r24,NewPpmData
4512 249a 8150 subi r24,lo8(-(-1))
4513 249c 8093 0000 sts NewPpmData,r24
4514 24a0 8091 0000 lds r24,NewPpmData
4515 24a4 8F3F cpi r24,lo8(-1)
4516 24a6 21F0 breq .L372
4517 24a8 8091 0000 lds r24,FC_StatusFlags
4518 24ac 84FF sbrs r24,4
4519 24ae 72C3 rjmp .L371
4520 .L372:
4521 24b0 0E94 0000 call ParameterZuordnung
4522 24b4 8091 0000 lds r24,stick_nick.13
4523 24b8 9091 0000 lds r25,(stick_nick.13)+1
4524 24bc 9C01 movw r18,r24
4525 24be 220F lsl r18
4526 24c0 331F rol r19
4527 24c2 280F add r18,r24
4528 24c4 391F adc r19,r25
4529 24c6 C090 0000 lds r12,EE_Parameter+1
4530 24ca AC2D mov r26,r12
4531 24cc BB27 clr r27
4532 24ce AA0F add r26,r26
4533 24d0 BB1F adc r27,r27
4534 24d2 FD01 movw r30,r26
4535 24d4 E050 subi r30,lo8(-(PPM_in))
4536 24d6 F040 sbci r31,hi8(-(PPM_in))
4537 24d8 B090 0000 lds r11,EE_Parameter+23
4538 24dc 4B2D mov r20,r11
4539 24de 5527 clr r21
4540 24e0 8081 ld r24,Z
4541 24e2 9181 ldd r25,Z+1
4542 24e4 849F mul r24,r20
4543 24e6 F001 movw r30,r0
4544 24e8 859F mul r24,r21
4545 24ea F00D add r31,r0
4546 24ec 949F mul r25,r20
4547 24ee F00D add r31,r0
4548 24f0 1124 clr r1
4549 24f2 2E0F add r18,r30
4550 24f4 3F1F adc r19,r31
4551 24f6 37FF sbrs r19,7
4552 24f8 02C0 rjmp .L373
4553 24fa 2D5F subi r18,lo8(-(3))
4554 24fc 3F4F sbci r19,hi8(-(3))
4555 .L373:
4556 24fe B901 movw r22,r18
4557 2500 7595 asr r23
4558 2502 6795 ror r22
4559 2504 7595 asr r23
4560 2506 6795 ror r22
4561 2508 A050 subi r26,lo8(-(PPM_diff))
4562 250a B040 sbci r27,hi8(-(PPM_diff))
4563 250c 8091 0000 lds r24,EE_Parameter+24
4564 2510 082F mov r16,r24
4565 2512 1127 clr r17
4566 2514 8D91 ld r24,X+
4567 2516 9C91 ld r25,X
4568 2518 809F mul r24,r16
4569 251a 7001 movw r14,r0
4570 251c 819F mul r24,r17
4571 251e F00C add r15,r0
4572 2520 909F mul r25,r16
4573 2522 F00C add r15,r0
4574 2524 1124 clr r1
4575 2526 6E0D add r22,r14
4576 2528 7F1D adc r23,r15
4577 252a 7093 0000 sts (stick_nick.13)+1,r23
4578 252e 6093 0000 sts stick_nick.13,r22
4579 2532 8091 0000 lds r24,stick_roll.14
4580 2536 9091 0000 lds r25,(stick_roll.14)+1
4581 253a 9C01 movw r18,r24
4582 253c 220F lsl r18
4583 253e 331F rol r19
4584 2540 280F add r18,r24
4585 2542 391F adc r19,r25
4586 2544 D090 0000 lds r13,EE_Parameter+2
4587 2548 AD2D mov r26,r13
4588 254a BB27 clr r27
4589 254c AA0F add r26,r26
4590 254e BB1F adc r27,r27
4591 2550 FD01 movw r30,r26
4592 2552 E050 subi r30,lo8(-(PPM_in))
4593 2554 F040 sbci r31,hi8(-(PPM_in))
4594 2556 8081 ld r24,Z
4595 2558 9181 ldd r25,Z+1
4596 255a 849F mul r24,r20
4597 255c F001 movw r30,r0
4598 255e 859F mul r24,r21
4599 2560 F00D add r31,r0
4600 2562 949F mul r25,r20
4601 2564 F00D add r31,r0
4602 2566 1124 clr r1
4603 2568 2E0F add r18,r30
4604 256a 3F1F adc r19,r31
4605 256c 37FF sbrs r19,7
4606 256e 02C0 rjmp .L374
4607 2570 2D5F subi r18,lo8(-(3))
4608 2572 3F4F sbci r19,hi8(-(3))
4609 .L374:
4610 2574 A901 movw r20,r18
4611 2576 5595 asr r21
4612 2578 4795 ror r20
4613 257a 5595 asr r21
4614 257c 4795 ror r20
4615 257e A050 subi r26,lo8(-(PPM_diff))
4616 2580 B040 sbci r27,hi8(-(PPM_diff))
4617 2582 8D91 ld r24,X+
4618 2584 9C91 ld r25,X
4619 2586 809F mul r24,r16
4620 2588 7001 movw r14,r0
4621 258a 819F mul r24,r17
4622 258c F00C add r15,r0
4623 258e 909F mul r25,r16
4624 2590 F00C add r15,r0
4625 2592 1124 clr r1
4626 2594 4E0D add r20,r14
4627 2596 5F1D adc r21,r15
4628 2598 5093 0000 sts (stick_roll.14)+1,r21
4629 259c 4093 0000 sts stick_roll.14,r20
4630 25a0 8091 0000 lds r24,CareFree
4631 25a4 8823 tst r24
4632 25a6 09F4 brne .+2
4633 25a8 48C0 rjmp .L375
4634 25aa CB01 movw r24,r22
4635 25ac 77FD sbrc r23,7
4636 25ae 0396 adiw r24,3
4637 .L376:
4638 25b0 DC01 movw r26,r24
4639 25b2 B595 asr r27
4640 25b4 A795 ror r26
4641 25b6 B595 asr r27
4642 25b8 A795 ror r26
4643 25ba CA01 movw r24,r20
4644 25bc 57FD sbrc r21,7
4645 25be 0396 adiw r24,3
4646 .L377:
4647 25c0 FC01 movw r30,r24
4648 25c2 F595 asr r31
4649 25c4 E795 ror r30
4650 25c6 F595 asr r31
4651 25c8 E795 ror r30
4652 25ca 8091 0000 lds r24,FromNC_Rotate_C
4653 25ce 682F mov r22,r24
4654 25d0 7727 clr r23
4655 25d2 67FD sbrc r22,7
4656 25d4 7095 com r23
4657 25d6 6A9F mul r22,r26
4658 25d8 9001 movw r18,r0
4659 25da 6B9F mul r22,r27
4660 25dc 300D add r19,r0
4661 25de 7A9F mul r23,r26
4662 25e0 300D add r19,r0
4663 25e2 1124 clr r1
4664 25e4 8091 0000 lds r24,FromNC_Rotate_S
4665 25e8 482F mov r20,r24
4666 25ea 5527 clr r21
4667 25ec 47FD sbrc r20,7
4668 25ee 5095 com r21
4669 25f0 4E9F mul r20,r30
4670 25f2 C001 movw r24,r0
4671 25f4 4F9F mul r20,r31
4672 25f6 900D add r25,r0
4673 25f8 5E9F mul r21,r30
4674 25fa 900D add r25,r0
4675 25fc 1124 clr r1
4676 25fe 280F add r18,r24
4677 2600 391F adc r19,r25
4678 2602 37FF sbrs r19,7
4679 2604 02C0 rjmp .L378
4680 2606 295F subi r18,lo8(-(7))
4681 2608 3F4F sbci r19,hi8(-(7))
4682 .L378:
4683 260a 03E0 ldi r16,3
4684 260c 3595 1: asr r19
4685 260e 2795 ror r18
4686 2610 0A95 dec r16
4687 2612 E1F7 brne 1b
4688 2614 3093 0000 sts (StickNick)+1,r19
4689 2618 2093 0000 sts StickNick,r18
4690 261c 6E9F mul r22,r30
4691 261e 9001 movw r18,r0
4692 2620 6F9F mul r22,r31
4693 2622 300D add r19,r0
4694 2624 7E9F mul r23,r30
4695 2626 300D add r19,r0
4696 2628 1124 clr r1
4697 262a 4A9F mul r20,r26
4698 262c C001 movw r24,r0
4699 262e 4B9F mul r20,r27
4700 2630 900D add r25,r0
4701 2632 5A9F mul r21,r26
4702 2634 900D add r25,r0
4703 2636 1124 clr r1
4704 2638 3FC0 rjmp .L816
4705 .L375:
4706 263a 8091 0000 lds r24,EE_Parameter+97
4707 263e E82F mov r30,r24
4708 2640 FF27 clr r31
4709 2642 E050 subi r30,lo8(-(sintab))
4710 2644 F040 sbci r31,hi8(-(sintab))
4711 2646 8681 ldd r24,Z+6
4712 2648 8093 0000 sts FromNC_Rotate_C,r24
4713 264c 9081 ld r25,Z
4714 264e 9093 0000 sts FromNC_Rotate_S,r25
4715 2652 A82F mov r26,r24
4716 2654 BB27 clr r27
4717 2656 A7FD sbrc r26,7
4718 2658 B095 com r27
4719 265a A69F mul r26,r22
4720 265c 9001 movw r18,r0
4721 265e A79F mul r26,r23
4722 2660 300D add r19,r0
4723 2662 B69F mul r27,r22
4724 2664 300D add r19,r0
4725 2666 1124 clr r1
4726 2668 E92F mov r30,r25
4727 266a FF27 clr r31
4728 266c E7FD sbrc r30,7
4729 266e F095 com r31
4730 2670 E49F mul r30,r20
4731 2672 C001 movw r24,r0
4732 2674 E59F mul r30,r21
4733 2676 900D add r25,r0
4734 2678 F49F mul r31,r20
4735 267a 900D add r25,r0
4736 267c 1124 clr r1
4737 267e 280F add r18,r24
4738 2680 391F adc r19,r25
4739 2682 37FF sbrs r19,7
4740 2684 02C0 rjmp .L381
4741 2686 295F subi r18,lo8(-(7))
4742 2688 3F4F sbci r19,hi8(-(7))
4743 .L381:
4744 268a 13E0 ldi r17,3
4745 268c 3595 1: asr r19
4746 268e 2795 ror r18
4747 2690 1A95 dec r17
4748 2692 E1F7 brne 1b
4749 2694 3093 0000 sts (StickNick)+1,r19
4750 2698 2093 0000 sts StickNick,r18
4751 269c A49F mul r26,r20
4752 269e 9001 movw r18,r0
4753 26a0 A59F mul r26,r21
4754 26a2 300D add r19,r0
4755 26a4 B49F mul r27,r20
4756 26a6 300D add r19,r0
4757 26a8 1124 clr r1
4758 26aa E69F mul r30,r22
4759 26ac C001 movw r24,r0
4760 26ae E79F mul r30,r23
4761 26b0 900D add r25,r0
4762 26b2 F69F mul r31,r22
4763 26b4 900D add r25,r0
4764 26b6 1124 clr r1
4765 .L816:
4766 26b8 281B sub r18,r24
4767 26ba 390B sbc r19,r25
4768 26bc 37FF sbrs r19,7
4769 26be 02C0 rjmp .L382
4770 26c0 295F subi r18,lo8(-(7))
4771 26c2 3F4F sbci r19,hi8(-(7))
4772 .L382:
4773 26c4 F3E0 ldi r31,3
4774 26c6 3595 1: asr r19
4775 26c8 2795 ror r18
4776 26ca FA95 dec r31
4777 26cc E1F7 brne 1b
4778 26ce 3093 0000 sts (StickRoll)+1,r19
4779 26d2 2093 0000 sts StickRoll,r18
4780 26d6 8091 0000 lds r24,EE_Parameter+4
4781 26da E82F mov r30,r24
4782 26dc FF27 clr r31
4783 26de EE0F add r30,r30
4784 26e0 FF1F adc r31,r31
4785 26e2 E050 subi r30,lo8(-(PPM_in))
4786 26e4 F040 sbci r31,hi8(-(PPM_in))
4787 26e6 8081 ld r24,Z
4788 26e8 9181 ldd r25,Z+1
4789 26ea 9095 com r25
4790 26ec 8195 neg r24
4791 26ee 9F4F sbci r25,lo8(-1)
4792 26f0 9093 0000 sts (StickGier)+1,r25
4793 26f4 8093 0000 sts StickGier,r24
4794 26f8 8330 cpi r24,3
4795 26fa 9105 cpc r25,__zero_reg__
4796 26fc 14F0 brlt .L383
4797 26fe 0297 sbiw r24,2
4798 2700 05C0 rjmp .L791
4799 .L383:
4800 2702 0FEF ldi r16,hi8(-2)
4801 2704 8E3F cpi r24,lo8(-2)
4802 2706 9007 cpc r25,r16
4803 2708 34F4 brge .L385
4804 270a 0296 adiw r24,2
4805 .L791:
4806 270c 9093 0000 sts (StickGier)+1,r25
4807 2710 8093 0000 sts StickGier,r24
4808 2714 04C0 rjmp .L384
4809 .L385:
4810 2716 1092 0000 sts (StickGier)+1,__zero_reg__
4811 271a 1092 0000 sts StickGier,__zero_reg__
4812 .L384:
4813 271e 8091 0000 lds r24,GPS_Nick
4814 2722 9091 0000 lds r25,(GPS_Nick)+1
4815 2726 2091 0000 lds r18,GPS_Nick2
4816 272a 3091 0000 lds r19,(GPS_Nick2)+1
4817 272e 820F add r24,r18
4818 2730 931F adc r25,r19
4819 2732 0091 0000 lds r16,StickNick
4820 2736 1091 0000 lds r17,(StickNick)+1
4821 273a 081B sub r16,r24
4822 273c 190B sbc r17,r25
4823 273e 1093 0000 sts (StickNick)+1,r17
4824 2742 0093 0000 sts StickNick,r16
4825 2746 8091 0000 lds r24,GPS_Roll
4826 274a 9091 0000 lds r25,(GPS_Roll)+1
4827 274e 2091 0000 lds r18,GPS_Roll2
4828 2752 3091 0000 lds r19,(GPS_Roll2)+1
4829 2756 820F add r24,r18
4830 2758 931F adc r25,r19
4831 275a 8090 0000 lds r8,StickRoll
4832 275e 9090 0000 lds r9,(StickRoll)+1
4833 2762 881A sub r8,r24
4834 2764 990A sbc r9,r25
4835 2766 9092 0000 sts (StickRoll)+1,r9
4836 276a 8092 0000 sts StickRoll,r8
4837 276e 8091 0000 lds r24,EE_Parameter+3
4838 2772 E82F mov r30,r24
4839 2774 FF27 clr r31
4840 2776 EE0F add r30,r30
4841 2778 FF1F adc r31,r31
4842 277a E050 subi r30,lo8(-(PPM_in))
4843 277c F040 sbci r31,hi8(-(PPM_in))
4844 277e E080 ld r14,Z
4845 2780 F180 ldd r15,Z+1
4846 2782 28E7 ldi r18,lo8(120)
4847 2784 30E0 ldi r19,hi8(120)
4848 2786 E20E add r14,r18
4849 2788 F31E adc r15,r19
4850 278a F092 0000 sts (StickGas)+1,r15
4851 278e E092 0000 sts StickGas,r14
4852 2792 8091 0000 lds r24,Parameter_Gyro_P
4853 2796 9927 clr r25
4854 2798 AA27 clr r26
4855 279a 97FD sbrc r25,7
4856 279c A095 com r26
4857 279e BA2F mov r27,r26
4858 27a0 BC01 movw r22,r24
4859 27a2 CD01 movw r24,r26
4860 27a4 0E94 0000 call __floatsisf
4861 27a8 DC01 movw r26,r24
4862 27aa CB01 movw r24,r22
4863 27ac 20E0 ldi r18,lo8(0x41200000)
4864 27ae 30E0 ldi r19,hi8(0x41200000)
4865 27b0 40E2 ldi r20,hlo8(0x41200000)
4866 27b2 51E4 ldi r21,hhi8(0x41200000)
4867 27b4 BC01 movw r22,r24
4868 27b6 CD01 movw r24,r26
4869 27b8 0E94 0000 call __addsf3
4870 27bc DC01 movw r26,r24
4871 27be CB01 movw r24,r22
4872 27c0 BC01 movw r22,r24
4873 27c2 CD01 movw r24,r26
4874 27c4 0E94 0000 call __fixunssfsi
4875 27c8 DC01 movw r26,r24
4876 27ca CB01 movw r24,r22
4877 27cc 8093 0000 sts GyroFaktor,r24
4878 27d0 8091 0000 lds r24,Parameter_Gyro_I
4879 27d4 8093 0000 sts IntegralFaktor,r24
4880 27d8 8091 0000 lds r24,Parameter_Gyro_Gier_P
4881 27dc 9927 clr r25
4882 27de AA27 clr r26
4883 27e0 97FD sbrc r25,7
4884 27e2 A095 com r26
4885 27e4 BA2F mov r27,r26
4886 27e6 BC01 movw r22,r24
4887 27e8 CD01 movw r24,r26
4888 27ea 0E94 0000 call __floatsisf
4889 27ee DC01 movw r26,r24
4890 27f0 CB01 movw r24,r22
4891 27f2 20E0 ldi r18,lo8(0x41200000)
4892 27f4 30E0 ldi r19,hi8(0x41200000)
4893 27f6 40E2 ldi r20,hlo8(0x41200000)
4894 27f8 51E4 ldi r21,hhi8(0x41200000)
4895 27fa BC01 movw r22,r24
4896 27fc CD01 movw r24,r26
4897 27fe 0E94 0000 call __addsf3
4898 2802 DC01 movw r26,r24
4899 2804 CB01 movw r24,r22
4900 2806 BC01 movw r22,r24
4901 2808 CD01 movw r24,r26
4902 280a 0E94 0000 call __fixunssfsi
4903 280e DC01 movw r26,r24
4904 2810 CB01 movw r24,r22
4905 2812 8093 0000 sts GyroFaktorGier,r24
4906 2816 8091 0000 lds r24,Parameter_Gyro_Gier_I
4907 281a 8093 0000 sts IntegralFaktorGier,r24
4908 281e 8091 0000 lds r24,ExternControl+10
4909 2822 80FF sbrs r24,0
4910 2824 59C0 rjmp .L387
4911 2826 8091 0000 lds r24,Parameter_ExternalControl
4912 282a 8138 cpi r24,lo8(-127)
4913 282c 08F4 brsh .+2
4914 282e 54C0 rjmp .L387
4915 2830 8091 0000 lds r24,ExternControl+3
4916 2834 9927 clr r25
4917 2836 87FD sbrc r24,7
4918 2838 9095 com r25
4919 283a 2B2D mov r18,r11
4920 283c 3327 clr r19
4921 283e 829F mul r24,r18
4922 2840 A001 movw r20,r0
4923 2842 839F mul r24,r19
4924 2844 500D add r21,r0
4925 2846 929F mul r25,r18
4926 2848 500D add r21,r0
4927 284a 1124 clr r1
4928 284c 040F add r16,r20
4929 284e 151F adc r17,r21
4930 2850 1093 0000 sts (StickNick)+1,r17
4931 2854 0093 0000 sts StickNick,r16
4932 2858 8091 0000 lds r24,ExternControl+4
4933 285c 9927 clr r25
4934 285e 87FD sbrc r24,7
4935 2860 9095 com r25
4936 2862 829F mul r24,r18
4937 2864 B001 movw r22,r0
4938 2866 839F mul r24,r19
4939 2868 700D add r23,r0
4940 286a 929F mul r25,r18
4941 286c 700D add r23,r0
4942 286e 1124 clr r1
4943 2870 860E add r8,r22
4944 2872 971E adc r9,r23
4945 2874 9092 0000 sts (StickRoll)+1,r9
4946 2878 8092 0000 sts StickRoll,r8
4947 287c 8091 0000 lds r24,ExternControl+5
4948 2880 282F mov r18,r24
4949 2882 3327 clr r19
4950 2884 27FD sbrc r18,7
4951 2886 3095 com r19
4952 2888 8091 0000 lds r24,StickGier
4953 288c 9091 0000 lds r25,(StickGier)+1
4954 2890 820F add r24,r18
4955 2892 931F adc r25,r19
4956 2894 9093 0000 sts (StickGier)+1,r25
4957 2898 8093 0000 sts StickGier,r24
4958 289c 8091 0000 lds r24,ExternControl+7
4959 28a0 282F mov r18,r24
4960 28a2 3327 clr r19
4961 28a4 27FD sbrc r18,7
4962 28a6 3095 com r19
4963 28a8 8091 0000 lds r24,EE_Parameter+18
4964 28ac 9927 clr r25
4965 28ae 289F mul r18,r24
4966 28b0 D001 movw r26,r0
4967 28b2 299F mul r18,r25
4968 28b4 B00D add r27,r0
4969 28b6 389F mul r19,r24
4970 28b8 B00D add r27,r0
4971 28ba 1124 clr r1
4972 28bc B093 0000 sts (ExternHoehenValue)+1,r27
4973 28c0 A093 0000 sts ExternHoehenValue,r26
4974 28c4 8091 0000 lds r24,ExternControl+6
4975 28c8 9927 clr r25
4976 28ca 8E15 cp r24,r14
4977 28cc 9F05 cpc r25,r15
4978 28ce 24F4 brge .L387
4979 28d0 9093 0000 sts (StickGas)+1,r25
4980 28d4 8093 0000 sts StickGas,r24
4981 .L387:
4982 28d8 8091 0000 lds r24,StickGas
4983 28dc 9091 0000 lds r25,(StickGas)+1
4984 28e0 97FF sbrs r25,7
4985 28e2 04C0 rjmp .L389
4986 28e4 1092 0000 sts (StickGas)+1,__zero_reg__
4987 28e8 1092 0000 sts StickGas,__zero_reg__
4988 .L389:
4989 28ec 8091 0000 lds r24,EE_Parameter+13
4990 28f0 82FF sbrs r24,2
4991 28f2 02C0 rjmp .L390
4992 28f4 1092 0000 sts IntegralFaktor,__zero_reg__
4993 .L390:
4994 28f8 4091 0000 lds r20,StickNick
4995 28fc 5091 0000 lds r21,(StickNick)+1
4996 2900 CA01 movw r24,r20
4997 2902 57FD sbrc r21,7
4998 2904 0396 adiw r24,3
4999 .L392:
5000 2906 9C01 movw r18,r24
5001 2908 3595 asr r19
5002 290a 2795 ror r18
5003 290c 3595 asr r19
5004 290e 2795 ror r18
5005 2910 37FF sbrs r19,7
5006 2912 03C0 rjmp .L393
5007 2914 3095 com r19
5008 2916 2195 neg r18
5009 2918 3F4F sbci r19,lo8(-1)
5010 .L393:
5011 291a 8091 0000 lds r24,MaxStickNick
5012 291e 9091 0000 lds r25,(MaxStickNick)+1
5013 2922 8217 cp r24,r18
5014 2924 9307 cpc r25,r19
5015 2926 B4F4 brge .L391
5016 2928 CA01 movw r24,r20
5017 292a 57FF sbrs r21,7
5018 292c 03C0 rjmp .L394
5019 292e 9095 com r25
5020 2930 8195 neg r24
5021 2932 9F4F sbci r25,lo8(-1)
5022 .L394:
5023 2934 97FD sbrc r25,7
5024 2936 0396 adiw r24,3
5025 .L395:
5026 2938 9595 asr r25
5027 293a 8795 ror r24
5028 293c 9595 asr r25
5029 293e 8795 ror r24
5030 2940 9093 0000 sts (MaxStickNick)+1,r25
5031 2944 8093 0000 sts MaxStickNick,r24
5032 2948 8536 cpi r24,101
5033 294a 9105 cpc r25,__zero_reg__
5034 294c 44F0 brlt .L397
5035 294e 84E6 ldi r24,lo8(100)
5036 2950 90E0 ldi r25,hi8(100)
5037 2952 01C0 rjmp .L792
5038 .L391:
5039 2954 0197 sbiw r24,1
5040 .L792:
5041 2956 9093 0000 sts (MaxStickNick)+1,r25
5042 295a 8093 0000 sts MaxStickNick,r24
5043 .L397:
5044 295e 4091 0000 lds r20,StickRoll
5045 2962 5091 0000 lds r21,(StickRoll)+1
5046 2966 CA01 movw r24,r20
5047 2968 57FD sbrc r21,7
5048 296a 0396 adiw r24,3
5049 .L399:
5050 296c 9C01 movw r18,r24
5051 296e 3595 asr r19
5052 2970 2795 ror r18
5053 2972 3595 asr r19
5054 2974 2795 ror r18
5055 2976 37FF sbrs r19,7
5056 2978 03C0 rjmp .L400
5057 297a 3095 com r19
5058 297c 2195 neg r18
5059 297e 3F4F sbci r19,lo8(-1)
5060 .L400:
5061 2980 8091 0000 lds r24,MaxStickRoll
5062 2984 9091 0000 lds r25,(MaxStickRoll)+1
5063 2988 8217 cp r24,r18
5064 298a 9307 cpc r25,r19
5065 298c B4F4 brge .L398
5066 298e CA01 movw r24,r20
5067 2990 57FF sbrs r21,7
5068 2992 03C0 rjmp .L401
5069 2994 9095 com r25
5070 2996 8195 neg r24
5071 2998 9F4F sbci r25,lo8(-1)
5072 .L401:
5073 299a 97FD sbrc r25,7
5074 299c 0396 adiw r24,3
5075 .L402:
5076 299e 9595 asr r25
5077 29a0 8795 ror r24
5078 29a2 9595 asr r25
5079 29a4 8795 ror r24
5080 29a6 9093 0000 sts (MaxStickRoll)+1,r25
5081 29aa 8093 0000 sts MaxStickRoll,r24
5082 29ae 8536 cpi r24,101
5083 29b0 9105 cpc r25,__zero_reg__
5084 29b2 44F0 brlt .L404
5085 29b4 84E6 ldi r24,lo8(100)
5086 29b6 90E0 ldi r25,hi8(100)
5087 29b8 01C0 rjmp .L793
5088 .L398:
5089 29ba 0197 sbiw r24,1
5090 .L793:
5091 29bc 9093 0000 sts (MaxStickRoll)+1,r25
5092 29c0 8093 0000 sts MaxStickRoll,r24
5093 .L404:
5094 29c4 8091 0000 lds r24,FC_StatusFlags
5095 29c8 84FF sbrs r24,4
5096 29ca 08C0 rjmp .L405
5097 29cc 1092 0000 sts (MaxStickNick)+1,__zero_reg__
5098 29d0 1092 0000 sts MaxStickNick,__zero_reg__
5099 29d4 1092 0000 sts (MaxStickRoll)+1,__zero_reg__
5100 29d8 1092 0000 sts MaxStickRoll,__zero_reg__
5101 .L405:
5102 29dc ED2D mov r30,r13
5103 29de FF27 clr r31
5104 29e0 EE0F add r30,r30
5105 29e2 FF1F adc r31,r31
5106 29e4 E050 subi r30,lo8(-(PPM_in))
5107 29e6 F040 sbci r31,hi8(-(PPM_in))
5108 29e8 4091 0000 lds r20,EE_Parameter+60
5109 29ec 242F mov r18,r20
5110 29ee 3327 clr r19
5111 29f0 8081 ld r24,Z
5112 29f2 9181 ldd r25,Z+1
5113 29f4 2817 cp r18,r24
5114 29f6 3907 cpc r19,r25
5115 29f8 44F4 brge .L406
5116 29fa 8091 0000 lds r24,EE_Parameter+100
5117 29fe 82FF sbrs r24,2
5118 2a00 04C0 rjmp .L406
5119 2a02 81E0 ldi r24,lo8(1)
5120 2a04 8093 0000 sts Looping_Links,r24
5121 2a08 13C0 rjmp .L407
5122 .L406:
5123 2a0a ED2D mov r30,r13
5124 2a0c FF27 clr r31
5125 2a0e EE0F add r30,r30
5126 2a10 FF1F adc r31,r31
5127 2a12 E050 subi r30,lo8(-(PPM_in))
5128 2a14 F040 sbci r31,hi8(-(PPM_in))
5129 2a16 842F mov r24,r20
5130 2a18 9927 clr r25
5131 2a1a 2091 0000 lds r18,EE_Parameter+61
5132 2a1e 821B sub r24,r18
5133 2a20 9109 sbc r25,__zero_reg__
5134 2a22 2081 ld r18,Z
5135 2a24 3181 ldd r19,Z+1
5136 2a26 2817 cp r18,r24
5137 2a28 3907 cpc r19,r25
5138 2a2a 14F4 brge .L407
5139 2a2c 1092 0000 sts Looping_Links,__zero_reg__
5140 .L407:
5141 2a30 4091 0000 lds r20,EE_Parameter+2
5142 2a34 E42F mov r30,r20
5143 2a36 FF27 clr r31
5144 2a38 EE0F add r30,r30
5145 2a3a FF1F adc r31,r31
5146 2a3c E050 subi r30,lo8(-(PPM_in))
5147 2a3e F040 sbci r31,hi8(-(PPM_in))
5148 2a40 5091 0000 lds r21,EE_Parameter+60
5149 2a44 852F mov r24,r21
5150 2a46 9927 clr r25
5151 2a48 2227 clr r18
5152 2a4a 3327 clr r19
5153 2a4c 281B sub r18,r24
5154 2a4e 390B sbc r19,r25
5155 2a50 8081 ld r24,Z
5156 2a52 9181 ldd r25,Z+1
5157 2a54 8217 cp r24,r18
5158 2a56 9307 cpc r25,r19
5159 2a58 44F4 brge .L409
5160 2a5a 8091 0000 lds r24,EE_Parameter+100
5161 2a5e 83FF sbrs r24,3
5162 2a60 04C0 rjmp .L409
5163 2a62 81E0 ldi r24,lo8(1)
5164 2a64 8093 0000 sts Looping_Rechts,r24
5165 2a68 16C0 rjmp .L410
5166 .L409:
5167 2a6a 8091 0000 lds r24,Looping_Rechts
5168 2a6e 8823 tst r24
5169 2a70 91F0 breq .L410
5170 2a72 E42F mov r30,r20
5171 2a74 FF27 clr r31
5172 2a76 EE0F add r30,r30
5173 2a78 FF1F adc r31,r31
5174 2a7a E050 subi r30,lo8(-(PPM_in))
5175 2a7c F040 sbci r31,hi8(-(PPM_in))
5176 2a7e 8091 0000 lds r24,EE_Parameter+61
5177 2a82 9927 clr r25
5178 2a84 851B sub r24,r21
5179 2a86 9109 sbc r25,__zero_reg__
5180 2a88 2081 ld r18,Z
5181 2a8a 3181 ldd r19,Z+1
5182 2a8c 8217 cp r24,r18
5183 2a8e 9307 cpc r25,r19
5184 2a90 14F4 brge .L410
5185 2a92 1092 0000 sts Looping_Rechts,__zero_reg__
5186 .L410:
5187 2a96 EC2D mov r30,r12
5188 2a98 FF27 clr r31
5189 2a9a EE0F add r30,r30
5190 2a9c FF1F adc r31,r31
5191 2a9e E050 subi r30,lo8(-(PPM_in))
5192 2aa0 F040 sbci r31,hi8(-(PPM_in))
5193 2aa2 4091 0000 lds r20,EE_Parameter+60
5194 2aa6 242F mov r18,r20
5195 2aa8 3327 clr r19
5196 2aaa 8081 ld r24,Z
5197 2aac 9181 ldd r25,Z+1
5198 2aae 2817 cp r18,r24
5199 2ab0 3907 cpc r19,r25
5200 2ab2 44F4 brge .L413
5201 2ab4 8091 0000 lds r24,EE_Parameter+100
5202 2ab8 80FF sbrs r24,0
5203 2aba 04C0 rjmp .L413
5204 2abc 81E0 ldi r24,lo8(1)
5205 2abe 8093 0000 sts Looping_Oben,r24
5206 2ac2 17C0 rjmp .L414
5207 .L413:
5208 2ac4 8091 0000 lds r24,Looping_Oben
5209 2ac8 8823 tst r24
5210 2aca 99F0 breq .L414
5211 2acc EC2D mov r30,r12
5212 2ace FF27 clr r31
5213 2ad0 EE0F add r30,r30
5214 2ad2 FF1F adc r31,r31
5215 2ad4 E050 subi r30,lo8(-(PPM_in))
5216 2ad6 F040 sbci r31,hi8(-(PPM_in))
5217 2ad8 842F mov r24,r20
5218 2ada 9927 clr r25
5219 2adc 2091 0000 lds r18,EE_Parameter+61
5220 2ae0 821B sub r24,r18
5221 2ae2 9109 sbc r25,__zero_reg__
5222 2ae4 2081 ld r18,Z
5223 2ae6 3181 ldd r19,Z+1
5224 2ae8 2817 cp r18,r24
5225 2aea 3907 cpc r19,r25
5226 2aec 14F4 brge .L414
5227 2aee 1092 0000 sts Looping_Oben,__zero_reg__
5228 .L414:
5229 2af2 4091 0000 lds r20,EE_Parameter+1
5230 2af6 E42F mov r30,r20
5231 2af8 FF27 clr r31
5232 2afa EE0F add r30,r30
5233 2afc FF1F adc r31,r31
5234 2afe E050 subi r30,lo8(-(PPM_in))
5235 2b00 F040 sbci r31,hi8(-(PPM_in))
5236 2b02 5091 0000 lds r21,EE_Parameter+60
5237 2b06 852F mov r24,r21
5238 2b08 9927 clr r25
5239 2b0a 2227 clr r18
5240 2b0c 3327 clr r19
5241 2b0e 281B sub r18,r24
5242 2b10 390B sbc r19,r25
5243 2b12 8081 ld r24,Z
5244 2b14 9181 ldd r25,Z+1
5245 2b16 8217 cp r24,r18
5246 2b18 9307 cpc r25,r19
5247 2b1a 44F4 brge .L417
5248 2b1c 8091 0000 lds r24,EE_Parameter+100
5249 2b20 81FF sbrs r24,1
5250 2b22 04C0 rjmp .L417
5251 2b24 81E0 ldi r24,lo8(1)
5252 2b26 8093 0000 sts Looping_Unten,r24
5253 2b2a 16C0 rjmp .L418
5254 .L417:
5255 2b2c 8091 0000 lds r24,Looping_Unten
5256 2b30 8823 tst r24
5257 2b32 91F0 breq .L418
5258 2b34 E42F mov r30,r20
5259 2b36 FF27 clr r31
5260 2b38 EE0F add r30,r30
5261 2b3a FF1F adc r31,r31
5262 2b3c E050 subi r30,lo8(-(PPM_in))
5263 2b3e F040 sbci r31,hi8(-(PPM_in))
5264 2b40 8091 0000 lds r24,EE_Parameter+61
5265 2b44 9927 clr r25
5266 2b46 851B sub r24,r21
5267 2b48 9109 sbc r25,__zero_reg__
5268 2b4a 2081 ld r18,Z
5269 2b4c 3181 ldd r19,Z+1
5270 2b4e 8217 cp r24,r18
5271 2b50 9307 cpc r25,r19
5272 2b52 14F4 brge .L418
5273 2b54 1092 0000 sts Looping_Unten,__zero_reg__
5274 .L418:
5275 2b58 8091 0000 lds r24,Looping_Links
5276 2b5c 8823 tst r24
5277 2b5e 19F4 brne .L422
5278 2b60 8091 0000 lds r24,Looping_Rechts
5279 2b64 8111 cpse r24,__zero_reg__
5280 .L422:
5281 2b66 81E0 ldi r24,lo8(1)
5282 .L421:
5283 2b68 8093 0000 sts Looping_Roll,r24
5284 2b6c 8091 0000 lds r24,Looping_Oben
5285 2b70 8823 tst r24
5286 2b72 21F4 brne .L425
5287 2b74 8091 0000 lds r24,Looping_Unten
5288 2b78 8823 tst r24
5289 2b7a 51F0 breq .L424
5290 .L425:
5291 2b7c 81E0 ldi r24,lo8(1)
5292 2b7e 8093 0000 sts Looping_Nick,r24
5293 2b82 1092 0000 sts Looping_Roll,__zero_reg__
5294 2b86 1092 0000 sts Looping_Links,__zero_reg__
5295 2b8a 1092 0000 sts Looping_Rechts,__zero_reg__
5296 2b8e 02C0 rjmp .L371
5297 .L424:
5298 2b90 8093 0000 sts Looping_Nick,r24
5299 .L371:
5300 2b94 8091 0000 lds r24,Looping_Roll
5301 2b98 8823 tst r24
5302 2b9a 21F4 brne .L428
5303 2b9c 8091 0000 lds r24,Looping_Nick
5304 2ba0 8823 tst r24
5305 2ba2 69F0 breq .L427
5306 .L428:
5307 2ba4 8091 0000 lds r24,EE_Parameter+59
5308 2ba8 9927 clr r25
5309 2baa E981 ldd r30,Y+1
5310 2bac FA81 ldd r31,Y+2
5311 2bae 8E17 cp r24,r30
5312 2bb0 9F07 cpc r25,r31
5313 2bb2 14F4 brge .L429
5314 2bb4 9A83 std Y+2,r25
5315 2bb6 8983 std Y+1,r24
5316 .L429:
5317 2bb8 81E0 ldi r24,lo8(1)
5318 2bba 8093 0000 sts TrichterFlug,r24
5319 .L427:
5320 2bbe 8091 0000 lds r24,FC_StatusFlags
5321 2bc2 84FF sbrs r24,4
5322 2bc4 1AC0 rjmp .L430
5323 2bc6 1092 0000 sts (StickGier)+1,__zero_reg__
5324 2bca 1092 0000 sts StickGier,__zero_reg__
5325 2bce 1092 0000 sts (StickNick)+1,__zero_reg__
5326 2bd2 1092 0000 sts StickNick,__zero_reg__
5327 2bd6 1092 0000 sts (StickRoll)+1,__zero_reg__
5328 2bda 1092 0000 sts StickRoll,__zero_reg__
5329 2bde 9AE5 ldi r25,lo8(90)
5330 2be0 9093 0000 sts GyroFaktor,r25
5331 2be4 88E7 ldi r24,lo8(120)
5332 2be6 8093 0000 sts IntegralFaktor,r24
5333 2bea 9093 0000 sts GyroFaktorGier,r25
5334 2bee 8093 0000 sts IntegralFaktorGier,r24
5335 2bf2 1092 0000 sts Looping_Roll,__zero_reg__
5336 2bf6 1092 0000 sts Looping_Nick,__zero_reg__
5337 .L430:
5338 2bfa 8091 0000 lds r24,MittelIntegralNick
5339 2bfe 9091 0000 lds r25,(MittelIntegralNick)+1
5340 2c02 A091 0000 lds r26,(MittelIntegralNick)+2
5341 2c06 B091 0000 lds r27,(MittelIntegralNick)+3
5342 2c0a 2091 0000 lds r18,IntegralNick
5343 2c0e 3091 0000 lds r19,(IntegralNick)+1
5344 2c12 4091 0000 lds r20,(IntegralNick)+2
5345 2c16 5091 0000 lds r21,(IntegralNick)+3
5346 2c1a 820F add r24,r18
5347 2c1c 931F adc r25,r19
5348 2c1e A41F adc r26,r20
5349 2c20 B51F adc r27,r21
5350 2c22 8093 0000 sts MittelIntegralNick,r24
5351 2c26 9093 0000 sts (MittelIntegralNick)+1,r25
5352 2c2a A093 0000 sts (MittelIntegralNick)+2,r26
5353 2c2e B093 0000 sts (MittelIntegralNick)+3,r27
5354 2c32 8091 0000 lds r24,MittelIntegralRoll
5355 2c36 9091 0000 lds r25,(MittelIntegralRoll)+1
5356 2c3a A091 0000 lds r26,(MittelIntegralRoll)+2
5357 2c3e B091 0000 lds r27,(MittelIntegralRoll)+3
5358 2c42 2090 0000 lds r2,IntegralRoll
5359 2c46 3090 0000 lds r3,(IntegralRoll)+1
5360 2c4a 4090 0000 lds r4,(IntegralRoll)+2
5361 2c4e 5090 0000 lds r5,(IntegralRoll)+3
5362 2c52 820D add r24,r2
5363 2c54 931D adc r25,r3
5364 2c56 A41D adc r26,r4
5365 2c58 B51D adc r27,r5
5366 2c5a 8093 0000 sts MittelIntegralRoll,r24
5367 2c5e 9093 0000 sts (MittelIntegralRoll)+1,r25
5368 2c62 A093 0000 sts (MittelIntegralRoll)+2,r26
5369 2c66 B093 0000 sts (MittelIntegralRoll)+3,r27
5370 2c6a 8091 0000 lds r24,MittelIntegralNick2
5371 2c6e 9091 0000 lds r25,(MittelIntegralNick2)+1
5372 2c72 A091 0000 lds r26,(MittelIntegralNick2)+2
5373 2c76 B091 0000 lds r27,(MittelIntegralNick2)+3
5374 2c7a E090 0000 lds r14,IntegralNick2
5375 2c7e F090 0000 lds r15,(IntegralNick2)+1
5376 2c82 0091 0000 lds r16,(IntegralNick2)+2
5377 2c86 1091 0000 lds r17,(IntegralNick2)+3
5378 2c8a EB82 std Y+3,r14
5379 2c8c FC82 std Y+4,r15
5380 2c8e 0D83 std Y+5,r16
5381 2c90 1E83 std Y+6,r17
5382 2c92 8E0D add r24,r14
5383 2c94 9F1D adc r25,r15
5384 2c96 A01F adc r26,r16
5385 2c98 B11F adc r27,r17
5386 2c9a 8093 0000 sts MittelIntegralNick2,r24
5387 2c9e 9093 0000 sts (MittelIntegralNick2)+1,r25
5388 2ca2 A093 0000 sts (MittelIntegralNick2)+2,r26
5389 2ca6 B093 0000 sts (MittelIntegralNick2)+3,r27
5390 2caa 8091 0000 lds r24,MittelIntegralRoll2
5391 2cae 9091 0000 lds r25,(MittelIntegralRoll2)+1
5392 2cb2 A091 0000 lds r26,(MittelIntegralRoll2)+2
5393 2cb6 B091 0000 lds r27,(MittelIntegralRoll2)+3
5394 2cba E090 0000 lds r14,IntegralRoll2
5395 2cbe F090 0000 lds r15,(IntegralRoll2)+1
5396 2cc2 0091 0000 lds r16,(IntegralRoll2)+2
5397 2cc6 1091 0000 lds r17,(IntegralRoll2)+3
5398 2cca EF82 std Y+7,r14
5399 2ccc F886 std Y+8,r15
5400 2cce 0987 std Y+9,r16
5401 2cd0 1A87 std Y+10,r17
5402 2cd2 8E0D add r24,r14
5403 2cd4 9F1D adc r25,r15
5404 2cd6 A01F adc r26,r16
5405 2cd8 B11F adc r27,r17
5406 2cda 8093 0000 sts MittelIntegralRoll2,r24
5407 2cde 9093 0000 sts (MittelIntegralRoll2)+1,r25
5408 2ce2 A093 0000 sts (MittelIntegralRoll2)+2,r26
5409 2ce6 B093 0000 sts (MittelIntegralRoll2)+3,r27
5410 2cea F090 0000 lds r15,Looping_Nick
5411 2cee FB86 std Y+11,r15
5412 2cf0 FF20 tst r15
5413 2cf2 29F4 brne .L432
5414 2cf4 8091 0000 lds r24,Looping_Roll
5415 2cf8 8823 tst r24
5416 2cfa 09F4 brne .+2
5417 2cfc 60C0 rjmp .L788
5418 .L432:
5419 2cfe 1092 0000 sts IntegralAccNick,__zero_reg__
5420 2d02 1092 0000 sts (IntegralAccNick)+1,__zero_reg__
5421 2d06 1092 0000 sts (IntegralAccNick)+2,__zero_reg__
5422 2d0a 1092 0000 sts (IntegralAccNick)+3,__zero_reg__
5423 2d0e 1092 0000 sts IntegralAccRoll,__zero_reg__
5424 2d12 1092 0000 sts (IntegralAccRoll)+1,__zero_reg__
5425 2d16 1092 0000 sts (IntegralAccRoll)+2,__zero_reg__
5426 2d1a 1092 0000 sts (IntegralAccRoll)+3,__zero_reg__
5427 2d1e 1092 0000 sts MittelIntegralNick,__zero_reg__
5428 2d22 1092 0000 sts (MittelIntegralNick)+1,__zero_reg__
5429 2d26 1092 0000 sts (MittelIntegralNick)+2,__zero_reg__
5430 2d2a 1092 0000 sts (MittelIntegralNick)+3,__zero_reg__
5431 2d2e 1092 0000 sts MittelIntegralRoll,__zero_reg__
5432 2d32 1092 0000 sts (MittelIntegralRoll)+1,__zero_reg__
5433 2d36 1092 0000 sts (MittelIntegralRoll)+2,__zero_reg__
5434 2d3a 1092 0000 sts (MittelIntegralRoll)+3,__zero_reg__
5435 2d3e 1092 0000 sts MittelIntegralNick2,__zero_reg__
5436 2d42 1092 0000 sts (MittelIntegralNick2)+1,__zero_reg__
5437 2d46 1092 0000 sts (MittelIntegralNick2)+2,__zero_reg__
5438 2d4a 1092 0000 sts (MittelIntegralNick2)+3,__zero_reg__
5439 2d4e 1092 0000 sts MittelIntegralRoll2,__zero_reg__
5440 2d52 1092 0000 sts (MittelIntegralRoll2)+1,__zero_reg__
5441 2d56 1092 0000 sts (MittelIntegralRoll2)+2,__zero_reg__
5442 2d5a 1092 0000 sts (MittelIntegralRoll2)+3,__zero_reg__
5443 2d5e 8091 0000 lds r24,Mess_IntegralNick
5444 2d62 9091 0000 lds r25,(Mess_IntegralNick)+1
5445 2d66 A091 0000 lds r26,(Mess_IntegralNick)+2
5446 2d6a B091 0000 lds r27,(Mess_IntegralNick)+3
5447 2d6e 8093 0000 sts Mess_IntegralNick2,r24
5448 2d72 9093 0000 sts (Mess_IntegralNick2)+1,r25
5449 2d76 A093 0000 sts (Mess_IntegralNick2)+2,r26
5450 2d7a B093 0000 sts (Mess_IntegralNick2)+3,r27
5451 2d7e 8091 0000 lds r24,Mess_IntegralRoll
5452 2d82 9091 0000 lds r25,(Mess_IntegralRoll)+1
5453 2d86 A091 0000 lds r26,(Mess_IntegralRoll)+2
5454 2d8a B091 0000 lds r27,(Mess_IntegralRoll)+3
5455 2d8e 8093 0000 sts Mess_IntegralRoll2,r24
5456 2d92 9093 0000 sts (Mess_IntegralRoll2)+1,r25
5457 2d96 A093 0000 sts (Mess_IntegralRoll2)+2,r26
5458 2d9a B093 0000 sts (Mess_IntegralRoll2)+3,r27
5459 2d9e 1092 0000 sts (ZaehlMessungen)+1,__zero_reg__
5460 2da2 1092 0000 sts ZaehlMessungen,__zero_reg__
5461 2da6 1092 0000 sts (LageKorrekturNick)+1,__zero_reg__
5462 2daa 1092 0000 sts LageKorrekturNick,__zero_reg__
5463 2dae 1092 0000 sts (LageKorrekturRoll)+1,__zero_reg__
5464 2db2 1092 0000 sts LageKorrekturRoll,__zero_reg__
5465 2db6 0B85 ldd r16,Y+11
5466 2db8 0023 tst r16
5467 2dba 09F0 breq .+2
5468 2dbc F2C1 rjmp .L433
5469 .L788:
5470 2dbe 8091 0000 lds r24,Looping_Roll
5471 2dc2 8823 tst r24
5472 2dc4 09F0 breq .+2
5473 2dc6 EDC1 rjmp .L433
5474 2dc8 8091 0000 lds r24,Aktuell_az
5475 2dcc 9091 0000 lds r25,(Aktuell_az)+1
5476 2dd0 8150 subi r24,lo8(513)
5477 2dd2 9240 sbci r25,hi8(513)
5478 2dd4 2CF4 brge .L434
5479 2dd6 8091 0000 lds r24,MotorenEin
5480 2dda 8823 tst r24
5481 2ddc 09F4 brne .+2
5482 2dde E1C1 rjmp .L433
5483 .L434:
5484 2de0 9090 0000 lds r9,FromNaviCtrl_Value
5485 2de4 A090 0000 lds r10,EE_Parameter+28
5486 2de8 6091 0000 lds r22,Mittelwert_AccNick
5487 2dec 7091 0000 lds r23,(Mittelwert_AccNick)+1
5488 2df0 788F std Y+24,r23
5489 2df2 6F8B std Y+23,r22
5490 2df4 8091 0000 lds r24,Mittelwert_AccRoll
5491 2df8 9091 0000 lds r25,(Mittelwert_AccRoll)+1
5492 2dfc 9A8B std Y+18,r25
5493 2dfe 898B std Y+17,r24
5494 2e00 9FEF ldi r25,lo8(-1)
5495 2e02 9916 cp r9,r25
5496 2e04 09F4 brne .+2
5497 2e06 D9C0 rjmp .L435
5498 2e08 BB24 clr r11
5499 2e0a CC24 clr r12
5500 2e0c DD24 clr r13
5501 2e0e CA01 movw r24,r20
5502 2e10 B901 movw r22,r18
5503 2e12 A601 movw r20,r12
5504 2e14 9501 movw r18,r10
5505 2e16 0E94 0000 call __divmodsi4
5506 2e1a 7901 movw r14,r18
5507 2e1c 8A01 movw r16,r20
5508 2e1e EF89 ldd r30,Y+23
5509 2e20 F88D ldd r31,Y+24
5510 2e22 CF01 movw r24,r30
5511 2e24 AA27 clr r26
5512 2e26 97FD sbrc r25,7
5513 2e28 A095 com r26
5514 2e2a BA2F mov r27,r26
5515 2e2c E81A sub r14,r24
5516 2e2e F90A sbc r15,r25
5517 2e30 0A0B sbc r16,r26
5518 2e32 1B0B sbc r17,r27
5519 2e34 C201 movw r24,r4
5520 2e36 B101 movw r22,r2
5521 2e38 A601 movw r20,r12
5522 2e3a 9501 movw r18,r10
5523 2e3c 0E94 0000 call __divmodsi4
5524 2e40 5901 movw r10,r18
5525 2e42 6A01 movw r12,r20
5526 2e44 2989 ldd r18,Y+17
5527 2e46 3A89 ldd r19,Y+18
5528 2e48 C901 movw r24,r18
5529 2e4a AA27 clr r26
5530 2e4c 97FD sbrc r25,7
5531 2e4e A095 com r26
5532 2e50 BA2F mov r27,r26
5533 2e52 A81A sub r10,r24
5534 2e54 B90A sbc r11,r25
5535 2e56 CA0A sbc r12,r26
5536 2e58 DB0A sbc r13,r27
5537 2e5a 292C mov r2,r9
5538 2e5c 3324 clr r3
5539 2e5e 27FC sbrc r2,7
5540 2e60 3094 com r3
5541 2e62 432C mov r4,r3
5542 2e64 532C mov r5,r3
5543 2e66 C801 movw r24,r16
5544 2e68 B701 movw r22,r14
5545 2e6a A201 movw r20,r4
5546 2e6c 9101 movw r18,r2
5547 2e6e 0E94 0000 call __mulsi3
5548 2e72 97FF sbrs r25,7
5549 2e74 04C0 rjmp .L436
5550 2e76 6150 subi r22,lo8(-(511))
5551 2e78 7E4F sbci r23,hi8(-(511))
5552 2e7a 8F4F sbci r24,hlo8(-(511))
5553 2e7c 9F4F sbci r25,hhi8(-(511))
5554 .L436:
5555 2e7e 3B01 movw r6,r22
5556 2e80 4C01 movw r8,r24
5557 2e82 09E0 ldi r16,9
5558 2e84 9594 1: asr r9
5559 2e86 8794 ror r8
5560 2e88 7794 ror r7
5561 2e8a 6794 ror r6
5562 2e8c 0A95 dec r16
5563 2e8e D1F7 brne 1b
5564 2e90 C601 movw r24,r12
5565 2e92 B501 movw r22,r10
5566 2e94 A201 movw r20,r4
5567 2e96 9101 movw r18,r2
5568 2e98 0E94 0000 call __mulsi3
5569 2e9c 97FF sbrs r25,7
5570 2e9e 04C0 rjmp .L437
5571 2ea0 6150 subi r22,lo8(-(511))
5572 2ea2 7E4F sbci r23,hi8(-(511))
5573 2ea4 8F4F sbci r24,hlo8(-(511))
5574 2ea6 9F4F sbci r25,hhi8(-(511))
5575 .L437:
5576 2ea8 5B01 movw r10,r22
5577 2eaa 6C01 movw r12,r24
5578 2eac 19E0 ldi r17,9
5579 2eae D594 1: asr r13
5580 2eb0 C794 ror r12
5581 2eb2 B794 ror r11
5582 2eb4 A794 ror r10
5583 2eb6 1A95 dec r17
5584 2eb8 D1F7 brne 1b
5585 2eba 8091 0000 lds r24,MaxStickNick
5586 2ebe 9091 0000 lds r25,(MaxStickNick)+1
5587 2ec2 8134 cpi r24,65
5588 2ec4 9105 cpc r25,__zero_reg__
5589 2ec6 3CF4 brge .L439
5590 2ec8 8091 0000 lds r24,MaxStickRoll
5591 2ecc 9091 0000 lds r25,(MaxStickRoll)+1
5592 2ed0 8134 cpi r24,65
5593 2ed2 9105 cpc r25,__zero_reg__
5594 2ed4 D4F0 brlt .L438
5595 .L439:
5596 2ed6 D401 movw r26,r8
5597 2ed8 C301 movw r24,r6
5598 2eda 97FE sbrs r9,7
5599 2edc 03C0 rjmp .L440
5600 2ede 0196 adiw r24,1
5601 2ee0 A11D adc r26,__zero_reg__
5602 2ee2 B11D adc r27,__zero_reg__
5603 .L440:
5604 2ee4 3C01 movw r6,r24
5605 2ee6 4D01 movw r8,r26
5606 2ee8 9594 asr r9
5607 2eea 8794 ror r8
5608 2eec 7794 ror r7
5609 2eee 6794 ror r6
5610 2ef0 D601 movw r26,r12
5611 2ef2 C501 movw r24,r10
5612 2ef4 D7FE sbrs r13,7
5613 2ef6 03C0 rjmp .L441
5614 2ef8 0196 adiw r24,1
5615 2efa A11D adc r26,__zero_reg__
5616 2efc B11D adc r27,__zero_reg__
5617 .L441:
5618 2efe 5C01 movw r10,r24
5619 2f00 6D01 movw r12,r26
5620 2f02 D594 asr r13
5621 2f04 C794 ror r12
5622 2f06 B794 ror r11
5623 2f08 A794 ror r10
5624 .L438:
5625 2f0a 8091 0000 lds r24,EE_Parameter+4
5626 2f0e E82F mov r30,r24
5627 2f10 FF27 clr r31
5628 2f12 EE0F add r30,r30
5629 2f14 FF1F adc r31,r31
5630 2f16 E050 subi r30,lo8(-(PPM_in))
5631 2f18 F040 sbci r31,hi8(-(PPM_in))
5632 2f1a 8081 ld r24,Z
5633 2f1c 9181 ldd r25,Z+1
5634 2f1e 0190 ld __tmp_reg__,Z+
5635 2f20 F081 ld r31,Z
5636 2f22 E02D mov r30,__tmp_reg__
5637 2f24 F7FF sbrs r31,7
5638 2f26 03C0 rjmp .L443
5639 2f28 F095 com r31
5640 2f2a E195 neg r30
5641 2f2c FF4F sbci r31,lo8(-1)
5642 .L443:
5643 2f2e 7A97 sbiw r30,26
5644 2f30 A4F0 brlt .L442
5645 2f32 C401 movw r24,r8
5646 2f34 B301 movw r22,r6
5647 2f36 23E0 ldi r18,lo8(3)
5648 2f38 30E0 ldi r19,hi8(3)
5649 2f3a 40E0 ldi r20,hlo8(3)
5650 2f3c 50E0 ldi r21,hhi8(3)
5651 2f3e 0E94 0000 call __divmodsi4
5652 2f42 3901 movw r6,r18
5653 2f44 4A01 movw r8,r20
5654 2f46 C601 movw r24,r12
5655 2f48 B501 movw r22,r10
5656 2f4a 23E0 ldi r18,lo8(3)
5657 2f4c 30E0 ldi r19,hi8(3)
5658 2f4e 40E0 ldi r20,hlo8(3)
5659 2f50 50E0 ldi r21,hhi8(3)
5660 2f52 0E94 0000 call __divmodsi4
5661 2f56 5901 movw r10,r18
5662 2f58 6A01 movw r12,r20
5663 .L442:
5664 2f5a 8091 0000 lds r24,FromNaviCtrl_Value+2
5665 2f5e 282F mov r18,r24
5666 2f60 3327 clr r19
5667 2f62 27FD sbrc r18,7
5668 2f64 3095 com r19
5669 2f66 432F mov r20,r19
5670 2f68 532F mov r21,r19
5671 2f6a 2615 cp r18,r6
5672 2f6c 3705 cpc r19,r7
5673 2f6e 4805 cpc r20,r8
5674 2f70 5905 cpc r21,r9
5675 2f72 14F4 brge .L444
5676 2f74 3901 movw r6,r18
5677 2f76 4A01 movw r8,r20
5678 .L444:
5679 2f78 9927 clr r25
5680 2f7a 87FD sbrc r24,7
5681 2f7c 9095 com r25
5682 2f7e 9095 com r25
5683 2f80 8195 neg r24
5684 2f82 9F4F sbci r25,lo8(-1)
5685 2f84 AA27 clr r26
5686 2f86 97FD sbrc r25,7
5687 2f88 A095 com r26
5688 2f8a BA2F mov r27,r26
5689 2f8c 6816 cp r6,r24
5690 2f8e 7906 cpc r7,r25
5691 2f90 8A06 cpc r8,r26
5692 2f92 9B06 cpc r9,r27
5693 2f94 14F4 brge .L445
5694 2f96 3C01 movw r6,r24
5695 2f98 4D01 movw r8,r26
5696 .L445:
5697 2f9a 2A15 cp r18,r10
5698 2f9c 3B05 cpc r19,r11
5699 2f9e 4C05 cpc r20,r12
5700 2fa0 5D05 cpc r21,r13
5701 2fa2 14F4 brge .L446
5702 2fa4 5901 movw r10,r18
5703 2fa6 6A01 movw r12,r20
5704 .L446:
5705 2fa8 A816 cp r10,r24
5706 2faa B906 cpc r11,r25
5707 2fac CA06 cpc r12,r26
5708 2fae DB06 cpc r13,r27
5709 2fb0 0CF0 brlt .+2
5710 2fb2 CFC0 rjmp .L448
5711 2fb4 5C01 movw r10,r24
5712 2fb6 6D01 movw r12,r26
5713 2fb8 CCC0 rjmp .L448
5714 .L435:
5715 2fba EA2C mov r14,r10
5716 2fbc FF24 clr r15
5717 2fbe 0027 clr r16
5718 2fc0 1127 clr r17
5719 2fc2 CA01 movw r24,r20
5720 2fc4 B901 movw r22,r18
5721 2fc6 A801 movw r20,r16
5722 2fc8 9701 movw r18,r14
5723 2fca 0E94 0000 call __divmodsi4
5724 2fce 3901 movw r6,r18
5725 2fd0 4A01 movw r8,r20
5726 2fd2 4F89 ldd r20,Y+23
5727 2fd4 588D ldd r21,Y+24
5728 2fd6 CA01 movw r24,r20
5729 2fd8 AA27 clr r26
5730 2fda 97FD sbrc r25,7
5731 2fdc A095 com r26
5732 2fde BA2F mov r27,r26
5733 2fe0 681A sub r6,r24
5734 2fe2 790A sbc r7,r25
5735 2fe4 8A0A sbc r8,r26
5736 2fe6 9B0A sbc r9,r27
5737 2fe8 C201 movw r24,r4
5738 2fea B101 movw r22,r2
5739 2fec A801 movw r20,r16
5740 2fee 9701 movw r18,r14
5741 2ff0 0E94 0000 call __divmodsi4
5742 2ff4 5901 movw r10,r18
5743 2ff6 6A01 movw r12,r20
5744 2ff8 6989 ldd r22,Y+17
5745 2ffa 7A89 ldd r23,Y+18
5746 2ffc CB01 movw r24,r22
5747 2ffe AA27 clr r26
5748 3000 97FD sbrc r25,7
5749 3002 A095 com r26
5750 3004 BA2F mov r27,r26
5751 3006 A81A sub r10,r24
5752 3008 B90A sbc r11,r25
5753 300a CA0A sbc r12,r26
5754 300c DB0A sbc r13,r27
5755 300e D401 movw r26,r8
5756 3010 C301 movw r24,r6
5757 3012 97FE sbrs r9,7
5758 3014 03C0 rjmp .L449
5759 3016 0F96 adiw r24,15
5760 3018 A11D adc r26,__zero_reg__
5761 301a B11D adc r27,__zero_reg__
5762 .L449:
5763 301c 3C01 movw r6,r24
5764 301e 4D01 movw r8,r26
5765 3020 F4E0 ldi r31,4
5766 3022 9594 1: asr r9
5767 3024 8794 ror r8
5768 3026 7794 ror r7
5769 3028 6794 ror r6
5770 302a FA95 dec r31
5771 302c D1F7 brne 1b
5772 302e D601 movw r26,r12
5773 3030 C501 movw r24,r10
5774 3032 D7FE sbrs r13,7
5775 3034 03C0 rjmp .L450
5776 3036 0F96 adiw r24,15
5777 3038 A11D adc r26,__zero_reg__
5778 303a B11D adc r27,__zero_reg__
5779 .L450:
5780 303c 5C01 movw r10,r24
5781 303e 6D01 movw r12,r26
5782 3040 E4E0 ldi r30,4
5783 3042 D594 1: asr r13
5784 3044 C794 ror r12
5785 3046 B794 ror r11
5786 3048 A794 ror r10
5787 304a EA95 dec r30
5788 304c D1F7 brne 1b
5789 304e 8091 0000 lds r24,MaxStickNick
5790 3052 9091 0000 lds r25,(MaxStickNick)+1
5791 3056 8134 cpi r24,65
5792 3058 9105 cpc r25,__zero_reg__
5793 305a 3CF4 brge .L452
5794 305c 8091 0000 lds r24,MaxStickRoll
5795 3060 9091 0000 lds r25,(MaxStickRoll)+1
5796 3064 8134 cpi r24,65
5797 3066 9105 cpc r25,__zero_reg__
5798 3068 A4F0 brlt .L451
5799 .L452:
5800 306a C401 movw r24,r8
5801 306c B301 movw r22,r6
5802 306e 23E0 ldi r18,lo8(3)
5803 3070 30E0 ldi r19,hi8(3)
5804 3072 40E0 ldi r20,hlo8(3)
5805 3074 50E0 ldi r21,hhi8(3)
5806 3076 0E94 0000 call __divmodsi4
5807 307a 3901 movw r6,r18
5808 307c 4A01 movw r8,r20
5809 307e C601 movw r24,r12
5810 3080 B501 movw r22,r10
5811 3082 23E0 ldi r18,lo8(3)
5812 3084 30E0 ldi r19,hi8(3)
5813 3086 40E0 ldi r20,hlo8(3)
5814 3088 50E0 ldi r21,hhi8(3)
5815 308a 0E94 0000 call __divmodsi4
5816 308e 5901 movw r10,r18
5817 3090 6A01 movw r12,r20
5818 .L451:
5819 3092 8091 0000 lds r24,EE_Parameter+4
5820 3096 E82F mov r30,r24
5821 3098 FF27 clr r31
5822 309a EE0F add r30,r30
5823 309c FF1F adc r31,r31
5824 309e E050 subi r30,lo8(-(PPM_in))
5825 30a0 F040 sbci r31,hi8(-(PPM_in))
5826 30a2 8081 ld r24,Z
5827 30a4 9181 ldd r25,Z+1
5828 30a6 0190 ld __tmp_reg__,Z+
5829 30a8 F081 ld r31,Z
5830 30aa E02D mov r30,__tmp_reg__
5831 30ac F7FF sbrs r31,7
5832 30ae 03C0 rjmp .L454
5833 30b0 F095 com r31
5834 30b2 E195 neg r30
5835 30b4 FF4F sbci r31,lo8(-1)
5836 .L454:
5837 30b6 7A97 sbiw r30,26
5838 30b8 A4F0 brlt .L453
5839 30ba C401 movw r24,r8
5840 30bc B301 movw r22,r6
5841 30be 23E0 ldi r18,lo8(3)
5842 30c0 30E0 ldi r19,hi8(3)
5843 30c2 40E0 ldi r20,hlo8(3)
5844 30c4 50E0 ldi r21,hhi8(3)
5845 30c6 0E94 0000 call __divmodsi4
5846 30ca 3901 movw r6,r18
5847 30cc 4A01 movw r8,r20
5848 30ce C601 movw r24,r12
5849 30d0 B501 movw r22,r10
5850 30d2 23E0 ldi r18,lo8(3)
5851 30d4 30E0 ldi r19,hi8(3)
5852 30d6 40E0 ldi r20,hlo8(3)
5853 30d8 50E0 ldi r21,hhi8(3)
5854 30da 0E94 0000 call __divmodsi4
5855 30de 5901 movw r10,r18
5856 30e0 6A01 movw r12,r20
5857 .L453:
5858 30e2 71E2 ldi r23,lo8(33)
5859 30e4 6716 cp r6,r23
5860 30e6 7104 cpc r7,__zero_reg__
5861 30e8 8104 cpc r8,__zero_reg__
5862 30ea 9104 cpc r9,__zero_reg__
5863 30ec 2CF0 brlt .L455
5864 30ee 70E2 ldi r23,lo8(32)
5865 30f0 672E mov r6,r23
5866 30f2 712C mov r7,__zero_reg__
5867 30f4 812C mov r8,__zero_reg__
5868 30f6 912C mov r9,__zero_reg__
5869 .L455:
5870 30f8 80EE ldi r24,lo8(-32)
5871 30fa 6816 cp r6,r24
5872 30fc 8FEF ldi r24,hi8(-32)
5873 30fe 7806 cpc r7,r24
5874 3100 8FEF ldi r24,hlo8(-32)
5875 3102 8806 cpc r8,r24
5876 3104 8FEF ldi r24,hhi8(-32)
5877 3106 9806 cpc r9,r24
5878 3108 44F4 brge .L456
5879 310a 60EE ldi r22,lo8(-32)
5880 310c 662E mov r6,r22
5881 310e 6FEF ldi r22,hi8(-32)
5882 3110 762E mov r7,r22
5883 3112 6FEF ldi r22,hlo8(-32)
5884 3114 862E mov r8,r22
5885 3116 6FEF ldi r22,hhi8(-32)
5886 3118 962E mov r9,r22
5887 .L456:
5888 311a 91E2 ldi r25,lo8(33)
5889 311c A916 cp r10,r25
5890 311e B104 cpc r11,__zero_reg__
5891 3120 C104 cpc r12,__zero_reg__
5892 3122 D104 cpc r13,__zero_reg__
5893 3124 2CF0 brlt .L457
5894 3126 50E2 ldi r21,lo8(32)
5895 3128 A52E mov r10,r21
5896 312a B12C mov r11,__zero_reg__
5897 312c C12C mov r12,__zero_reg__
5898 312e D12C mov r13,__zero_reg__
5899 .L457:
5900 3130 A0EE ldi r26,lo8(-32)
5901 3132 AA16 cp r10,r26
5902 3134 AFEF ldi r26,hi8(-32)
5903 3136 BA06 cpc r11,r26
5904 3138 AFEF ldi r26,hlo8(-32)
5905 313a CA06 cpc r12,r26
5906 313c AFEF ldi r26,hhi8(-32)
5907 313e DA06 cpc r13,r26
5908 3140 44F4 brge .L448
5909 3142 40EE ldi r20,lo8(-32)
5910 3144 A42E mov r10,r20
5911 3146 4FEF ldi r20,hi8(-32)
5912 3148 B42E mov r11,r20
5913 314a 4FEF ldi r20,hlo8(-32)
5914 314c C42E mov r12,r20
5915 314e 4FEF ldi r20,hhi8(-32)
5916 3150 D42E mov r13,r20
5917 .L448:
5918 3152 8091 0000 lds r24,Mess_IntegralNick
5919 3156 9091 0000 lds r25,(Mess_IntegralNick)+1
5920 315a A091 0000 lds r26,(Mess_IntegralNick)+2
5921 315e B091 0000 lds r27,(Mess_IntegralNick)+3
5922 3162 8619 sub r24,r6
5923 3164 9709 sbc r25,r7
5924 3166 A809 sbc r26,r8
5925 3168 B909 sbc r27,r9
5926 316a 8093 0000 sts Mess_IntegralNick,r24
5927 316e 9093 0000 sts (Mess_IntegralNick)+1,r25
5928 3172 A093 0000 sts (Mess_IntegralNick)+2,r26
5929 3176 B093 0000 sts (Mess_IntegralNick)+3,r27
5930 317a 8091 0000 lds r24,Mess_IntegralRoll
5931 317e 9091 0000 lds r25,(Mess_IntegralRoll)+1
5932 3182 A091 0000 lds r26,(Mess_IntegralRoll)+2
5933 3186 B091 0000 lds r27,(Mess_IntegralRoll)+3
5934 318a 8A19 sub r24,r10
5935 318c 9B09 sbc r25,r11
5936 318e AC09 sbc r26,r12
5937 3190 BD09 sbc r27,r13
5938 3192 8093 0000 sts Mess_IntegralRoll,r24
5939 3196 9093 0000 sts (Mess_IntegralRoll)+1,r25
5940 319a A093 0000 sts (Mess_IntegralRoll)+2,r26
5941 319e B093 0000 sts (Mess_IntegralRoll)+3,r27
5942 .L433:
5943 31a2 8091 0000 lds r24,ZaehlMessungen
5944 31a6 9091 0000 lds r25,(ZaehlMessungen)+1
5945 31aa 8F3F cpi r24,255
5946 31ac 9105 cpc r25,__zero_reg__
5947 31ae 09F0 breq .+2
5948 31b0 08F4 brsh .+2
5949 31b2 C4C5 rjmp .L459
5950 31b4 BB85 ldd r27,Y+11
5951 31b6 BB23 tst r27
5952 31b8 09F0 breq .+2
5953 31ba 4EC5 rjmp .L460
5954 31bc 8091 0000 lds r24,Looping_Roll
5955 31c0 8823 tst r24
5956 31c2 09F0 breq .+2
5957 31c4 49C5 rjmp .L460
5958 31c6 8091 0000 lds r24,TrichterFlug
5959 31ca 8823 tst r24
5960 31cc 09F0 breq .+2
5961 31ce 44C5 rjmp .L460
5962 31d0 E091 0000 lds r30,EE_Parameter+68
5963 31d4 EC87 std Y+12,r30
5964 31d6 EE23 tst r30
5965 31d8 09F4 brne .+2
5966 31da 3EC5 rjmp .L460
5967 31dc 8091 0000 lds r24,MittelIntegralNick
5968 31e0 9091 0000 lds r25,(MittelIntegralNick)+1
5969 31e4 A091 0000 lds r26,(MittelIntegralNick)+2
5970 31e8 B091 0000 lds r27,(MittelIntegralNick)+3
5971 31ec B7FF sbrs r27,7
5972 31ee 04C0 rjmp .L461
5973 31f0 8150 subi r24,lo8(-(255))
5974 31f2 9F4F sbci r25,hi8(-(255))
5975 31f4 AF4F sbci r26,hlo8(-(255))
5976 31f6 BF4F sbci r27,hhi8(-(255))
5977 .L461:
5978 31f8 E92E mov r14,r25
5979 31fa FA2E mov r15,r26
5980 31fc 0B2F mov r16,r27
5981 31fe 1127 clr r17
5982 3200 07FD sbrc r16,7
5983 3202 1A95 dec r17
5984 3204 E092 0000 sts MittelIntegralNick,r14
5985 3208 F092 0000 sts (MittelIntegralNick)+1,r15
5986 320c 0093 0000 sts (MittelIntegralNick)+2,r16
5987 3210 1093 0000 sts (MittelIntegralNick)+3,r17
5988 3214 8091 0000 lds r24,MittelIntegralRoll
5989 3218 9091 0000 lds r25,(MittelIntegralRoll)+1
5990 321c A091 0000 lds r26,(MittelIntegralRoll)+2
5991 3220 B091 0000 lds r27,(MittelIntegralRoll)+3
5992 3224 B7FF sbrs r27,7
5993 3226 04C0 rjmp .L462
5994 3228 8150 subi r24,lo8(-(255))
5995 322a 9F4F sbci r25,hi8(-(255))
5996 322c AF4F sbci r26,hlo8(-(255))
5997 322e BF4F sbci r27,hhi8(-(255))
5998 .L462:
5999 3230 892F mov r24,r25
6000 3232 9A2F mov r25,r26
6001 3234 AB2F mov r26,r27
6002 3236 BB27 clr r27
6003 3238 A7FD sbrc r26,7
6004 323a BA95 dec r27
6005 323c 8D87 std Y+13,r24
6006 323e 9E87 std Y+14,r25
6007 3240 AF87 std Y+15,r26
6008 3242 B88B std Y+16,r27
6009 3244 8093 0000 sts MittelIntegralRoll,r24
6010 3248 9093 0000 sts (MittelIntegralRoll)+1,r25
6011 324c A093 0000 sts (MittelIntegralRoll)+2,r26
6012 3250 B093 0000 sts (MittelIntegralRoll)+3,r27
6013 3254 8091 0000 lds r24,EE_Parameter+28
6014 3258 A82E mov r10,r24
6015 325a BB24 clr r11
6016 325c CC24 clr r12
6017 325e DD24 clr r13
6018 3260 2091 0000 lds r18,IntegralAccNick
6019 3264 3091 0000 lds r19,(IntegralAccNick)+1
6020 3268 4091 0000 lds r20,(IntegralAccNick)+2
6021 326c 5091 0000 lds r21,(IntegralAccNick)+3
6022 3270 C601 movw r24,r12
6023 3272 B501 movw r22,r10
6024 3274 0E94 0000 call __mulsi3
6025 3278 97FF sbrs r25,7
6026 327a 04C0 rjmp .L463
6027 327c 6150 subi r22,lo8(-(255))
6028 327e 7F4F sbci r23,hi8(-(255))
6029 3280 8F4F sbci r24,hlo8(-(255))
6030 3282 9F4F sbci r25,hhi8(-(255))
6031 .L463:
6032 3284 672E mov r6,r23
6033 3286 782E mov r7,r24
6034 3288 892E mov r8,r25
6035 328a 9924 clr r9
6036 328c 87FC sbrc r8,7
6037 328e 9A94 dec r9
6038 3290 6092 0000 sts IntegralAccNick,r6
6039 3294 7092 0000 sts (IntegralAccNick)+1,r7
6040 3298 8092 0000 sts (IntegralAccNick)+2,r8
6041 329c 9092 0000 sts (IntegralAccNick)+3,r9
6042 32a0 2091 0000 lds r18,IntegralAccRoll
6043 32a4 3091 0000 lds r19,(IntegralAccRoll)+1
6044 32a8 4091 0000 lds r20,(IntegralAccRoll)+2
6045 32ac 5091 0000 lds r21,(IntegralAccRoll)+3
6046 32b0 C601 movw r24,r12
6047 32b2 B501 movw r22,r10
6048 32b4 0E94 0000 call __mulsi3
6049 32b8 97FF sbrs r25,7
6050 32ba 04C0 rjmp .L464
6051 32bc 6150 subi r22,lo8(-(255))
6052 32be 7F4F sbci r23,hi8(-(255))
6053 32c0 8F4F sbci r24,hlo8(-(255))
6054 32c2 9F4F sbci r25,hhi8(-(255))
6055 .L464:
6056 32c4 272E mov r2,r23
6057 32c6 382E mov r3,r24
6058 32c8 492E mov r4,r25
6059 32ca 5524 clr r5
6060 32cc 47FC sbrc r4,7
6061 32ce 5A94 dec r5
6062 32d0 2092 0000 sts IntegralAccRoll,r2
6063 32d4 3092 0000 sts (IntegralAccRoll)+1,r3
6064 32d8 4092 0000 sts (IntegralAccRoll)+2,r4
6065 32dc 5092 0000 sts (IntegralAccRoll)+3,r5
6066 32e0 8091 0000 lds r24,IntegralAccZ
6067 32e4 9091 0000 lds r25,(IntegralAccZ)+1
6068 32e8 A091 0000 lds r26,(IntegralAccZ)+2
6069 32ec B091 0000 lds r27,(IntegralAccZ)+3
6070 32f0 B7FF sbrs r27,7
6071 32f2 04C0 rjmp .L465
6072 32f4 8150 subi r24,lo8(-(255))
6073 32f6 9F4F sbci r25,hi8(-(255))
6074 32f8 AF4F sbci r26,hlo8(-(255))
6075 32fa BF4F sbci r27,hhi8(-(255))
6076 .L465:
6077 32fc 892F mov r24,r25
6078 32fe 9A2F mov r25,r26
6079 3300 AB2F mov r26,r27
6080 3302 BB27 clr r27
6081 3304 A7FD sbrc r26,7
6082 3306 BA95 dec r27
6083 3308 8093 0000 sts IntegralAccZ,r24
6084 330c 9093 0000 sts (IntegralAccZ)+1,r25
6085 3310 A093 0000 sts (IntegralAccZ)+2,r26
6086 3314 B093 0000 sts (IntegralAccZ)+3,r27
6087 3318 D801 movw r26,r16
6088 331a C701 movw r24,r14
6089 331c 8619 sub r24,r6
6090 331e 9709 sbc r25,r7
6091 3320 A809 sbc r26,r8
6092 3322 B909 sbc r27,r9
6093 3324 8093 0000 sts IntegralFehlerNick.3,r24
6094 3328 9093 0000 sts (IntegralFehlerNick.3)+1,r25
6095 332c A093 0000 sts (IntegralFehlerNick.3)+2,r26
6096 3330 B093 0000 sts (IntegralFehlerNick.3)+3,r27
6097 3334 2091 0000 lds r18,EE_Parameter+67
6098 3338 E22E mov r14,r18
6099 333a FF24 clr r15
6100 333c 0027 clr r16
6101 333e 1127 clr r17
6102 3340 BC01 movw r22,r24
6103 3342 CD01 movw r24,r26
6104 3344 A801 movw r20,r16
6105 3346 9701 movw r18,r14
6106 3348 0E94 0000 call __divmodsi4
6107 334c 5901 movw r10,r18
6108 334e 6A01 movw r12,r20
6109 3350 2093 0000 sts ausgleichNick.11,r18
6110 3354 3093 0000 sts (ausgleichNick.11)+1,r19
6111 3358 4093 0000 sts (ausgleichNick.11)+2,r20
6112 335c 5093 0000 sts (ausgleichNick.11)+3,r21
6113 3360 8D85 ldd r24,Y+13
6114 3362 9E85 ldd r25,Y+14
6115 3364 AF85 ldd r26,Y+15
6116 3366 B889 ldd r27,Y+16
6117 3368 8219 sub r24,r2
6118 336a 9309 sbc r25,r3
6119 336c A409 sbc r26,r4
6120 336e B509 sbc r27,r5
6121 3370 8093 0000 sts IntegralFehlerRoll.4,r24
6122 3374 9093 0000 sts (IntegralFehlerRoll.4)+1,r25
6123 3378 A093 0000 sts (IntegralFehlerRoll.4)+2,r26
6124 337c B093 0000 sts (IntegralFehlerRoll.4)+3,r27
6125 3380 BC01 movw r22,r24
6126 3382 CD01 movw r24,r26
6127 3384 A801 movw r20,r16
6128 3386 9701 movw r18,r14
6129 3388 0E94 0000 call __divmodsi4
6130 338c 2093 0000 sts ausgleichRoll.12,r18
6131 3390 3093 0000 sts (ausgleichRoll.12)+1,r19
6132 3394 4093 0000 sts (ausgleichRoll.12)+2,r20
6133 3398 5093 0000 sts (ausgleichRoll.12)+3,r21
6134 339c D601 movw r26,r12
6135 339e C501 movw r24,r10
6136 33a0 D7FE sbrs r13,7
6137 33a2 04C0 rjmp .L466
6138 33a4 8150 subi r24,lo8(-(255))
6139 33a6 9F4F sbci r25,hi8(-(255))
6140 33a8 AF4F sbci r26,hlo8(-(255))
6141 33aa BF4F sbci r27,hhi8(-(255))
6142 .L466:
6143 33ac 892F mov r24,r25
6144 33ae 9A2F mov r25,r26
6145 33b0 AB2F mov r26,r27
6146 33b2 BB27 clr r27
6147 33b4 A7FD sbrc r26,7
6148 33b6 BA95 dec r27
6149 33b8 9093 0000 sts (LageKorrekturNick)+1,r25
6150 33bc 8093 0000 sts LageKorrekturNick,r24
6151 33c0 57FF sbrs r21,7
6152 33c2 04C0 rjmp .L467
6153 33c4 2150 subi r18,lo8(-(255))
6154 33c6 3F4F sbci r19,hi8(-(255))
6155 33c8 4F4F sbci r20,hlo8(-(255))
6156 33ca 5F4F sbci r21,hhi8(-(255))
6157 .L467:
6158 33cc BB27 clr r27
6159 33ce 57FD sbrc r21,7
6160 33d0 BA95 dec r27
6161 33d2 A52F mov r26,r21
6162 33d4 942F mov r25,r20
6163 33d6 832F mov r24,r19
6164 33d8 9093 0000 sts (LageKorrekturRoll)+1,r25
6165 33dc 8093 0000 sts LageKorrekturRoll,r24
6166 33e0 8091 0000 lds r24,MaxStickNick
6167 33e4 9091 0000 lds r25,(MaxStickNick)+1
6168 33e8 8134 cpi r24,65
6169 33ea 9105 cpc r25,__zero_reg__
6170 33ec DCF4 brge .L469
6171 33ee 8091 0000 lds r24,MaxStickRoll
6172 33f2 9091 0000 lds r25,(MaxStickRoll)+1
6173 33f6 8134 cpi r24,65
6174 33f8 9105 cpc r25,__zero_reg__
6175 33fa A4F4 brge .L469
6176 33fc 8091 0000 lds r24,EE_Parameter+4
6177 3400 E82F mov r30,r24
6178 3402 FF27 clr r31
6179 3404 EE0F add r30,r30
6180 3406 FF1F adc r31,r31
6181 3408 E050 subi r30,lo8(-(PPM_in))
6182 340a F040 sbci r31,hi8(-(PPM_in))
6183 340c 8081 ld r24,Z
6184 340e 9181 ldd r25,Z+1
6185 3410 0190 ld __tmp_reg__,Z+
6186 3412 F081 ld r31,Z
6187 3414 E02D mov r30,__tmp_reg__
6188 3416 F7FF sbrs r31,7
6189 3418 03C0 rjmp .L470
6190 341a F095 com r31
6191 341c E195 neg r30
6192 341e FF4F sbci r31,lo8(-1)
6193 .L470:
6194 3420 7A97 sbiw r30,26
6195 3422 E4F0 brlt .L468
6196 .L469:
6197 3424 8091 0000 lds r24,FromNaviCtrl_Value
6198 3428 8F3F cpi r24,lo8(-1)
6199 342a C1F4 brne .L468
6200 342c 8091 0000 lds r24,LageKorrekturNick
6201 3430 9091 0000 lds r25,(LageKorrekturNick)+1
6202 3434 97FD sbrc r25,7
6203 3436 0196 adiw r24,1
6204 .L471:
6205 3438 9595 asr r25
6206 343a 8795 ror r24
6207 343c 9093 0000 sts (LageKorrekturNick)+1,r25
6208 3440 8093 0000 sts LageKorrekturNick,r24
6209 3444 8091 0000 lds r24,LageKorrekturRoll
6210 3448 9091 0000 lds r25,(LageKorrekturRoll)+1
6211 344c 97FD sbrc r25,7
6212 344e 0196 adiw r24,1
6213 .L472:
6214 3450 9595 asr r25
6215 3452 8795 ror r24
6216 3454 9093 0000 sts (LageKorrekturRoll)+1,r25
6217 3458 8093 0000 sts LageKorrekturRoll,r24
6218 .L468:
6219 345c 8091 0000 lds r24,MittelIntegralNick2
6220 3460 9091 0000 lds r25,(MittelIntegralNick2)+1
6221 3464 A091 0000 lds r26,(MittelIntegralNick2)+2
6222 3468 B091 0000 lds r27,(MittelIntegralNick2)+3
6223 346c B7FF sbrs r27,7
6224 346e 04C0 rjmp .L473
6225 3470 8150 subi r24,lo8(-(255))
6226 3472 9F4F sbci r25,hi8(-(255))
6227 3474 AF4F sbci r26,hlo8(-(255))
6228 3476 BF4F sbci r27,hhi8(-(255))
6229 .L473:
6230 3478 892F mov r24,r25
6231 347a 9A2F mov r25,r26
6232 347c AB2F mov r26,r27
6233 347e BB27 clr r27
6234 3480 A7FD sbrc r26,7
6235 3482 BA95 dec r27
6236 3484 8093 0000 sts MittelIntegralNick2,r24
6237 3488 9093 0000 sts (MittelIntegralNick2)+1,r25
6238 348c A093 0000 sts (MittelIntegralNick2)+2,r26
6239 3490 B093 0000 sts (MittelIntegralNick2)+3,r27
6240 3494 8091 0000 lds r24,MittelIntegralRoll2
6241 3498 9091 0000 lds r25,(MittelIntegralRoll2)+1
6242 349c A091 0000 lds r26,(MittelIntegralRoll2)+2
6243 34a0 B091 0000 lds r27,(MittelIntegralRoll2)+3
6244 34a4 B7FF sbrs r27,7
6245 34a6 04C0 rjmp .L474
6246 34a8 8150 subi r24,lo8(-(255))
6247 34aa 9F4F sbci r25,hi8(-(255))
6248 34ac AF4F sbci r26,hlo8(-(255))
6249 34ae BF4F sbci r27,hhi8(-(255))
6250 .L474:
6251 34b0 892F mov r24,r25
6252 34b2 9A2F mov r25,r26
6253 34b4 AB2F mov r26,r27
6254 34b6 BB27 clr r27
6255 34b8 A7FD sbrc r26,7
6256 34ba BA95 dec r27
6257 34bc 8093 0000 sts MittelIntegralRoll2,r24
6258 34c0 9093 0000 sts (MittelIntegralRoll2)+1,r25
6259 34c4 A093 0000 sts (MittelIntegralRoll2)+2,r26
6260 34c8 B093 0000 sts (MittelIntegralRoll2)+3,r27
6261 34cc 8091 0000 lds r24,IntegralNick
6262 34d0 9091 0000 lds r25,(IntegralNick)+1
6263 34d4 A091 0000 lds r26,(IntegralNick)+2
6264 34d8 B091 0000 lds r27,(IntegralNick)+3
6265 34dc 2B81 ldd r18,Y+3
6266 34de 3C81 ldd r19,Y+4
6267 34e0 4D81 ldd r20,Y+5
6268 34e2 5E81 ldd r21,Y+6
6269 34e4 281B sub r18,r24
6270 34e6 390B sbc r19,r25
6271 34e8 4A0B sbc r20,r26
6272 34ea 5B0B sbc r21,r27
6273 34ec 2093 0000 sts tmp_long.1,r18
6274 34f0 3093 0000 sts (tmp_long.1)+1,r19
6275 34f4 4093 0000 sts (tmp_long.1)+2,r20
6276 34f8 5093 0000 sts (tmp_long.1)+3,r21
6277 34fc 8091 0000 lds r24,IntegralRoll
6278 3500 9091 0000 lds r25,(IntegralRoll)+1
6279 3504 A091 0000 lds r26,(IntegralRoll)+2
6280 3508 B091 0000 lds r27,(IntegralRoll)+3
6281 350c EF80 ldd r14,Y+7
6282 350e F884 ldd r15,Y+8
6283 3510 0985 ldd r16,Y+9
6284 3512 1A85 ldd r17,Y+10
6285 3514 E81A sub r14,r24
6286 3516 F90A sbc r15,r25
6287 3518 0A0B sbc r16,r26
6288 351a 1B0B sbc r17,r27
6289 351c E092 0000 sts tmp_long2.2,r14
6290 3520 F092 0000 sts (tmp_long2.2)+1,r15
6291 3524 0093 0000 sts (tmp_long2.2)+2,r16
6292 3528 1093 0000 sts (tmp_long2.2)+3,r17
6293 352c 2093 0000 sts IntegralFehlerNick.3,r18
6294 3530 3093 0000 sts (IntegralFehlerNick.3)+1,r19
6295 3534 4093 0000 sts (IntegralFehlerNick.3)+2,r20
6296 3538 5093 0000 sts (IntegralFehlerNick.3)+3,r21
6297 353c E092 0000 sts IntegralFehlerRoll.4,r14
6298 3540 F092 0000 sts (IntegralFehlerRoll.4)+1,r15
6299 3544 0093 0000 sts (IntegralFehlerRoll.4)+2,r16
6300 3548 1093 0000 sts (IntegralFehlerRoll.4)+3,r17
6301 354c 8091 0000 lds r24,Mess_IntegralNick2
6302 3550 9091 0000 lds r25,(Mess_IntegralNick2)+1
6303 3554 A091 0000 lds r26,(Mess_IntegralNick2)+2
6304 3558 B091 0000 lds r27,(Mess_IntegralNick2)+3
6305 355c 821B sub r24,r18
6306 355e 930B sbc r25,r19
6307 3560 A40B sbc r26,r20
6308 3562 B50B sbc r27,r21
6309 3564 8093 0000 sts Mess_IntegralNick2,r24
6310 3568 9093 0000 sts (Mess_IntegralNick2)+1,r25
6311 356c A093 0000 sts (Mess_IntegralNick2)+2,r26
6312 3570 B093 0000 sts (Mess_IntegralNick2)+3,r27
6313 3574 8091 0000 lds r24,Mess_IntegralRoll2
6314 3578 9091 0000 lds r25,(Mess_IntegralRoll2)+1
6315 357c A091 0000 lds r26,(Mess_IntegralRoll2)+2
6316 3580 B091 0000 lds r27,(Mess_IntegralRoll2)+3
6317 3584 8E19 sub r24,r14
6318 3586 9F09 sbc r25,r15
6319 3588 A00B sbc r26,r16
6320 358a B10B sbc r27,r17
6321 358c 8093 0000 sts Mess_IntegralRoll2,r24
6322 3590 9093 0000 sts (Mess_IntegralRoll2)+1,r25
6323 3594 A093 0000 sts (Mess_IntegralRoll2)+2,r26
6324 3598 B093 0000 sts (Mess_IntegralRoll2)+3,r27
6325 359c FC85 ldd r31,Y+12
6326 359e FF23 tst r31
6327 35a0 E1F0 breq .L475
6328 35a2 2091 0000 lds r18,GierGyroFehler
6329 35a6 3091 0000 lds r19,(GierGyroFehler)+1
6330 35aa 2138 cpi r18,129
6331 35ac 3105 cpc r19,__zero_reg__
6332 35ae 4CF0 brlt .L476
6333 35b0 8091 0000 lds r24,AdNeutralGier
6334 35b4 9091 0000 lds r25,(AdNeutralGier)+1
6335 35b8 0196 adiw r24,1
6336 35ba 9093 0000 sts (AdNeutralGier)+1,r25
6337 35be 8093 0000 sts AdNeutralGier,r24
6338 .L476:
6339 35c2 2058 subi r18,lo8(-128)
6340 35c4 3F4F sbci r19,hi8(-128)
6341 35c6 4CF4 brge .L475
6342 35c8 8091 0000 lds r24,AdNeutralGier
6343 35cc 9091 0000 lds r25,(AdNeutralGier)+1
6344 35d0 0197 sbiw r24,1
6345 35d2 9093 0000 sts (AdNeutralGier)+1,r25
6346 35d6 8093 0000 sts AdNeutralGier,r24
6347 .L475:
6348 35da 1092 0000 sts (GierGyroFehler)+1,__zero_reg__
6349 35de 1092 0000 sts GierGyroFehler,__zero_reg__
6350 35e2 81E0 ldi r24,lo8(1)
6351 35e4 90E0 ldi r25,hi8(1)
6352 35e6 9093 0000 sts (cnt.15)+1,r25
6353 35ea 8093 0000 sts cnt.15,r24
6354 35ee E090 0000 lds r14,IntegralFehlerNick.3
6355 35f2 F090 0000 lds r15,(IntegralFehlerNick.3)+1
6356 35f6 0091 0000 lds r16,(IntegralFehlerNick.3)+2
6357 35fa 1091 0000 lds r17,(IntegralFehlerNick.3)+3
6358 35fe D801 movw r26,r16
6359 3600 C701 movw r24,r14
6360 3602 17FF sbrs r17,7
6361 3604 07C0 rjmp .L479
6362 3606 8827 clr r24
6363 3608 9927 clr r25
6364 360a DC01 movw r26,r24
6365 360c 8E19 sub r24,r14
6366 360e 9F09 sbc r25,r15
6367 3610 A00B sbc r26,r16
6368 3612 B10B sbc r27,r17
6369 .L479:
6370 3614 8150 subi r24,lo8(513)
6371 3616 9240 sbci r25,hi8(513)
6372 3618 A040 sbci r26,hlo8(513)
6373 361a B040 sbci r27,hhi8(513)
6374 361c 34F0 brlt .L478
6375 361e 84E0 ldi r24,lo8(4)
6376 3620 90E0 ldi r25,hi8(4)
6377 3622 9093 0000 sts (cnt.15)+1,r25
6378 3626 8093 0000 sts cnt.15,r24
6379 .L478:
6380 362a 8091 0000 lds r24,MittelIntegralNick_Alt.20
6381 362e 9091 0000 lds r25,(MittelIntegralNick_Alt.20)+1
6382 3632 A091 0000 lds r26,(MittelIntegralNick_Alt.20)+2
6383 3636 B091 0000 lds r27,(MittelIntegralNick_Alt.20)+3
6384 363a 2091 0000 lds r18,MittelIntegralNick
6385 363e 3091 0000 lds r19,(MittelIntegralNick)+1
6386 3642 4091 0000 lds r20,(MittelIntegralNick)+2
6387 3646 5091 0000 lds r21,(MittelIntegralNick)+3
6388 364a 821B sub r24,r18
6389 364c 930B sbc r25,r19
6390 364e A40B sbc r26,r20
6391 3650 B50B sbc r27,r21
6392 3652 815E subi r24,lo8(-(19999))
6393 3654 914B sbci r25,hi8(-(19999))
6394 3656 AF4F sbci r26,hlo8(-(19999))
6395 3658 BF4F sbci r27,hhi8(-(19999))
6396 365a 8F53 subi r24,lo8(39999)
6397 365c 9C49 sbci r25,hi8(39999)
6398 365e A040 sbci r26,hlo8(39999)
6399 3660 B040 sbci r27,hhi8(39999)
6400 3662 28F0 brlo .L481
6401 3664 8091 0000 lds r24,FromNaviCtrl_Value+1
6402 3668 8931 cpi r24,lo8(25)
6403 366a 0CF4 brge .+2
6404 366c FFC0 rjmp .L480
6405 .L481:
6406 366e 41E0 ldi r20,lo8(4097)
6407 3670 E416 cp r14,r20
6408 3672 40E1 ldi r20,hi8(4097)
6409 3674 F406 cpc r15,r20
6410 3676 40E0 ldi r20,hlo8(4097)
6411 3678 0407 cpc r16,r20
6412 367a 40E0 ldi r20,hhi8(4097)
6413 367c 1407 cpc r17,r20
6414 367e 0CF4 brge .+2
6415 3680 73C0 rjmp .L482
6416 3682 8091 0000 lds r24,last_n_p.16
6417 3686 8823 tst r24
6418 3688 09F4 brne .+2
6419 368a 6AC0 rjmp .L483
6420 368c D801 movw r26,r16
6421 368e C701 movw r24,r14
6422 3690 17FF sbrs r17,7
6423 3692 07C0 rjmp .L484
6424 3694 8827 clr r24
6425 3696 9927 clr r25
6426 3698 DC01 movw r26,r24
6427 369a 8E19 sub r24,r14
6428 369c 9F09 sbc r25,r15
6429 369e A00B sbc r26,r16
6430 36a0 B10B sbc r27,r17
6431 .L484:
6432 36a2 9C01 movw r18,r24
6433 36a4 AD01 movw r20,r26
6434 36a6 B7FF sbrs r27,7
6435 36a8 04C0 rjmp .L485
6436 36aa 2150 subi r18,lo8(-(511))
6437 36ac 3E4F sbci r19,hi8(-(511))
6438 36ae 4F4F sbci r20,hlo8(-(511))
6439 36b0 5F4F sbci r21,hhi8(-(511))
6440 .L485:
6441 36b2 F9E0 ldi r31,9
6442 36b4 5595 1: asr r21
6443 36b6 4795 ror r20
6444 36b8 3795 ror r19
6445 36ba 2795 ror r18
6446 36bc FA95 dec r31
6447 36be D1F7 brne 1b
6448 36c0 8091 0000 lds r24,cnt.15
6449 36c4 9091 0000 lds r25,(cnt.15)+1
6450 36c8 820F add r24,r18
6451 36ca 931F adc r25,r19
6452 36cc 9093 0000 sts (cnt.15)+1,r25
6453 36d0 8093 0000 sts cnt.15,r24
6454 36d4 D801 movw r26,r16
6455 36d6 C701 movw r24,r14
6456 36d8 17FF sbrs r17,7
6457 36da 03C0 rjmp .L486
6458 36dc 0796 adiw r24,7
6459 36de A11D adc r26,__zero_reg__
6460 36e0 B11D adc r27,__zero_reg__
6461 .L486:
6462 36e2 E3E0 ldi r30,3
6463 36e4 B595 1: asr r27
6464 36e6 A795 ror r26
6465 36e8 9795 ror r25
6466 36ea 8795 ror r24
6467 36ec EA95 dec r30
6468 36ee D1F7 brne 1b
6469 36f0 8093 0000 sts ausgleichNick.11,r24
6470 36f4 9093 0000 sts (ausgleichNick.11)+1,r25
6471 36f8 A093 0000 sts (ausgleichNick.11)+2,r26
6472 36fc B093 0000 sts (ausgleichNick.11)+3,r27
6473 3700 8958 subi r24,lo8(5001)
6474 3702 9341 sbci r25,hi8(5001)
6475 3704 A040 sbci r26,hlo8(5001)
6476 3706 B040 sbci r27,hhi8(5001)
6477 3708 64F0 brlt .L487
6478 370a 88E8 ldi r24,lo8(5000)
6479 370c 93E1 ldi r25,hi8(5000)
6480 370e A0E0 ldi r26,hlo8(5000)
6481 3710 B0E0 ldi r27,hhi8(5000)
6482 3712 8093 0000 sts ausgleichNick.11,r24
6483 3716 9093 0000 sts (ausgleichNick.11)+1,r25
6484 371a A093 0000 sts (ausgleichNick.11)+2,r26
6485 371e B093 0000 sts (ausgleichNick.11)+3,r27
6486 .L487:
6487 3722 2091 0000 lds r18,ausgleichNick.11
6488 3726 3091 0000 lds r19,(ausgleichNick.11)+1
6489 372a 4091 0000 lds r20,(ausgleichNick.11)+2
6490 372e 5091 0000 lds r21,(ausgleichNick.11)+3
6491 3732 57FF sbrs r21,7
6492 3734 04C0 rjmp .L488
6493 3736 2150 subi r18,lo8(-(255))
6494 3738 3F4F sbci r19,hi8(-(255))
6495 373a 4F4F sbci r20,hlo8(-(255))
6496 373c 5F4F sbci r21,hhi8(-(255))
6497 .L488:
6498 373e 232F mov r18,r19
6499 3740 342F mov r19,r20
6500 3742 452F mov r20,r21
6501 3744 5527 clr r21
6502 3746 47FD sbrc r20,7
6503 3748 5A95 dec r21
6504 374a 8091 0000 lds r24,LageKorrekturNick
6505 374e 9091 0000 lds r25,(LageKorrekturNick)+1
6506 3752 820F add r24,r18
6507 3754 931F adc r25,r19
6508 3756 9093 0000 sts (LageKorrekturNick)+1,r25
6509 375a 8093 0000 sts LageKorrekturNick,r24
6510 375e 06C0 rjmp .L490
6511 .L483:
6512 3760 81E0 ldi r24,lo8(1)
6513 3762 8093 0000 sts last_n_p.16,r24
6514 3766 02C0 rjmp .L490
6515 .L482:
6516 3768 1092 0000 sts last_n_p.16,__zero_reg__
6517 .L490:
6518 376c 60E0 ldi r22,lo8(-4096)
6519 376e E616 cp r14,r22
6520 3770 60EF ldi r22,hi8(-4096)
6521 3772 F606 cpc r15,r22
6522 3774 6FEF ldi r22,hlo8(-4096)
6523 3776 0607 cpc r16,r22
6524 3778 6FEF ldi r22,hhi8(-4096)
6525 377a 1607 cpc r17,r22
6526 377c 0CF0 brlt .+2
6527 377e 73C0 rjmp .L491
6528 3780 8091 0000 lds r24,last_n_n.17
6529 3784 8823 tst r24
6530 3786 09F4 brne .+2
6531 3788 6AC0 rjmp .L492
6532 378a D801 movw r26,r16
6533 378c C701 movw r24,r14
6534 378e 17FF sbrs r17,7
6535 3790 07C0 rjmp .L493
6536 3792 8827 clr r24
6537 3794 9927 clr r25
6538 3796 DC01 movw r26,r24
6539 3798 8E19 sub r24,r14
6540 379a 9F09 sbc r25,r15
6541 379c A00B sbc r26,r16
6542 379e B10B sbc r27,r17
6543 .L493:
6544 37a0 9C01 movw r18,r24
6545 37a2 AD01 movw r20,r26
6546 37a4 B7FF sbrs r27,7
6547 37a6 04C0 rjmp .L494
6548 37a8 2150 subi r18,lo8(-(511))
6549 37aa 3E4F sbci r19,hi8(-(511))
6550 37ac 4F4F sbci r20,hlo8(-(511))
6551 37ae 5F4F sbci r21,hhi8(-(511))
6552 .L494:
6553 37b0 69E0 ldi r22,9
6554 37b2 5595 1: asr r21
6555 37b4 4795 ror r20
6556 37b6 3795 ror r19
6557 37b8 2795 ror r18
6558 37ba 6A95 dec r22
6559 37bc D1F7 brne 1b
6560 37be 8091 0000 lds r24,cnt.15
6561 37c2 9091 0000 lds r25,(cnt.15)+1
6562 37c6 820F add r24,r18
6563 37c8 931F adc r25,r19
6564 37ca 9093 0000 sts (cnt.15)+1,r25
6565 37ce 8093 0000 sts cnt.15,r24
6566 37d2 D801 movw r26,r16
6567 37d4 C701 movw r24,r14
6568 37d6 17FF sbrs r17,7
6569 37d8 03C0 rjmp .L495
6570 37da 0796 adiw r24,7
6571 37dc A11D adc r26,__zero_reg__
6572 37de B11D adc r27,__zero_reg__
6573 .L495:
6574 37e0 23E0 ldi r18,3
6575 37e2 B595 1: asr r27
6576 37e4 A795 ror r26
6577 37e6 9795 ror r25
6578 37e8 8795 ror r24
6579 37ea 2A95 dec r18
6580 37ec D1F7 brne 1b
6581 37ee 8093 0000 sts ausgleichNick.11,r24
6582 37f2 9093 0000 sts (ausgleichNick.11)+1,r25
6583 37f6 A093 0000 sts (ausgleichNick.11)+2,r26
6584 37fa B093 0000 sts (ausgleichNick.11)+3,r27
6585 37fe 8857 subi r24,lo8(-5000)
6586 3800 9C4E sbci r25,hi8(-5000)
6587 3802 AF4F sbci r26,hlo8(-5000)
6588 3804 BF4F sbci r27,hhi8(-5000)
6589 3806 64F4 brge .L496
6590 3808 88E7 ldi r24,lo8(-5000)
6591 380a 9CEE ldi r25,hi8(-5000)
6592 380c AFEF ldi r26,hlo8(-5000)
6593 380e BFEF ldi r27,hhi8(-5000)
6594 3810 8093 0000 sts ausgleichNick.11,r24
6595 3814 9093 0000 sts (ausgleichNick.11)+1,r25
6596 3818 A093 0000 sts (ausgleichNick.11)+2,r26
6597 381c B093 0000 sts (ausgleichNick.11)+3,r27
6598 .L496:
6599 3820 2091 0000 lds r18,ausgleichNick.11
6600 3824 3091 0000 lds r19,(ausgleichNick.11)+1
6601 3828 4091 0000 lds r20,(ausgleichNick.11)+2
6602 382c 5091 0000 lds r21,(ausgleichNick.11)+3
6603 3830 57FF sbrs r21,7
6604 3832 04C0 rjmp .L497
6605 3834 2150 subi r18,lo8(-(255))
6606 3836 3F4F sbci r19,hi8(-(255))
6607 3838 4F4F sbci r20,hlo8(-(255))
6608 383a 5F4F sbci r21,hhi8(-(255))
6609 .L497:
6610 383c 232F mov r18,r19
6611 383e 342F mov r19,r20
6612 3840 452F mov r20,r21
6613 3842 5527 clr r21
6614 3844 47FD sbrc r20,7
6615 3846 5A95 dec r21
6616 3848 8091 0000 lds r24,LageKorrekturNick
6617 384c 9091 0000 lds r25,(LageKorrekturNick)+1
6618 3850 820F add r24,r18
6619 3852 931F adc r25,r19
6620 3854 9093 0000 sts (LageKorrekturNick)+1,r25
6621 3858 8093 0000 sts LageKorrekturNick,r24
6622 385c 11C0 rjmp .L500
6623 .L492:
6624 385e 81E0 ldi r24,lo8(1)
6625 3860 8093 0000 sts last_n_n.17,r24
6626 3864 0DC0 rjmp .L500
6627 .L491:
6628 3866 1092 0000 sts last_n_n.17,__zero_reg__
6629 386a 0AC0 rjmp .L500
6630 .L480:
6631 386c 1092 0000 sts (cnt.15)+1,__zero_reg__
6632 3870 1092 0000 sts cnt.15,__zero_reg__
6633 3874 88EE ldi r24,lo8(1000)
6634 3876 93E0 ldi r25,hi8(1000)
6635 3878 9093 0000 sts (KompassSignalSchlecht)+1,r25
6636 387c 8093 0000 sts KompassSignalSchlecht,r24
6637 .L500:
6638 3880 8C85 ldd r24,Y+12
6639 3882 282F mov r18,r24
6640 3884 3327 clr r19
6641 3886 8091 0000 lds r24,cnt.15
6642 388a 9091 0000 lds r25,(cnt.15)+1
6643 388e 2817 cp r18,r24
6644 3890 3907 cpc r19,r25
6645 3892 24F4 brge .L501
6646 3894 3093 0000 sts (cnt.15)+1,r19
6647 3898 2093 0000 sts cnt.15,r18
6648 .L501:
6649 389c 1091 0000 lds r17,FromNaviCtrl_Value+1
6650 38a0 1123 tst r17
6651 38a2 79F0 breq .L502
6652 38a4 212F mov r18,r17
6653 38a6 3327 clr r19
6654 38a8 27FD sbrc r18,7
6655 38aa 3095 com r19
6656 38ac 8091 0000 lds r24,cnt.15
6657 38b0 9091 0000 lds r25,(cnt.15)+1
6658 38b4 2817 cp r18,r24
6659 38b6 3907 cpc r19,r25
6660 38b8 24F4 brge .L502
6661 38ba 3093 0000 sts (cnt.15)+1,r19
6662 38be 2093 0000 sts cnt.15,r18
6663 .L502:
6664 38c2 4091 0000 lds r20,IntegralFehlerNick.3
6665 38c6 5091 0000 lds r21,(IntegralFehlerNick.3)+1
6666 38ca 6091 0000 lds r22,(IntegralFehlerNick.3)+2
6667 38ce 7091 0000 lds r23,(IntegralFehlerNick.3)+3
6668 38d2 4138 cpi r20,lo8(129)
6669 38d4 5105 cpc r21,__zero_reg__
6670 38d6 6105 cpc r22,__zero_reg__
6671 38d8 7105 cpc r23,__zero_reg__
6672 38da 74F0 brlt .L504
6673 38dc 8091 0000 lds r24,AdNeutralNick
6674 38e0 9091 0000 lds r25,(AdNeutralNick)+1
6675 38e4 2091 0000 lds r18,cnt.15
6676 38e8 3091 0000 lds r19,(cnt.15)+1
6677 38ec 820F add r24,r18
6678 38ee 931F adc r25,r19
6679 38f0 9093 0000 sts (AdNeutralNick)+1,r25
6680 38f4 8093 0000 sts AdNeutralNick,r24
6681 .L504:
6682 38f8 4058 subi r20,lo8(-128)
6683 38fa 5F4F sbci r21,hi8(-128)
6684 38fc 6F4F sbci r22,hlo8(-128)
6685 38fe 7F4F sbci r23,hhi8(-128)
6686 3900 74F4 brge .L505
6687 3902 8091 0000 lds r24,AdNeutralNick
6688 3906 9091 0000 lds r25,(AdNeutralNick)+1
6689 390a 2091 0000 lds r18,cnt.15
6690 390e 3091 0000 lds r19,(cnt.15)+1
6691 3912 821B sub r24,r18
6692 3914 930B sbc r25,r19
6693 3916 9093 0000 sts (AdNeutralNick)+1,r25
6694 391a 8093 0000 sts AdNeutralNick,r24
6695 .L505:
6696 391e 81E0 ldi r24,lo8(1)
6697 3920 90E0 ldi r25,hi8(1)
6698 3922 9093 0000 sts (cnt.15)+1,r25
6699 3926 8093 0000 sts cnt.15,r24
6700 392a C090 0000 lds r12,IntegralFehlerRoll.4
6701 392e D090 0000 lds r13,(IntegralFehlerRoll.4)+1
6702 3932 E090 0000 lds r14,(IntegralFehlerRoll.4)+2
6703 3936 F090 0000 lds r15,(IntegralFehlerRoll.4)+3
6704 393a D701 movw r26,r14
6705 393c C601 movw r24,r12
6706 393e F7FE sbrs r15,7
6707 3940 07C0 rjmp .L507
6708 3942 8827 clr r24
6709 3944 9927 clr r25
6710 3946 DC01 movw r26,r24
6711 3948 8C19 sub r24,r12
6712 394a 9D09 sbc r25,r13
6713 394c AE09 sbc r26,r14
6714 394e BF09 sbc r27,r15
6715 .L507:
6716 3950 8150 subi r24,lo8(513)
6717 3952 9240 sbci r25,hi8(513)
6718 3954 A040 sbci r26,hlo8(513)
6719 3956 B040 sbci r27,hhi8(513)
6720 3958 34F0 brlt .L506
6721 395a 84E0 ldi r24,lo8(4)
6722 395c 90E0 ldi r25,hi8(4)
6723 395e 9093 0000 sts (cnt.15)+1,r25
6724 3962 8093 0000 sts cnt.15,r24
6725 .L506:
6726 3966 8091 0000 lds r24,MittelIntegralRoll_Alt.21
6727 396a 9091 0000 lds r25,(MittelIntegralRoll_Alt.21)+1
6728 396e A091 0000 lds r26,(MittelIntegralRoll_Alt.21)+2
6729 3972 B091 0000 lds r27,(MittelIntegralRoll_Alt.21)+3
6730 3976 2091 0000 lds r18,MittelIntegralRoll
6731 397a 3091 0000 lds r19,(MittelIntegralRoll)+1
6732 397e 4091 0000 lds r20,(MittelIntegralRoll)+2
6733 3982 5091 0000 lds r21,(MittelIntegralRoll)+3
6734 3986 821B sub r24,r18
6735 3988 930B sbc r25,r19
6736 398a A40B sbc r26,r20
6737 398c B50B sbc r27,r21
6738 398e 815E subi r24,lo8(-(19999))
6739 3990 914B sbci r25,hi8(-(19999))
6740 3992 AF4F sbci r26,hlo8(-(19999))
6741 3994 BF4F sbci r27,hhi8(-(19999))
6742 3996 8F53 subi r24,lo8(39999)
6743 3998 9C49 sbci r25,hi8(39999)
6744 399a A040 sbci r26,hlo8(39999)
6745 399c B040 sbci r27,hhi8(39999)
6746 399e 18F0 brlo .L509
6747 39a0 1931 cpi r17,lo8(25)
6748 39a2 0CF4 brge .+2
6749 39a4 FFC0 rjmp .L508
6750 .L509:
6751 39a6 01E0 ldi r16,lo8(4097)
6752 39a8 C016 cp r12,r16
6753 39aa 00E1 ldi r16,hi8(4097)
6754 39ac D006 cpc r13,r16
6755 39ae 00E0 ldi r16,hlo8(4097)
6756 39b0 E006 cpc r14,r16
6757 39b2 00E0 ldi r16,hhi8(4097)
6758 39b4 F006 cpc r15,r16
6759 39b6 0CF4 brge .+2
6760 39b8 73C0 rjmp .L510
6761 39ba 8091 0000 lds r24,last_r_p.18
6762 39be 8823 tst r24
6763 39c0 09F4 brne .+2
6764 39c2 6AC0 rjmp .L511
6765 39c4 D701 movw r26,r14
6766 39c6 C601 movw r24,r12
6767 39c8 F7FE sbrs r15,7
6768 39ca 07C0 rjmp .L512
6769 39cc 8827 clr r24
6770 39ce 9927 clr r25
6771 39d0 DC01 movw r26,r24
6772 39d2 8C19 sub r24,r12
6773 39d4 9D09 sbc r25,r13
6774 39d6 AE09 sbc r26,r14
6775 39d8 BF09 sbc r27,r15
6776 .L512:
6777 39da 9C01 movw r18,r24
6778 39dc AD01 movw r20,r26
6779 39de B7FF sbrs r27,7
6780 39e0 04C0 rjmp .L513
6781 39e2 2150 subi r18,lo8(-(511))
6782 39e4 3E4F sbci r19,hi8(-(511))
6783 39e6 4F4F sbci r20,hlo8(-(511))
6784 39e8 5F4F sbci r21,hhi8(-(511))
6785 .L513:
6786 39ea 09E0 ldi r16,9
6787 39ec 5595 1: asr r21
6788 39ee 4795 ror r20
6789 39f0 3795 ror r19
6790 39f2 2795 ror r18
6791 39f4 0A95 dec r16
6792 39f6 D1F7 brne 1b
6793 39f8 8091 0000 lds r24,cnt.15
6794 39fc 9091 0000 lds r25,(cnt.15)+1
6795 3a00 820F add r24,r18
6796 3a02 931F adc r25,r19
6797 3a04 9093 0000 sts (cnt.15)+1,r25
6798 3a08 8093 0000 sts cnt.15,r24
6799 3a0c D701 movw r26,r14
6800 3a0e C601 movw r24,r12
6801 3a10 F7FE sbrs r15,7
6802 3a12 03C0 rjmp .L514
6803 3a14 0796 adiw r24,7
6804 3a16 A11D adc r26,__zero_reg__
6805 3a18 B11D adc r27,__zero_reg__
6806 .L514:
6807 3a1a 13E0 ldi r17,3
6808 3a1c B595 1: asr r27
6809 3a1e A795 ror r26
6810 3a20 9795 ror r25
6811 3a22 8795 ror r24
6812 3a24 1A95 dec r17
6813 3a26 D1F7 brne 1b
6814 3a28 8093 0000 sts ausgleichRoll.12,r24
6815 3a2c 9093 0000 sts (ausgleichRoll.12)+1,r25
6816 3a30 A093 0000 sts (ausgleichRoll.12)+2,r26
6817 3a34 B093 0000 sts (ausgleichRoll.12)+3,r27
6818 3a38 8958 subi r24,lo8(5001)
6819 3a3a 9341 sbci r25,hi8(5001)
6820 3a3c A040 sbci r26,hlo8(5001)
6821 3a3e B040 sbci r27,hhi8(5001)
6822 3a40 64F0 brlt .L515
6823 3a42 88E8 ldi r24,lo8(5000)
6824 3a44 93E1 ldi r25,hi8(5000)
6825 3a46 A0E0 ldi r26,hlo8(5000)
6826 3a48 B0E0 ldi r27,hhi8(5000)
6827 3a4a 8093 0000 sts ausgleichRoll.12,r24
6828 3a4e 9093 0000 sts (ausgleichRoll.12)+1,r25
6829 3a52 A093 0000 sts (ausgleichRoll.12)+2,r26
6830 3a56 B093 0000 sts (ausgleichRoll.12)+3,r27
6831 .L515:
6832 3a5a 2091 0000 lds r18,ausgleichRoll.12
6833 3a5e 3091 0000 lds r19,(ausgleichRoll.12)+1
6834 3a62 4091 0000 lds r20,(ausgleichRoll.12)+2
6835 3a66 5091 0000 lds r21,(ausgleichRoll.12)+3
6836 3a6a 57FF sbrs r21,7
6837 3a6c 04C0 rjmp .L516
6838 3a6e 2150 subi r18,lo8(-(255))
6839 3a70 3F4F sbci r19,hi8(-(255))
6840 3a72 4F4F sbci r20,hlo8(-(255))
6841 3a74 5F4F sbci r21,hhi8(-(255))
6842 .L516:
6843 3a76 232F mov r18,r19
6844 3a78 342F mov r19,r20
6845 3a7a 452F mov r20,r21
6846 3a7c 5527 clr r21
6847 3a7e 47FD sbrc r20,7
6848 3a80 5A95 dec r21
6849 3a82 8091 0000 lds r24,LageKorrekturRoll
6850 3a86 9091 0000 lds r25,(LageKorrekturRoll)+1
6851 3a8a 820F add r24,r18
6852 3a8c 931F adc r25,r19
6853 3a8e 9093 0000 sts (LageKorrekturRoll)+1,r25
6854 3a92 8093 0000 sts LageKorrekturRoll,r24
6855 3a96 06C0 rjmp .L518
6856 .L511:
6857 3a98 81E0 ldi r24,lo8(1)
6858 3a9a 8093 0000 sts last_r_p.18,r24
6859 3a9e 02C0 rjmp .L518
6860 .L510:
6861 3aa0 1092 0000 sts last_r_p.18,__zero_reg__
6862 .L518:
6863 3aa4 20E0 ldi r18,lo8(-4096)
6864 3aa6 C216 cp r12,r18
6865 3aa8 20EF ldi r18,hi8(-4096)
6866 3aaa D206 cpc r13,r18
6867 3aac 2FEF ldi r18,hlo8(-4096)
6868 3aae E206 cpc r14,r18
6869 3ab0 2FEF ldi r18,hhi8(-4096)
6870 3ab2 F206 cpc r15,r18
6871 3ab4 0CF0 brlt .+2
6872 3ab6 73C0 rjmp .L519
6873 3ab8 8091 0000 lds r24,last_r_n.19
6874 3abc 8823 tst r24
6875 3abe 09F4 brne .+2
6876 3ac0 6AC0 rjmp .L520
6877 3ac2 D701 movw r26,r14
6878 3ac4 C601 movw r24,r12
6879 3ac6 F7FE sbrs r15,7
6880 3ac8 07C0 rjmp .L521
6881 3aca 8827 clr r24
6882 3acc 9927 clr r25
6883 3ace DC01 movw r26,r24
6884 3ad0 8C19 sub r24,r12
6885 3ad2 9D09 sbc r25,r13
6886 3ad4 AE09 sbc r26,r14
6887 3ad6 BF09 sbc r27,r15
6888 .L521:
6889 3ad8 9C01 movw r18,r24
6890 3ada AD01 movw r20,r26
6891 3adc B7FF sbrs r27,7
6892 3ade 04C0 rjmp .L522
6893 3ae0 2150 subi r18,lo8(-(511))
6894 3ae2 3E4F sbci r19,hi8(-(511))
6895 3ae4 4F4F sbci r20,hlo8(-(511))
6896 3ae6 5F4F sbci r21,hhi8(-(511))
6897 .L522:
6898 3ae8 E9E0 ldi r30,9
6899 3aea 5595 1: asr r21
6900 3aec 4795 ror r20
6901 3aee 3795 ror r19
6902 3af0 2795 ror r18
6903 3af2 EA95 dec r30
6904 3af4 D1F7 brne 1b
6905 3af6 8091 0000 lds r24,cnt.15
6906 3afa 9091 0000 lds r25,(cnt.15)+1
6907 3afe 820F add r24,r18
6908 3b00 931F adc r25,r19
6909 3b02 9093 0000 sts (cnt.15)+1,r25
6910 3b06 8093 0000 sts cnt.15,r24
6911 3b0a D701 movw r26,r14
6912 3b0c C601 movw r24,r12
6913 3b0e F7FE sbrs r15,7
6914 3b10 03C0 rjmp .L523
6915 3b12 0796 adiw r24,7
6916 3b14 A11D adc r26,__zero_reg__
6917 3b16 B11D adc r27,__zero_reg__
6918 .L523:
6919 3b18 73E0 ldi r23,3
6920 3b1a B595 1: asr r27
6921 3b1c A795 ror r26
6922 3b1e 9795 ror r25
6923 3b20 8795 ror r24
6924 3b22 7A95 dec r23
6925 3b24 D1F7 brne 1b
6926 3b26 8093 0000 sts ausgleichRoll.12,r24
6927 3b2a 9093 0000 sts (ausgleichRoll.12)+1,r25
6928 3b2e A093 0000 sts (ausgleichRoll.12)+2,r26
6929 3b32 B093 0000 sts (ausgleichRoll.12)+3,r27
6930 3b36 8857 subi r24,lo8(-5000)
6931 3b38 9C4E sbci r25,hi8(-5000)
6932 3b3a AF4F sbci r26,hlo8(-5000)
6933 3b3c BF4F sbci r27,hhi8(-5000)
6934 3b3e 64F4 brge .L524
6935 3b40 88E7 ldi r24,lo8(-5000)
6936 3b42 9CEE ldi r25,hi8(-5000)
6937 3b44 AFEF ldi r26,hlo8(-5000)
6938 3b46 BFEF ldi r27,hhi8(-5000)
6939 3b48 8093 0000 sts ausgleichRoll.12,r24
6940 3b4c 9093 0000 sts (ausgleichRoll.12)+1,r25
6941 3b50 A093 0000 sts (ausgleichRoll.12)+2,r26
6942 3b54 B093 0000 sts (ausgleichRoll.12)+3,r27
6943 .L524:
6944 3b58 2091 0000 lds r18,ausgleichRoll.12
6945 3b5c 3091 0000 lds r19,(ausgleichRoll.12)+1
6946 3b60 4091 0000 lds r20,(ausgleichRoll.12)+2
6947 3b64 5091 0000 lds r21,(ausgleichRoll.12)+3
6948 3b68 57FF sbrs r21,7
6949 3b6a 04C0 rjmp .L525
6950 3b6c 2150 subi r18,lo8(-(255))
6951 3b6e 3F4F sbci r19,hi8(-(255))
6952 3b70 4F4F sbci r20,hlo8(-(255))
6953 3b72 5F4F sbci r21,hhi8(-(255))
6954 .L525:
6955 3b74 232F mov r18,r19
6956 3b76 342F mov r19,r20
6957 3b78 452F mov r20,r21
6958 3b7a 5527 clr r21
6959 3b7c 47FD sbrc r20,7
6960 3b7e 5A95 dec r21
6961 3b80 8091 0000 lds r24,LageKorrekturRoll
6962 3b84 9091 0000 lds r25,(LageKorrekturRoll)+1
6963 3b88 820F add r24,r18
6964 3b8a 931F adc r25,r19
6965 3b8c 9093 0000 sts (LageKorrekturRoll)+1,r25
6966 3b90 8093 0000 sts LageKorrekturRoll,r24
6967 3b94 11C0 rjmp .L528
6968 .L520:
6969 3b96 81E0 ldi r24,lo8(1)
6970 3b98 8093 0000 sts last_r_n.19,r24
6971 3b9c 0DC0 rjmp .L528
6972 .L519:
6973 3b9e 1092 0000 sts last_r_n.19,__zero_reg__
6974 3ba2 0AC0 rjmp .L528
6975 .L508:
6976 3ba4 1092 0000 sts (cnt.15)+1,__zero_reg__
6977 3ba8 1092 0000 sts cnt.15,__zero_reg__
6978 3bac 88EE ldi r24,lo8(1000)
6979 3bae 93E0 ldi r25,hi8(1000)
6980 3bb0 9093 0000 sts (KompassSignalSchlecht)+1,r25
6981 3bb4 8093 0000 sts KompassSignalSchlecht,r24
6982 .L528:
6983 3bb8 4C85 ldd r20,Y+12
6984 3bba 242F mov r18,r20
6985 3bbc 3327 clr r19
6986 3bbe 8091 0000 lds r24,cnt.15
6987 3bc2 9091 0000 lds r25,(cnt.15)+1
6988 3bc6 2817 cp r18,r24
6989 3bc8 3907 cpc r19,r25
6990 3bca 24F4 brge .L529
6991 3bcc 3093 0000 sts (cnt.15)+1,r19
6992 3bd0 2093 0000 sts cnt.15,r18
6993 .L529:
6994 3bd4 8091 0000 lds r24,FromNaviCtrl_Value+1
6995 3bd8 8823 tst r24
6996 3bda 79F0 breq .L530
6997 3bdc 282F mov r18,r24
6998 3bde 3327 clr r19
6999 3be0 27FD sbrc r18,7
7000 3be2 3095 com r19
7001 3be4 8091 0000 lds r24,cnt.15
7002 3be8 9091 0000 lds r25,(cnt.15)+1
7003 3bec 2817 cp r18,r24
7004 3bee 3907 cpc r19,r25
7005 3bf0 24F4 brge .L530
7006 3bf2 3093 0000 sts (cnt.15)+1,r19
7007 3bf6 2093 0000 sts cnt.15,r18
7008 .L530:
7009 3bfa 4091 0000 lds r20,IntegralFehlerRoll.4
7010 3bfe 5091 0000 lds r21,(IntegralFehlerRoll.4)+1
7011 3c02 6091 0000 lds r22,(IntegralFehlerRoll.4)+2
7012 3c06 7091 0000 lds r23,(IntegralFehlerRoll.4)+3
7013 3c0a 4138 cpi r20,lo8(129)
7014 3c0c 5105 cpc r21,__zero_reg__
7015 3c0e 6105 cpc r22,__zero_reg__
7016 3c10 7105 cpc r23,__zero_reg__
7017 3c12 74F0 brlt .L532
7018 3c14 8091 0000 lds r24,AdNeutralRoll
7019 3c18 9091 0000 lds r25,(AdNeutralRoll)+1
7020 3c1c 2091 0000 lds r18,cnt.15
7021 3c20 3091 0000 lds r19,(cnt.15)+1
7022 3c24 820F add r24,r18
7023 3c26 931F adc r25,r19
7024 3c28 9093 0000 sts (AdNeutralRoll)+1,r25
7025 3c2c 8093 0000 sts AdNeutralRoll,r24
7026 .L532:
7027 3c30 4058 subi r20,lo8(-128)
7028 3c32 5F4F sbci r21,hi8(-128)
7029 3c34 6F4F sbci r22,hlo8(-128)
7030 3c36 7F4F sbci r23,hhi8(-128)
7031 3c38 CCF4 brge .L534
7032 3c3a 8091 0000 lds r24,AdNeutralRoll
7033 3c3e 9091 0000 lds r25,(AdNeutralRoll)+1
7034 3c42 2091 0000 lds r18,cnt.15
7035 3c46 3091 0000 lds r19,(cnt.15)+1
7036 3c4a 821B sub r24,r18
7037 3c4c 930B sbc r25,r19
7038 3c4e 9093 0000 sts (AdNeutralRoll)+1,r25
7039 3c52 8093 0000 sts AdNeutralRoll,r24
7040 3c56 0AC0 rjmp .L534
7041 .L460:
7042 3c58 1092 0000 sts (LageKorrekturRoll)+1,__zero_reg__
7043 3c5c 1092 0000 sts LageKorrekturRoll,__zero_reg__
7044 3c60 1092 0000 sts (LageKorrekturNick)+1,__zero_reg__
7045 3c64 1092 0000 sts LageKorrekturNick,__zero_reg__
7046 3c68 1092 0000 sts TrichterFlug,__zero_reg__
7047 .L534:
7048 3c6c 8091 0000 lds r24,IntegralFaktor
7049 3c70 8823 tst r24
7050 3c72 41F4 brne .L535
7051 3c74 1092 0000 sts (LageKorrekturRoll)+1,__zero_reg__
7052 3c78 1092 0000 sts LageKorrekturRoll,__zero_reg__
7053 3c7c 1092 0000 sts (LageKorrekturNick)+1,__zero_reg__
7054 3c80 1092 0000 sts LageKorrekturNick,__zero_reg__
7055 .L535:
7056 3c84 8091 0000 lds r24,MittelIntegralNick
7057 3c88 9091 0000 lds r25,(MittelIntegralNick)+1
7058 3c8c A091 0000 lds r26,(MittelIntegralNick)+2
7059 3c90 B091 0000 lds r27,(MittelIntegralNick)+3
7060 3c94 8093 0000 sts MittelIntegralNick_Alt.20,r24
7061 3c98 9093 0000 sts (MittelIntegralNick_Alt.20)+1,r25
7062 3c9c A093 0000 sts (MittelIntegralNick_Alt.20)+2,r26
7063 3ca0 B093 0000 sts (MittelIntegralNick_Alt.20)+3,r27
7064 3ca4 8091 0000 lds r24,MittelIntegralRoll
7065 3ca8 9091 0000 lds r25,(MittelIntegralRoll)+1
7066 3cac A091 0000 lds r26,(MittelIntegralRoll)+2
7067 3cb0 B091 0000 lds r27,(MittelIntegralRoll)+3
7068 3cb4 8093 0000 sts MittelIntegralRoll_Alt.21,r24
7069 3cb8 9093 0000 sts (MittelIntegralRoll_Alt.21)+1,r25
7070 3cbc A093 0000 sts (MittelIntegralRoll_Alt.21)+2,r26
7071 3cc0 B093 0000 sts (MittelIntegralRoll_Alt.21)+3,r27
7072 3cc4 1092 0000 sts IntegralAccNick,__zero_reg__
7073 3cc8 1092 0000 sts (IntegralAccNick)+1,__zero_reg__
7074 3ccc 1092 0000 sts (IntegralAccNick)+2,__zero_reg__
7075 3cd0 1092 0000 sts (IntegralAccNick)+3,__zero_reg__
7076 3cd4 1092 0000 sts IntegralAccRoll,__zero_reg__
7077 3cd8 1092 0000 sts (IntegralAccRoll)+1,__zero_reg__
7078 3cdc 1092 0000 sts (IntegralAccRoll)+2,__zero_reg__
7079 3ce0 1092 0000 sts (IntegralAccRoll)+3,__zero_reg__
7080 3ce4 1092 0000 sts IntegralAccZ,__zero_reg__
7081 3ce8 1092 0000 sts (IntegralAccZ)+1,__zero_reg__
7082 3cec 1092 0000 sts (IntegralAccZ)+2,__zero_reg__
7083 3cf0 1092 0000 sts (IntegralAccZ)+3,__zero_reg__
7084 3cf4 1092 0000 sts MittelIntegralNick,__zero_reg__
7085 3cf8 1092 0000 sts (MittelIntegralNick)+1,__zero_reg__
7086 3cfc 1092 0000 sts (MittelIntegralNick)+2,__zero_reg__
7087 3d00 1092 0000 sts (MittelIntegralNick)+3,__zero_reg__
7088 3d04 1092 0000 sts MittelIntegralRoll,__zero_reg__
7089 3d08 1092 0000 sts (MittelIntegralRoll)+1,__zero_reg__
7090 3d0c 1092 0000 sts (MittelIntegralRoll)+2,__zero_reg__
7091 3d10 1092 0000 sts (MittelIntegralRoll)+3,__zero_reg__
7092 3d14 1092 0000 sts MittelIntegralNick2,__zero_reg__
7093 3d18 1092 0000 sts (MittelIntegralNick2)+1,__zero_reg__
7094 3d1c 1092 0000 sts (MittelIntegralNick2)+2,__zero_reg__
7095 3d20 1092 0000 sts (MittelIntegralNick2)+3,__zero_reg__
7096 3d24 1092 0000 sts MittelIntegralRoll2,__zero_reg__
7097 3d28 1092 0000 sts (MittelIntegralRoll2)+1,__zero_reg__
7098 3d2c 1092 0000 sts (MittelIntegralRoll2)+2,__zero_reg__
7099 3d30 1092 0000 sts (MittelIntegralRoll2)+3,__zero_reg__
7100 3d34 1092 0000 sts (ZaehlMessungen)+1,__zero_reg__
7101 3d38 1092 0000 sts ZaehlMessungen,__zero_reg__
7102 .L459:
7103 3d3c E090 0000 lds r14,StickGier
7104 3d40 F090 0000 lds r15,(StickGier)+1
7105 3d44 C701 movw r24,r14
7106 3d46 F7FE sbrs r15,7
7107 3d48 04C0 rjmp .L537
7108 3d4a 8827 clr r24
7109 3d4c 9927 clr r25
7110 3d4e 8E19 sub r24,r14
7111 3d50 9F09 sbc r25,r15
7112 .L537:
7113 3d52 4097 sbiw r24,16
7114 3d54 6CF0 brlt .L536
7115 3d56 88EE ldi r24,lo8(1000)
7116 3d58 93E0 ldi r25,hi8(1000)
7117 3d5a 9093 0000 sts (KompassSignalSchlecht)+1,r25
7118 3d5e 8093 0000 sts KompassSignalSchlecht,r24
7119 3d62 8091 0000 lds r24,EE_Parameter+13
7120 3d66 84FD sbrc r24,4
7121 3d68 03C0 rjmp .L536
7122 3d6a 81E0 ldi r24,lo8(1)
7123 3d6c 8093 0000 sts NeueKompassRichtungMerken.10,r24
7124 .L536:
7125 3d70 1091 0000 lds r17,EE_Parameter+25
7126 3d74 A12E mov r10,r17
7127 3d76 BB24 clr r11
7128 3d78 CC24 clr r12
7129 3d7a DD24 clr r13
7130 3d7c B701 movw r22,r14
7131 3d7e 8827 clr r24
7132 3d80 77FD sbrc r23,7
7133 3d82 8095 com r24
7134 3d84 982F mov r25,r24
7135 3d86 9701 movw r18,r14
7136 3d88 F7FE sbrs r15,7
7137 3d8a 04C0 rjmp .L539
7138 3d8c 2227 clr r18
7139 3d8e 3327 clr r19
7140 3d90 2E19 sub r18,r14
7141 3d92 3F09 sbc r19,r15
7142 .L539:
7143 3d94 4427 clr r20
7144 3d96 37FD sbrc r19,7
7145 3d98 4095 com r20
7146 3d9a 542F mov r21,r20
7147 3d9c 0E94 0000 call __mulsi3
7148 3da0 9B01 movw r18,r22
7149 3da2 AC01 movw r20,r24
7150 3da4 C601 movw r24,r12
7151 3da6 B501 movw r22,r10
7152 3da8 0E94 0000 call __mulsi3
7153 3dac 97FF sbrs r25,7
7154 3dae 04C0 rjmp .L540
7155 3db0 6150 subi r22,lo8(-(511))
7156 3db2 7E4F sbci r23,hi8(-(511))
7157 3db4 8F4F sbci r24,hlo8(-(511))
7158 3db6 9F4F sbci r25,hhi8(-(511))
7159 .L540:
7160 3db8 59E0 ldi r21,9
7161 3dba 9595 1: asr r25
7162 3dbc 8795 ror r24
7163 3dbe 7795 ror r23
7164 3dc0 6795 ror r22
7165 3dc2 5A95 dec r21
7166 3dc4 D1F7 brne 1b
7167 3dc6 9B01 movw r18,r22
7168 3dc8 812F mov r24,r17
7169 3dca 9927 clr r25
7170 3dcc 8E9D mul r24,r14
7171 3dce D001 movw r26,r0
7172 3dd0 8F9D mul r24,r15
7173 3dd2 B00D add r27,r0
7174 3dd4 9E9D mul r25,r14
7175 3dd6 B00D add r27,r0
7176 3dd8 1124 clr r1
7177 3dda CD01 movw r24,r26
7178 3ddc B7FD sbrc r27,7
7179 3dde 0396 adiw r24,3
7180 .L541:
7181 3de0 9595 asr r25
7182 3de2 8795 ror r24
7183 3de4 9595 asr r25
7184 3de6 8795 ror r24
7185 3de8 280F add r18,r24
7186 3dea 391F adc r19,r25
7187 3dec 4427 clr r20
7188 3dee 37FD sbrc r19,7
7189 3df0 4095 com r20
7190 3df2 542F mov r21,r20
7191 3df4 2093 0000 sts sollGier.0,r18
7192 3df8 3093 0000 sts (sollGier.0)+1,r19
7193 3dfc 4093 0000 sts (sollGier.0)+2,r20
7194 3e00 5093 0000 sts (sollGier.0)+3,r21
7195 3e04 8091 0000 lds r24,Mess_Integral_Gier
7196 3e08 9091 0000 lds r25,(Mess_Integral_Gier)+1
7197 3e0c A091 0000 lds r26,(Mess_Integral_Gier)+2
7198 3e10 B091 0000 lds r27,(Mess_Integral_Gier)+3
7199 3e14 821B sub r24,r18
7200 3e16 930B sbc r25,r19
7201 3e18 A40B sbc r26,r20
7202 3e1a B50B sbc r27,r21
7203 3e1c 8093 0000 sts Mess_Integral_Gier,r24
7204 3e20 9093 0000 sts (Mess_Integral_Gier)+1,r25
7205 3e24 A093 0000 sts (Mess_Integral_Gier)+2,r26
7206 3e28 B093 0000 sts (Mess_Integral_Gier)+3,r27
7207 3e2c 8155 subi r24,lo8(50001)
7208 3e2e 934C sbci r25,hi8(50001)
7209 3e30 A040 sbci r26,hlo8(50001)
7210 3e32 B040 sbci r27,hhi8(50001)
7211 3e34 64F0 brlt .L542
7212 3e36 80E5 ldi r24,lo8(50000)
7213 3e38 93EC ldi r25,hi8(50000)
7214 3e3a A0E0 ldi r26,hlo8(50000)
7215 3e3c B0E0 ldi r27,hhi8(50000)
7216 3e3e 8093 0000 sts Mess_Integral_Gier,r24
7217 3e42 9093 0000 sts (Mess_Integral_Gier)+1,r25
7218 3e46 A093 0000 sts (Mess_Integral_Gier)+2,r26
7219 3e4a B093 0000 sts (Mess_Integral_Gier)+3,r27
7220 .L542:
7221 3e4e 8091 0000 lds r24,Mess_Integral_Gier
7222 3e52 9091 0000 lds r25,(Mess_Integral_Gier)+1
7223 3e56 A091 0000 lds r26,(Mess_Integral_Gier)+2
7224 3e5a B091 0000 lds r27,(Mess_Integral_Gier)+3
7225 3e5e 805B subi r24,lo8(-50000)
7226 3e60 9C43 sbci r25,hi8(-50000)
7227 3e62 AF4F sbci r26,hlo8(-50000)
7228 3e64 BF4F sbci r27,hhi8(-50000)
7229 3e66 64F4 brge .L543
7230 3e68 80EB ldi r24,lo8(-50000)
7231 3e6a 9CE3 ldi r25,hi8(-50000)
7232 3e6c AFEF ldi r26,hlo8(-50000)
7233 3e6e BFEF ldi r27,hhi8(-50000)
7234 3e70 8093 0000 sts Mess_Integral_Gier,r24
7235 3e74 9093 0000 sts (Mess_Integral_Gier)+1,r25
7236 3e78 A093 0000 sts (Mess_Integral_Gier)+2,r26
7237 3e7c B093 0000 sts (Mess_Integral_Gier)+3,r27
7238 .L543:
7239 3e80 4090 0000 lds r4,KompassValue
7240 3e84 5090 0000 lds r5,(KompassValue)+1
7241 3e88 4114 cp r4,__zero_reg__
7242 3e8a 5104 cpc r5,__zero_reg__
7243 3e8c 09F4 brne .+2
7244 3e8e 78C1 rjmp .L544
7245 3e90 8091 0000 lds r24,EE_Parameter+13
7246 3e94 83FF sbrs r24,3
7247 3e96 74C1 rjmp .L544
7248 3e98 8091 0000 lds r24,IntegralNick
7249 3e9c 9091 0000 lds r25,(IntegralNick)+1
7250 3ea0 A091 0000 lds r26,(IntegralNick)+2
7251 3ea4 B091 0000 lds r27,(IntegralNick)+3
7252 3ea8 B7FF sbrs r27,7
7253 3eaa 04C0 rjmp .L545
7254 3eac 8150 subi r24,lo8(-(511))
7255 3eae 9E4F sbci r25,hi8(-(511))
7256 3eb0 AF4F sbci r26,hlo8(-(511))
7257 3eb2 BF4F sbci r27,hhi8(-(511))
7258 .L545:
7259 3eb4 39E0 ldi r19,9
7260 3eb6 B595 1: asr r27
7261 3eb8 A795 ror r26
7262 3eba 9795 ror r25
7263 3ebc 8795 ror r24
7264 3ebe 3A95 dec r19
7265 3ec0 D1F7 brne 1b
7266 3ec2 6C01 movw r12,r24
7267 3ec4 97FF sbrs r25,7
7268 3ec6 04C0 rjmp .L546
7269 3ec8 D094 com r13
7270 3eca C194 neg r12
7271 3ecc D108 sbc r13,__zero_reg__
7272 3ece D394 inc r13
7273 .L546:
7274 3ed0 8091 0000 lds r24,IntegralRoll
7275 3ed4 9091 0000 lds r25,(IntegralRoll)+1
7276 3ed8 A091 0000 lds r26,(IntegralRoll)+2
7277 3edc B091 0000 lds r27,(IntegralRoll)+3
7278 3ee0 B7FF sbrs r27,7
7279 3ee2 04C0 rjmp .L547
7280 3ee4 8150 subi r24,lo8(-(511))
7281 3ee6 9E4F sbci r25,hi8(-(511))
7282 3ee8 AF4F sbci r26,hlo8(-(511))
7283 3eea BF4F sbci r27,hhi8(-(511))
7284 .L547:
7285 3eec 29E0 ldi r18,9
7286 3eee B595 1: asr r27
7287 3ef0 A795 ror r26
7288 3ef2 9795 ror r25
7289 3ef4 8795 ror r24
7290 3ef6 2A95 dec r18
7291 3ef8 D1F7 brne 1b
7292 3efa BC01 movw r22,r24
7293 3efc 97FF sbrs r25,7
7294 3efe 03C0 rjmp .L548
7295 3f00 7095 com r23
7296 3f02 6195 neg r22
7297 3f04 7F4F sbci r23,lo8(-1)
7298 .L548:
7299 3f06 C616 cp r12,r22
7300 3f08 D706 cpc r13,r23
7301 3f0a 0CF4 brge .L549
7302 3f0c 6B01 movw r12,r22
7303 .L549:
7304 3f0e B601 movw r22,r12
7305 3f10 D7FE sbrs r13,7
7306 3f12 02C0 rjmp .L550
7307 3f14 695F subi r22,lo8(-(7))
7308 3f16 7F4F sbci r23,hi8(-(7))
7309 .L550:
7310 3f18 3B01 movw r6,r22
7311 3f1a 83E0 ldi r24,3
7312 3f1c 7594 1: asr r7
7313 3f1e 6794 ror r6
7314 3f20 8A95 dec r24
7315 3f22 E1F7 brne 1b
7316 3f24 02E0 ldi r16,lo8(2)
7317 3f26 E02E mov r14,r16
7318 3f28 F12C mov r15,__zero_reg__
7319 3f2a 6E0C add r6,r14
7320 3f2c 7F1C adc r7,r15
7321 3f2e 0CE1 ldi r16,lo8(540)
7322 3f30 12E0 ldi r17,hi8(540)
7323 3f32 400E add r4,r16
7324 3f34 511E adc r5,r17
7325 3f36 7201 movw r14,r4
7326 3f38 0027 clr r16
7327 3f3a F7FC sbrc r15,7
7328 3f3c 0095 com r16
7329 3f3e 102F mov r17,r16
7330 3f40 24EE ldi r18,lo8(-540)
7331 3f42 3DEF ldi r19,hi8(-540)
7332 3f44 420E add r4,r18
7333 3f46 531E adc r5,r19
7334 3f48 8091 0000 lds r24,ErsatzKompass
7335 3f4c 9091 0000 lds r25,(ErsatzKompass)+1
7336 3f50 A091 0000 lds r26,(ErsatzKompass)+2
7337 3f54 B091 0000 lds r27,(ErsatzKompass)+3
7338 3f58 8090 0000 lds r8,GIER_GRAD_FAKTOR
7339 3f5c 9090 0000 lds r9,(GIER_GRAD_FAKTOR)+1
7340 3f60 A090 0000 lds r10,(GIER_GRAD_FAKTOR)+2
7341 3f64 B090 0000 lds r11,(GIER_GRAD_FAKTOR)+3
7342 3f68 BC01 movw r22,r24
7343 3f6a CD01 movw r24,r26
7344 3f6c A501 movw r20,r10
7345 3f6e 9401 movw r18,r8
7346 3f70 0E94 0000 call __divmodsi4
7347 3f74 E21A sub r14,r18
7348 3f76 F30A sbc r15,r19
7349 3f78 040B sbc r16,r20
7350 3f7a 150B sbc r17,r21
7351 3f7c C801 movw r24,r16
7352 3f7e B701 movw r22,r14
7353 3f80 28E6 ldi r18,lo8(360)
7354 3f82 31E0 ldi r19,hi8(360)
7355 3f84 40E0 ldi r20,hlo8(360)
7356 3f86 50E0 ldi r21,hhi8(360)
7357 3f88 0E94 0000 call __divmodsi4
7358 3f8c DC01 movw r26,r24
7359 3f8e CB01 movw r24,r22
7360 3f90 1CE4 ldi r17,lo8(-180)
7361 3f92 E12E mov r14,r17
7362 3f94 1FEF ldi r17,hi8(-180)
7363 3f96 F12E mov r15,r17
7364 3f98 E80E add r14,r24
7365 3f9a F91E adc r15,r25
7366 3f9c 0091 0000 lds r16,KompassSignalSchlecht
7367 3fa0 1091 0000 lds r17,(KompassSignalSchlecht)+1
7368 3fa4 0115 cp r16,__zero_reg__
7369 3fa6 1105 cpc r17,__zero_reg__
7370 3fa8 89F5 brne .L551
7371 3faa 39E1 ldi r19,lo8(25)
7372 3fac C316 cp r12,r19
7373 3fae D104 cpc r13,__zero_reg__
7374 3fb0 6CF5 brge .L551
7375 3fb2 8091 0000 lds r24,GierGyroFehler
7376 3fb6 9091 0000 lds r25,(GierGyroFehler)+1
7377 3fba 8E0D add r24,r14
7378 3fbc 9F1D adc r25,r15
7379 3fbe 9093 0000 sts (GierGyroFehler)+1,r25
7380 3fc2 8093 0000 sts GierGyroFehler,r24
7381 3fc6 8091 0000 lds r24,NeueKompassRichtungMerken.10
7382 3fca 8823 tst r24
7383 3fcc F9F0 breq .L551
7384 3fce C201 movw r24,r4
7385 3fd0 AA27 clr r26
7386 3fd2 97FD sbrc r25,7
7387 3fd4 A095 com r26
7388 3fd6 BA2F mov r27,r26
7389 3fd8 BC01 movw r22,r24
7390 3fda CD01 movw r24,r26
7391 3fdc A501 movw r20,r10
7392 3fde 9401 movw r18,r8
7393 3fe0 0E94 0000 call __mulsi3
7394 3fe4 DC01 movw r26,r24
7395 3fe6 CB01 movw r24,r22
7396 3fe8 8093 0000 sts ErsatzKompass,r24
7397 3fec 9093 0000 sts (ErsatzKompass)+1,r25
7398 3ff0 A093 0000 sts (ErsatzKompass)+2,r26
7399 3ff4 B093 0000 sts (ErsatzKompass)+3,r27
7400 3ff8 BC01 movw r22,r24
7401 3ffa CD01 movw r24,r26
7402 3ffc 0E94 0000 call __divmodsi4
7403 4000 3093 0000 sts (KompassStartwert)+1,r19
7404 4004 2093 0000 sts KompassStartwert,r18
7405 4008 1092 0000 sts NeueKompassRichtungMerken.10,__zero_reg__
7406 .L551:
7407 400c C701 movw r24,r14
7408 400e B4E0 ldi r27,4
7409 4010 880F 1: lsl r24
7410 4012 991F rol r25
7411 4014 BA95 dec r27
7412 4016 E1F7 brne 1b
7413 4018 B301 movw r22,r6
7414 401a 0E94 0000 call __divmodhi4
7415 401e CB01 movw r24,r22
7416 4020 AA27 clr r26
7417 4022 97FD sbrc r25,7
7418 4024 A095 com r26
7419 4026 BA2F mov r27,r26
7420 4028 2091 0000 lds r18,ErsatzKompass
7421 402c 3091 0000 lds r19,(ErsatzKompass)+1
7422 4030 4091 0000 lds r20,(ErsatzKompass)+2
7423 4034 5091 0000 lds r21,(ErsatzKompass)+3
7424 4038 280F add r18,r24
7425 403a 391F adc r19,r25
7426 403c 4A1F adc r20,r26
7427 403e 5B1F adc r21,r27
7428 4040 2093 0000 sts ErsatzKompass,r18
7429 4044 3093 0000 sts (ErsatzKompass)+1,r19
7430 4048 4093 0000 sts (ErsatzKompass)+2,r20
7431 404c 5093 0000 sts (ErsatzKompass)+3,r21
7432 4050 F090 0000 lds r15,Parameter_KompassWirkung
7433 4054 6F2D mov r22,r15
7434 4056 7727 clr r23
7435 4058 C69E mul r12,r22
7436 405a C001 movw r24,r0
7437 405c C79E mul r12,r23
7438 405e 900D add r25,r0
7439 4060 D69E mul r13,r22
7440 4062 900D add r25,r0
7441 4064 1124 clr r1
7442 4066 97FD sbrc r25,7
7443 4068 4F96 adiw r24,31
7444 .L553:
7445 406a 6C01 movw r12,r24
7446 406c A5E0 ldi r26,5
7447 406e D594 1: asr r13
7448 4070 C794 ror r12
7449 4072 AA95 dec r26
7450 4074 E1F7 brne 1b
7451 4076 6C19 sub r22,r12
7452 4078 7D09 sbc r23,r13
7453 407a 6B01 movw r12,r22
7454 407c 77FD sbrc r23,7
7455 407e 7AC0 rjmp .L554
7456 4080 0115 cp r16,__zero_reg__
7457 4082 1105 cpc r17,__zero_reg__
7458 4084 09F0 breq .+2
7459 4086 6FC0 rjmp .L789
7460 4088 0091 0000 lds r16,MaxStickNick
7461 408c 1091 0000 lds r17,(MaxStickNick)+1
7462 4090 8091 0000 lds r24,MaxStickRoll
7463 4094 9091 0000 lds r25,(MaxStickRoll)+1
7464 4098 080F add r16,r24
7465 409a 191F adc r17,r25
7466 409c 17FF sbrs r17,7
7467 409e 02C0 rjmp .L556
7468 40a0 095F subi r16,lo8(-(7))
7469 40a2 1F4F sbci r17,hi8(-(7))
7470 .L556:
7471 40a4 F3E0 ldi r31,3
7472 40a6 1595 1: asr r17
7473 40a8 0795 ror r16
7474 40aa FA95 dec r31
7475 40ac E1F7 brne 1b
7476 40ae 005C subi r16,lo8(-(64))
7477 40b0 1F4F sbci r17,hi8(-(64))
7478 40b2 CA01 movw r24,r20
7479 40b4 B901 movw r22,r18
7480 40b6 A501 movw r20,r10
7481 40b8 9401 movw r18,r8
7482 40ba 0E94 0000 call __divmodsi4
7483 40be DA01 movw r26,r20
7484 40c0 C901 movw r24,r18
7485 40c2 2091 0000 lds r18,KompassStartwert
7486 40c6 3091 0000 lds r19,(KompassStartwert)+1
7487 40ca 4427 clr r20
7488 40cc 37FD sbrc r19,7
7489 40ce 4095 com r20
7490 40d0 542F mov r21,r20
7491 40d2 821B sub r24,r18
7492 40d4 930B sbc r25,r19
7493 40d6 A40B sbc r26,r20
7494 40d8 B50B sbc r27,r21
7495 40da 845E subi r24,lo8(-(540))
7496 40dc 9D4F sbci r25,hi8(-(540))
7497 40de AF4F sbci r26,hlo8(-(540))
7498 40e0 BF4F sbci r27,hhi8(-(540))
7499 40e2 BC01 movw r22,r24
7500 40e4 CD01 movw r24,r26
7501 40e6 28E6 ldi r18,lo8(360)
7502 40e8 31E0 ldi r19,hi8(360)
7503 40ea 40E0 ldi r20,hlo8(360)
7504 40ec 50E0 ldi r21,hhi8(360)
7505 40ee 0E94 0000 call __divmodsi4
7506 40f2 DC01 movw r26,r24
7507 40f4 CB01 movw r24,r22
7508 40f6 845B subi r24,lo8(-(-180))
7509 40f8 9040 sbci r25,hi8(-(-180))
7510 40fa 8C9D mul r24,r12
7511 40fc A001 movw r20,r0
7512 40fe 8D9D mul r24,r13
7513 4100 500D add r21,r0
7514 4102 9C9D mul r25,r12
7515 4104 500D add r21,r0
7516 4106 1124 clr r1
7517 4108 CA01 movw r24,r20
7518 410a B801 movw r22,r16
7519 410c 0E94 0000 call __divmodhi4
7520 4110 83E0 ldi r24,lo8(3)
7521 4112 F89E mul r15,r24
7522 4114 6001 movw r12,r0
7523 4116 1124 clr r1
7524 4118 C616 cp r12,r22
7525 411a D706 cpc r13,r23
7526 411c 14F4 brge .L557
7527 411e B601 movw r22,r12
7528 4120 08C0 rjmp .L558
7529 .L557:
7530 4122 8827 clr r24
7531 4124 9927 clr r25
7532 4126 8C19 sub r24,r12
7533 4128 9D09 sbc r25,r13
7534 412a 6817 cp r22,r24
7535 412c 7907 cpc r23,r25
7536 412e 0CF4 brge .L558
7537 4130 BC01 movw r22,r24
7538 .L558:
7539 4132 9B01 movw r18,r22
7540 4134 4427 clr r20
7541 4136 37FD sbrc r19,7
7542 4138 4095 com r20
7543 413a 542F mov r21,r20
7544 413c 8091 0000 lds r24,Mess_Integral_Gier
7545 4140 9091 0000 lds r25,(Mess_Integral_Gier)+1
7546 4144 A091 0000 lds r26,(Mess_Integral_Gier)+2
7547 4148 B091 0000 lds r27,(Mess_Integral_Gier)+3
7548 414c 820F add r24,r18
7549 414e 931F adc r25,r19
7550 4150 A41F adc r26,r20
7551 4152 B51F adc r27,r21
7552 4154 8093 0000 sts Mess_Integral_Gier,r24
7553 4158 9093 0000 sts (Mess_Integral_Gier)+1,r25
7554 415c A093 0000 sts (Mess_Integral_Gier)+2,r26
7555 4160 B093 0000 sts (Mess_Integral_Gier)+3,r27
7556 4164 0DC0 rjmp .L544
7557 .L789:
7558 4166 0150 subi r16,lo8(-(-1))
7559 4168 1040 sbci r17,hi8(-(-1))
7560 416a 1093 0000 sts (KompassSignalSchlecht)+1,r17
7561 416e 0093 0000 sts KompassSignalSchlecht,r16
7562 4172 06C0 rjmp .L544
7563 .L554:
7564 4174 84EF ldi r24,lo8(500)
7565 4176 91E0 ldi r25,hi8(500)
7566 4178 9093 0000 sts (KompassSignalSchlecht)+1,r25
7567 417c 8093 0000 sts KompassSignalSchlecht,r24
7568 .L544:
7569 4180 8091 0000 lds r24,TrichterFlug
7570 4184 8823 tst r24
7571 4186 81F0 breq .L562
7572 4188 1092 0000 sts SummeRoll,__zero_reg__
7573 418c 1092 0000 sts (SummeRoll)+1,__zero_reg__
7574 4190 1092 0000 sts (SummeRoll)+2,__zero_reg__
7575 4194 1092 0000 sts (SummeRoll)+3,__zero_reg__
7576 4198 1092 0000 sts SummeNick,__zero_reg__
7577 419c 1092 0000 sts (SummeNick)+1,__zero_reg__
7578 41a0 1092 0000 sts (SummeNick)+2,__zero_reg__
7579 41a4 1092 0000 sts (SummeNick)+3,__zero_reg__
7580 .L562:
7581 41a8 F090 0000 lds r15,Looping_Nick
7582 41ac FF20 tst r15
7583 41ae F1F4 brne .L563
7584 41b0 8091 0000 lds r24,IntegralFaktor
7585 41b4 282F mov r18,r24
7586 41b6 3327 clr r19
7587 41b8 4427 clr r20
7588 41ba 5527 clr r21
7589 41bc 8091 0000 lds r24,IntegralNick
7590 41c0 9091 0000 lds r25,(IntegralNick)+1
7591 41c4 A091 0000 lds r26,(IntegralNick)+2
7592 41c8 B091 0000 lds r27,(IntegralNick)+3
7593 41cc BC01 movw r22,r24
7594 41ce CD01 movw r24,r26
7595 41d0 0E94 0000 call __mulsi3
7596 41d4 DC01 movw r26,r24
7597 41d6 CB01 movw r24,r22
7598 41d8 BC01 movw r22,r24
7599 41da CD01 movw r24,r26
7600 41dc 28EF ldi r18,lo8(11000)
7601 41de 3AE2 ldi r19,hi8(11000)
7602 41e0 40E0 ldi r20,hlo8(11000)
7603 41e2 50E0 ldi r21,hhi8(11000)
7604 41e4 0E94 0000 call __divmodsi4
7605 41e8 3901 movw r6,r18
7606 41ea 02C0 rjmp .L564
7607 .L563:
7608 41ec 6624 clr r6
7609 41ee 7724 clr r7
7610 .L564:
7611 41f0 E090 0000 lds r14,Looping_Roll
7612 41f4 EE20 tst r14
7613 41f6 F1F4 brne .L565
7614 41f8 8091 0000 lds r24,IntegralFaktor
7615 41fc 282F mov r18,r24
7616 41fe 3327 clr r19
7617 4200 4427 clr r20
7618 4202 5527 clr r21
7619 4204 8091 0000 lds r24,IntegralRoll
7620 4208 9091 0000 lds r25,(IntegralRoll)+1
7621 420c A091 0000 lds r26,(IntegralRoll)+2
7622 4210 B091 0000 lds r27,(IntegralRoll)+3
7623 4214 BC01 movw r22,r24
7624 4216 CD01 movw r24,r26
7625 4218 0E94 0000 call __mulsi3
7626 421c DC01 movw r26,r24
7627 421e CB01 movw r24,r22
7628 4220 BC01 movw r22,r24
7629 4222 CD01 movw r24,r26
7630 4224 28EF ldi r18,lo8(11000)
7631 4226 3AE2 ldi r19,hi8(11000)
7632 4228 40E0 ldi r20,hlo8(11000)
7633 422a 50E0 ldi r21,hhi8(11000)
7634 422c 0E94 0000 call __divmodsi4
7635 4230 2901 movw r4,r18
7636 4232 02C0 rjmp .L566
7637 .L565:
7638 4234 4424 clr r4
7639 4236 5524 clr r5
7640 .L566:
7641 4238 8091 0000 lds r24,TrimNick
7642 423c 9091 0000 lds r25,(TrimNick)+1
7643 4240 893C cpi r24,201
7644 4242 9105 cpc r25,__zero_reg__
7645 4244 1CF0 brlt .L567
7646 4246 88EC ldi r24,lo8(200)
7647 4248 90E0 ldi r25,hi8(200)
7648 424a 05C0 rjmp .L794
7649 .L567:
7650 424c 8853 subi r24,lo8(-200)
7651 424e 9F4F sbci r25,hi8(-200)
7652 4250 34F4 brge .L568
7653 4252 88E3 ldi r24,lo8(-200)
7654 4254 9FEF ldi r25,hi8(-200)
7655 .L794:
7656 4256 9093 0000 sts (TrimNick)+1,r25
7657 425a 8093 0000 sts TrimNick,r24
7658 .L568:
7659 425e 8091 0000 lds r24,TrimRoll
7660 4262 9091 0000 lds r25,(TrimRoll)+1
7661 4266 893C cpi r24,201
7662 4268 9105 cpc r25,__zero_reg__
7663 426a 1CF0 brlt .L570
7664 426c 88EC ldi r24,lo8(200)
7665 426e 90E0 ldi r25,hi8(200)
7666 4270 05C0 rjmp .L795
7667 .L570:
7668 4272 8853 subi r24,lo8(-200)
7669 4274 9F4F sbci r25,hi8(-200)
7670 4276 34F4 brge .L571
7671 4278 88E3 ldi r24,lo8(-200)
7672 427a 9FEF ldi r25,hi8(-200)
7673 .L795:
7674 427c 9093 0000 sts (TrimRoll)+1,r25
7675 4280 8093 0000 sts TrimRoll,r24
7676 .L571:
7677 4284 8091 0000 lds r24,MesswertNick
7678 4288 9091 0000 lds r25,(MesswertNick)+1
7679 428c AA27 clr r26
7680 428e 97FD sbrc r25,7
7681 4290 A095 com r26
7682 4292 BA2F mov r27,r26
7683 4294 2091 0000 lds r18,GyroFaktor
7684 4298 A22E mov r10,r18
7685 429a BB24 clr r11
7686 429c CC24 clr r12
7687 429e DD24 clr r13
7688 42a0 BC01 movw r22,r24
7689 42a2 CD01 movw r24,r26
7690 42a4 A601 movw r20,r12
7691 42a6 9501 movw r18,r10
7692 42a8 0E94 0000 call __mulsi3
7693 42ac 9B01 movw r18,r22
7694 42ae AC01 movw r20,r24
7695 42b0 8091 0000 lds r24,TrimNick
7696 42b4 9091 0000 lds r25,(TrimNick)+1
7697 42b8 AA27 clr r26
7698 42ba 97FD sbrc r25,7
7699 42bc A095 com r26
7700 42be BA2F mov r27,r26
7701 42c0 E7E0 ldi r30,7
7702 42c2 880F 1: lsl r24
7703 42c4 991F rol r25
7704 42c6 AA1F rol r26
7705 42c8 BB1F rol r27
7706 42ca EA95 dec r30
7707 42cc D1F7 brne 1b
7708 42ce 280F add r18,r24
7709 42d0 391F adc r19,r25
7710 42d2 4A1F adc r20,r26
7711 42d4 5B1F adc r21,r27
7712 42d6 57FF sbrs r21,7
7713 42d8 04C0 rjmp .L573
7714 42da 215C subi r18,lo8(-(63))
7715 42dc 3F4F sbci r19,hi8(-(63))
7716 42de 4F4F sbci r20,hlo8(-(63))
7717 42e0 5F4F sbci r21,hhi8(-(63))
7718 .L573:
7719 42e2 76E0 ldi r23,6
7720 42e4 5595 1: asr r21
7721 42e6 4795 ror r20
7722 42e8 3795 ror r19
7723 42ea 2795 ror r18
7724 42ec 7A95 dec r23
7725 42ee D1F7 brne 1b
7726 42f0 8301 movw r16,r6
7727 42f2 020F add r16,r18
7728 42f4 131F adc r17,r19
7729 42f6 1093 0000 sts (MesswertNick)+1,r17
7730 42fa 0093 0000 sts MesswertNick,r16
7731 42fe 8091 0000 lds r24,MesswertRoll
7732 4302 9091 0000 lds r25,(MesswertRoll)+1
7733 4306 AA27 clr r26
7734 4308 97FD sbrc r25,7
7735 430a A095 com r26
7736 430c BA2F mov r27,r26
7737 430e BC01 movw r22,r24
7738 4310 CD01 movw r24,r26
7739 4312 A601 movw r20,r12
7740 4314 9501 movw r18,r10
7741 4316 0E94 0000 call __mulsi3
7742 431a 9B01 movw r18,r22
7743 431c AC01 movw r20,r24
7744 431e 8091 0000 lds r24,TrimRoll
7745 4322 9091 0000 lds r25,(TrimRoll)+1
7746 4326 AA27 clr r26
7747 4328 97FD sbrc r25,7
7748 432a A095 com r26
7749 432c BA2F mov r27,r26
7750 432e 67E0 ldi r22,7
7751 4330 880F 1: lsl r24
7752 4332 991F rol r25
7753 4334 AA1F rol r26
7754 4336 BB1F rol r27
7755 4338 6A95 dec r22
7756 433a D1F7 brne 1b
7757 433c 280F add r18,r24
7758 433e 391F adc r19,r25
7759 4340 4A1F adc r20,r26
7760 4342 5B1F adc r21,r27
7761 4344 57FF sbrs r21,7
7762 4346 04C0 rjmp .L574
7763 4348 215C subi r18,lo8(-(63))
7764 434a 3F4F sbci r19,hi8(-(63))
7765 434c 4F4F sbci r20,hlo8(-(63))
7766 434e 5F4F sbci r21,hhi8(-(63))
7767 .L574:
7768 4350 96E0 ldi r25,6
7769 4352 5595 1: asr r21
7770 4354 4795 ror r20
7771 4356 3795 ror r19
7772 4358 2795 ror r18
7773 435a 9A95 dec r25
7774 435c D1F7 brne 1b
7775 435e 4201 movw r8,r4
7776 4360 820E add r8,r18
7777 4362 931E adc r9,r19
7778 4364 9092 0000 sts (MesswertRoll)+1,r9
7779 4368 8092 0000 sts MesswertRoll,r8
7780 436c 8091 0000 lds r24,MesswertGier
7781 4370 9091 0000 lds r25,(MesswertGier)+1
7782 4374 880F add r24,r24
7783 4376 991F adc r25,r25
7784 4378 AA27 clr r26
7785 437a 97FD sbrc r25,7
7786 437c A095 com r26
7787 437e BA2F mov r27,r26
7788 4380 2091 0000 lds r18,GyroFaktorGier
7789 4384 3327 clr r19
7790 4386 4427 clr r20
7791 4388 5527 clr r21
7792 438a BC01 movw r22,r24
7793 438c CD01 movw r24,r26
7794 438e 0E94 0000 call __mulsi3
7795 4392 5B01 movw r10,r22
7796 4394 6C01 movw r12,r24
7797 4396 97FF sbrs r25,7
7798 4398 08C0 rjmp .L575
7799 439a 8FE3 ldi r24,lo8(63)
7800 439c 90E0 ldi r25,hi8(63)
7801 439e A0E0 ldi r26,hlo8(63)
7802 43a0 B0E0 ldi r27,hhi8(63)
7803 43a2 A80E add r10,r24
7804 43a4 B91E adc r11,r25
7805 43a6 CA1E adc r12,r26
7806 43a8 DB1E adc r13,r27
7807 .L575:
7808 43aa 86E0 ldi r24,6
7809 43ac D594 1: asr r13
7810 43ae C794 ror r12
7811 43b0 B794 ror r11
7812 43b2 A794 ror r10
7813 43b4 8A95 dec r24
7814 43b6 D1F7 brne 1b
7815 43b8 8091 0000 lds r24,IntegralFaktorGier
7816 43bc 282F mov r18,r24
7817 43be 3327 clr r19
7818 43c0 4427 clr r20
7819 43c2 5527 clr r21
7820 43c4 8091 0000 lds r24,Integral_Gier
7821 43c8 9091 0000 lds r25,(Integral_Gier)+1
7822 43cc A091 0000 lds r26,(Integral_Gier)+2
7823 43d0 B091 0000 lds r27,(Integral_Gier)+3
7824 43d4 BC01 movw r22,r24
7825 43d6 CD01 movw r24,r26
7826 43d8 0E94 0000 call __mulsi3
7827 43dc DC01 movw r26,r24
7828 43de CB01 movw r24,r22
7829 43e0 BC01 movw r22,r24
7830 43e2 CD01 movw r24,r26
7831 43e4 20EF ldi r18,lo8(22000)
7832 43e6 35E5 ldi r19,hi8(22000)
7833 43e8 40E0 ldi r20,hlo8(22000)
7834 43ea 50E0 ldi r21,hhi8(22000)
7835 43ec 0E94 0000 call __divmodsi4
7836 43f0 B501 movw r22,r10
7837 43f2 620F add r22,r18
7838 43f4 731F adc r23,r19
7839 43f6 7093 0000 sts (MesswertGier)+1,r23
7840 43fa 6093 0000 sts MesswertGier,r22
7841 43fe 0150 subi r16,lo8(4097)
7842 4400 1041 sbci r17,hi8(4097)
7843 4402 34F0 brlt .L576
7844 4404 80E0 ldi r24,lo8(4096)
7845 4406 90E1 ldi r25,hi8(4096)
7846 4408 9093 0000 sts (MesswertNick)+1,r25
7847 440c 8093 0000 sts MesswertNick,r24
7848 .L576:
7849 4410 8091 0000 lds r24,MesswertNick
7850 4414 9091 0000 lds r25,(MesswertNick)+1
7851 4418 8050 subi r24,lo8(-4096)
7852 441a 904F sbci r25,hi8(-4096)
7853 441c 34F4 brge .L577
7854 441e 80E0 ldi r24,lo8(-4096)
7855 4420 90EF ldi r25,hi8(-4096)
7856 4422 9093 0000 sts (MesswertNick)+1,r25
7857 4426 8093 0000 sts MesswertNick,r24
7858 .L577:
7859 442a B1E0 ldi r27,lo8(4097)
7860 442c 8B16 cp r8,r27
7861 442e B0E1 ldi r27,hi8(4097)
7862 4430 9B06 cpc r9,r27
7863 4432 34F0 brlt .L578
7864 4434 80E0 ldi r24,lo8(4096)
7865 4436 90E1 ldi r25,hi8(4096)
7866 4438 9093 0000 sts (MesswertRoll)+1,r25
7867 443c 8093 0000 sts MesswertRoll,r24
7868 .L578:
7869 4440 8091 0000 lds r24,MesswertRoll
7870 4444 9091 0000 lds r25,(MesswertRoll)+1
7871 4448 8050 subi r24,lo8(-4096)
7872 444a 904F sbci r25,hi8(-4096)
7873 444c 34F4 brge .L579
7874 444e 80E0 ldi r24,lo8(-4096)
7875 4450 90EF ldi r25,hi8(-4096)
7876 4452 9093 0000 sts (MesswertRoll)+1,r25
7877 4456 8093 0000 sts MesswertRoll,r24
7878 .L579:
7879 445a 6150 subi r22,lo8(4097)
7880 445c 7041 sbci r23,hi8(4097)
7881 445e 34F0 brlt .L580
7882 4460 80E0 ldi r24,lo8(4096)
7883 4462 90E1 ldi r25,hi8(4096)
7884 4464 9093 0000 sts (MesswertGier)+1,r25
7885 4468 8093 0000 sts MesswertGier,r24
7886 .L580:
7887 446c 8091 0000 lds r24,MesswertGier
7888 4470 9091 0000 lds r25,(MesswertGier)+1
7889 4474 8050 subi r24,lo8(-4096)
7890 4476 904F sbci r25,hi8(-4096)
7891 4478 34F4 brge .L581
7892 447a 80E0 ldi r24,lo8(-4096)
7893 447c 90EF ldi r25,hi8(-4096)
7894 447e 9093 0000 sts (MesswertGier)+1,r25
7895 4482 8093 0000 sts MesswertGier,r24
7896 .L581:
7897 4486 8091 0000 lds r24,BattLowVoltageWarning
7898 448a 482F mov r20,r24
7899 448c 5527 clr r21
7900 448e 8091 0000 lds r24,UBat
7901 4492 9091 0000 lds r25,(UBat)+1
7902 4496 4817 cp r20,r24
7903 4498 5907 cpc r21,r25
7904 449a 94F4 brge .L582
7905 449c 2091 0000 lds r18,UBat
7906 44a0 3091 0000 lds r19,(UBat)+1
7907 44a4 6981 ldd r22,Y+1
7908 44a6 7A81 ldd r23,Y+2
7909 44a8 649F mul r22,r20
7910 44aa C001 movw r24,r0
7911 44ac 659F mul r22,r21
7912 44ae 900D add r25,r0
7913 44b0 749F mul r23,r20
7914 44b2 900D add r25,r0
7915 44b4 1124 clr r1
7916 44b6 B901 movw r22,r18
7917 44b8 0E94 0000 call __udivmodhi4
7918 44bc 7A83 std Y+2,r23
7919 44be 6983 std Y+1,r22
7920 .L582:
7921 44c0 8981 ldd r24,Y+1
7922 44c2 9A81 ldd r25,Y+2
7923 44c4 880F lsl r24
7924 44c6 991F rol r25
7925 44c8 880F lsl r24
7926 44ca 991F rol r25
7927 44cc 9A83 std Y+2,r25
7928 44ce 8983 std Y+1,r24
7929 44d0 4091 0000 lds r20,EE_Parameter+13
7930 44d4 40FF sbrs r20,0
7931 44d6 BDC6 rjmp .L583
7932 44d8 EE20 tst r14
7933 44da 09F0 breq .+2
7934 44dc BAC6 rjmp .L583
7935 44de FF20 tst r15
7936 44e0 09F0 breq .+2
7937 44e2 B7C6 rjmp .L583
7938 44e4 AA24 clr r10
7939 44e6 BB24 clr r11
7940 44e8 4501 movw r8,r10
7941 44ea 8091 0000 lds r24,HoverGas
7942 44ee 9091 0000 lds r25,(HoverGas)+1
7943 44f2 9093 0000 sts (DebugOut+44)+1,r25
7944 44f6 8093 0000 sts DebugOut+44,r24
7945 44fa 2091 0000 lds r18,BaroExpandActive
7946 44fe 3091 0000 lds r19,(BaroExpandActive)+1
7947 4502 2115 cp r18,__zero_reg__
7948 4504 3105 cpc r19,__zero_reg__
7949 4506 09F0 breq .+2
7950 4508 3FC0 rjmp .L584
7951 450a 8091 0000 lds r24,MessLuftdruck
7952 450e 9091 0000 lds r25,(MessLuftdruck)+1
7953 4512 8959 subi r24,lo8(921)
7954 4514 9340 sbci r25,hi8(921)
7955 4516 58F0 brlo .L585
7956 4518 87B5 in r24,71-0x20
7957 451a 853F cpi r24,lo8(-11)
7958 451c 20F4 brsh .L586
7959 451e 8091 0000 lds r24,ExpandBaro
7960 4522 8150 subi r24,lo8(-(-1))
7961 4524 11C0 rjmp .L796
7962 .L586:
7963 4526 81E0 ldi r24,lo8(1)
7964 4528 8093 0000 sts BaroAtLowerLimit.30,r24
7965 452c 4EC0 rjmp .L593
7966 .L585:
7967 452e 8091 0000 lds r24,MessLuftdruck
7968 4532 9091 0000 lds r25,(MessLuftdruck)+1
7969 4536 8436 cpi r24,100
7970 4538 9105 cpc r25,__zero_reg__
7971 453a 08F5 brsh .L589
7972 453c 87B5 in r24,71-0x20
7973 453e 8B30 cpi r24,lo8(11)
7974 4540 D0F0 brlo .L590
7975 4542 8091 0000 lds r24,ExpandBaro
7976 4546 8F5F subi r24,lo8(-(1))
7977 .L796:
7978 4548 8093 0000 sts ExpandBaro,r24
7979 454c 9AE0 ldi r25,lo8(10)
7980 454e 8902 muls r24,r25
7981 4550 9001 movw r18,r0
7982 4552 1124 clr r1
7983 4554 8091 0000 lds r24,DruckOffsetSetting
7984 4558 821B sub r24,r18
7985 455a 87BD out 71-0x20,r24
7986 455c 8CE2 ldi r24,lo8(300)
7987 455e 91E0 ldi r25,hi8(300)
7988 4560 9093 0000 sts (beeptime)+1,r25
7989 4564 8093 0000 sts beeptime,r24
7990 4568 8EE5 ldi r24,lo8(350)
7991 456a 91E0 ldi r25,hi8(350)
7992 456c 9093 0000 sts (BaroExpandActive)+1,r25
7993 4570 8093 0000 sts BaroExpandActive,r24
7994 4574 2AC0 rjmp .L593
7995 .L590:
7996 4576 81E0 ldi r24,lo8(1)
7997 4578 8093 0000 sts BaroAtUpperLimit.29,r24
7998 457c 26C0 rjmp .L593
7999 .L589:
8000 457e F092 0000 sts BaroAtUpperLimit.29,r15
8001 4582 F092 0000 sts BaroAtLowerLimit.30,r15
8002 4586 21C0 rjmp .L593
8003 .L584:
8004 4588 8091 0000 lds r24,HoehenWert
8005 458c 9091 0000 lds r25,(HoehenWert)+1
8006 4590 A091 0000 lds r26,(HoehenWert)+2
8007 4594 B091 0000 lds r27,(HoehenWert)+3
8008 4598 14E0 ldi r17,4
8009 459a 880F 1: lsl r24
8010 459c 991F rol r25
8011 459e AA1F rol r26
8012 45a0 BB1F rol r27
8013 45a2 1A95 dec r17
8014 45a4 D1F7 brne 1b
8015 45a6 8093 0000 sts SummenHoehe,r24
8016 45aa 9093 0000 sts (SummenHoehe)+1,r25
8017 45ae A093 0000 sts (SummenHoehe)+2,r26
8018 45b2 B093 0000 sts (SummenHoehe)+3,r27
8019 45b6 B092 0000 sts (VarioMeter)+1,r11
8020 45ba A092 0000 sts VarioMeter,r10
8021 45be 2150 subi r18,lo8(-(-1))
8022 45c0 3040 sbci r19,hi8(-(-1))
8023 45c2 3093 0000 sts (BaroExpandActive)+1,r19
8024 45c6 2093 0000 sts BaroExpandActive,r18
8025 .L593:
8026 45ca 2091 0000 lds r18,Parameter_MaxHoehe
8027 45ce 41FF sbrs r20,1
8028 45d0 24C0 rjmp .L594
8029 45d2 2233 cpi r18,lo8(50)
8030 45d4 D8F4 brsh .L595
8031 45d6 8091 0000 lds r24,delay.28
8032 45da 8150 subi r24,lo8(-(-1))
8033 45dc 8093 0000 sts delay.28,r24
8034 45e0 8F3F cpi r24,lo8(-1)
8035 45e2 D9F5 brne .L598
8036 45e4 1092 0000 sts HoehenReglerAktiv,__zero_reg__
8037 45e8 8091 0000 lds r24,HoehenWert
8038 45ec 9091 0000 lds r25,(HoehenWert)+1
8039 45f0 A091 0000 lds r26,(HoehenWert)+2
8040 45f4 B091 0000 lds r27,(HoehenWert)+3
8041 45f8 8093 0000 sts SollHoehe,r24
8042 45fc 9093 0000 sts (SollHoehe)+1,r25
8043 4600 A093 0000 sts (SollHoehe)+2,r26
8044 4604 B093 0000 sts (SollHoehe)+3,r27
8045 4608 81E0 ldi r24,lo8(1)
8046 460a 04C0 rjmp .L797
8047 .L595:
8048 460c 81E0 ldi r24,lo8(1)
8049 460e 8093 0000 sts HoehenReglerAktiv,r24
8050 4612 88EC ldi r24,lo8(-56)
8051 .L797:
8052 4614 8093 0000 sts delay.28,r24
8053 4618 20C0 rjmp .L598
8054 .L594:
8055 461a 8091 0000 lds r24,ExternHoehenValue
8056 461e 9091 0000 lds r25,(ExternHoehenValue)+1
8057 4622 820F add r24,r18
8058 4624 911D adc r25,__zero_reg__
8059 4626 2091 0000 lds r18,EE_Parameter+18
8060 462a 3327 clr r19
8061 462c 829F mul r24,r18
8062 462e F001 movw r30,r0
8063 4630 839F mul r24,r19
8064 4632 F00D add r31,r0
8065 4634 929F mul r25,r18
8066 4636 F00D add r31,r0
8067 4638 1124 clr r1
8068 463a CF01 movw r24,r30
8069 463c AA27 clr r26
8070 463e 97FD sbrc r25,7
8071 4640 A095 com r26
8072 4642 BA2F mov r27,r26
8073 4644 8093 0000 sts SollHoehe,r24
8074 4648 9093 0000 sts (SollHoehe)+1,r25
8075 464c A093 0000 sts (SollHoehe)+2,r26
8076 4650 B093 0000 sts (SollHoehe)+3,r27
8077 4654 81E0 ldi r24,lo8(1)
8078 4656 8093 0000 sts HoehenReglerAktiv,r24
8079 .L598:
8080 465a 8091 0000 lds r24,IntegralNick
8081 465e 9091 0000 lds r25,(IntegralNick)+1
8082 4662 A091 0000 lds r26,(IntegralNick)+2
8083 4666 B091 0000 lds r27,(IntegralNick)+3
8084 466a E090 0000 lds r14,GIER_GRAD_FAKTOR
8085 466e F090 0000 lds r15,(GIER_GRAD_FAKTOR)+1
8086 4672 0091 0000 lds r16,(GIER_GRAD_FAKTOR)+2
8087 4676 1091 0000 lds r17,(GIER_GRAD_FAKTOR)+3
8088 467a BC01 movw r22,r24
8089 467c CD01 movw r24,r26
8090 467e A801 movw r20,r16
8091 4680 9701 movw r18,r14
8092 4682 0E94 0000 call __divmodsi4
8093 4686 5901 movw r10,r18
8094 4688 6A01 movw r12,r20
8095 468a 8091 0000 lds r24,IntegralRoll
8096 468e 9091 0000 lds r25,(IntegralRoll)+1
8097 4692 A091 0000 lds r26,(IntegralRoll)+2
8098 4696 B091 0000 lds r27,(IntegralRoll)+3
8099 469a BC01 movw r22,r24
8100 469c CD01 movw r24,r26
8101 469e A801 movw r20,r16
8102 46a0 9701 movw r18,r14
8103 46a2 0E94 0000 call __divmodsi4
8104 46a6 B901 movw r22,r18
8105 46a8 C501 movw r24,r10
8106 46aa 0E94 0000 call ihypot
8107 46ae 8C01 movw r16,r24
8108 46b0 CC97 sbiw r24,60
8109 46b2 14F0 brlt .L599
8110 46b4 0CE3 ldi r16,lo8(60)
8111 46b6 10E0 ldi r17,hi8(60)
8112 .L599:
8113 46b8 C801 movw r24,r16
8114 46ba 0E94 0000 call c_cos_8192
8115 46be 8C01 movw r16,r24
8116 46c0 80E2 ldi r24,lo8(32)
8117 46c2 8093 0000 sts VarioCharacter,r24
8118 46c6 8091 0000 lds r24,HoehenReglerAktiv
8119 46ca 8823 tst r24
8120 46cc 09F4 brne .+2
8121 46ce 47C4 rjmp .L600
8122 46d0 8091 0000 lds r24,FC_StatusFlags
8123 46d4 9927 clr r25
8124 46d6 9C01 movw r18,r24
8125 46d8 2071 andi r18,lo8(16)
8126 46da 3070 andi r19,hi8(16)
8127 46dc 84FD sbrc r24,4
8128 46de 3FC4 rjmp .L600
8129 46e0 6091 0000 lds r22,EE_Parameter+102
8130 46e4 60FD sbrc r22,0
8131 46e6 04C0 rjmp .L602
8132 46e8 8091 0000 lds r24,EE_Parameter+13
8133 46ec 81FD sbrc r24,1
8134 46ee 0CC0 rjmp .L601
8135 .L602:
8136 46f0 C980 ldd r12,Y+1
8137 46f2 DA80 ldd r13,Y+2
8138 46f4 3093 0000 sts (HeightTrimming.22)+1,r19
8139 46f8 2093 0000 sts HeightTrimming.22,r18
8140 46fc 8091 0000 lds r24,FC_StatusFlags
8141 4700 806C ori r24,lo8(-64)
8142 4702 8093 0000 sts FC_StatusFlags,r24
8143 4706 99C1 rjmp .L603
8144 .L601:
8145 4708 8091 0000 lds r24,FC_StatusFlags
8146 470c 81FF sbrs r24,1
8147 470e 6BC1 rjmp .L604
8148 4710 4091 0000 lds r20,StickGasHover.24
8149 4714 5091 0000 lds r21,(StickGasHover.24)+1
8150 4718 CA01 movw r24,r20
8151 471a 0F96 adiw r24,15
8152 471c 2091 0000 lds r18,StickGas
8153 4720 3091 0000 lds r19,(StickGas)+1
8154 4724 8217 cp r24,r18
8155 4726 9307 cpc r25,r19
8156 4728 BCF5 brge .L605
8157 472a 8091 0000 lds r24,BaroAtUpperLimit.29
8158 472e 8823 tst r24
8159 4730 99F5 brne .L605
8160 4732 8091 0000 lds r24,FC_StatusFlags
8161 4736 87FF sbrs r24,7
8162 4738 15C0 rjmp .L606
8163 473a 8091 0000 lds r24,FC_StatusFlags
8164 473e 8F77 andi r24,lo8(127)
8165 4740 8093 0000 sts FC_StatusFlags,r24
8166 4744 8091 0000 lds r24,HoehenWert
8167 4748 9091 0000 lds r25,(HoehenWert)+1
8168 474c A091 0000 lds r26,(HoehenWert)+2
8169 4750 B091 0000 lds r27,(HoehenWert)+3
8170 4754 8093 0000 sts SollHoehe,r24
8171 4758 9093 0000 sts (SollHoehe)+1,r25
8172 475c A093 0000 sts (SollHoehe)+2,r26
8173 4760 B093 0000 sts (SollHoehe)+3,r27
8174 .L606:
8175 4764 8091 0000 lds r24,FC_StatusFlags
8176 4768 8064 ori r24,lo8(64)
8177 476a 8093 0000 sts FC_StatusFlags,r24
8178 476e 241B sub r18,r20
8179 4770 350B sbc r19,r21
8180 4772 2F50 subi r18,lo8(-(-15))
8181 4774 3040 sbci r19,hi8(-(-15))
8182 4776 37FF sbrs r19,7
8183 4778 03C0 rjmp .L607
8184 477a 3095 com r19
8185 477c 2195 neg r18
8186 477e 3F4F sbci r19,lo8(-1)
8187 .L607:
8188 4780 8091 0000 lds r24,HeightTrimming.22
8189 4784 9091 0000 lds r25,(HeightTrimming.22)+1
8190 4788 820F add r24,r18
8191 478a 931F adc r25,r19
8192 478c 9093 0000 sts (HeightTrimming.22)+1,r25
8193 4790 8093 0000 sts HeightTrimming.22,r24
8194 4794 8BE2 ldi r24,lo8(43)
8195 4796 6EC0 rjmp .L798
8196 .L605:
8197 4798 CA01 movw r24,r20
8198 479a 0F97 sbiw r24,15
8199 479c 2817 cp r18,r24
8200 479e 3907 cpc r19,r25
8201 47a0 BCF5 brge .L609
8202 47a2 8091 0000 lds r24,BaroAtLowerLimit.30
8203 47a6 8823 tst r24
8204 47a8 99F5 brne .L609
8205 47aa 8091 0000 lds r24,FC_StatusFlags
8206 47ae 86FF sbrs r24,6
8207 47b0 15C0 rjmp .L610
8208 47b2 8091 0000 lds r24,FC_StatusFlags
8209 47b6 8F7B andi r24,lo8(-65)
8210 47b8 8093 0000 sts FC_StatusFlags,r24
8211 47bc 8091 0000 lds r24,HoehenWert
8212 47c0 9091 0000 lds r25,(HoehenWert)+1
8213 47c4 A091 0000 lds r26,(HoehenWert)+2
8214 47c8 B091 0000 lds r27,(HoehenWert)+3
8215 47cc 8093 0000 sts SollHoehe,r24
8216 47d0 9093 0000 sts (SollHoehe)+1,r25
8217 47d4 A093 0000 sts (SollHoehe)+2,r26
8218 47d8 B093 0000 sts (SollHoehe)+3,r27
8219 .L610:
8220 47dc 8091 0000 lds r24,FC_StatusFlags
8221 47e0 8068 ori r24,lo8(-128)
8222 47e2 8093 0000 sts FC_StatusFlags,r24
8223 47e6 241B sub r18,r20
8224 47e8 350B sbc r19,r21
8225 47ea 215F subi r18,lo8(-(15))
8226 47ec 3F4F sbci r19,hi8(-(15))
8227 47ee 37FF sbrs r19,7
8228 47f0 03C0 rjmp .L611
8229 47f2 3095 com r19
8230 47f4 2195 neg r18
8231 47f6 3F4F sbci r19,lo8(-1)
8232 .L611:
8233 47f8 8091 0000 lds r24,HeightTrimming.22
8234 47fc 9091 0000 lds r25,(HeightTrimming.22)+1
8235 4800 821B sub r24,r18
8236 4802 930B sbc r25,r19
8237 4804 9093 0000 sts (HeightTrimming.22)+1,r25
8238 4808 8093 0000 sts HeightTrimming.22,r24
8239 480c 8DE2 ldi r24,lo8(45)
8240 480e 32C0 rjmp .L798
8241 .L609:
8242 4810 8091 0000 lds r24,FC_StatusFlags
8243 4814 807C andi r24,lo8(-64)
8244 4816 69F1 breq .L613
8245 4818 8091 0000 lds r24,FC_StatusFlags
8246 481c 8F73 andi r24,lo8(63)
8247 481e 8093 0000 sts FC_StatusFlags,r24
8248 4822 1092 0000 sts (HeightTrimming.22)+1,__zero_reg__
8249 4826 1092 0000 sts HeightTrimming.22,__zero_reg__
8250 482a 2091 0000 lds r18,HoehenWert
8251 482e 3091 0000 lds r19,(HoehenWert)+1
8252 4832 4091 0000 lds r20,(HoehenWert)+2
8253 4836 5091 0000 lds r21,(HoehenWert)+3
8254 483a 2093 0000 sts SollHoehe,r18
8255 483e 3093 0000 sts (SollHoehe)+1,r19
8256 4842 4093 0000 sts (SollHoehe)+2,r20
8257 4846 5093 0000 sts (SollHoehe)+3,r21
8258 484a 61FF sbrs r22,1
8259 484c 06C0 rjmp .L614
8260 484e 84EF ldi r24,lo8(500)
8261 4850 91E0 ldi r25,hi8(500)
8262 4852 9093 0000 sts (beeptime)+1,r25
8263 4856 8093 0000 sts beeptime,r24
8264 .L614:
8265 485a 8091 0000 lds r24,StartTrigger
8266 485e 8823 tst r24
8267 4860 41F4 brne .L613
8268 4862 2333 cpi r18,lo8(51)
8269 4864 3105 cpc r19,__zero_reg__
8270 4866 4105 cpc r20,__zero_reg__
8271 4868 5105 cpc r21,__zero_reg__
8272 486a 1CF0 brlt .L613
8273 486c 81E0 ldi r24,lo8(1)
8274 486e 8093 0000 sts StartTrigger,r24
8275 .L613:
8276 4872 8DE3 ldi r24,lo8(61)
8277 .L798:
8278 4874 8093 0000 sts VarioCharacter,r24
8279 4878 2091 0000 lds r18,HeightTrimming.22
8280 487c 3091 0000 lds r19,(HeightTrimming.22)+1
8281 4880 C901 movw r24,r18
8282 4882 37FF sbrs r19,7
8283 4884 04C0 rjmp .L617
8284 4886 8827 clr r24
8285 4888 9927 clr r25
8286 488a 821B sub r24,r18
8287 488c 930B sbc r25,r19
8288 .L617:
8289 488e 8150 subi r24,lo8(513)
8290 4890 9240 sbci r25,hi8(513)
8291 4892 0CF4 brge .+2
8292 4894 91C0 rjmp .L616
8293 4896 8091 0000 lds r24,EE_Parameter+18
8294 489a 9927 clr r25
8295 489c 289F mul r18,r24
8296 489e 7001 movw r14,r0
8297 48a0 299F mul r18,r25
8298 48a2 F00C add r15,r0
8299 48a4 389F mul r19,r24
8300 48a6 F00C add r15,r0
8301 48a8 1124 clr r1
8302 48aa C701 movw r24,r14
8303 48ac 60E0 ldi r22,lo8(1280)
8304 48ae 75E0 ldi r23,hi8(1280)
8305 48b0 0E94 0000 call __divmodhi4
8306 48b4 CB01 movw r24,r22
8307 48b6 AA27 clr r26
8308 48b8 97FD sbrc r25,7
8309 48ba A095 com r26
8310 48bc BA2F mov r27,r26
8311 48be 2091 0000 lds r18,SollHoehe
8312 48c2 3091 0000 lds r19,(SollHoehe)+1
8313 48c6 4091 0000 lds r20,(SollHoehe)+2
8314 48ca 5091 0000 lds r21,(SollHoehe)+3
8315 48ce 280F add r18,r24
8316 48d0 391F adc r19,r25
8317 48d2 4A1F adc r20,r26
8318 48d4 5B1F adc r21,r27
8319 48d6 2093 0000 sts SollHoehe,r18
8320 48da 3093 0000 sts (SollHoehe)+1,r19
8321 48de 4093 0000 sts (SollHoehe)+2,r20
8322 48e2 5093 0000 sts (SollHoehe)+3,r21
8323 48e6 1092 0000 sts (HeightTrimming.22)+1,__zero_reg__
8324 48ea 1092 0000 sts HeightTrimming.22,__zero_reg__
8325 48ee C090 0000 lds r12,HoehenWert
8326 48f2 D090 0000 lds r13,(HoehenWert)+1
8327 48f6 E090 0000 lds r14,(HoehenWert)+2
8328 48fa F090 0000 lds r15,(HoehenWert)+3
8329 48fe D701 movw r26,r14
8330 4900 C601 movw r24,r12
8331 4902 8050 subi r24,lo8(-(-1024))
8332 4904 9440 sbci r25,hi8(-(-1024))
8333 4906 A040 sbci r26,hlo8(-(-1024))
8334 4908 B040 sbci r27,hhi8(-(-1024))
8335 490a 8217 cp r24,r18
8336 490c 9307 cpc r25,r19
8337 490e A407 cpc r26,r20
8338 4910 B507 cpc r27,r21
8339 4912 5CF4 brge .L799
8340 4914 D701 movw r26,r14
8341 4916 C601 movw r24,r12
8342 4918 8050 subi r24,lo8(-(1024))
8343 491a 9C4F sbci r25,hi8(-(1024))
8344 491c AF4F sbci r26,hlo8(-(1024))
8345 491e BF4F sbci r27,hhi8(-(1024))
8346 4920 2817 cp r18,r24
8347 4922 3907 cpc r19,r25
8348 4924 4A07 cpc r20,r26
8349 4926 5B07 cpc r21,r27
8350 4928 44F0 brlt .L619
8351 .L799:
8352 492a 8093 0000 sts SollHoehe,r24
8353 492e 9093 0000 sts (SollHoehe)+1,r25
8354 4932 A093 0000 sts (SollHoehe)+2,r26
8355 4936 B093 0000 sts (SollHoehe)+3,r27
8356 .L619:
8357 493a 8091 0000 lds r24,EE_Parameter+102
8358 493e 81FF sbrs r24,1
8359 4940 06C0 rjmp .L621
8360 4942 84E6 ldi r24,lo8(100)
8361 4944 90E0 ldi r25,hi8(100)
8362 4946 9093 0000 sts (beeptime)+1,r25
8363 494a 8093 0000 sts beeptime,r24
8364 .L621:
8365 494e 8091 0000 lds r24,EE_Parameter+22
8366 4952 8823 tst r24
8367 4954 89F5 brne .L616
8368 4956 4091 0000 lds r20,HoverGas
8369 495a 5091 0000 lds r21,(HoverGas)+1
8370 495e 57FF sbrs r21,7
8371 4960 02C0 rjmp .L623
8372 4962 4D5F subi r20,lo8(-(3))
8373 4964 5F4F sbci r21,hi8(-(3))
8374 .L623:
8375 4966 5595 asr r21
8376 4968 4795 ror r20
8377 496a 5595 asr r21
8378 496c 4795 ror r20
8379 496e 8091 0000 lds r24,UBat
8380 4972 9091 0000 lds r25,(UBat)+1
8381 4976 2091 0000 lds r18,BattLowVoltageWarning
8382 497a 3327 clr r19
8383 497c 489F mul r20,r24
8384 497e B001 movw r22,r0
8385 4980 499F mul r20,r25
8386 4982 700D add r23,r0
8387 4984 589F mul r21,r24
8388 4986 700D add r23,r0
8389 4988 1124 clr r1
8390 498a CB01 movw r24,r22
8391 498c B901 movw r22,r18
8392 498e 0E94 0000 call __divmodhi4
8393 4992 7093 0000 sts (StickGasHover.24)+1,r23
8394 4996 6093 0000 sts StickGasHover.24,r22
8395 499a 6634 cpi r22,70
8396 499c 7105 cpc r23,__zero_reg__
8397 499e 1CF4 brge .L624
8398 49a0 86E4 ldi r24,lo8(70)
8399 49a2 90E0 ldi r25,hi8(70)
8400 49a4 05C0 rjmp .L800
8401 .L624:
8402 49a6 6739 cpi r22,151
8403 49a8 7105 cpc r23,__zero_reg__
8404 49aa 34F0 brlt .L616
8405 49ac 86E9 ldi r24,lo8(150)
8406 49ae 90E0 ldi r25,hi8(150)
8407 .L800:
8408 49b0 9093 0000 sts (StickGasHover.24)+1,r25
8409 49b4 8093 0000 sts StickGasHover.24,r24
8410 .L616:
8411 49b8 8091 0000 lds r24,BaroExpandActive
8412 49bc 9091 0000 lds r25,(BaroExpandActive)+1
8413 49c0 892B or r24,r25
8414 49c2 B9F1 breq .L628
8415 49c4 8091 0000 lds r24,HoehenWert
8416 49c8 9091 0000 lds r25,(HoehenWert)+1
8417 49cc A091 0000 lds r26,(HoehenWert)+2
8418 49d0 B091 0000 lds r27,(HoehenWert)+3
8419 49d4 8093 0000 sts SollHoehe,r24
8420 49d8 9093 0000 sts (SollHoehe)+1,r25
8421 49dc A093 0000 sts (SollHoehe)+2,r26
8422 49e0 B093 0000 sts (SollHoehe)+3,r27
8423 49e4 26C0 rjmp .L628
8424 .L604:
8425 49e6 8091 0000 lds r24,HoehenWert
8426 49ea 9091 0000 lds r25,(HoehenWert)+1
8427 49ee A091 0000 lds r26,(HoehenWert)+2
8428 49f2 B091 0000 lds r27,(HoehenWert)+3
8429 49f6 8059 subi r24,lo8(-(-400))
8430 49f8 9140 sbci r25,hi8(-(-400))
8431 49fa A040 sbci r26,hlo8(-(-400))
8432 49fc B040 sbci r27,hhi8(-(-400))
8433 49fe 8093 0000 sts SollHoehe,r24
8434 4a02 9093 0000 sts (SollHoehe)+1,r25
8435 4a06 A093 0000 sts (SollHoehe)+2,r26
8436 4a0a B093 0000 sts (SollHoehe)+3,r27
8437 4a0e 8091 0000 lds r24,EE_Parameter+22
8438 4a12 8823 tst r24
8439 4a14 11F0 breq .L629
8440 4a16 9927 clr r25
8441 4a18 02C0 rjmp .L801
8442 .L629:
8443 4a1a 88E7 ldi r24,lo8(120)
8444 4a1c 90E0 ldi r25,hi8(120)
8445 .L801:
8446 4a1e 9093 0000 sts (StickGasHover.24)+1,r25
8447 4a22 8093 0000 sts StickGasHover.24,r24
8448 4a26 8981 ldd r24,Y+1
8449 4a28 9A81 ldd r25,Y+2
8450 4a2a 9093 0000 sts (HoverGas)+1,r25
8451 4a2e 8093 0000 sts HoverGas,r24
8452 .L628:
8453 4a32 C090 0000 lds r12,HoverGas
8454 4a36 D090 0000 lds r13,(HoverGas)+1
8455 .L603:
8456 4a3a 2091 0000 lds r18,HoehenWert
8457 4a3e 3091 0000 lds r19,(HoehenWert)+1
8458 4a42 4091 0000 lds r20,(HoehenWert)+2
8459 4a46 5091 0000 lds r21,(HoehenWert)+3
8460 4a4a 2B8B std Y+19,r18
8461 4a4c 3C8B std Y+20,r19
8462 4a4e 4D8B std Y+21,r20
8463 4a50 5E8B std Y+22,r21
8464 4a52 2091 0000 lds r18,SollHoehe
8465 4a56 3091 0000 lds r19,(SollHoehe)+1
8466 4a5a 4091 0000 lds r20,(SollHoehe)+2
8467 4a5e 5091 0000 lds r21,(SollHoehe)+3
8468 4a62 6B89 ldd r22,Y+19
8469 4a64 7C89 ldd r23,Y+20
8470 4a66 8D89 ldd r24,Y+21
8471 4a68 9E89 ldd r25,Y+22
8472 4a6a 2617 cp r18,r22
8473 4a6c 3707 cpc r19,r23
8474 4a6e 4807 cpc r20,r24
8475 4a70 5907 cpc r21,r25
8476 4a72 24F0 brlt .L632
8477 4a74 8091 0000 lds r24,EE_Parameter+102
8478 4a78 80FD sbrc r24,0
8479 4a7a B8C2 rjmp .L690
8480 .L632:
8481 4a7c 8091 0000 lds r24,BaroExpandActive
8482 4a80 9091 0000 lds r25,(BaroExpandActive)+1
8483 4a84 892B or r24,r25
8484 4a86 39F0 breq .L633
8485 4a88 C090 0000 lds r12,HoverGas
8486 4a8c D090 0000 lds r13,(HoverGas)+1
8487 4a90 AA24 clr r10
8488 4a92 BB24 clr r11
8489 4a94 D9C0 rjmp .L634
8490 .L633:
8491 4a96 8B89 ldd r24,Y+19
8492 4a98 9C89 ldd r25,Y+20
8493 4a9a AD89 ldd r26,Y+21
8494 4a9c BE89 ldd r27,Y+22
8495 4a9e 821B sub r24,r18
8496 4aa0 930B sbc r25,r19
8497 4aa2 A40B sbc r26,r20
8498 4aa4 B50B sbc r27,r21
8499 4aa6 8093 0000 sts tmp_long.1,r24
8500 4aaa 9093 0000 sts (tmp_long.1)+1,r25
8501 4aae A093 0000 sts (tmp_long.1)+2,r26
8502 4ab2 B093 0000 sts (tmp_long.1)+3,r27
8503 4ab6 8230 cpi r24,lo8(-32766)
8504 4ab8 70E8 ldi r23,hi8(-32766)
8505 4aba 9707 cpc r25,r23
8506 4abc 7FEF ldi r23,hlo8(-32766)
8507 4abe A707 cpc r26,r23
8508 4ac0 7FEF ldi r23,hhi8(-32766)
8509 4ac2 B707 cpc r27,r23
8510 4ac4 2CF4 brge .L635
8511 4ac6 81E0 ldi r24,lo8(-32767)
8512 4ac8 90E8 ldi r25,hi8(-32767)
8513 4aca AFEF ldi r26,hlo8(-32767)
8514 4acc BFEF ldi r27,hhi8(-32767)
8515 4ace 09C0 rjmp .L802
8516 .L635:
8517 4ad0 8F5F subi r24,lo8(32767)
8518 4ad2 9F47 sbci r25,hi8(32767)
8519 4ad4 A040 sbci r26,hlo8(32767)
8520 4ad6 B040 sbci r27,hhi8(32767)
8521 4ad8 64F0 brlt .L636
8522 4ada 8FEF ldi r24,lo8(32767)
8523 4adc 9FE7 ldi r25,hi8(32767)
8524 4ade A0E0 ldi r26,hlo8(32767)
8525 4ae0 B0E0 ldi r27,hhi8(32767)
8526 .L802:
8527 4ae2 8093 0000 sts tmp_long.1,r24
8528 4ae6 9093 0000 sts (tmp_long.1)+1,r25
8529 4aea A093 0000 sts (tmp_long.1)+2,r26
8530 4aee B093 0000 sts (tmp_long.1)+3,r27
8531 .L636:
8532 4af2 A090 0000 lds r10,tmp_long.1
8533 4af6 B090 0000 lds r11,(tmp_long.1)+1
8534 4afa 8091 0000 lds r24,Parameter_Hoehe_P
8535 4afe 282F mov r18,r24
8536 4b00 3327 clr r19
8537 4b02 4427 clr r20
8538 4b04 5527 clr r21
8539 4b06 8091 0000 lds r24,tmp_long.1
8540 4b0a 9091 0000 lds r25,(tmp_long.1)+1
8541 4b0e A091 0000 lds r26,(tmp_long.1)+2
8542 4b12 B091 0000 lds r27,(tmp_long.1)+3
8543 4b16 BC01 movw r22,r24
8544 4b18 CD01 movw r24,r26
8545 4b1a 0E94 0000 call __mulsi3
8546 4b1e 97FF sbrs r25,7
8547 4b20 04C0 rjmp .L638
8548 4b22 615E subi r22,lo8(-(31))
8549 4b24 7F4F sbci r23,hi8(-(31))
8550 4b26 8F4F sbci r24,hlo8(-(31))
8551 4b28 9F4F sbci r25,hhi8(-(31))
8552 .L638:
8553 4b2a A5E0 ldi r26,5
8554 4b2c 9595 1: asr r25
8555 4b2e 8795 ror r24
8556 4b30 7795 ror r23
8557 4b32 6795 ror r22
8558 4b34 AA95 dec r26
8559 4b36 D1F7 brne 1b
8560 4b38 6093 0000 sts tmp_long.1,r22
8561 4b3c 7093 0000 sts (tmp_long.1)+1,r23
8562 4b40 8093 0000 sts (tmp_long.1)+2,r24
8563 4b44 9093 0000 sts (tmp_long.1)+3,r25
8564 4b48 6530 cpi r22,lo8(-507)
8565 4b4a FEEF ldi r31,hi8(-507)
8566 4b4c 7F07 cpc r23,r31
8567 4b4e FFEF ldi r31,hlo8(-507)
8568 4b50 8F07 cpc r24,r31
8569 4b52 FFEF ldi r31,hhi8(-507)
8570 4b54 9F07 cpc r25,r31
8571 4b56 2CF4 brge .L639
8572 4b58 84E0 ldi r24,lo8(-508)
8573 4b5a 9EEF ldi r25,hi8(-508)
8574 4b5c AFEF ldi r26,hlo8(-508)
8575 4b5e BFEF ldi r27,hhi8(-508)
8576 4b60 09C0 rjmp .L803
8577 .L639:
8578 4b62 6050 subi r22,lo8(1024)
8579 4b64 7440 sbci r23,hi8(1024)
8580 4b66 8040 sbci r24,hlo8(1024)
8581 4b68 9040 sbci r25,hhi8(1024)
8582 4b6a 64F0 brlt .L640
8583 4b6c 80E0 ldi r24,lo8(1024)
8584 4b6e 94E0 ldi r25,hi8(1024)
8585 4b70 A0E0 ldi r26,hlo8(1024)
8586 4b72 B0E0 ldi r27,hhi8(1024)
8587 .L803:
8588 4b74 8093 0000 sts tmp_long.1,r24
8589 4b78 9093 0000 sts (tmp_long.1)+1,r25
8590 4b7c A093 0000 sts (tmp_long.1)+2,r26
8591 4b80 B093 0000 sts (tmp_long.1)+3,r27
8592 .L640:
8593 4b84 8090 0000 lds r8,tmp_long.1
8594 4b88 9090 0000 lds r9,(tmp_long.1)+1
8595 4b8c 2091 0000 lds r18,VarioMeter
8596 4b90 3091 0000 lds r19,(VarioMeter)+1
8597 4b94 37FF sbrs r19,7
8598 4b96 02C0 rjmp .L642
8599 4b98 295F subi r18,lo8(-(7))
8600 4b9a 3F4F sbci r19,hi8(-(7))
8601 .L642:
8602 4b9c F3E0 ldi r31,3
8603 4b9e 3595 1: asr r19
8604 4ba0 2795 ror r18
8605 4ba2 FA95 dec r31
8606 4ba4 E1F7 brne 1b
8607 4ba6 4FEF ldi r20,hi8(-126)
8608 4ba8 2238 cpi r18,lo8(-126)
8609 4baa 3407 cpc r19,r20
8610 4bac 1CF4 brge .L643
8611 4bae 21E8 ldi r18,lo8(-127)
8612 4bb0 3FEF ldi r19,hi8(-127)
8613 4bb2 05C0 rjmp .L644
8614 .L643:
8615 4bb4 2038 cpi r18,128
8616 4bb6 3105 cpc r19,__zero_reg__
8617 4bb8 14F0 brlt .L644
8618 4bba 20E8 ldi r18,lo8(128)
8619 4bbc 30E0 ldi r19,hi8(128)
8620 .L644:
8621 4bbe C901 movw r24,r18
8622 4bc0 AA27 clr r26
8623 4bc2 97FD sbrc r25,7
8624 4bc4 A095 com r26
8625 4bc6 BA2F mov r27,r26
8626 4bc8 2091 0000 lds r18,Parameter_Luftdruck_D
8627 4bcc 3327 clr r19
8628 4bce 4427 clr r20
8629 4bd0 5527 clr r21
8630 4bd2 BC01 movw r22,r24
8631 4bd4 CD01 movw r24,r26
8632 4bd6 0E94 0000 call __mulsi3
8633 4bda 97FF sbrs r25,7
8634 4bdc 04C0 rjmp .L646
8635 4bde 6D5F subi r22,lo8(-(3))
8636 4be0 7F4F sbci r23,hi8(-(3))
8637 4be2 8F4F sbci r24,hlo8(-(3))
8638 4be4 9F4F sbci r25,hhi8(-(3))
8639 .L646:
8640 4be6 E2E0 ldi r30,2
8641 4be8 9595 1: asr r25
8642 4bea 8795 ror r24
8643 4bec 7795 ror r23
8644 4bee 6795 ror r22
8645 4bf0 EA95 dec r30
8646 4bf2 D1F7 brne 1b
8647 4bf4 9B01 movw r18,r22
8648 4bf6 5FEF ldi r21,hi8(-255)
8649 4bf8 6130 cpi r22,lo8(-255)
8650 4bfa 7507 cpc r23,r21
8651 4bfc 1CF4 brge .L647
8652 4bfe 20E0 ldi r18,lo8(-256)
8653 4c00 3FEF ldi r19,hi8(-256)
8654 4c02 06C0 rjmp .L648
8655 .L647:
8656 4c04 6F3F cpi r22,255
8657 4c06 7105 cpc r23,__zero_reg__
8658 4c08 19F0 breq .L648
8659 4c0a 14F0 brlt .L648
8660 4c0c 20E0 ldi r18,lo8(256)
8661 4c0e 31E0 ldi r19,hi8(256)
8662 .L648:
8663 4c10 8091 0000 lds r24,FC_StatusFlags
8664 4c14 807C andi r24,lo8(-64)
8665 4c16 49F0 breq .L650
8666 4c18 C901 movw r24,r18
8667 4c1a 37FD sbrc r19,7
8668 4c1c 0396 adiw r24,3
8669 .L651:
8670 4c1e 9C01 movw r18,r24
8671 4c20 3595 asr r19
8672 4c22 2795 ror r18
8673 4c24 3595 asr r19
8674 4c26 2795 ror r18
8675 4c28 0DC0 rjmp .L652
8676 .L650:
8677 4c2a 8091 0000 lds r24,EE_Parameter+102
8678 4c2e 80FF sbrs r24,0
8679 4c30 09C0 rjmp .L652
8680 4c32 C901 movw r24,r18
8681 4c34 37FD sbrc r19,7
8682 4c36 0796 adiw r24,7
8683 .L654:
8684 4c38 9C01 movw r18,r24
8685 4c3a 43E0 ldi r20,3
8686 4c3c 3595 1: asr r19
8687 4c3e 2795 ror r18
8688 4c40 4A95 dec r20
8689 4c42 E1F7 brne 1b
8690 .L652:
8691 4c44 820E add r8,r18
8692 4c46 931E adc r9,r19
8693 .L634:
8694 4c48 2091 0000 lds r18,Parameter_Hoehe_ACC_Wirkung
8695 4c4c 2223 tst r18
8696 4c4e 09F4 brne .+2
8697 4c50 54C0 rjmp .L655
8698 4c52 6091 0000 lds r22,Mess_Integral_Hoch
8699 4c56 7091 0000 lds r23,(Mess_Integral_Hoch)+1
8700 4c5a 8091 0000 lds r24,(Mess_Integral_Hoch)+2
8701 4c5e 9091 0000 lds r25,(Mess_Integral_Hoch)+3
8702 4c62 97FF sbrs r25,7
8703 4c64 04C0 rjmp .L656
8704 4c66 6158 subi r22,lo8(-(127))
8705 4c68 7F4F sbci r23,hi8(-(127))
8706 4c6a 8F4F sbci r24,hlo8(-(127))
8707 4c6c 9F4F sbci r25,hhi8(-(127))
8708 .L656:
8709 4c6e 37E0 ldi r19,7
8710 4c70 9595 1: asr r25
8711 4c72 8795 ror r24
8712 4c74 7795 ror r23
8713 4c76 6795 ror r22
8714 4c78 3A95 dec r19
8715 4c7a D1F7 brne 1b
8716 4c7c 3327 clr r19
8717 4c7e 4427 clr r20
8718 4c80 5527 clr r21
8719 4c82 0E94 0000 call __mulsi3
8720 4c86 97FF sbrs r25,7
8721 4c88 04C0 rjmp .L657
8722 4c8a 615E subi r22,lo8(-(31))
8723 4c8c 7F4F sbci r23,hi8(-(31))
8724 4c8e 8F4F sbci r24,hlo8(-(31))
8725 4c90 9F4F sbci r25,hhi8(-(31))
8726 .L657:
8727 4c92 B5E0 ldi r27,5
8728 4c94 9595 1: asr r25
8729 4c96 8795 ror r24
8730 4c98 7795 ror r23
8731 4c9a 6795 ror r22
8732 4c9c BA95 dec r27
8733 4c9e D1F7 brne 1b
8734 4ca0 6093 0000 sts tmp_long.1,r22
8735 4ca4 7093 0000 sts (tmp_long.1)+1,r23
8736 4ca8 8093 0000 sts (tmp_long.1)+2,r24
8737 4cac 9093 0000 sts (tmp_long.1)+3,r25
8738 4cb0 6138 cpi r22,lo8(-127)
8739 4cb2 AFEF ldi r26,hi8(-127)
8740 4cb4 7A07 cpc r23,r26
8741 4cb6 AFEF ldi r26,hlo8(-127)
8742 4cb8 8A07 cpc r24,r26
8743 4cba AFEF ldi r26,hhi8(-127)
8744 4cbc 9A07 cpc r25,r26
8745 4cbe 2CF4 brge .L658
8746 4cc0 80E8 ldi r24,lo8(-128)
8747 4cc2 9FEF ldi r25,hi8(-128)
8748 4cc4 AFEF ldi r26,hlo8(-128)
8749 4cc6 BFEF ldi r27,hhi8(-128)
8750 4cc8 0AC0 rjmp .L804
8751 .L658:
8752 4cca 6F3F cpi r22,lo8(255)
8753 4ccc 7105 cpc r23,__zero_reg__
8754 4cce 8105 cpc r24,__zero_reg__
8755 4cd0 9105 cpc r25,__zero_reg__
8756 4cd2 69F0 breq .L659
8757 4cd4 64F0 brlt .L659
8758 4cd6 80E0 ldi r24,lo8(256)
8759 4cd8 91E0 ldi r25,hi8(256)
8760 4cda A0E0 ldi r26,hlo8(256)
8761 4cdc B0E0 ldi r27,hhi8(256)
8762 .L804:
8763 4cde 8093 0000 sts tmp_long.1,r24
8764 4ce2 9093 0000 sts (tmp_long.1)+1,r25
8765 4ce6 A093 0000 sts (tmp_long.1)+2,r26
8766 4cea B093 0000 sts (tmp_long.1)+3,r27
8767 .L659:
8768 4cee 8091 0000 lds r24,tmp_long.1
8769 4cf2 9091 0000 lds r25,(tmp_long.1)+1
8770 4cf6 880E add r8,r24
8771 4cf8 991E adc r9,r25
8772 .L655:
8773 4cfa 8091 0000 lds r24,Parameter_Hoehe_GPS_Z
8774 4cfe 282F mov r18,r24
8775 4d00 3327 clr r19
8776 4d02 8091 0000 lds r24,FromNaviCtrl_Value+4
8777 4d06 9927 clr r25
8778 4d08 87FD sbrc r24,7
8779 4d0a 9095 com r25
8780 4d0c 289F mul r18,r24
8781 4d0e F001 movw r30,r0
8782 4d10 299F mul r18,r25
8783 4d12 F00D add r31,r0
8784 4d14 389F mul r19,r24
8785 4d16 F00D add r31,r0
8786 4d18 1124 clr r1
8787 4d1a 9F01 movw r18,r30
8788 4d1c F7FF sbrs r31,7
8789 4d1e 02C0 rjmp .L661
8790 4d20 2158 subi r18,lo8(-(127))
8791 4d22 3F4F sbci r19,hi8(-(127))
8792 .L661:
8793 4d24 220F lsl r18
8794 4d26 232F mov r18,r19
8795 4d28 221F rol r18
8796 4d2a 330B sbc r19,r19
8797 4d2c FFEF ldi r31,hi8(-127)
8798 4d2e 2138 cpi r18,lo8(-127)
8799 4d30 3F07 cpc r19,r31
8800 4d32 1CF4 brge .L662
8801 4d34 20E8 ldi r18,lo8(-128)
8802 4d36 3FEF ldi r19,hi8(-128)
8803 4d38 06C0 rjmp .L663
8804 .L662:
8805 4d3a 2F3F cpi r18,255
8806 4d3c 3105 cpc r19,__zero_reg__
8807 4d3e 19F0 breq .L663
8808 4d40 14F0 brlt .L663
8809 4d42 20E0 ldi r18,lo8(256)
8810 4d44 31E0 ldi r19,hi8(256)
8811 .L663:
8812 4d46 820E add r8,r18
8813 4d48 931E adc r9,r19
8814 4d4a C401 movw r24,r8
8815 4d4c AA27 clr r26
8816 4d4e 97FD sbrc r25,7
8817 4d50 A095 com r26
8818 4d52 BA2F mov r27,r26
8819 4d54 E090 0000 lds r14,HoverGas
8820 4d58 F090 0000 lds r15,(HoverGas)+1
8821 4d5c 9701 movw r18,r14
8822 4d5e 4427 clr r20
8823 4d60 37FD sbrc r19,7
8824 4d62 4095 com r20
8825 4d64 542F mov r21,r20
8826 4d66 BC01 movw r22,r24
8827 4d68 CD01 movw r24,r26
8828 4d6a 0E94 0000 call __mulsi3
8829 4d6e 97FF sbrs r25,7
8830 4d70 04C0 rjmp .L665
8831 4d72 6150 subi r22,lo8(-(511))
8832 4d74 7E4F sbci r23,hi8(-(511))
8833 4d76 8F4F sbci r24,hlo8(-(511))
8834 4d78 9F4F sbci r25,hhi8(-(511))
8835 .L665:
8836 4d7a F9E0 ldi r31,9
8837 4d7c 9595 1: asr r25
8838 4d7e 8795 ror r24
8839 4d80 7795 ror r23
8840 4d82 6795 ror r22
8841 4d84 FA95 dec r31
8842 4d86 D1F7 brne 1b
8843 4d88 C61A sub r12,r22
8844 4d8a D70A sbc r13,r23
8845 4d8c 8091 0000 lds r24,HeightTrimming.22
8846 4d90 9091 0000 lds r25,(HeightTrimming.22)+1
8847 4d94 892B or r24,r25
8848 4d96 09F0 breq .+2
8849 4d98 60C0 rjmp .L666
8850 4d9a 1E14 cp __zero_reg__,r14
8851 4d9c 1F04 cpc __zero_reg__,r15
8852 4d9e 0CF0 brlt .+2
8853 4da0 5CC0 rjmp .L666
8854 4da2 9501 movw r18,r10
8855 4da4 B7FE sbrs r11,7
8856 4da6 03C0 rjmp .L667
8857 4da8 3095 com r19
8858 4daa 2195 neg r18
8859 4dac 3F4F sbci r19,lo8(-1)
8860 .L667:
8861 4dae 2D33 cpi r18,61
8862 4db0 3105 cpc r19,__zero_reg__
8863 4db2 40F4 brsh .L668
8864 4db4 8091 0000 lds r24,HoverGasMin.25
8865 4db8 9091 0000 lds r25,(HoverGasMin.25)+1
8866 4dbc 8C15 cp r24,r12
8867 4dbe 9D05 cpc r25,r13
8868 4dc0 74F5 brge .L806
8869 4dc2 26C0 rjmp .L815
8870 .L668:
8871 4dc4 2C53 subi r18,lo8(-(-60))
8872 4dc6 3040 sbci r19,hi8(-(-60))
8873 4dc8 E5E0 ldi r30,5
8874 4dca 3695 1: lsr r19
8875 4dcc 2795 ror r18
8876 4dce EA95 dec r30
8877 4dd0 E1F7 brne 1b
8878 4dd2 2031 cpi r18,16
8879 4dd4 3105 cpc r19,__zero_reg__
8880 4dd6 10F0 brlo .L673
8881 4dd8 2FE0 ldi r18,lo8(15)
8882 4dda 30E0 ldi r19,hi8(15)
8883 .L673:
8884 4ddc 4091 0000 lds r20,HoverGasMin.25
8885 4de0 5091 0000 lds r21,(HoverGasMin.25)+1
8886 4de4 1A14 cp __zero_reg__,r10
8887 4de6 1B04 cpc __zero_reg__,r11
8888 4de8 E4F4 brge .L674
8889 4dea 80E1 ldi r24,lo8(16)
8890 4dec 90E0 ldi r25,hi8(16)
8891 4dee 821B sub r24,r18
8892 4df0 930B sbc r25,r19
8893 4df2 489F mul r20,r24
8894 4df4 9001 movw r18,r0
8895 4df6 499F mul r20,r25
8896 4df8 300D add r19,r0
8897 4dfa 589F mul r21,r24
8898 4dfc 300D add r19,r0
8899 4dfe 1124 clr r1
8900 4e00 74E0 ldi r23,4
8901 4e02 3695 1: lsr r19
8902 4e04 2795 ror r18
8903 4e06 7A95 dec r23
8904 4e08 E1F7 brne 1b
8905 4e0a 2C15 cp r18,r12
8906 4e0c 3D05 cpc r19,r13
8907 4e0e 20F5 brsh .L805
8908 .L815:
8909 4e10 8091 0000 lds r24,HoverGasMax.26
8910 4e14 9091 0000 lds r25,(HoverGasMax.26)+1
8911 4e18 C816 cp r12,r24
8912 4e1a D906 cpc r13,r25
8913 4e1c F4F0 brlt .L666
8914 .L806:
8915 4e1e 6C01 movw r12,r24
8916 4e20 1CC0 rjmp .L666
8917 .L674:
8918 4e22 205F subi r18,lo8(-(16))
8919 4e24 3F4F sbci r19,hi8(-(16))
8920 4e26 8091 0000 lds r24,HoverGasMax.26
8921 4e2a 9091 0000 lds r25,(HoverGasMax.26)+1
8922 4e2e 829F mul r24,r18
8923 4e30 B001 movw r22,r0
8924 4e32 839F mul r24,r19
8925 4e34 700D add r23,r0
8926 4e36 929F mul r25,r18
8927 4e38 700D add r23,r0
8928 4e3a 1124 clr r1
8929 4e3c 9B01 movw r18,r22
8930 4e3e 64E0 ldi r22,4
8931 4e40 3695 1: lsr r19
8932 4e42 2795 ror r18
8933 4e44 6A95 dec r22
8934 4e46 E1F7 brne 1b
8935 4e48 4C15 cp r20,r12
8936 4e4a 5D05 cpc r21,r13
8937 4e4c 14F0 brlt .L679
8938 4e4e 6A01 movw r12,r20
8939 4e50 04C0 rjmp .L666
8940 .L679:
8941 4e52 C216 cp r12,r18
8942 4e54 D306 cpc r13,r19
8943 4e56 08F0 brlo .L666
8944 .L805:
8945 4e58 6901 movw r12,r18
8946 .L666:
8947 4e5a C601 movw r24,r12
8948 4e5c AA27 clr r26
8949 4e5e 97FD sbrc r25,7
8950 4e60 A095 com r26
8951 4e62 BA2F mov r27,r26
8952 4e64 2DE0 ldi r18,13
8953 4e66 880F 1: lsl r24
8954 4e68 991F rol r25
8955 4e6a AA1F rol r26
8956 4e6c BB1F rol r27
8957 4e6e 2A95 dec r18
8958 4e70 D1F7 brne 1b
8959 4e72 9801 movw r18,r16
8960 4e74 4427 clr r20
8961 4e76 37FD sbrc r19,7
8962 4e78 4095 com r20
8963 4e7a 542F mov r21,r20
8964 4e7c BC01 movw r22,r24
8965 4e7e CD01 movw r24,r26
8966 4e80 0E94 0000 call __divmodsi4
8967 4e84 2093 0000 sts tmp_long2.2,r18
8968 4e88 3093 0000 sts (tmp_long2.2)+1,r19
8969 4e8c 4093 0000 sts (tmp_long2.2)+2,r20
8970 4e90 5093 0000 sts (tmp_long2.2)+3,r21
8971 4e94 C090 0000 lds r12,tmp_long2.2
8972 4e98 D090 0000 lds r13,(tmp_long2.2)+1
8973 4e9c 8091 0000 lds r24,FilterHCGas.23
8974 4ea0 9091 0000 lds r25,(FilterHCGas.23)+1
8975 4ea4 9C01 movw r18,r24
8976 4ea6 220F lsl r18
8977 4ea8 331F rol r19
8978 4eaa 280F add r18,r24
8979 4eac 391F adc r19,r25
8980 4eae 2C0D add r18,r12
8981 4eb0 3D1D adc r19,r13
8982 4eb2 37FF sbrs r19,7
8983 4eb4 02C0 rjmp .L682
8984 4eb6 2D5F subi r18,lo8(-(3))
8985 4eb8 3F4F sbci r19,hi8(-(3))
8986 .L682:
8987 4eba A901 movw r20,r18
8988 4ebc 5595 asr r21
8989 4ebe 4795 ror r20
8990 4ec0 5595 asr r21
8991 4ec2 4795 ror r20
8992 4ec4 5093 0000 sts (FilterHCGas.23)+1,r21
8993 4ec8 4093 0000 sts FilterHCGas.23,r20
8994 4ecc 8091 0000 lds r24,EE_Parameter+14
8995 4ed0 282F mov r18,r24
8996 4ed2 3327 clr r19
8997 4ed4 220F lsl r18
8998 4ed6 331F rol r19
8999 4ed8 220F lsl r18
9000 4eda 331F rol r19
9001 4edc 2417 cp r18,r20
9002 4ede 3507 cpc r19,r21
9003 4ee0 6CF4 brge .L807
9004 4ee2 8091 0000 lds r24,MAX_GAS
9005 4ee6 282F mov r18,r24
9006 4ee8 3327 clr r19
9007 4eea 220F lsl r18
9008 4eec 331F rol r19
9009 4eee 220F lsl r18
9010 4ef0 331F rol r19
9011 4ef2 2055 subi r18,lo8(-(-80))
9012 4ef4 3040 sbci r19,hi8(-(-80))
9013 4ef6 4217 cp r20,r18
9014 4ef8 5307 cpc r21,r19
9015 4efa 24F0 brlt .L684
9016 .L807:
9017 4efc 3093 0000 sts (FilterHCGas.23)+1,r19
9018 4f00 2093 0000 sts FilterHCGas.23,r18
9019 .L684:
9020 4f04 8091 0000 lds r24,EE_Parameter+102
9021 4f08 80FF sbrs r24,0
9022 4f0a 14C0 rjmp .L686
9023 4f0c 8091 0000 lds r24,FilterHCGas.23
9024 4f10 9091 0000 lds r25,(FilterHCGas.23)+1
9025 4f14 A981 ldd r26,Y+1
9026 4f16 BA81 ldd r27,Y+2
9027 4f18 8A17 cp r24,r26
9028 4f1a 9B07 cpc r25,r27
9029 4f1c 24F0 brlt .L687
9030 4f1e B093 0000 sts (FilterHCGas.23)+1,r27
9031 4f22 A093 0000 sts FilterHCGas.23,r26
9032 .L687:
9033 4f26 E091 0000 lds r30,FilterHCGas.23
9034 4f2a F091 0000 lds r31,(FilterHCGas.23)+1
9035 4f2e FA83 std Y+2,r31
9036 4f30 E983 std Y+1,r30
9037 4f32 5CC0 rjmp .L690
9038 .L686:
9039 4f34 2981 ldd r18,Y+1
9040 4f36 3A81 ldd r19,Y+2
9041 4f38 2E19 sub r18,r14
9042 4f3a 3F09 sbc r19,r15
9043 4f3c 37FF sbrs r19,7
9044 4f3e 02C0 rjmp .L689
9045 4f40 2D5F subi r18,lo8(-(3))
9046 4f42 3F4F sbci r19,hi8(-(3))
9047 .L689:
9048 4f44 3595 asr r19
9049 4f46 2795 ror r18
9050 4f48 3595 asr r19
9051 4f4a 2795 ror r18
9052 4f4c E090 0000 lds r14,FilterHCGas.23
9053 4f50 F090 0000 lds r15,(FilterHCGas.23)+1
9054 4f54 E20E add r14,r18
9055 4f56 F31E adc r15,r19
9056 4f58 FA82 std Y+2,r15
9057 4f5a E982 std Y+1,r14
9058 4f5c 47C0 rjmp .L690
9059 .L600:
9060 4f5e 8091 0000 lds r24,EE_Parameter+22
9061 4f62 8823 tst r24
9062 4f64 01F5 brne .L691
9063 4f66 6091 0000 lds r22,HoverGas
9064 4f6a 7091 0000 lds r23,(HoverGas)+1
9065 4f6e 77FF sbrs r23,7
9066 4f70 02C0 rjmp .L692
9067 4f72 6D5F subi r22,lo8(-(3))
9068 4f74 7F4F sbci r23,hi8(-(3))
9069 .L692:
9070 4f76 7595 asr r23
9071 4f78 6795 ror r22
9072 4f7a 7595 asr r23
9073 4f7c 6795 ror r22
9074 4f7e 4091 0000 lds r20,UBat
9075 4f82 5091 0000 lds r21,(UBat)+1
9076 4f86 8091 0000 lds r24,BattLowVoltageWarning
9077 4f8a 282F mov r18,r24
9078 4f8c 3327 clr r19
9079 4f8e 649F mul r22,r20
9080 4f90 C001 movw r24,r0
9081 4f92 659F mul r22,r21
9082 4f94 900D add r25,r0
9083 4f96 749F mul r23,r20
9084 4f98 900D add r25,r0
9085 4f9a 1124 clr r1
9086 4f9c B901 movw r22,r18
9087 4f9e 0E94 0000 call __divmodhi4
9088 4fa2 CB01 movw r24,r22
9089 4fa4 01C0 rjmp .L808
9090 .L691:
9091 4fa6 9927 clr r25
9092 .L808:
9093 4fa8 9093 0000 sts (StickGasHover.24)+1,r25
9094 4fac 8093 0000 sts StickGasHover.24,r24
9095 4fb0 8091 0000 lds r24,StickGasHover.24
9096 4fb4 9091 0000 lds r25,(StickGasHover.24)+1
9097 4fb8 8734 cpi r24,71
9098 4fba 9105 cpc r25,__zero_reg__
9099 4fbc 1CF4 brge .L694
9100 4fbe 86E4 ldi r24,lo8(70)
9101 4fc0 90E0 ldi r25,hi8(70)
9102 4fc2 05C0 rjmp .L809
9103 .L694:
9104 4fc4 8639 cpi r24,150
9105 4fc6 9105 cpc r25,__zero_reg__
9106 4fc8 34F0 brlt .L695
9107 4fca 86E9 ldi r24,lo8(150)
9108 4fcc 90E0 ldi r25,hi8(150)
9109 .L809:
9110 4fce 9093 0000 sts (StickGasHover.24)+1,r25
9111 4fd2 8093 0000 sts StickGasHover.24,r24
9112 .L695:
9113 4fd6 2981 ldd r18,Y+1
9114 4fd8 3A81 ldd r19,Y+2
9115 4fda 3093 0000 sts (FilterHCGas.23)+1,r19
9116 4fde 2093 0000 sts FilterHCGas.23,r18
9117 4fe2 8091 0000 lds r24,FC_StatusFlags
9118 4fe6 806C ori r24,lo8(-64)
9119 4fe8 8093 0000 sts FC_StatusFlags,r24
9120 .L690:
9121 4fec 8091 0000 lds r24,FC_StatusFlags
9122 4ff0 9927 clr r25
9123 4ff2 9C01 movw r18,r24
9124 4ff4 2270 andi r18,lo8(2)
9125 4ff6 3070 andi r19,hi8(2)
9126 4ff8 81FF sbrs r24,1
9127 4ffa 1CC1 rjmp .L697
9128 4ffc 8091 0000 lds r24,HoverGasFilter.27
9129 5000 9091 0000 lds r25,(HoverGasFilter.27)+1
9130 5004 A091 0000 lds r26,(HoverGasFilter.27)+2
9131 5008 B091 0000 lds r27,(HoverGasFilter.27)+3
9132 500c 0097 sbiw r24,0
9133 500e A105 cpc r26,__zero_reg__
9134 5010 B105 cpc r27,__zero_reg__
9135 5012 21F0 breq .L699
9136 5014 8091 0000 lds r24,StartTrigger
9137 5018 8130 cpi r24,lo8(1)
9138 501a B1F4 brne .L698
9139 .L699:
9140 501c 4981 ldd r20,Y+1
9141 501e 5A81 ldd r21,Y+2
9142 5020 CA01 movw r24,r20
9143 5022 AA27 clr r26
9144 5024 97FD sbrc r25,7
9145 5026 A095 com r26
9146 5028 BA2F mov r27,r26
9147 502a 2EE0 ldi r18,14
9148 502c 880F 1: lsl r24
9149 502e 991F rol r25
9150 5030 AA1F rol r26
9151 5032 BB1F rol r27
9152 5034 2A95 dec r18
9153 5036 D1F7 brne 1b
9154 5038 8093 0000 sts HoverGasFilter.27,r24
9155 503c 9093 0000 sts (HoverGasFilter.27)+1,r25
9156 5040 A093 0000 sts (HoverGasFilter.27)+2,r26
9157 5044 B093 0000 sts (HoverGasFilter.27)+3,r27
9158 .L698:
9159 5048 8091 0000 lds r24,StartTrigger
9160 504c 8130 cpi r24,lo8(1)
9161 504e 19F4 brne .L700
9162 5050 82E0 ldi r24,lo8(2)
9163 5052 8093 0000 sts StartTrigger,r24
9164 .L700:
9165 5056 6981 ldd r22,Y+1
9166 5058 7A81 ldd r23,Y+2
9167 505a CB01 movw r24,r22
9168 505c AA27 clr r26
9169 505e 97FD sbrc r25,7
9170 5060 A095 com r26
9171 5062 BA2F mov r27,r26
9172 5064 9801 movw r18,r16
9173 5066 4427 clr r20
9174 5068 37FD sbrc r19,7
9175 506a 4095 com r20
9176 506c 542F mov r21,r20
9177 506e BC01 movw r22,r24
9178 5070 CD01 movw r24,r26
9179 5072 0E94 0000 call __mulsi3
9180 5076 DC01 movw r26,r24
9181 5078 CB01 movw r24,r22
9182 507a 8093 0000 sts tmp_long2.2,r24
9183 507e 9093 0000 sts (tmp_long2.2)+1,r25
9184 5082 A093 0000 sts (tmp_long2.2)+2,r26
9185 5086 B093 0000 sts (tmp_long2.2)+3,r27
9186 508a B7FF sbrs r27,7
9187 508c 04C0 rjmp .L701
9188 508e 8150 subi r24,lo8(-(8191))
9189 5090 904E sbci r25,hi8(-(8191))
9190 5092 AF4F sbci r26,hlo8(-(8191))
9191 5094 BF4F sbci r27,hhi8(-(8191))
9192 .L701:
9193 5096 7C01 movw r14,r24
9194 5098 8D01 movw r16,r26
9195 509a FDE0 ldi r31,13
9196 509c 1595 1: asr r17
9197 509e 0795 ror r16
9198 50a0 F794 ror r15
9199 50a2 E794 ror r14
9200 50a4 FA95 dec r31
9201 50a6 D1F7 brne 1b
9202 50a8 E092 0000 sts tmp_long2.2,r14
9203 50ac F092 0000 sts (tmp_long2.2)+1,r15
9204 50b0 0093 0000 sts (tmp_long2.2)+2,r16
9205 50b4 1093 0000 sts (tmp_long2.2)+3,r17
9206 50b8 6091 0000 lds r22,modell_fliegt
9207 50bc 7091 0000 lds r23,(modell_fliegt)+1
9208 50c0 8FE0 ldi r24,hi8(4000)
9209 50c2 603A cpi r22,lo8(4000)
9210 50c4 7807 cpc r23,r24
9211 50c6 50F5 brsh .L702
9212 50c8 8091 0000 lds r24,HoverGasFilter.27
9213 50cc 9091 0000 lds r25,(HoverGasFilter.27)+1
9214 50d0 A091 0000 lds r26,(HoverGasFilter.27)+2
9215 50d4 B091 0000 lds r27,(HoverGasFilter.27)+3
9216 50d8 9C01 movw r18,r24
9217 50da AD01 movw r20,r26
9218 50dc EAE0 ldi r30,10
9219 50de 5695 1: lsr r21
9220 50e0 4795 ror r20
9221 50e2 3795 ror r19
9222 50e4 2795 ror r18
9223 50e6 EA95 dec r30
9224 50e8 D1F7 brne 1b
9225 50ea 821B sub r24,r18
9226 50ec 930B sbc r25,r19
9227 50ee A40B sbc r26,r20
9228 50f0 B50B sbc r27,r21
9229 50f2 A801 movw r20,r16
9230 50f4 9701 movw r18,r14
9231 50f6 F4E0 ldi r31,4
9232 50f8 220F 1: lsl r18
9233 50fa 331F rol r19
9234 50fc 441F rol r20
9235 50fe 551F rol r21
9236 5100 FA95 dec r31
9237 5102 D1F7 brne 1b
9238 5104 820F add r24,r18
9239 5106 931F adc r25,r19
9240 5108 A41F adc r26,r20
9241 510a B51F adc r27,r21
9242 510c 8093 0000 sts HoverGasFilter.27,r24
9243 5110 9093 0000 sts (HoverGasFilter.27)+1,r25
9244 5114 A093 0000 sts (HoverGasFilter.27)+2,r26
9245 5118 B093 0000 sts (HoverGasFilter.27)+3,r27
9246 .L702:
9247 511c 6054 subi r22,lo8(8000)
9248 511e 7F41 sbci r23,hi8(8000)
9249 5120 18F5 brsh .L703
9250 5122 8091 0000 lds r24,HoverGasFilter.27
9251 5126 9091 0000 lds r25,(HoverGasFilter.27)+1
9252 512a A091 0000 lds r26,(HoverGasFilter.27)+2
9253 512e B091 0000 lds r27,(HoverGasFilter.27)+3
9254 5132 9C01 movw r18,r24
9255 5134 AD01 movw r20,r26
9256 5136 ECE0 ldi r30,12
9257 5138 5695 1: lsr r21
9258 513a 4795 ror r20
9259 513c 3795 ror r19
9260 513e 2795 ror r18
9261 5140 EA95 dec r30
9262 5142 D1F7 brne 1b
9263 5144 821B sub r24,r18
9264 5146 930B sbc r25,r19
9265 5148 A40B sbc r26,r20
9266 514a B50B sbc r27,r21
9267 514c A801 movw r20,r16
9268 514e 9701 movw r18,r14
9269 5150 72E0 ldi r23,2
9270 5152 220F 1: lsl r18
9271 5154 331F rol r19
9272 5156 441F rol r20
9273 5158 551F rol r21
9274 515a 7A95 dec r23
9275 515c D1F7 brne 1b
9276 515e 820F add r24,r18
9277 5160 931F adc r25,r19
9278 5162 A41F adc r26,r20
9279 5164 B51F adc r27,r21
9280 5166 29C0 rjmp .L810
9281 .L703:
9282 5168 8091 0000 lds r24,VarioMeter
9283 516c 9091 0000 lds r25,(VarioMeter)+1
9284 5170 8091 0000 lds r24,VarioMeter
9285 5174 9091 0000 lds r25,(VarioMeter)+1
9286 5178 97FF sbrs r25,7
9287 517a 03C0 rjmp .L706
9288 517c 9095 com r25
9289 517e 8195 neg r24
9290 5180 9F4F sbci r25,lo8(-1)
9291 .L706:
9292 5182 8436 cpi r24,100
9293 5184 9105 cpc r25,__zero_reg__
9294 5186 0CF5 brge .L704
9295 5188 8091 0000 lds r24,HoverGasFilter.27
9296 518c 9091 0000 lds r25,(HoverGasFilter.27)+1
9297 5190 A091 0000 lds r26,(HoverGasFilter.27)+2
9298 5194 B091 0000 lds r27,(HoverGasFilter.27)+3
9299 5198 9C01 movw r18,r24
9300 519a AD01 movw r20,r26
9301 519c 6EE0 ldi r22,14
9302 519e 5695 1: lsr r21
9303 51a0 4795 ror r20
9304 51a2 3795 ror r19
9305 51a4 2795 ror r18
9306 51a6 6A95 dec r22
9307 51a8 D1F7 brne 1b
9308 51aa 821B sub r24,r18
9309 51ac 930B sbc r25,r19
9310 51ae A40B sbc r26,r20
9311 51b0 B50B sbc r27,r21
9312 51b2 8E0D add r24,r14
9313 51b4 9F1D adc r25,r15
9314 51b6 A01F adc r26,r16
9315 51b8 B11F adc r27,r17
9316 .L810:
9317 51ba 8093 0000 sts HoverGasFilter.27,r24
9318 51be 9093 0000 sts (HoverGasFilter.27)+1,r25
9319 51c2 A093 0000 sts (HoverGasFilter.27)+2,r26
9320 51c6 B093 0000 sts (HoverGasFilter.27)+3,r27
9321 .L704:
9322 51ca 8091 0000 lds r24,HoverGasFilter.27
9323 51ce 9091 0000 lds r25,(HoverGasFilter.27)+1
9324 51d2 A091 0000 lds r26,(HoverGasFilter.27)+2
9325 51d6 B091 0000 lds r27,(HoverGasFilter.27)+3
9326 51da 1EE0 ldi r17,14
9327 51dc B695 1: lsr r27
9328 51de A795 ror r26
9329 51e0 9795 ror r25
9330 51e2 8795 ror r24
9331 51e4 1A95 dec r17
9332 51e6 D1F7 brne 1b
9333 51e8 9093 0000 sts (HoverGas)+1,r25
9334 51ec 8093 0000 sts HoverGas,r24
9335 51f0 4091 0000 lds r20,EE_Parameter+20
9336 51f4 4423 tst r20
9337 51f6 99F0 breq .L707
9338 51f8 5527 clr r21
9339 51fa 9C01 movw r18,r24
9340 51fc BA01 movw r22,r20
9341 51fe 0E94 0000 call __divmodhi4
9342 5202 C901 movw r24,r18
9343 5204 861B sub r24,r22
9344 5206 970B sbc r25,r23
9345 5208 9093 0000 sts (HoverGasMin.25)+1,r25
9346 520c 8093 0000 sts HoverGasMin.25,r24
9347 5210 260F add r18,r22
9348 5212 371F adc r19,r23
9349 5214 3093 0000 sts (HoverGasMax.26)+1,r19
9350 5218 2093 0000 sts HoverGasMax.26,r18
9351 521c 1FC0 rjmp .L710
9352 .L707:
9353 521e 1092 0000 sts (HoverGasMin.25)+1,__zero_reg__
9354 5222 1092 0000 sts HoverGasMin.25,__zero_reg__
9355 5226 8FEF ldi r24,lo8(1023)
9356 5228 93E0 ldi r25,hi8(1023)
9357 522a 9093 0000 sts (HoverGasMax.26)+1,r25
9358 522e 8093 0000 sts HoverGasMax.26,r24
9359 5232 14C0 rjmp .L710
9360 .L697:
9361 5234 1092 0000 sts StartTrigger,__zero_reg__
9362 5238 1092 0000 sts HoverGasFilter.27,__zero_reg__
9363 523c 1092 0000 sts (HoverGasFilter.27)+1,__zero_reg__
9364 5240 1092 0000 sts (HoverGasFilter.27)+2,__zero_reg__
9365 5244 1092 0000 sts (HoverGasFilter.27)+3,__zero_reg__
9366 5248 3093 0000 sts (HoverGas)+1,r19
9367 524c 2093 0000 sts HoverGas,r18
9368 5250 05C0 rjmp .L710
9369 .L583:
9370 5252 8091 0000 lds r24,FC_StatusFlags
9371 5256 806C ori r24,lo8(-64)
9372 5258 8093 0000 sts FC_StatusFlags,r24
9373 .L710:
9374 525c 2090 0000 lds r2,MIN_GAS
9375 5260 222D mov r18,r2
9376 5262 3327 clr r19
9377 5264 220F lsl r18
9378 5266 331F rol r19
9379 5268 220F lsl r18
9380 526a 331F rol r19
9381 526c 285D subi r18,lo8(-(40))
9382 526e 3F4F sbci r19,hi8(-(40))
9383 5270 A981 ldd r26,Y+1
9384 5272 BA81 ldd r27,Y+2
9385 5274 2A17 cp r18,r26
9386 5276 3B07 cpc r19,r27
9387 5278 14F0 brlt .L711
9388 527a 3A83 std Y+2,r19
9389 527c 2983 std Y+1,r18
9390 .L711:
9391 527e 3090 0000 lds r3,MAX_GAS
9392 5282 832D mov r24,r3
9393 5284 9927 clr r25
9394 5286 880F lsl r24
9395 5288 991F rol r25
9396 528a 880F lsl r24
9397 528c 991F rol r25
9398 528e 8055 subi r24,lo8(-(-80))
9399 5290 9040 sbci r25,hi8(-(-80))
9400 5292 E981 ldd r30,Y+1
9401 5294 FA81 ldd r31,Y+2
9402 5296 8E17 cp r24,r30
9403 5298 9F07 cpc r25,r31
9404 529a 14F4 brge .L712
9405 529c 9A83 std Y+2,r25
9406 529e 8983 std Y+1,r24
9407 .L712:
9408 52a0 8091 0000 lds r24,MissingMotor
9409 52a4 8823 tst r24
9410 52a6 21F4 brne .L714
9411 52a8 8091 0000 lds r24,Capacity+8
9412 52ac 8F3F cpi r24,lo8(-1)
9413 52ae A1F0 breq .L713
9414 .L714:
9415 52b0 8091 0000 lds r24,modell_fliegt
9416 52b4 9091 0000 lds r25,(modell_fliegt)+1
9417 52b8 0297 sbiw r24,2
9418 52ba C097 sbiw r24,48
9419 52bc 68F4 brsh .L713
9420 52be E980 ldd r14,Y+1
9421 52c0 FA80 ldd r15,Y+2
9422 52c2 1E14 cp __zero_reg__,r14
9423 52c4 1F04 cpc __zero_reg__,r15
9424 52c6 44F4 brge .L713
9425 52c8 81E0 ldi r24,lo8(1)
9426 52ca 90E0 ldi r25,hi8(1)
9427 52cc 9093 0000 sts (modell_fliegt)+1,r25
9428 52d0 8093 0000 sts modell_fliegt,r24
9429 52d4 3A83 std Y+2,r19
9430 52d6 2983 std Y+1,r18
9431 .L713:
9432 52d8 0981 ldd r16,Y+1
9433 52da 1A81 ldd r17,Y+2
9434 52dc 1093 0000 sts (DebugOut+16)+1,r17
9435 52e0 0093 0000 sts DebugOut+16,r16
9436 52e4 8091 0000 lds r24,sollGier.0
9437 52e8 9091 0000 lds r25,(sollGier.0)+1
9438 52ec A091 0000 lds r26,(sollGier.0)+2
9439 52f0 B091 0000 lds r27,(sollGier.0)+3
9440 52f4 F2E0 ldi r31,2
9441 52f6 880F 1: lsl r24
9442 52f8 991F rol r25
9443 52fa AA1F rol r26
9444 52fc BB1F rol r27
9445 52fe FA95 dec r31
9446 5300 D1F7 brne 1b
9447 5302 0091 0000 lds r16,MesswertGier
9448 5306 1091 0000 lds r17,(MesswertGier)+1
9449 530a 081B sub r16,r24
9450 530c 190B sbc r17,r25
9451 530e 2981 ldd r18,Y+1
9452 5310 3A81 ldd r19,Y+2
9453 5312 213A cpi r18,161
9454 5314 3105 cpc r19,__zero_reg__
9455 5316 8CF0 brlt .L716
9456 5318 C901 movw r24,r18
9457 531a 37FD sbrc r19,7
9458 531c 0196 adiw r24,1
9459 .L718:
9460 531e 9595 asr r25
9461 5320 8795 ror r24
9462 5322 8017 cp r24,r16
9463 5324 9107 cpc r25,r17
9464 5326 0CF4 brge .L717
9465 5328 8C01 movw r16,r24
9466 .L717:
9467 532a 9095 com r25
9468 532c 8195 neg r24
9469 532e 9F4F sbci r25,lo8(-1)
9470 5330 0817 cp r16,r24
9471 5332 1907 cpc r17,r25
9472 5334 6CF4 brge .L723
9473 5336 8C01 movw r16,r24
9474 5338 0BC0 rjmp .L723
9475 .L716:
9476 533a 0135 cpi r16,81
9477 533c 1105 cpc r17,__zero_reg__
9478 533e 14F0 brlt .L724
9479 5340 00E5 ldi r16,lo8(80)
9480 5342 10E0 ldi r17,hi8(80)
9481 .L724:
9482 5344 3FEF ldi r19,hi8(-80)
9483 5346 003B cpi r16,lo8(-80)
9484 5348 1307 cpc r17,r19
9485 534a 14F4 brge .L723
9486 534c 00EB ldi r16,lo8(-80)
9487 534e 1FEF ldi r17,hi8(-80)
9488 .L723:
9489 5350 232D mov r18,r3
9490 5352 3327 clr r19
9491 5354 220F lsl r18
9492 5356 331F rol r19
9493 5358 220F lsl r18
9494 535a 331F rol r19
9495 535c C901 movw r24,r18
9496 535e 4981 ldd r20,Y+1
9497 5360 5A81 ldd r21,Y+2
9498 5362 841B sub r24,r20
9499 5364 950B sbc r25,r21
9500 5366 8017 cp r24,r16
9501 5368 9107 cpc r25,r17
9502 536a 0CF4 brge .L726
9503 536c 8C01 movw r16,r24
9504 .L726:
9505 536e 6981 ldd r22,Y+1
9506 5370 7A81 ldd r23,Y+2
9507 5372 621B sub r22,r18
9508 5374 730B sbc r23,r19
9509 5376 0617 cp r16,r22
9510 5378 1707 cpc r17,r23
9511 537a 0CF4 brge .L727
9512 537c 8B01 movw r16,r22
9513 .L727:
9514 537e 8091 0000 lds r24,MesswertNick
9515 5382 9091 0000 lds r25,(MesswertNick)+1
9516 5386 6091 0000 lds r22,StickNick
9517 538a 7091 0000 lds r23,(StickNick)+1
9518 538e 861B sub r24,r22
9519 5390 970B sbc r25,r23
9520 5392 9093 0000 sts (DiffNick)+1,r25
9521 5396 8093 0000 sts DiffNick,r24
9522 539a D090 0000 lds r13,IntegralFaktor
9523 539e 2091 0000 lds r18,SummeNick
9524 53a2 3091 0000 lds r19,(SummeNick)+1
9525 53a6 4091 0000 lds r20,(SummeNick)+2
9526 53aa 5091 0000 lds r21,(SummeNick)+3
9527 53ae DD20 tst r13
9528 53b0 41F0 breq .L728
9529 53b2 661A sub r6,r22
9530 53b4 770A sbc r7,r23
9531 53b6 C301 movw r24,r6
9532 53b8 AA27 clr r26
9533 53ba 97FD sbrc r25,7
9534 53bc A095 com r26
9535 53be BA2F mov r27,r26
9536 53c0 04C0 rjmp .L811
9537 .L728:
9538 53c2 AA27 clr r26
9539 53c4 97FD sbrc r25,7
9540 53c6 A095 com r26
9541 53c8 BA2F mov r27,r26
9542 .L811:
9543 53ca 280F add r18,r24
9544 53cc 391F adc r19,r25
9545 53ce 4A1F adc r20,r26
9546 53d0 5B1F adc r21,r27
9547 53d2 2093 0000 sts SummeNick,r18
9548 53d6 3093 0000 sts (SummeNick)+1,r19
9549 53da 4093 0000 sts (SummeNick)+2,r20
9550 53de 5093 0000 sts (SummeNick)+3,r21
9551 53e2 8091 0000 lds r24,SummeNick
9552 53e6 9091 0000 lds r25,(SummeNick)+1
9553 53ea A091 0000 lds r26,(SummeNick)+2
9554 53ee B091 0000 lds r27,(SummeNick)+3
9555 53f2 8150 subi r24,lo8(64001)
9556 53f4 9A4F sbci r25,hi8(64001)
9557 53f6 A040 sbci r26,hlo8(64001)
9558 53f8 B040 sbci r27,hhi8(64001)
9559 53fa 64F0 brlt .L730
9560 53fc 80E0 ldi r24,lo8(64000)
9561 53fe 9AEF ldi r25,hi8(64000)
9562 5400 A0E0 ldi r26,hlo8(64000)
9563 5402 B0E0 ldi r27,hhi8(64000)
9564 5404 8093 0000 sts SummeNick,r24
9565 5408 9093 0000 sts (SummeNick)+1,r25
9566 540c A093 0000 sts (SummeNick)+2,r26
9567 5410 B093 0000 sts (SummeNick)+3,r27
9568 .L730:
9569 5414 8091 0000 lds r24,SummeNick
9570 5418 9091 0000 lds r25,(SummeNick)+1
9571 541c A091 0000 lds r26,(SummeNick)+2
9572 5420 B091 0000 lds r27,(SummeNick)+3
9573 5424 8050 subi r24,lo8(-64000)
9574 5426 9640 sbci r25,hi8(-64000)
9575 5428 AF4F sbci r26,hlo8(-64000)
9576 542a BF4F sbci r27,hhi8(-64000)
9577 542c 64F4 brge .L731
9578 542e 80E0 ldi r24,lo8(-64000)
9579 5430 96E0 ldi r25,hi8(-64000)
9580 5432 AFEF ldi r26,hlo8(-64000)
9581 5434 BFEF ldi r27,hhi8(-64000)
9582 5436 8093 0000 sts SummeNick,r24
9583 543a 9093 0000 sts (SummeNick)+1,r25
9584 543e A093 0000 sts (SummeNick)+2,r26
9585 5442 B093 0000 sts (SummeNick)+3,r27
9586 .L731:
9587 5446 C090 0000 lds r12,EE_Parameter+35
9588 544a 2091 0000 lds r18,DiffNick
9589 544e 3091 0000 lds r19,(DiffNick)+1
9590 5452 F8E0 ldi r31,lo8(8)
9591 5454 FC15 cp r31,r12
9592 5456 98F0 brlo .L732
9593 5458 8C2D mov r24,r12
9594 545a 9927 clr r25
9595 545c 829F mul r24,r18
9596 545e 7001 movw r14,r0
9597 5460 839F mul r24,r19
9598 5462 F00C add r15,r0
9599 5464 929F mul r25,r18
9600 5466 F00C add r15,r0
9601 5468 1124 clr r1
9602 546a C701 movw r24,r14
9603 546c F7FC sbrc r15,7
9604 546e 0796 adiw r24,7
9605 .L733:
9606 5470 7C01 movw r14,r24
9607 5472 63E0 ldi r22,3
9608 5474 F594 1: asr r15
9609 5476 E794 ror r14
9610 5478 6A95 dec r22
9611 547a E1F7 brne 1b
9612 547c 12C0 rjmp .L734
9613 .L732:
9614 547e 8C2D mov r24,r12
9615 5480 8695 lsr r24
9616 5482 9927 clr r25
9617 5484 829F mul r24,r18
9618 5486 A001 movw r20,r0
9619 5488 839F mul r24,r19
9620 548a 500D add r21,r0
9621 548c 929F mul r25,r18
9622 548e 500D add r21,r0
9623 5490 1124 clr r1
9624 5492 CA01 movw r24,r20
9625 5494 57FD sbrc r21,7
9626 5496 0396 adiw r24,3
9627 .L735:
9628 5498 7C01 movw r14,r24
9629 549a F594 asr r15
9630 549c E794 ror r14
9631 549e F594 asr r15
9632 54a0 E794 ror r14
9633 .L734:
9634 54a2 A090 0000 lds r10,Ki
9635 54a6 B090 0000 lds r11,(Ki)+1
9636 54aa 9501 movw r18,r10
9637 54ac 4427 clr r20
9638 54ae 37FD sbrc r19,7
9639 54b0 4095 com r20
9640 54b2 542F mov r21,r20
9641 54b4 8091 0000 lds r24,SummeNick
9642 54b8 9091 0000 lds r25,(SummeNick)+1
9643 54bc A091 0000 lds r26,(SummeNick)+2
9644 54c0 B091 0000 lds r27,(SummeNick)+3
9645 54c4 BC01 movw r22,r24
9646 54c6 CD01 movw r24,r26
9647 54c8 0E94 0000 call __divmodsi4
9648 54cc E20E add r14,r18
9649 54ce F31E adc r15,r19
9650 54d0 9090 0000 lds r9,Parameter_DynamicStability
9651 54d4 692D mov r22,r9
9652 54d6 7727 clr r23
9653 54d8 8827 clr r24
9654 54da 9927 clr r25
9655 54dc 9801 movw r18,r16
9656 54de 17FF sbrs r17,7
9657 54e0 04C0 rjmp .L736
9658 54e2 2227 clr r18
9659 54e4 3327 clr r19
9660 54e6 201B sub r18,r16
9661 54e8 310B sbc r19,r17
9662 .L736:
9663 54ea 37FF sbrs r19,7
9664 54ec 02C0 rjmp .L737
9665 54ee 2F5F subi r18,lo8(-(1))
9666 54f0 3F4F sbci r19,hi8(-(1))
9667 .L737:
9668 54f2 3595 asr r19
9669 54f4 2795 ror r18
9670 54f6 A981 ldd r26,Y+1
9671 54f8 BA81 ldd r27,Y+2
9672 54fa 2A0F add r18,r26
9673 54fc 3B1F adc r19,r27
9674 54fe 4427 clr r20
9675 5500 37FD sbrc r19,7
9676 5502 4095 com r20
9677 5504 542F mov r21,r20
9678 5506 0E94 0000 call __mulsi3
9679 550a 97FF sbrs r25,7
9680 550c 04C0 rjmp .L738
9681 550e 615C subi r22,lo8(-(63))
9682 5510 7F4F sbci r23,hi8(-(63))
9683 5512 8F4F sbci r24,hlo8(-(63))
9684 5514 9F4F sbci r25,hhi8(-(63))
9685 .L738:
9686 5516 26E0 ldi r18,6
9687 5518 9595 1: asr r25
9688 551a 8795 ror r24
9689 551c 7795 ror r23
9690 551e 6795 ror r22
9691 5520 2A95 dec r18
9692 5522 D1F7 brne 1b
9693 5524 9B01 movw r18,r22
9694 5526 6E15 cp r22,r14
9695 5528 7F05 cpc r23,r15
9696 552a 0CF4 brge .L739
9697 552c 7B01 movw r14,r22
9698 .L739:
9699 552e 3095 com r19
9700 5530 2195 neg r18
9701 5532 3F4F sbci r19,lo8(-1)
9702 5534 E216 cp r14,r18
9703 5536 F306 cpc r15,r19
9704 5538 0CF4 brge .L740
9705 553a 7901 movw r14,r18
9706 .L740:
9707 553c 8091 0000 lds r24,MesswertRoll
9708 5540 9091 0000 lds r25,(MesswertRoll)+1
9709 5544 6091 0000 lds r22,StickRoll
9710 5548 7091 0000 lds r23,(StickRoll)+1
9711 554c 861B sub r24,r22
9712 554e 970B sbc r25,r23
9713 5550 9093 0000 sts (DiffRoll)+1,r25
9714 5554 8093 0000 sts DiffRoll,r24
9715 5558 2091 0000 lds r18,SummeRoll
9716 555c 3091 0000 lds r19,(SummeRoll)+1
9717 5560 4091 0000 lds r20,(SummeRoll)+2
9718 5564 5091 0000 lds r21,(SummeRoll)+3
9719 5568 DD20 tst r13
9720 556a 41F0 breq .L741
9721 556c 461A sub r4,r22
9722 556e 570A sbc r5,r23
9723 5570 C201 movw r24,r4
9724 5572 AA27 clr r26
9725 5574 97FD sbrc r25,7
9726 5576 A095 com r26
9727 5578 BA2F mov r27,r26
9728 557a 04C0 rjmp .L812
9729 .L741:
9730 557c AA27 clr r26
9731 557e 97FD sbrc r25,7
9732 5580 A095 com r26
9733 5582 BA2F mov r27,r26
9734 .L812:
9735 5584 280F add r18,r24
9736 5586 391F adc r19,r25
9737 5588 4A1F adc r20,r26
9738 558a 5B1F adc r21,r27
9739 558c 2093 0000 sts SummeRoll,r18
9740 5590 3093 0000 sts (SummeRoll)+1,r19
9741 5594 4093 0000 sts (SummeRoll)+2,r20
9742 5598 5093 0000 sts (SummeRoll)+3,r21
9743 559c 8091 0000 lds r24,SummeRoll
9744 55a0 9091 0000 lds r25,(SummeRoll)+1
9745 55a4 A091 0000 lds r26,(SummeRoll)+2
9746 55a8 B091 0000 lds r27,(SummeRoll)+3
9747 55ac 8150 subi r24,lo8(64001)
9748 55ae 9A4F sbci r25,hi8(64001)
9749 55b0 A040 sbci r26,hlo8(64001)
9750 55b2 B040 sbci r27,hhi8(64001)
9751 55b4 64F0 brlt .L743
9752 55b6 80E0 ldi r24,lo8(64000)
9753 55b8 9AEF ldi r25,hi8(64000)
9754 55ba A0E0 ldi r26,hlo8(64000)
9755 55bc B0E0 ldi r27,hhi8(64000)
9756 55be 8093 0000 sts SummeRoll,r24
9757 55c2 9093 0000 sts (SummeRoll)+1,r25
9758 55c6 A093 0000 sts (SummeRoll)+2,r26
9759 55ca B093 0000 sts (SummeRoll)+3,r27
9760 .L743:
9761 55ce 8091 0000 lds r24,SummeRoll
9762 55d2 9091 0000 lds r25,(SummeRoll)+1
9763 55d6 A091 0000 lds r26,(SummeRoll)+2
9764 55da B091 0000 lds r27,(SummeRoll)+3
9765 55de 8050 subi r24,lo8(-64000)
9766 55e0 9640 sbci r25,hi8(-64000)
9767 55e2 AF4F sbci r26,hlo8(-64000)
9768 55e4 BF4F sbci r27,hhi8(-64000)
9769 55e6 64F4 brge .L744
9770 55e8 80E0 ldi r24,lo8(-64000)
9771 55ea 96E0 ldi r25,hi8(-64000)
9772 55ec AFEF ldi r26,hlo8(-64000)
9773 55ee BFEF ldi r27,hhi8(-64000)
9774 55f0 8093 0000 sts SummeRoll,r24
9775 55f4 9093 0000 sts (SummeRoll)+1,r25
9776 55f8 A093 0000 sts (SummeRoll)+2,r26
9777 55fc B093 0000 sts (SummeRoll)+3,r27
9778 .L744:
9779 5600 2091 0000 lds r18,DiffRoll
9780 5604 3091 0000 lds r19,(DiffRoll)+1
9781 5608 48E0 ldi r20,lo8(8)
9782 560a 4C15 cp r20,r12
9783 560c 98F0 brlo .L745
9784 560e 8C2D mov r24,r12
9785 5610 9927 clr r25
9786 5612 829F mul r24,r18
9787 5614 B001 movw r22,r0
9788 5616 839F mul r24,r19
9789 5618 700D add r23,r0
9790 561a 929F mul r25,r18
9791 561c 700D add r23,r0
9792 561e 1124 clr r1
9793 5620 CB01 movw r24,r22
9794 5622 77FD sbrc r23,7
9795 5624 0796 adiw r24,7
9796 .L746:
9797 5626 6C01 movw r12,r24
9798 5628 B3E0 ldi r27,3
9799 562a D594 1: asr r13
9800 562c C794 ror r12
9801 562e BA95 dec r27
9802 5630 E1F7 brne 1b
9803 5632 12C0 rjmp .L747
9804 .L745:
9805 5634 C694 lsr r12
9806 5636 8C2D mov r24,r12
9807 5638 9927 clr r25
9808 563a 829F mul r24,r18
9809 563c D001 movw r26,r0
9810 563e 839F mul r24,r19
9811 5640 B00D add r27,r0
9812 5642 929F mul r25,r18
9813 5644 B00D add r27,r0
9814 5646 1124 clr r1
9815 5648 CD01 movw r24,r26
9816 564a B7FD sbrc r27,7
9817 564c 0396 adiw r24,3
9818 .L748:
9819 564e 6C01 movw r12,r24
9820 5650 D594 asr r13
9821 5652 C794 ror r12
9822 5654 D594 asr r13
9823 5656 C794 ror r12
9824 .L747:
9825 5658 9501 movw r18,r10
9826 565a 4427 clr r20
9827 565c 37FD sbrc r19,7
9828 565e 4095 com r20
9829 5660 542F mov r21,r20
9830 5662 8091 0000 lds r24,SummeRoll
9831 5666 9091 0000 lds r25,(SummeRoll)+1
9832 566a A091 0000 lds r26,(SummeRoll)+2
9833 566e B091 0000 lds r27,(SummeRoll)+3
9834 5672 BC01 movw r22,r24
9835 5674 CD01 movw r24,r26
9836 5676 0E94 0000 call __divmodsi4
9837 567a C20E add r12,r18
9838 567c D31E adc r13,r19
9839 567e 692D mov r22,r9
9840 5680 7727 clr r23
9841 5682 8827 clr r24
9842 5684 9927 clr r25
9843 5686 9801 movw r18,r16
9844 5688 17FF sbrs r17,7
9845 568a 04C0 rjmp .L749
9846 568c 2227 clr r18
9847 568e 3327 clr r19
9848 5690 201B sub r18,r16
9849 5692 310B sbc r19,r17
9850 .L749:
9851 5694 37FF sbrs r19,7
9852 5696 02C0 rjmp .L750
9853 5698 2F5F subi r18,lo8(-(1))
9854 569a 3F4F sbci r19,hi8(-(1))
9855 .L750:
9856 569c 3595 asr r19
9857 569e 2795 ror r18
9858 56a0 E981 ldd r30,Y+1
9859 56a2 FA81 ldd r31,Y+2
9860 56a4 2E0F add r18,r30
9861 56a6 3F1F adc r19,r31
9862 56a8 4427 clr r20
9863 56aa 37FD sbrc r19,7
9864 56ac 4095 com r20
9865 56ae 542F mov r21,r20
9866 56b0 0E94 0000 call __mulsi3
9867 56b4 97FF sbrs r25,7
9868 56b6 04C0 rjmp .L751
9869 56b8 615C subi r22,lo8(-(63))
9870 56ba 7F4F sbci r23,hi8(-(63))
9871 56bc 8F4F sbci r24,hlo8(-(63))
9872 56be 9F4F sbci r25,hhi8(-(63))
9873 .L751:
9874 56c0 E6E0 ldi r30,6
9875 56c2 9595 1: asr r25
9876 56c4 8795 ror r24
9877 56c6 7795 ror r23
9878 56c8 6795 ror r22
9879 56ca EA95 dec r30
9880 56cc D1F7 brne 1b
9881 56ce 9B01 movw r18,r22
9882 56d0 6C15 cp r22,r12
9883 56d2 7D05 cpc r23,r13
9884 56d4 0CF4 brge .L752
9885 56d6 6B01 movw r12,r22
9886 .L752:
9887 56d8 3095 com r19
9888 56da 2195 neg r18
9889 56dc 3F4F sbci r19,lo8(-1)
9890 56de C216 cp r12,r18
9891 56e0 D306 cpc r13,r19
9892 56e2 0CF4 brge .L753
9893 56e4 6901 movw r12,r18
9894 .L753:
9895 56e6 60E0 ldi r22,lo8(Motor)
9896 56e8 862E mov r8,r22
9897 56ea 60E0 ldi r22,hi8(Motor)
9898 56ec 962E mov r9,r22
9899 56ee 50E0 ldi r21,lo8(Mixer+13)
9900 56f0 A52E mov r10,r21
9901 56f2 50E0 ldi r21,hi8(Mixer+13)
9902 56f4 B52E mov r11,r21
9903 56f6 4BE0 ldi r20,lo8(11)
9904 56f8 542E mov r5,r20
9905 56fa 30E0 ldi r19,lo8(tmp_motorwert)
9906 56fc 632E mov r6,r19
9907 56fe 30E0 ldi r19,hi8(tmp_motorwert)
9908 5700 732E mov r7,r19
9909 .L785:
9910 5702 D501 movw r26,r10
9911 5704 2C91 ld r18,X
9912 5706 1216 cp __zero_reg__,r18
9913 5708 0CF0 brlt .+2
9914 570a 14C1 rjmp .L757
9915 570c 2034 cpi r18,lo8(64)
9916 570e 29F4 brne .L758
9917 5710 E981 ldd r30,Y+1
9918 5712 FA81 ldd r31,Y+2
9919 5714 F88F std Y+24,r31
9920 5716 EF8B std Y+23,r30
9921 5718 1FC0 rjmp .L759
9922 .L758:
9923 571a 4981 ldd r20,Y+1
9924 571c 5A81 ldd r21,Y+2
9925 571e CA01 movw r24,r20
9926 5720 AA27 clr r26
9927 5722 97FD sbrc r25,7
9928 5724 A095 com r26
9929 5726 BA2F mov r27,r26
9930 5728 3327 clr r19
9931 572a 27FD sbrc r18,7
9932 572c 3095 com r19
9933 572e 432F mov r20,r19
9934 5730 532F mov r21,r19
9935 5732 BC01 movw r22,r24
9936 5734 CD01 movw r24,r26
9937 5736 0E94 0000 call __mulsi3
9938 573a 97FF sbrs r25,7
9939 573c 04C0 rjmp .L760
9940 573e 615C subi r22,lo8(-(63))
9941 5740 7F4F sbci r23,hi8(-(63))
9942 5742 8F4F sbci r24,hlo8(-(63))
9943 5744 9F4F sbci r25,hhi8(-(63))
9944 .L760:
9945 5746 26E0 ldi r18,6
9946 5748 9595 1: asr r25
9947 574a 8795 ror r24
9948 574c 7795 ror r23
9949 574e 6795 ror r22
9950 5750 2A95 dec r18
9951 5752 D1F7 brne 1b
9952 5754 788F std Y+24,r23
9953 5756 6F8B std Y+23,r22
9954 .L759:
9955 5758 F501 movw r30,r10
9956 575a 2181 ldd r18,Z+1
9957 575c 2034 cpi r18,lo8(64)
9958 575e 39F4 brne .L761
9959 5760 2F89 ldd r18,Y+23
9960 5762 388D ldd r19,Y+24
9961 5764 2E0D add r18,r14
9962 5766 3F1D adc r19,r15
9963 5768 388F std Y+24,r19
9964 576a 2F8B std Y+23,r18
9965 576c 2AC0 rjmp .L762
9966 .L761:
9967 576e 203C cpi r18,lo8(-64)
9968 5770 39F4 brne .L763
9969 5772 4F89 ldd r20,Y+23
9970 5774 588D ldd r21,Y+24
9971 5776 4E19 sub r20,r14
9972 5778 5F09 sbc r21,r15
9973 577a 588F std Y+24,r21
9974 577c 4F8B std Y+23,r20
9975 577e 21C0 rjmp .L762
9976 .L763:
9977 5780 C701 movw r24,r14
9978 5782 AA27 clr r26
9979 5784 97FD sbrc r25,7
9980 5786 A095 com r26
9981 5788 BA2F mov r27,r26
9982 578a 3327 clr r19
9983 578c 27FD sbrc r18,7
9984 578e 3095 com r19
9985 5790 432F mov r20,r19
9986 5792 532F mov r21,r19
9987 5794 BC01 movw r22,r24
9988 5796 CD01 movw r24,r26
9989 5798 0E94 0000 call __mulsi3
9990 579c 97FF sbrs r25,7
9991 579e 04C0 rjmp .L765
9992 57a0 615C subi r22,lo8(-(63))
9993 57a2 7F4F sbci r23,hi8(-(63))
9994 57a4 8F4F sbci r24,hlo8(-(63))
9995 57a6 9F4F sbci r25,hhi8(-(63))
9996 .L765:
9997 57a8 B6E0 ldi r27,6
9998 57aa 9595 1: asr r25
9999 57ac 8795 ror r24
10000 57ae 7795 ror r23
10001 57b0 6795 ror r22
10002 57b2 BA95 dec r27
10003 57b4 D1F7 brne 1b
10004 57b6 AF89 ldd r26,Y+23
10005 57b8 B88D ldd r27,Y+24
10006 57ba A60F add r26,r22
10007 57bc B71F adc r27,r23
10008 57be B88F std Y+24,r27
10009 57c0 AF8B std Y+23,r26
10010 .L762:
10011 57c2 F501 movw r30,r10
10012 57c4 2281 ldd r18,Z+2
10013 57c6 2034 cpi r18,lo8(64)
10014 57c8 39F4 brne .L766
10015 57ca 2F89 ldd r18,Y+23
10016 57cc 388D ldd r19,Y+24
10017 57ce 2C0D add r18,r12
10018 57d0 3D1D adc r19,r13
10019 57d2 388F std Y+24,r19
10020 57d4 2F8B std Y+23,r18
10021 57d6 2AC0 rjmp .L767
10022 .L766:
10023 57d8 203C cpi r18,lo8(-64)
10024 57da 39F4 brne .L768
10025 57dc 4F89 ldd r20,Y+23
10026 57de 588D ldd r21,Y+24
10027 57e0 4C19 sub r20,r12
10028 57e2 5D09 sbc r21,r13
10029 57e4 588F std Y+24,r21
10030 57e6 4F8B std Y+23,r20
10031 57e8 21C0 rjmp .L767
10032 .L768:
10033 57ea C601 movw r24,r12
10034 57ec AA27 clr r26
10035 57ee 97FD sbrc r25,7
10036 57f0 A095 com r26
10037 57f2 BA2F mov r27,r26
10038 57f4 3327 clr r19
10039 57f6 27FD sbrc r18,7
10040 57f8 3095 com r19
10041 57fa 432F mov r20,r19
10042 57fc 532F mov r21,r19
10043 57fe BC01 movw r22,r24
10044 5800 CD01 movw r24,r26
10045 5802 0E94 0000 call __mulsi3
10046 5806 97FF sbrs r25,7
10047 5808 04C0 rjmp .L770
10048 580a 615C subi r22,lo8(-(63))
10049 580c 7F4F sbci r23,hi8(-(63))
10050 580e 8F4F sbci r24,hlo8(-(63))
10051 5810 9F4F sbci r25,hhi8(-(63))
10052 .L770:
10053 5812 A6E0 ldi r26,6
10054 5814 9595 1: asr r25
10055 5816 8795 ror r24
10056 5818 7795 ror r23
10057 581a 6795 ror r22
10058 581c AA95 dec r26
10059 581e D1F7 brne 1b
10060 5820 AF89 ldd r26,Y+23
10061 5822 B88D ldd r27,Y+24
10062 5824 A60F add r26,r22
10063 5826 B71F adc r27,r23
10064 5828 B88F std Y+24,r27
10065 582a AF8B std Y+23,r26
10066 .L767:
10067 582c F501 movw r30,r10
10068 582e 2381 ldd r18,Z+3
10069 5830 2034 cpi r18,lo8(64)
10070 5832 39F4 brne .L771
10071 5834 2F89 ldd r18,Y+23
10072 5836 388D ldd r19,Y+24
10073 5838 200F add r18,r16
10074 583a 311F adc r19,r17
10075 583c 388F std Y+24,r19
10076 583e 2F8B std Y+23,r18
10077 5840 2AC0 rjmp .L772
10078 .L771:
10079 5842 203C cpi r18,lo8(-64)
10080 5844 39F4 brne .L773
10081 5846 4F89 ldd r20,Y+23
10082 5848 588D ldd r21,Y+24
10083 584a 401B sub r20,r16
10084 584c 510B sbc r21,r17
10085 584e 588F std Y+24,r21
10086 5850 4F8B std Y+23,r20
10087 5852 21C0 rjmp .L772
10088 .L773:
10089 5854 C801 movw r24,r16
10090 5856 AA27 clr r26
10091 5858 97FD sbrc r25,7
10092 585a A095 com r26
10093 585c BA2F mov r27,r26
10094 585e 3327 clr r19
10095 5860 27FD sbrc r18,7
10096 5862 3095 com r19
10097 5864 432F mov r20,r19
10098 5866 532F mov r21,r19
10099 5868 BC01 movw r22,r24
10100 586a CD01 movw r24,r26
10101 586c 0E94 0000 call __mulsi3
10102 5870 97FF sbrs r25,7
10103 5872 04C0 rjmp .L775
10104 5874 615C subi r22,lo8(-(63))
10105 5876 7F4F sbci r23,hi8(-(63))
10106 5878 8F4F sbci r24,hlo8(-(63))
10107 587a 9F4F sbci r25,hhi8(-(63))
10108 .L775:
10109 587c F6E0 ldi r31,6
10110 587e 9595 1: asr r25
10111 5880 8795 ror r24
10112 5882 7795 ror r23
10113 5884 6795 ror r22
10114 5886 FA95 dec r31
10115 5888 D1F7 brne 1b
10116 588a AF89 ldd r26,Y+23
10117 588c B88D ldd r27,Y+24
10118 588e A60F add r26,r22
10119 5890 B71F adc r27,r23
10120 5892 B88F std Y+24,r27
10121 5894 AF8B std Y+23,r26
10122 .L772:
10123 5896 F301 movw r30,r6
10124 5898 8081 ld r24,Z
10125 589a 9181 ldd r25,Z+1
10126 589c 2F89 ldd r18,Y+23
10127 589e 388D ldd r19,Y+24
10128 58a0 8217 cp r24,r18
10129 58a2 9307 cpc r25,r19
10130 58a4 64F4 brge .L776
10131 58a6 B901 movw r22,r18
10132 58a8 680F add r22,r24
10133 58aa 791F adc r23,r25
10134 58ac 77FF sbrs r23,7
10135 58ae 02C0 rjmp .L777
10136 58b0 6F5F subi r22,lo8(-(1))
10137 58b2 7F4F sbci r23,hi8(-(1))
10138 .L777:
10139 58b4 7595 asr r23
10140 58b6 6795 ror r22
10141 58b8 788F std Y+24,r23
10142 58ba 6F8B std Y+23,r22
10143 58bc 08C0 rjmp .L778
10144 .L776:
10145 58be 4F89 ldd r20,Y+23
10146 58c0 588D ldd r21,Y+24
10147 58c2 440F add r20,r20
10148 58c4 551F adc r21,r21
10149 58c6 481B sub r20,r24
10150 58c8 590B sbc r21,r25
10151 58ca 588F std Y+24,r21
10152 58cc 4F8B std Y+23,r20
10153 .L778:
10154 58ce 822D mov r24,r2
10155 58d0 9927 clr r25
10156 58d2 880F lsl r24
10157 58d4 991F rol r25
10158 58d6 880F lsl r24
10159 58d8 991F rol r25
10160 58da 6F89 ldd r22,Y+23
10161 58dc 788D ldd r23,Y+24
10162 58de 8617 cp r24,r22
10163 58e0 9707 cpc r25,r23
10164 58e2 5CF4 brge .L813
10165 58e4 832D mov r24,r3
10166 58e6 9927 clr r25
10167 58e8 880F lsl r24
10168 58ea 991F rol r25
10169 58ec 880F lsl r24
10170 58ee 991F rol r25
10171 58f0 AF89 ldd r26,Y+23
10172 58f2 B88D ldd r27,Y+24
10173 58f4 A817 cp r26,r24
10174 58f6 B907 cpc r27,r25
10175 58f8 14F0 brlt .L780
10176 .L813:
10177 58fa 988F std Y+24,r25
10178 58fc 8F8B std Y+23,r24
10179 .L780:
10180 58fe 8F89 ldd r24,Y+23
10181 5900 988D ldd r25,Y+24
10182 5902 97FD sbrc r25,7
10183 5904 0396 adiw r24,3
10184 .L782:
10185 5906 9595 asr r25
10186 5908 8795 ror r24
10187 590a 9595 asr r25
10188 590c 8795 ror r24
10189 590e F401 movw r30,r8
10190 5910 8183 std Z+1,r24
10191 5912 880F lsl r24
10192 5914 991F rol r25
10193 5916 880F lsl r24
10194 5918 991F rol r25
10195 591a 2F89 ldd r18,Y+23
10196 591c 388D ldd r19,Y+24
10197 591e 281B sub r18,r24
10198 5920 390B sbc r19,r25
10199 5922 C901 movw r24,r18
10200 5924 880F lsl r24
10201 5926 8283 std Z+2,r24
10202 5928 EF89 ldd r30,Y+23
10203 592a F88D ldd r31,Y+24
10204 592c D301 movw r26,r6
10205 592e ED93 st X+,r30
10206 5930 FC93 st X,r31
10207 5932 03C0 rjmp .L756
10208 .L757:
10209 5934 F401 movw r30,r8
10210 5936 1182 std Z+1,__zero_reg__
10211 5938 1282 std Z+2,__zero_reg__
10212 .L756:
10213 593a 5A94 dec r5
10214 593c 22E0 ldi r18,lo8(2)
10215 593e 30E0 ldi r19,hi8(2)
10216 5940 620E add r6,r18
10217 5942 731E adc r7,r19
10218 5944 44E0 ldi r20,lo8(4)
10219 5946 50E0 ldi r21,hi8(4)
10220 5948 A40E add r10,r20
10221 594a B51E adc r11,r21
10222 594c 68E0 ldi r22,lo8(8)
10223 594e 70E0 ldi r23,hi8(8)
10224 5950 860E add r8,r22
10225 5952 971E adc r9,r23
10226 5954 57FE sbrs r5,7
10227 5956 D5CE rjmp .L785
10228 /* epilogue: frame size=24 */
10229 5958 E2E1 ldi r30,18
10230 595a C85E subi r28,-24
10231 595c 0C94 0000 jmp __epilogue_restores__+0
10232 /* epilogue end (size=4) */
10233 /* function MotorRegler size 7701 (7691) */
10235 .comm TrimNick,2,1
10236 .comm TrimRoll,2,1
10237 .comm ErsatzKompass,4,1
10238 .comm ErsatzKompassInGrad,2,1
10239 .comm MesswertNick,2,1
10240 .comm MesswertRoll,2,1
10241 .comm MesswertGier,2,1
10242 .comm Mittelwert_AccNick,2,1
10243 .comm Mittelwert_AccRoll,2,1
10244 .comm NaviAccNick,2,1
10245 .comm NaviAccRoll,2,1
10246 .comm h,1,1
10247 .comm m,1,1
10248 .comm s,1,1
10249 .comm DiffNick,2,1
10250 .comm DiffRoll,2,1
10251 .comm Parameter_Servo3,1,1
10252 .comm Parameter_Servo4,1,1
10253 .comm Parameter_Servo5,1,1
10254 .comm Parameter_J16Bitmask,1,1
10255 .comm Parameter_J16Timing,1,1
10256 .comm Parameter_J17Bitmask,1,1
10257 .comm Parameter_J17Timing,1,1
10258 .comm loop1,1,1
10259 .comm loop2,1,1
10260 .comm loop3,1,1
10261 .comm pos1,1,1
10262 .comm pos2,1,1
10263 .comm pos3,1,1
10264 .comm Motors0,1,1
10265 .comm Motors1,1,1
10266 .comm Motors2,1,1
10267 .comm Motors3,1,1
10268 .comm Motors4,1,1
10269 .comm Motors5,1,1
10270 .comm Motors6,1,1
10271 .comm Motors7,1,1
10272 .comm Motors0max,1,1
10273 .comm Motors1max,1,1
10274 .comm Motors2max,1,1
10275 .comm Motors3max,1,1
10276 .comm Motors4max,1,1
10277 .comm Motors5max,1,1
10278 .comm Motors6max,1,1
10279 .comm Motors7max,1,1
10280 .comm MotorsTmax,2,1
10281 .comm MesswertGierBias,2,1
10282 .comm RohMesswertNick,2,1
10283 .comm RohMesswertRoll,2,1
10284 .comm MittelIntegralNick,4,1
10285 .comm MittelIntegralRoll,4,1
10286 .comm MittelIntegralNick2,4,1
10287 .comm MittelIntegralRoll2,4,1
10288 .comm MAX_GAS,1,1
10289 .comm MIN_GAS,1,1
10290 .comm GyroFaktor,1,1
10291 .comm GyroFaktorGier,1,1
10292 .comm IntegralFaktor,1,1
10293 .comm IntegralFaktorGier,1,1
10294 .comm Parameter_NaviGpsModeControl,1,1
10295 .comm Parameter_NaviGpsGain,1,1
10296 .comm Parameter_NaviGpsP,1,1
10297 .comm Parameter_NaviGpsI,1,1
10298 .comm Parameter_NaviGpsD,1,1
10299 .comm Parameter_NaviGpsACC,1,1
10300 .comm Parameter_NaviOperatingRadius,1,1
10301 .comm Parameter_NaviWindCorrection,1,1
10302 .comm Parameter_NaviSpeedCompensation,1,1
10303 .comm Parameter_ExternalControl,1,1
10304 .comm KopplungsteilNickRoll,2,1
10305 .comm KopplungsteilRollNick,2,1
10306 .comm tmp_motorwert,24,1
10307 /* File "fc.c": code 11593 = 0x2d49 (11536), prologues 29, epilogues 28 */
DEFINED SYMBOLS
*ABS*:00000000 fc.c
C:\Users\Thomas\AppData\Local\Temp/ccWWbaaa.s:3 *ABS*:0000003f __SREG__
C:\Users\Thomas\AppData\Local\Temp/ccWWbaaa.s:4 *ABS*:0000003e __SP_H__
C:\Users\Thomas\AppData\Local\Temp/ccWWbaaa.s:5 *ABS*:0000003d __SP_L__
C:\Users\Thomas\AppData\Local\Temp/ccWWbaaa.s:6 *ABS*:00000000 __tmp_reg__
C:\Users\Thomas\AppData\Local\Temp/ccWWbaaa.s:7 *ABS*:00000001 __zero_reg__
C:\Users\Thomas\AppData\Local\Temp/ccWWbaaa.s:14 .data:00000000 VarioCharacter
C:\Users\Thomas\AppData\Local\Temp/ccWWbaaa.s:19 .data:00000001 GIER_GRAD_FAKTOR
C:\Users\Thomas\AppData\Local\Temp/ccWWbaaa.s:26 .bss:00000000 FC_StatusFlags
C:\Users\Thomas\AppData\Local\Temp/ccWWbaaa.s:32 .bss:00000001 modell_fliegt
C:\Users\Thomas\AppData\Local\Temp/ccWWbaaa.s:38 .bss:00000003 MaxStickRoll
C:\Users\Thomas\AppData\Local\Temp/ccWWbaaa.s:44 .bss:00000005 MaxStickNick
C:\Users\Thomas\AppData\Local\Temp/ccWWbaaa.s:50 .data:00000005 ExternHoehenValue
C:\Users\Thomas\AppData\Local\Temp/ccWWbaaa.s:57 .bss:00000007 ExternStickGier
C:\Users\Thomas\AppData\Local\Temp/ccWWbaaa.s:63 .bss:00000009 ExternStickRoll
C:\Users\Thomas\AppData\Local\Temp/ccWWbaaa.s:69 .bss:0000000b ExternStickNick
C:\Users\Thomas\AppData\Local\Temp/ccWWbaaa.s:75 .data:00000007 sintab
C:\Users\Thomas\AppData\Local\Temp/ccWWbaaa.s:112 .bss:0000000d CareFree
C:\Users\Thomas\AppData\Local\Temp/ccWWbaaa.s:118 .data:00000026 Parameter_DynamicStability
C:\Users\Thomas\AppData\Local\Temp/ccWWbaaa.s:123 .data:00000027 Parameter_CouplingYawCorrection
C:\Users\Thomas\AppData\Local\Temp/ccWWbaaa.s:128 .data:00000028 Parameter_AchsKopplung2
C:\Users\Thomas\AppData\Local\Temp/ccWWbaaa.s:133 .data:00000029 Parameter_AchsKopplung1
C:\Users\Thomas\AppData\Local\Temp/ccWWbaaa.s:138 .data:0000002a Parameter_LoopGasLimit
C:\Users\Thomas\AppData\Local\Temp/ccWWbaaa.s:143 .data:0000002b Parameter_ServoRollControl
C:\Users\Thomas\AppData\Local\Temp/ccWWbaaa.s:148 .data:0000002c Parameter_ServoNickControl
C:\Users\Thomas\AppData\Local\Temp/ccWWbaaa.s:155 .bss:0000000e Parameter_UserParam8
C:\Users\Thomas\AppData\Local\Temp/ccWWbaaa.s:161 .bss:0000000f Parameter_UserParam7
C:\Users\Thomas\AppData\Local\Temp/ccWWbaaa.s:167 .bss:00000010 Parameter_UserParam6
C:\Users\Thomas\AppData\Local\Temp/ccWWbaaa.s:173 .bss:00000011 Parameter_UserParam5
C:\Users\Thomas\AppData\Local\Temp/ccWWbaaa.s:179 .bss:00000012 Parameter_UserParam4
C:\Users\Thomas\AppData\Local\Temp/ccWWbaaa.s:185 .bss:00000013 Parameter_UserParam3
C:\Users\Thomas\AppData\Local\Temp/ccWWbaaa.s:191 .bss:00000014 Parameter_UserParam2
C:\Users\Thomas\AppData\Local\Temp/ccWWbaaa.s:197 .bss:00000015 Parameter_UserParam1
C:\Users\Thomas\AppData\Local\Temp/ccWWbaaa.s:203 .data:0000002d Parameter_I_Faktor
C:\Users\Thomas\AppData\Local\Temp/ccWWbaaa.s:208 .data:0000002e Parameter_Gier_P
C:\Users\Thomas\AppData\Local\Temp/ccWWbaaa.s:213 .data:0000002f Parameter_Gyro_Gier_I
C:\Users\Thomas\AppData\Local\Temp/ccWWbaaa.s:218 .data:00000030 Parameter_Gyro_Gier_P
C:\Users\Thomas\AppData\Local\Temp/ccWWbaaa.s:223 .data:00000031 Parameter_Gyro_I
C:\Users\Thomas\AppData\Local\Temp/ccWWbaaa.s:228 .data:00000032 Parameter_Gyro_P
C:\Users\Thomas\AppData\Local\Temp/ccWWbaaa.s:233 .data:00000033 Parameter_Gyro_D
C:\Users\Thomas\AppData\Local\Temp/ccWWbaaa.s:238 .data:00000034 Parameter_Hoehe_GPS_Z
C:\Users\Thomas\AppData\Local\Temp/ccWWbaaa.s:243 .data:00000035 Parameter_KompassWirkung
C:\Users\Thomas\AppData\Local\Temp/ccWWbaaa.s:248 .data:00000036 Parameter_Hoehe_ACC_Wirkung
C:\Users\Thomas\AppData\Local\Temp/ccWWbaaa.s:253 .data:00000037 Parameter_Hoehe_P
C:\Users\Thomas\AppData\Local\Temp/ccWWbaaa.s:258 .data:00000038 Parameter_MaxHoehe
C:\Users\Thomas\AppData\Local\Temp/ccWWbaaa.s:263 .data:00000039 Parameter_Luftdruck_D
C:\Users\Thomas\AppData\Local\Temp/ccWWbaaa.s:270 .bss:00000016 Looping_Oben
C:\Users\Thomas\AppData\Local\Temp/ccWWbaaa.s:276 .bss:00000017 Looping_Unten
C:\Users\Thomas\AppData\Local\Temp/ccWWbaaa.s:282 .bss:00000018 Looping_Rechts
C:\Users\Thomas\AppData\Local\Temp/ccWWbaaa.s:288 .bss:00000019 Looping_Links
C:\Users\Thomas\AppData\Local\Temp/ccWWbaaa.s:294 .bss:0000001a Looping_Roll
C:\Users\Thomas\AppData\Local\Temp/ccWWbaaa.s:300 .bss:0000001b Looping_Nick
C:\Users\Thomas\AppData\Local\Temp/ccWWbaaa.s:306 .data:0000003a Ki
C:\Users\Thomas\AppData\Local\Temp/ccWWbaaa.s:313 .bss:0000001c HoverGas
C:\Users\Thomas\AppData\Local\Temp/ccWWbaaa.s:319 .bss:0000001e LageKorrekturNick
C:\Users\Thomas\AppData\Local\Temp/ccWWbaaa.s:325 .bss:00000020 LageKorrekturRoll
C:\Users\Thomas\AppData\Local\Temp/ccWWbaaa.s:331 .bss:00000022 SollHoehe
C:\Users\Thomas\AppData\Local\Temp/ccWWbaaa.s:337 .bss:00000026 HoehenWert
C:\Users\Thomas\AppData\Local\Temp/ccWWbaaa.s:343 .bss:0000002a StartTrigger
C:\Users\Thomas\AppData\Local\Temp/ccWWbaaa.s:349 .bss:0000002b MotorenEin
C:\Users\Thomas\AppData\Local\Temp/ccWWbaaa.s:355 .bss:0000002c StickGas
C:\Users\Thomas\AppData\Local\Temp/ccWWbaaa.s:361 .bss:0000002e StickGier
C:\Users\Thomas\AppData\Local\Temp/ccWWbaaa.s:367 .bss:00000030 StickRoll
C:\Users\Thomas\AppData\Local\Temp/ccWWbaaa.s:373 .bss:00000032 StickNick
C:\Users\Thomas\AppData\Local\Temp/ccWWbaaa.s:379 .bss:00000034 SenderOkay
C:\Users\Thomas\AppData\Local\Temp/ccWWbaaa.s:385 .bss:00000035 Poti
C:\Users\Thomas\AppData\Local\Temp/ccWWbaaa.s:391 .bss:0000003e GierGyroFehler
C:\Users\Thomas\AppData\Local\Temp/ccWWbaaa.s:397 .data:0000003c Umschlag180Roll
C:\Users\Thomas\AppData\Local\Temp/ccWWbaaa.s:402 .data:00000040 Umschlag180Nick
C:\Users\Thomas\AppData\Local\Temp/ccWWbaaa.s:409 .bss:00000040 TrichterFlug
C:\Users\Thomas\AppData\Local\Temp/ccWWbaaa.s:415 .bss:00000041 HoehenReglerAktiv
C:\Users\Thomas\AppData\Local\Temp/ccWWbaaa.s:421 .data:00000044 KompassSignalSchlecht
C:\Users\Thomas\AppData\Local\Temp/ccWWbaaa.s:428 .bss:00000042 KompassRichtung
C:\Users\Thomas\AppData\Local\Temp/ccWWbaaa.s:434 .bss:00000044 KompassStartwert
C:\Users\Thomas\AppData\Local\Temp/ccWWbaaa.s:440 .bss:00000046 KompassValue
C:\Users\Thomas\AppData\Local\Temp/ccWWbaaa.s:446 .bss:00000048 Mess_Integral_Hoch
C:\Users\Thomas\AppData\Local\Temp/ccWWbaaa.s:452 .bss:0000004c SummeRoll
C:\Users\Thomas\AppData\Local\Temp/ccWWbaaa.s:458 .bss:00000050 SummeNick
C:\Users\Thomas\AppData\Local\Temp/ccWWbaaa.s:464 .bss:00000054 Mess_Integral_Gier2
C:\Users\Thomas\AppData\Local\Temp/ccWWbaaa.s:470 .bss:00000058 Mess_Integral_Gier
C:\Users\Thomas\AppData\Local\Temp/ccWWbaaa.s:476 .bss:0000005c Mess_IntegralRoll2
C:\Users\Thomas\AppData\Local\Temp/ccWWbaaa.s:482 .bss:00000060 Mess_IntegralRoll
C:\Users\Thomas\AppData\Local\Temp/ccWWbaaa.s:488 .bss:00000064 Mess_IntegralNick2
C:\Users\Thomas\AppData\Local\Temp/ccWWbaaa.s:494 .bss:00000068 Mess_IntegralNick
C:\Users\Thomas\AppData\Local\Temp/ccWWbaaa.s:500 .bss:0000006c Integral_Gier
C:\Users\Thomas\AppData\Local\Temp/ccWWbaaa.s:506 .bss:00000070 IntegralAccZ
C:\Users\Thomas\AppData\Local\Temp/ccWWbaaa.s:512 .bss:00000074 IntegralAccRoll
C:\Users\Thomas\AppData\Local\Temp/ccWWbaaa.s:518 .bss:00000078 IntegralAccNick
C:\Users\Thomas\AppData\Local\Temp/ccWWbaaa.s:524 .bss:0000007c IntegralRoll2
C:\Users\Thomas\AppData\Local\Temp/ccWWbaaa.s:530 .bss:00000080 IntegralRoll
C:\Users\Thomas\AppData\Local\Temp/ccWWbaaa.s:536 .bss:00000084 IntegralNick2
C:\Users\Thomas\AppData\Local\Temp/ccWWbaaa.s:542 .bss:00000088 IntegralNick
C:\Users\Thomas\AppData\Local\Temp/ccWWbaaa.s:548 .bss:0000008c ControlHeading
C:\Users\Thomas\AppData\Local\Temp/ccWWbaaa.s:554 .bss:0000008d NeutralAccZ
C:\Users\Thomas\AppData\Local\Temp/ccWWbaaa.s:560 .bss:0000008f NaviCntAcc
C:\Users\Thomas\AppData\Local\Temp/ccWWbaaa.s:566 .bss:00000091 NeutralAccY
C:\Users\Thomas\AppData\Local\Temp/ccWWbaaa.s:572 .bss:00000093 NeutralAccX
C:\Users\Thomas\AppData\Local\Temp/ccWWbaaa.s:578 .bss:00000095 StartNeutralNick
C:\Users\Thomas\AppData\Local\Temp/ccWWbaaa.s:584 .bss:00000097 StartNeutralRoll
C:\Users\Thomas\AppData\Local\Temp/ccWWbaaa.s:590 .bss:00000099 AdNeutralGier
C:\Users\Thomas\AppData\Local\Temp/ccWWbaaa.s:596 .bss:0000009b AdNeutralRoll
C:\Users\Thomas\AppData\Local\Temp/ccWWbaaa.s:602 .bss:0000009d AdNeutralNick
C:\Users\Thomas\AppData\Local\Temp/ccWWbaaa.s:608 .bss:0000009f BaroExpandActive
C:\Users\Thomas\AppData\Local\Temp/ccWWbaaa.s:614 .data:00000046 updatemotors
C:\Users\Thomas\AppData\Local\Temp/ccWWbaaa.s:621 .bss:000000a1 pos4
C:\Users\Thomas\AppData\Local\Temp/ccWWbaaa.s:627 .bss:000000a2 CurrentOffset
C:\Users\Thomas\AppData\Local\Temp/ccWWbaaa.s:633 .data:00000047 keynumber
C:\Users\Thomas\AppData\Local\Temp/ccWWbaaa.s:638 .data:00000049 settingdest
C:\Users\Thomas\AppData\Local\Temp/ccWWbaaa.s:643 .text:00000000 CopyDebugValues
*COM*:00000002 Mittelwert_AccNick
*COM*:00000002 Mittelwert_AccRoll
*COM*:00000004 ErsatzKompass
C:\Users\Thomas\AppData\Local\Temp/ccWWbaaa.s:821 .text:00000214 Piep
C:\Users\Thomas\AppData\Local\Temp/ccWWbaaa.s:860 .text:00000256 CalibrierMittelwert
*COM*:00000002 MesswertNick
*COM*:00000002 MesswertRoll
*COM*:00000002 MesswertGier
C:\Users\Thomas\AppData\Local\Temp/ccWWbaaa.s:1002 .progmem.data:00000000 __c.39
C:\Users\Thomas\AppData\Local\Temp/ccWWbaaa.s:1007 .text:00000398 SetNeutral
.bss:000000a4 tmpl.31
C:\Users\Thomas\AppData\Local\Temp/ccWWbaaa.s:1508 .bss:000000a8 tmpl2.32
C:\Users\Thomas\AppData\Local\Temp/ccWWbaaa.s:1509 .bss:000000ac tmpl3.33
C:\Users\Thomas\AppData\Local\Temp/ccWWbaaa.s:1510 .bss:000000b0 tmpl4.34
C:\Users\Thomas\AppData\Local\Temp/ccWWbaaa.s:1511 .bss:000000b4 oldNick.35
C:\Users\Thomas\AppData\Local\Temp/ccWWbaaa.s:1512 .bss:000000b6 oldRoll.36
C:\Users\Thomas\AppData\Local\Temp/ccWWbaaa.s:1513 .bss:000000b8 d2Roll.37
C:\Users\Thomas\AppData\Local\Temp/ccWWbaaa.s:1514 .bss:000000ba d2Nick.38
C:\Users\Thomas\AppData\Local\Temp/ccWWbaaa.s:1518 .text:000008f4 Mittelwert
*COM*:00000002 RohMesswertNick
*COM*:00000002 RohMesswertRoll
*COM*:00000002 NaviAccNick
*COM*:00000002 NaviAccRoll
*COM*:00000002 KopplungsteilNickRoll
*COM*:00000002 KopplungsteilRollNick
*COM*:00000002 TrimRoll
*COM*:00000002 TrimNick
C:\Users\Thomas\AppData\Local\Temp/ccWWbaaa.s:3083 .text:00001858 SendMotorData
C:\Users\Thomas\AppData\Local\Temp/ccWWbaaa.s:3143 .text:000018d2 ParameterZuordnung
*COM*:00000001 Parameter_J16Timing
*COM*:00000001 Parameter_J17Timing
*COM*:00000001 Parameter_Servo3
*COM*:00000001 Parameter_Servo4
*COM*:00000001 Parameter_Servo5
*COM*:00000001 Parameter_ExternalControl
*COM*:00000001 MAX_GAS
*COM*:00000001 MIN_GAS
C:\Users\Thomas\AppData\Local\Temp/ccWWbaaa.s:1515 .bss:000000bc sollGier.0
C:\Users\Thomas\AppData\Local\Temp/ccWWbaaa.s:3769 .bss:000000c0 tmp_long.1
C:\Users\Thomas\AppData\Local\Temp/ccWWbaaa.s:3770 .bss:000000c4 tmp_long2.2
C:\Users\Thomas\AppData\Local\Temp/ccWWbaaa.s:3771 .bss:000000c8 IntegralFehlerNick.3
C:\Users\Thomas\AppData\Local\Temp/ccWWbaaa.s:3772 .bss:000000cc IntegralFehlerRoll.4
C:\Users\Thomas\AppData\Local\Temp/ccWWbaaa.s:3773 .bss:000000d0 RcLostTimer.5
C:\Users\Thomas\AppData\Local\Temp/ccWWbaaa.s:3774 .bss:000000d2 delay_neutral.6
C:\Users\Thomas\AppData\Local\Temp/ccWWbaaa.s:3775 .bss:000000d3 delay_einschalten.7
C:\Users\Thomas\AppData\Local\Temp/ccWWbaaa.s:3776 .bss:000000d4 delay_ausschalten.8
C:\Users\Thomas\AppData\Local\Temp/ccWWbaaa.s:3777 .bss:000000d5 calibration_done.9
C:\Users\Thomas\AppData\Local\Temp/ccWWbaaa.s:3778 .bss:000000d6 NeueKompassRichtungMerken.10
C:\Users\Thomas\AppData\Local\Temp/ccWWbaaa.s:3779 .bss:000000d7 ausgleichNick.11
C:\Users\Thomas\AppData\Local\Temp/ccWWbaaa.s:3780 .bss:000000db ausgleichRoll.12
C:\Users\Thomas\AppData\Local\Temp/ccWWbaaa.s:3781 .bss:000000df stick_nick.13
C:\Users\Thomas\AppData\Local\Temp/ccWWbaaa.s:3782 .bss:000000e1 stick_roll.14
C:\Users\Thomas\AppData\Local\Temp/ccWWbaaa.s:3783 .bss:000000e3 cnt.15
C:\Users\Thomas\AppData\Local\Temp/ccWWbaaa.s:3784 .bss:000000e5 last_n_p.16
C:\Users\Thomas\AppData\Local\Temp/ccWWbaaa.s:3785 .bss:000000e6 last_n_n.17
C:\Users\Thomas\AppData\Local\Temp/ccWWbaaa.s:3786 .bss:000000e7 last_r_p.18
C:\Users\Thomas\AppData\Local\Temp/ccWWbaaa.s:3787 .bss:000000e8 last_r_n.19
C:\Users\Thomas\AppData\Local\Temp/ccWWbaaa.s:3788 .bss:000000e9 MittelIntegralNick_Alt.20
C:\Users\Thomas\AppData\Local\Temp/ccWWbaaa.s:3789 .bss:000000ed MittelIntegralRoll_Alt.21
C:\Users\Thomas\AppData\Local\Temp/ccWWbaaa.s:3790 .bss:000000f1 HeightTrimming.22
C:\Users\Thomas\AppData\Local\Temp/ccWWbaaa.s:3791 .bss:000000f3 FilterHCGas.23
C:\Users\Thomas\AppData\Local\Temp/ccWWbaaa.s:3796 .data:0000004a StickGasHover.24
C:\Users\Thomas\AppData\Local\Temp/ccWWbaaa.s:3792 .bss:000000f5 HoverGasMin.25
C:\Users\Thomas\AppData\Local\Temp/ccWWbaaa.s:3801 .data:0000004c HoverGasMax.26
C:\Users\Thomas\AppData\Local\Temp/ccWWbaaa.s:3798 .bss:000000f7 HoverGasFilter.27
C:\Users\Thomas\AppData\Local\Temp/ccWWbaaa.s:3806 .data:0000004e delay.28
C:\Users\Thomas\AppData\Local\Temp/ccWWbaaa.s:3803 .bss:000000fb BaroAtUpperLimit.29
C:\Users\Thomas\AppData\Local\Temp/ccWWbaaa.s:3808 .bss:000000fc BaroAtLowerLimit.30
C:\Users\Thomas\AppData\Local\Temp/ccWWbaaa.s:3813 .text:00001e0c MotorRegler
*COM*:00000001 GyroFaktor
*COM*:00000001 IntegralFaktor
*COM*:00000001 GyroFaktorGier
*COM*:00000001 IntegralFaktorGier
*COM*:00000004 MittelIntegralNick
*COM*:00000004 MittelIntegralRoll
*COM*:00000004 MittelIntegralNick2
*COM*:00000004 MittelIntegralRoll2
*COM*:00000002 DiffNick
*COM*:00000002 DiffRoll
*COM*:00000018 tmp_motorwert
*COM*:00000002 ErsatzKompassInGrad
*COM*:00000001 h
*COM*:00000001 m
*COM*:00000001 s
*COM*:00000001 Parameter_J16Bitmask
*COM*:00000001 Parameter_J17Bitmask
*COM*:00000001 loop1
*COM*:00000001 loop2
*COM*:00000001 loop3
*COM*:00000001 pos1
*COM*:00000001 pos2
*COM*:00000001 pos3
*COM*:00000001 Motors0
*COM*:00000001 Motors1
*COM*:00000001 Motors2
*COM*:00000001 Motors3
*COM*:00000001 Motors4
*COM*:00000001 Motors5
*COM*:00000001 Motors6
*COM*:00000001 Motors7
*COM*:00000001 Motors0max
*COM*:00000001 Motors1max
*COM*:00000001 Motors2max
*COM*:00000001 Motors3max
*COM*:00000001 Motors4max
*COM*:00000001 Motors5max
*COM*:00000001 Motors6max
*COM*:00000001 Motors7max
*COM*:00000002 MotorsTmax
*COM*:00000002 MesswertGierBias
*COM*:00000001 Parameter_NaviGpsModeControl
*COM*:00000001 Parameter_NaviGpsGain
*COM*:00000001 Parameter_NaviGpsP
*COM*:00000001 Parameter_NaviGpsI
*COM*:00000001 Parameter_NaviGpsD
*COM*:00000001 Parameter_NaviGpsACC
*COM*:00000001 Parameter_NaviOperatingRadius
*COM*:00000001 Parameter_NaviWindCorrection
*COM*:00000001 Parameter_NaviSpeedCompensation
 
UNDEFINED SYMBOLS
__do_copy_data
__do_clear_bss
EE_Parameter
__divmodsi4
DebugOut
AdWertGier
AdWertAccHoch
UBat
Motor
ServoNickValue
Capacity
GPS_Nick
GPS_Roll
VersionInfo
beeptime
Delay_ms
PlatinenVersion
SucheGyroOffset
AdWertNick
AdWertRoll
AdWertAccNick
AdWertAccRoll
PPM_in
__mulsi3
__prologue_saves__
ExpandBaro
Delay_ms_Mess
MessLuftdruck
SucheLuftruckOffset
__divmodhi4
Aktuell_az
SetParamWord
GetParamWord
uart_putchar
_printf_P
Luftdruck
StartLuftdruck
VarioMeter
GPS_Neutral
SendVersionToNavi
LED_Init
FromNaviCtrl_Value
ServoActive
__epilogue_restores__
AdWertNickFilter
AdWertRollFilter
AdReady
HiResNick
HiResRoll
MotorTest
PC_MotortestActive
I2C_TransferActive
motor_write
twi_state
BLFlags
FromNaviCtrl
BeepMuster
PPM_diff
SetActiveParamSet
WinkelOut
GetActiveParamSet
ParamSet_ReadFromEEProm
LipoDetection
LIBFC_ReceiverInit
NewPpmData
FromNC_Rotate_C
FromNC_Rotate_S
GPS_Nick2
GPS_Roll2
__floatsisf
__addsf3
__fixunssfsi
ExternControl
ZaehlMessungen
BattLowVoltageWarning
__udivmodhi4
DruckOffsetSetting
SummenHoehe
ihypot
c_cos_8192
MissingMotor
Mixer
/branches/metro/v0.82a metro_Akku+/flight.pnproj
0,0 → 1,0
<Project name="Flight-Ctrl"><File path="analog.c"></File><File path="analog.h"></File><File path="capacity.c"></File><File path="capacity.h"></File><File path="debug.c"></File><File path="debug.h"></File><File path="eeprom.c"></File><File path="eeprom.h"></File><File path="fc.c"></File><File path="fc.h"></File><File path="GPS.c"></File><File path="gps.h"></File><File path="isqrt.h"></File><File path="isqrt.S"></File><File path="jetimenu.c"></File><File path="jetimenu.h"></File><File path="led.c"></File><File path="led.h"></File><File path="libfc.h"></File><File path="main.c"></File><File path="main.h"></File><File path="makefile"></File><File path="menu.c"></File><File path="menu.h"></File><File path="mymath.c"></File><File path="mymath.h"></File><File path="old_macros.h"></File><File path="printf_P.h"></File><File path="rc.c"></File><File path="rc.h"></File><File path="Settings.h"></File><File path="Spektrum.c"></File><File path="Spektrum.h"></File><File path="spi.c"></File><File path="spi.h"></File><File path="timer0.c"></File><File path="timer0.h"></File><File path="twimaster.c"></File><File path="twimaster.h"></File><File path="uart.c"></File><File path="uart.h"></File></Project>
/branches/metro/v0.82a metro_Akku+/flight.pnps
0,0 → 1,0
<pd><ViewState><e p="Flight-Ctrl" x="true"></e></ViewState></pd>
/branches/metro/v0.82a metro_Akku+/gps.h
0,0 → 1,7
extern signed int GPS_Nick;
extern signed int GPS_Roll;
extern signed int GPS_Nick2;
extern signed int GPS_Roll2;
 
void GPS_Neutral(void);
void GPS_BerechneZielrichtung(void);
/branches/metro/v0.82a metro_Akku+/isqrt.S
0,0 → 1,203
;-----------------------------------------------------------------------------;
; Fast integer squareroot routines for avr-gcc project (C)ChaN, 2008
; http://elm-chan.org/docs/avrlib/sqrt32.S
;-----------------------------------------------------------------------------;
; uint16_t isqrt32 (uint32_t n);
; uint8_t isqrt16 (uint16_t n);
; uint16_t ihypot (int16_t x, int16_t y);
 
;-----------------------------------------------------------------------------:
; 32bit integer squareroot
;-----------------------------------------------------------------------------;
; uint16_t isqrt32 (
; uint32_t n
; );
;
; Return Value:
; Squareroot of n.
;
; Size = 53 words
; Clock = 532..548 cycles
; Stack = 0 byte
 
.global isqrt32
.func isqrt32
 
isqrt32:
clr r0
clr r18
clr r19
clr r20
ldi r21, 1
clr r27
clr r30
clr r31
ldi r26, 16
1: lsl r22
rol r23
rol r24
rol r25
rol r0
rol r18
rol r19
rol r20
lsl r22
rol r23
rol r24
rol r25
rol r0
rol r18
rol r19
rol r20
brpl 2f
add r0, r21
adc r18, r27
adc r19, r30
adc r20, r31
rjmp 3f
2: sub r0, r21
sbc r18, r27
sbc r19, r30
sbc r20, r31
3: lsl r21
rol r27
rol r30
andi r21, 0b11111000
ori r21, 0b00000101
sbrc r20, 7
subi r21, 2
dec r26
brne 1b
lsr r30
ror r27
ror r21
lsr r30
ror r27
ror r21
mov r24, r21
mov r25, r27
ret
.endfunc
 
 
 
;-----------------------------------------------------------------------------:
; 16bit integer squareroot
;-----------------------------------------------------------------------------;
; uint8_t isqrt16 (
; uint16_t n
; );
;
; Return Value:
; Squareroot of n.
;
; Size = 33 words
; Clock = 181..189 cycles
; Stack = 0 byte
 
.global isqrt16
.func isqrt16
 
isqrt16:
clr r18
clr r19
ldi r20, 1
clr r21
ldi r22, 8
1: lsl r24
rol r25
rol r18
rol r19
lsl r24
rol r25
rol r18
rol r19
brpl 2f
add r18, r20
adc r19, r21
rjmp 3f
2: sub r18, r20
sbc r19, r21
3: lsl r20
rol r21
andi r20, 0b11111000
ori r20, 0b00000101
sbrc r19, 7
subi r20, 2
dec r22
brne 1b
lsr r21
ror r20
lsr r21
ror r20
mov r24, r20
ret
.endfunc
 
 
 
;-----------------------------------------------------------------------------:
; 16bit integer hypot (megaAVR is required)
;-----------------------------------------------------------------------------;
; uint16_t ihypot (
; int16_t x,
; int16_t y
; );
;
; Return Value:
; Squareroot of (x*x + y*y)
;
; Size = 42 words
; Clock = 581..597 cycles
; Stack = 0 byte
 
.global ihypot
.func ihypot
 
ihypot:
clr r26
sbrs r25, 7
rjmp 1f
com r24
com r25
adc r24, r26
adc r25, r26
1: sbrs r23, 7
rjmp 2f
com r22
com r23
adc r22, r26
adc r23, r26
2: mul r22, r22
movw r18, r0
mul r23, r23
movw r20, r0
mul r22, r23
add r19, r0
adc r20, r1
adc r21, r26
add r19, r0
adc r20, r1
adc r21, r26
mul r24, r24
movw r30, r0
mul r25, r25
add r18, r30
adc r19, r31
adc r20, r0
adc r21, r1
mul r24, r25
add r19, r0
adc r20, r1
adc r21, r26
add r19, r0
adc r20, r1
adc r21, r26
movw r24, r20
movw r22, r18
clr r1
rjmp isqrt32
.endfunc
 
 
 
/branches/metro/v0.82a metro_Akku+/isqrt.h
0,0 → 1,11
#ifndef _ISQRT_H
#define _ISQRT_H
 
#include <inttypes.h>
 
// coded in assembler file
extern uint16_t isqrt32(uint32_t n);
extern uint8_t isqrt16(uint16_t n);
extern uint16_t ihypot(int16_t x, int16_t y);
 
#endif // _ISQRT_H
/branches/metro/v0.82a metro_Akku+/isqrt.lst
0,0 → 1,211
1 # 1 "isqrt.S"
2 # 1 "<built-in>"
1 ;-----------------------------------------------------------------------------;
0
0
2 ;-----------------------------------------------------------------------------;
3 ; Fast integer squareroot routines for avr-gcc project (C)ChaN, 2008
4 ; http://elm-chan.org/docs/avrlib/sqrt32.S
5 ;-----------------------------------------------------------------------------;
6 ; uint16_t isqrt32 (uint32_t n);
7 ; uint8_t isqrt16 (uint16_t n);
8 ; uint16_t ihypot (int16_t x, int16_t y);
9
10 ;-----------------------------------------------------------------------------:
11 ; 32bit integer squareroot
12 ;-----------------------------------------------------------------------------;
13 ; uint16_t isqrt32 (
14 ; uint32_t n
15 ; );
16 ;
17 ; Return Value:
18 ; Squareroot of n.
19 ;
20 ; Size = 53 words
21 ; Clock = 532..548 cycles
22 ; Stack = 0 byte
23
24 .global isqrt32
25 .func isqrt32
26
27:isqrt.S **** isqrt32:
28:isqrt.S **** clr r0
29:isqrt.S **** clr r18
30:isqrt.S **** clr r19
31:isqrt.S **** clr r20
32:isqrt.S **** ldi r21, 1
33:isqrt.S **** clr r27
34:isqrt.S **** clr r30
35:isqrt.S **** clr r31
36:isqrt.S **** ldi r26, 16
37:isqrt.S **** 1: lsl r22
38:isqrt.S **** rol r23
39:isqrt.S **** rol r24
40:isqrt.S **** rol r25
41:isqrt.S **** rol r0
42:isqrt.S **** rol r18
43:isqrt.S **** rol r19
44:isqrt.S **** rol r20
45:isqrt.S **** lsl r22
46:isqrt.S **** rol r23
47:isqrt.S **** rol r24
48:isqrt.S **** rol r25
49:isqrt.S **** rol r0
50:isqrt.S **** rol r18
51:isqrt.S **** rol r19
52:isqrt.S **** rol r20
53:isqrt.S **** brpl 2f
54:isqrt.S **** add r0, r21
55:isqrt.S **** adc r18, r27
56:isqrt.S **** adc r19, r30
57:isqrt.S **** adc r20, r31
58:isqrt.S **** rjmp 3f
59:isqrt.S **** 2: sub r0, r21
60:isqrt.S **** sbc r18, r27
61:isqrt.S **** sbc r19, r30
62:isqrt.S **** sbc r20, r31
63:isqrt.S **** 3: lsl r21
64:isqrt.S **** rol r27
65:isqrt.S **** rol r30
66:isqrt.S **** andi r21, 0b11111000
67:isqrt.S **** ori r21, 0b00000101
68:isqrt.S **** sbrc r20, 7
69:isqrt.S **** subi r21, 2
70:isqrt.S **** dec r26
71:isqrt.S **** brne 1b
72:isqrt.S **** lsr r30
73:isqrt.S **** ror r27
74:isqrt.S **** ror r21
75:isqrt.S **** lsr r30
76:isqrt.S **** ror r27
77:isqrt.S **** ror r21
78:isqrt.S **** mov r24, r21
79:isqrt.S **** mov r25, r27
80 ret
81 .endfunc
82
83
84
85 ;-----------------------------------------------------------------------------:
86 ; 16bit integer squareroot
87 ;-----------------------------------------------------------------------------;
88 ; uint8_t isqrt16 (
89 ; uint16_t n
90 ; );
91 ;
92 ; Return Value:
93 ; Squareroot of n.
94 ;
95 ; Size = 33 words
96 ; Clock = 181..189 cycles
97 ; Stack = 0 byte
98
99 .global isqrt16
100 .func isqrt16
101
102:isqrt.S **** isqrt16:
103:isqrt.S **** clr r18
104:isqrt.S **** clr r19
105:isqrt.S **** ldi r20, 1
106:isqrt.S **** clr r21
107:isqrt.S **** ldi r22, 8
108:isqrt.S **** 1: lsl r24
109:isqrt.S **** rol r25
110:isqrt.S **** rol r18
111:isqrt.S **** rol r19
112:isqrt.S **** lsl r24
113:isqrt.S **** rol r25
114:isqrt.S **** rol r18
115:isqrt.S **** rol r19
116:isqrt.S **** brpl 2f
117:isqrt.S **** add r18, r20
118:isqrt.S **** adc r19, r21
119:isqrt.S **** rjmp 3f
120:isqrt.S **** 2: sub r18, r20
121:isqrt.S **** sbc r19, r21
122:isqrt.S **** 3: lsl r20
123:isqrt.S **** rol r21
124:isqrt.S **** andi r20, 0b11111000
125:isqrt.S **** ori r20, 0b00000101
126:isqrt.S **** sbrc r19, 7
127:isqrt.S **** subi r20, 2
128:isqrt.S **** dec r22
129:isqrt.S **** brne 1b
130:isqrt.S **** lsr r21
131:isqrt.S **** ror r20
132:isqrt.S **** lsr r21
133:isqrt.S **** ror r20
134:isqrt.S **** mov r24, r20
135 ret
136 .endfunc
137
138
139
140 ;-----------------------------------------------------------------------------:
141 ; 16bit integer hypot (megaAVR is required)
142 ;-----------------------------------------------------------------------------;
143 ; uint16_t ihypot (
144 ; int16_t x,
145 ; int16_t y
146 ; );
147 ;
148 ; Return Value:
149 ; Squareroot of (x*x + y*y)
150 ;
151 ; Size = 42 words
152 ; Clock = 581..597 cycles
153 ; Stack = 0 byte
154
155 .global ihypot
156 .func ihypot
157
158:isqrt.S **** ihypot:
159:isqrt.S **** clr r26
160:isqrt.S **** sbrs r25, 7
161:isqrt.S **** rjmp 1f
162:isqrt.S **** com r24
163:isqrt.S **** com r25
164:isqrt.S **** adc r24, r26
165:isqrt.S **** adc r25, r26
166:isqrt.S **** 1: sbrs r23, 7
167:isqrt.S **** rjmp 2f
168:isqrt.S **** com r22
169:isqrt.S **** com r23
170:isqrt.S **** adc r22, r26
171:isqrt.S **** adc r23, r26
172:isqrt.S **** 2: mul r22, r22
173:isqrt.S **** movw r18, r0
174:isqrt.S **** mul r23, r23
175:isqrt.S **** movw r20, r0
176:isqrt.S **** mul r22, r23
177:isqrt.S **** add r19, r0
178:isqrt.S **** adc r20, r1
179:isqrt.S **** adc r21, r26
180:isqrt.S **** add r19, r0
181:isqrt.S **** adc r20, r1
182:isqrt.S **** adc r21, r26
183:isqrt.S **** mul r24, r24
184:isqrt.S **** movw r30, r0
185:isqrt.S **** mul r25, r25
186:isqrt.S **** add r18, r30
187:isqrt.S **** adc r19, r31
188:isqrt.S **** adc r20, r0
189:isqrt.S **** adc r21, r1
190:isqrt.S **** mul r24, r25
191:isqrt.S **** add r19, r0
192:isqrt.S **** adc r20, r1
193:isqrt.S **** adc r21, r26
194:isqrt.S **** add r19, r0
195:isqrt.S **** adc r20, r1
196:isqrt.S **** adc r21, r26
197:isqrt.S **** movw r24, r20
198:isqrt.S **** movw r22, r18
199:isqrt.S **** clr r1
200 rjmp isqrt32
DEFINED SYMBOLS
*ABS*:00000000 isqrt.S
isqrt.S:26 .text:00000000 isqrt32
isqrt.S:101 .text:0000006a isqrt16
isqrt.S:157 .text:000000ac ihypot
 
NO UNDEFINED SYMBOLS
/branches/metro/v0.82a metro_Akku+/jetimenu.c
0,0 → 1,162
#include "jetimenu.h"
#include "libfc.h"
#include "printf_P.h"
#include "main.h"
#include "spi.h"
#include "capacity.h"
 
#define JETIBOX_KEY_RIGHT 0x1F
#define JETIBOX_KEY_UP 0x2F
#define JETIBOX_KEY_DOWN 0x4F
#define JETIBOX_KEY_LEFT 0x8F
#define JETIBOX_KEY_NONE 0x0F
#define JETIBOX_KEY_UNDEF 0x00
 
#define JetiBox_printfxy(x,y,format, args...) { LIBFC_JetiBox_SetPos(y * 16 + x); _printf_P(&LIBFC_JetiBox_Putchar, PSTR(format) , ## args);}
#define JetiBox_printf(format, args...) { _printf_P(&LIBFC_JetiBox_Putchar, PSTR(format) , ## args);}
 
// -----------------------------------------------------------
// the menu functions
// -----------------------------------------------------------
 
void Menu_Status(uint8_t key)
{ //0123456789ABCDEF
JetiBox_printfxy(0,0,"%2i.%1iV",UBat/10, UBat%10);
if(NaviDataOkay)
{
// JetiBox_printfxy(6,0,"%03dm %03d%c", GPSInfo.HomeDistance/10,GPSInfo.HomeBearing, 0xDF);
JetiBox_printfxy(6,0,"%3d%c %03dm",(int)(ErsatzKompass / GIER_GRAD_FAKTOR), 0xDF, GPSInfo.HomeDistance/10);
}
else
{
JetiBox_printfxy(6,0,"Status");
}
if(NC_ErrorCode) JetiBox_printfxy(6,0,"ERROR: %2d",NC_ErrorCode);
JetiBox_printfxy(0,1,"%4i %2i:%02i",Capacity.RemainCapacity,FlugSekunden/60,FlugSekunden%60);
if(EE_Parameter.GlobalConfig & CFG_HOEHENREGELUNG)
{
JetiBox_printfxy(10,1,"%4im%c", (int16_t)(HoehenWert/100),VarioCharacter);
}
}
 
 
void Menu_Temperature(uint8_t key)
{ //0123456789ABCDEF
JetiBox_printfxy(0,0,"%3i %3i %3i %3i", Motor[0].Temperature, Motor[1].Temperature, Motor[2].Temperature, Motor[3].Temperature);
JetiBox_printfxy(0,1,"%3i %3i %3i %3i", Motor[4].Temperature, Motor[5].Temperature, Motor[6].Temperature, Motor[7].Temperature);
if(RequiredMotors <= 4)
{
JetiBox_printfxy(0,1,"Temperatures ");
}
else
if(RequiredMotors <= 6)
{
JetiBox_printfxy(8,1,"\%cC ",0xdf);
}
 
}
 
void Menu_Battery(uint8_t key)
{ //0123456789ABCDEF
JetiBox_printfxy(0,0,"%2i.%1iV %3i.%1iA", UBat/10, UBat%10, Capacity.ActualCurrent/10, Capacity.ActualCurrent%10);
JetiBox_printfxy(0,1,"%4iW %6imAh",Capacity.ActualPower, Capacity.RemainCapacity);
}
 
 
void Menu_PosInfo(uint8_t key)
{
if(NaviDataOkay)
{
JetiBox_printfxy(0,0,"%2um/s Sat:%d ",GPSInfo.Speed,GPSInfo.NumOfSats);
switch (GPSInfo.SatFix)
{
case SATFIX_3D:
JetiBox_printfxy(12,0," 3D");
break;
 
case SATFIX_2D:
case SATFIX_NONE:
default:
JetiBox_printfxy(12,0,"NoFx");
break;
}
if(GPSInfo.Flags & FLAG_DIFFSOLN)
{
JetiBox_printfxy(12,0,"DGPS");
}
JetiBox_printfxy(0,1,"Home:%3dm %3d%c", GPSInfo.HomeDistance/10, GPSInfo.HomeBearing, 0xDF);
}
else
{ //0123456789ABCDEF
JetiBox_printfxy(2,0,"No NaviCtrl!");
}
}
 
 
// -----------------------------------------------------------
// the menu topology
// -----------------------------------------------------------
typedef void (*pFctMenu) (uint8_t); // the menu item handler function pointer
 
typedef struct{
int8_t left;
int8_t right;
int8_t up;
int8_t down;
pFctMenu pHandler;
} MENU_ENTRY;
 
 
// the menu navigation structure
/* |
 
3 - 0 - 1 - 2 - 3 - 0
 
*/
 
const MENU_ENTRY JetiBox_Menu[] PROGMEM=
{ // l r u d pHandler
{3, 1, 0, 0, &Menu_Status }, // 0
{0, 2, 1, 1, &Menu_Temperature }, // 1
{1, 3, 2, 2, &Menu_Battery }, // 2
{2, 0, 3, 3, &Menu_PosInfo }, // 3
};
 
// -----------------------------------------------------------
// Update display buffer
// -----------------------------------------------------------
unsigned char JetiBox_Update(unsigned char key)
{
static uint8_t item = 0, last_item = 0; // the menu item
 
// navigate within the menu by key action
last_item = item;
switch(key)
{
case JETIBOX_KEY_LEFT:
if (item == 0) return (1); // switch back to jeti expander menu
else item = pgm_read_byte(&JetiBox_Menu[item].left); //trigger to left menu item
break;
case JETIBOX_KEY_RIGHT:
item = pgm_read_byte(&JetiBox_Menu[item].right); //trigger to right menu item
break;
case JETIBOX_KEY_UP:
item = pgm_read_byte(&JetiBox_Menu[item].up); //trigger to up menu item
break;
case JETIBOX_KEY_DOWN:
item = pgm_read_byte(&JetiBox_Menu[item].down); //trigger to down menu item
break;
default:
break;
}
// if the menu item has been changed, do not pass the key to the item handler
// to avoid jumping over to items
if(item != last_item) key = JETIBOX_KEY_UNDEF;
 
LIBFC_JetiBox_Clear();
//execute menu item handler
((pFctMenu)(pgm_read_word(&(JetiBox_Menu[item].pHandler))))(key);
return (0);
}
 
/branches/metro/v0.82a metro_Akku+/jetimenu.d
0,0 → 1,3
jetimenu.o jetimenu.d : jetimenu.c jetimenu.h libfc.h printf_P.h main.h old_macros.h \
timer0.h uart.h analog.h twimaster.h menu.h rc.h fc.h gps.h spi.h led.h \
spektrum.h capacity.h eeprom.h debug.h
/branches/metro/v0.82a metro_Akku+/jetimenu.h
0,0 → 1,6
#ifndef _JETIMENU_H
#define _JETIMENU_H
 
extern unsigned char JetiBox_Update(unsigned char key);
 
#endif //_JETIMENU_H
/branches/metro/v0.82a metro_Akku+/jetimenu.lst
0,0 → 1,839
1 .file "jetimenu.c"
2 .arch atmega644p
3 __SREG__ = 0x3f
4 __SP_H__ = 0x3e
5 __SP_L__ = 0x3d
6 __tmp_reg__ = 0
7 __zero_reg__ = 1
8 .global __do_copy_data
9 .global __do_clear_bss
10 .global JetiBox_Menu
11 .section .progmem.data,"a",@progbits
14 JetiBox_Menu:
15 0000 03 .byte 3
16 0001 01 .byte 1
17 0002 00 .byte 0
18 0003 00 .byte 0
19 0004 0000 .word pm(Menu_Status)
20 0006 00 .byte 0
21 0007 02 .byte 2
22 0008 01 .byte 1
23 0009 01 .byte 1
24 000a 0000 .word pm(Menu_Temperature)
25 000c 01 .byte 1
26 000d 03 .byte 3
27 000e 02 .byte 2
28 000f 02 .byte 2
29 0010 0000 .word pm(Menu_Battery)
30 0012 02 .byte 2
31 0013 00 .byte 0
32 0014 03 .byte 3
33 0015 03 .byte 3
34 0016 0000 .word pm(Menu_PosInfo)
37 __c.14:
38 0018 2532 692E .string "%2i.%1iV"
38 2531 6956
38 00
41 __c.15:
42 0021 2533 6425 .string "%3d%c %03dm"
42 6320 2530
42 3364 6D00
45 __c.16:
46 002d 5374 6174 .string "Status"
46 7573 00
49 __c.17:
50 0034 4552 524F .string "ERROR: %2d"
50 523A 2025
50 3264 00
53 __c.18:
54 003f 2534 6920 .string "%4i %2i:%02i"
54 2532 693A
54 2530 3269
54 00
57 __c.19:
58 004c 2534 696D .string "%4im%c"
58 2563 00
59 .text
60 .global Menu_Status
62 Menu_Status:
63 /* prologue: frame size=0 */
64 0000 CF93 push r28
65 0002 DF93 push r29
66 /* prologue end (size=2) */
67 0004 80E0 ldi r24,lo8(0)
68 0006 0E94 0000 call LIBFC_JetiBox_SetPos
69 000a 8091 0000 lds r24,UBat
70 000e 9091 0000 lds r25,(UBat)+1
71 0012 6AE0 ldi r22,lo8(10)
72 0014 70E0 ldi r23,hi8(10)
73 0016 0E94 0000 call __divmodhi4
74 001a 9F93 push r25
75 001c 8F93 push r24
76 001e 8091 0000 lds r24,UBat
77 0022 9091 0000 lds r25,(UBat)+1
78 0026 6AE0 ldi r22,lo8(10)
79 0028 70E0 ldi r23,hi8(10)
80 002a 0E94 0000 call __divmodhi4
81 002e 7F93 push r23
82 0030 6F93 push r22
83 0032 80E0 ldi r24,lo8(__c.14)
84 0034 90E0 ldi r25,hi8(__c.14)
85 0036 9F93 push r25
86 0038 8F93 push r24
87 003a C0E0 ldi r28,lo8(pm(LIBFC_JetiBox_Putchar))
88 003c D0E0 ldi r29,hi8(pm(LIBFC_JetiBox_Putchar))
89 003e DF93 push r29
90 0040 CF93 push r28
91 0042 E091 0000 lds r30,_printf_P
92 0046 F091 0000 lds r31,(_printf_P)+1
93 004a 0995 icall
94 004c 2DB7 in r18,__SP_L__
95 004e 3EB7 in r19,__SP_H__
96 0050 285F subi r18,lo8(-(8))
97 0052 3F4F sbci r19,hi8(-(8))
98 0054 2DBF out __SP_L__,r18
99 0056 8091 0000 lds r24,NaviDataOkay
100 005a 8823 tst r24
101 005c B9F1 breq .L2
102 005e 86E0 ldi r24,lo8(6)
103 0060 0E94 0000 call LIBFC_JetiBox_SetPos
104 0064 8091 0000 lds r24,GPSInfo+4
105 0068 9091 0000 lds r25,(GPSInfo+4)+1
106 006c 6AE0 ldi r22,lo8(10)
107 006e 70E0 ldi r23,hi8(10)
108 0070 0E94 0000 call __udivmodhi4
109 0074 7F93 push r23
110 0076 6F93 push r22
111 0078 8FED ldi r24,lo8(223)
112 007a 90E0 ldi r25,hi8(223)
113 007c 9F93 push r25
114 007e 8F93 push r24
115 0080 8091 0000 lds r24,ErsatzKompass
116 0084 9091 0000 lds r25,(ErsatzKompass)+1
117 0088 A091 0000 lds r26,(ErsatzKompass)+2
118 008c B091 0000 lds r27,(ErsatzKompass)+3
119 0090 2091 0000 lds r18,GIER_GRAD_FAKTOR
120 0094 3091 0000 lds r19,(GIER_GRAD_FAKTOR)+1
121 0098 4091 0000 lds r20,(GIER_GRAD_FAKTOR)+2
122 009c 5091 0000 lds r21,(GIER_GRAD_FAKTOR)+3
123 00a0 BC01 movw r22,r24
124 00a2 CD01 movw r24,r26
125 00a4 0E94 0000 call __divmodsi4
126 00a8 3F93 push r19
127 00aa 2F93 push r18
128 00ac 80E0 ldi r24,lo8(__c.15)
129 00ae 90E0 ldi r25,hi8(__c.15)
130 00b0 9F93 push r25
131 00b2 8F93 push r24
132 00b4 DF93 push r29
133 00b6 CF93 push r28
134 00b8 E091 0000 lds r30,_printf_P
135 00bc F091 0000 lds r31,(_printf_P)+1
136 00c0 0995 icall
137 00c2 8DB7 in r24,__SP_L__
138 00c4 9EB7 in r25,__SP_H__
139 00c6 0A96 adiw r24,10
140 00c8 8DBF out __SP_L__,r24
141 00ca 12C0 rjmp .L3
142 .L2:
143 00cc 86E0 ldi r24,lo8(6)
144 00ce 0E94 0000 call LIBFC_JetiBox_SetPos
145 00d2 80E0 ldi r24,lo8(__c.16)
146 00d4 90E0 ldi r25,hi8(__c.16)
147 00d6 9F93 push r25
148 00d8 8F93 push r24
149 00da DF93 push r29
150 00dc CF93 push r28
151 00de E091 0000 lds r30,_printf_P
152 00e2 F091 0000 lds r31,(_printf_P)+1
153 00e6 0995 icall
154 00e8 0F90 pop __tmp_reg__
155 00ea 0F90 pop __tmp_reg__
156 00ec 0F90 pop __tmp_reg__
157 00ee 0F90 pop __tmp_reg__
158 .L3:
159 00f0 8091 0000 lds r24,NC_ErrorCode
160 00f4 8823 tst r24
161 00f6 C1F0 breq .L4
162 00f8 86E0 ldi r24,lo8(6)
163 00fa 0E94 0000 call LIBFC_JetiBox_SetPos
164 00fe 8091 0000 lds r24,NC_ErrorCode
165 0102 9927 clr r25
166 0104 9F93 push r25
167 0106 8F93 push r24
168 0108 80E0 ldi r24,lo8(__c.17)
169 010a 90E0 ldi r25,hi8(__c.17)
170 010c 9F93 push r25
171 010e 8F93 push r24
172 0110 DF93 push r29
173 0112 CF93 push r28
174 0114 E091 0000 lds r30,_printf_P
175 0118 F091 0000 lds r31,(_printf_P)+1
176 011c 0995 icall
177 011e 2DB7 in r18,__SP_L__
178 0120 3EB7 in r19,__SP_H__
179 0122 2A5F subi r18,lo8(-(6))
180 0124 3F4F sbci r19,hi8(-(6))
181 0126 2DBF out __SP_L__,r18
182 .L4:
183 0128 80E1 ldi r24,lo8(16)
184 012a 0E94 0000 call LIBFC_JetiBox_SetPos
185 012e 8091 0000 lds r24,FlugSekunden
186 0132 9091 0000 lds r25,(FlugSekunden)+1
187 0136 6CE3 ldi r22,lo8(60)
188 0138 70E0 ldi r23,hi8(60)
189 013a 0E94 0000 call __udivmodhi4
190 013e 9F93 push r25
191 0140 8F93 push r24
192 0142 8091 0000 lds r24,FlugSekunden
193 0146 9091 0000 lds r25,(FlugSekunden)+1
194 014a 6CE3 ldi r22,lo8(60)
195 014c 70E0 ldi r23,hi8(60)
196 014e 0E94 0000 call __udivmodhi4
197 0152 7F93 push r23
198 0154 6F93 push r22
199 0156 8091 0000 lds r24,Capacity+6
200 015a 9091 0000 lds r25,(Capacity+6)+1
201 015e 9F93 push r25
202 0160 8F93 push r24
203 0162 80E0 ldi r24,lo8(__c.18)
204 0164 90E0 ldi r25,hi8(__c.18)
205 0166 9F93 push r25
206 0168 8F93 push r24
207 016a C0E0 ldi r28,lo8(pm(LIBFC_JetiBox_Putchar))
208 016c D0E0 ldi r29,hi8(pm(LIBFC_JetiBox_Putchar))
209 016e DF93 push r29
210 0170 CF93 push r28
211 0172 E091 0000 lds r30,_printf_P
212 0176 F091 0000 lds r31,(_printf_P)+1
213 017a 0995 icall
214 017c 8091 0000 lds r24,EE_Parameter+13
215 0180 2DB7 in r18,__SP_L__
216 0182 3EB7 in r19,__SP_H__
217 0184 265F subi r18,lo8(-(10))
218 0186 3F4F sbci r19,hi8(-(10))
219 0188 2DBF out __SP_L__,r18
220 018a 80FF sbrs r24,0
221 018c 29C0 rjmp .L1
222 018e 8AE1 ldi r24,lo8(26)
223 0190 0E94 0000 call LIBFC_JetiBox_SetPos
224 0194 8091 0000 lds r24,VarioCharacter
225 0198 9927 clr r25
226 019a 9F93 push r25
227 019c 8F93 push r24
228 019e 8091 0000 lds r24,HoehenWert
229 01a2 9091 0000 lds r25,(HoehenWert)+1
230 01a6 A091 0000 lds r26,(HoehenWert)+2
231 01aa B091 0000 lds r27,(HoehenWert)+3
232 01ae BC01 movw r22,r24
233 01b0 CD01 movw r24,r26
234 01b2 24E6 ldi r18,lo8(100)
235 01b4 30E0 ldi r19,hi8(100)
236 01b6 40E0 ldi r20,hlo8(100)
237 01b8 50E0 ldi r21,hhi8(100)
238 01ba 0E94 0000 call __divmodsi4
239 01be 3F93 push r19
240 01c0 2F93 push r18
241 01c2 80E0 ldi r24,lo8(__c.19)
242 01c4 90E0 ldi r25,hi8(__c.19)
243 01c6 9F93 push r25
244 01c8 8F93 push r24
245 01ca DF93 push r29
246 01cc CF93 push r28
247 01ce E091 0000 lds r30,_printf_P
248 01d2 F091 0000 lds r31,(_printf_P)+1
249 01d6 0995 icall
250 01d8 8DB7 in r24,__SP_L__
251 01da 9EB7 in r25,__SP_H__
252 01dc 0896 adiw r24,8
253 01de 8DBF out __SP_L__,r24
254 .L1:
255 /* epilogue: frame size=0 */
256 01e0 DF91 pop r29
257 01e2 CF91 pop r28
258 01e4 0895 ret
259 /* epilogue end (size=3) */
260 /* function Menu_Status size 243 (238) */
262 .section .progmem.data
265 __c.10:
266 0053 2533 6920 .string "%3i %3i %3i %3i"
266 2533 6920
266 2533 6920
266 2533 6900
269 __c.11:
270 0063 2533 6920 .string "%3i %3i %3i %3i"
270 2533 6920
270 2533 6920
270 2533 6900
273 __c.12:
274 0073 5465 6D70 .string "Temperatures "
274 6572 6174
274 7572 6573
274 2020 2020
274 00
277 __c.13:
278 0084 2563 4320 .string "%cC "
278 2020 2020
278 00
279 .text
280 .global Menu_Temperature
282 Menu_Temperature:
283 /* prologue: frame size=0 */
284 01e6 CF93 push r28
285 01e8 DF93 push r29
286 /* prologue end (size=2) */
287 01ea 80E0 ldi r24,lo8(0)
288 01ec 0E94 0000 call LIBFC_JetiBox_SetPos
289 01f0 8091 0000 lds r24,Motor+31
290 01f4 9927 clr r25
291 01f6 87FD sbrc r24,7
292 01f8 9095 com r25
293 01fa 9F93 push r25
294 01fc 8F93 push r24
295 01fe 8091 0000 lds r24,Motor+23
296 0202 9927 clr r25
297 0204 87FD sbrc r24,7
298 0206 9095 com r25
299 0208 9F93 push r25
300 020a 8F93 push r24
301 020c 8091 0000 lds r24,Motor+15
302 0210 9927 clr r25
303 0212 87FD sbrc r24,7
304 0214 9095 com r25
305 0216 9F93 push r25
306 0218 8F93 push r24
307 021a 8091 0000 lds r24,Motor+7
308 021e 9927 clr r25
309 0220 87FD sbrc r24,7
310 0222 9095 com r25
311 0224 9F93 push r25
312 0226 8F93 push r24
313 0228 80E0 ldi r24,lo8(__c.10)
314 022a 90E0 ldi r25,hi8(__c.10)
315 022c 9F93 push r25
316 022e 8F93 push r24
317 0230 C0E0 ldi r28,lo8(pm(LIBFC_JetiBox_Putchar))
318 0232 D0E0 ldi r29,hi8(pm(LIBFC_JetiBox_Putchar))
319 0234 DF93 push r29
320 0236 CF93 push r28
321 0238 E091 0000 lds r30,_printf_P
322 023c F091 0000 lds r31,(_printf_P)+1
323 0240 0995 icall
324 0242 80E1 ldi r24,lo8(16)
325 0244 0E94 0000 call LIBFC_JetiBox_SetPos
326 0248 2DB7 in r18,__SP_L__
327 024a 3EB7 in r19,__SP_H__
328 024c 245F subi r18,lo8(-(12))
329 024e 3F4F sbci r19,hi8(-(12))
330 0250 2DBF out __SP_L__,r18
331 0252 8091 0000 lds r24,Motor+63
332 0256 9927 clr r25
333 0258 87FD sbrc r24,7
334 025a 9095 com r25
335 025c 9F93 push r25
336 025e 8F93 push r24
337 0260 8091 0000 lds r24,Motor+55
338 0264 9927 clr r25
339 0266 87FD sbrc r24,7
340 0268 9095 com r25
341 026a 9F93 push r25
342 026c 8F93 push r24
343 026e 8091 0000 lds r24,Motor+47
344 0272 9927 clr r25
345 0274 87FD sbrc r24,7
346 0276 9095 com r25
347 0278 9F93 push r25
348 027a 8F93 push r24
349 027c 8091 0000 lds r24,Motor+39
350 0280 9927 clr r25
351 0282 87FD sbrc r24,7
352 0284 9095 com r25
353 0286 9F93 push r25
354 0288 8F93 push r24
355 028a 80E0 ldi r24,lo8(__c.11)
356 028c 90E0 ldi r25,hi8(__c.11)
357 028e 9F93 push r25
358 0290 8F93 push r24
359 0292 DF93 push r29
360 0294 CF93 push r28
361 0296 E091 0000 lds r30,_printf_P
362 029a F091 0000 lds r31,(_printf_P)+1
363 029e 0995 icall
364 02a0 8091 0000 lds r24,RequiredMotors
365 02a4 2DB7 in r18,__SP_L__
366 02a6 3EB7 in r19,__SP_H__
367 02a8 245F subi r18,lo8(-(12))
368 02aa 3F4F sbci r19,hi8(-(12))
369 02ac 2DBF out __SP_L__,r18
370 02ae 8530 cpi r24,lo8(5)
371 02b0 98F4 brsh .L7
372 02b2 80E1 ldi r24,lo8(16)
373 02b4 0E94 0000 call LIBFC_JetiBox_SetPos
374 02b8 80E0 ldi r24,lo8(__c.12)
375 02ba 90E0 ldi r25,hi8(__c.12)
376 02bc 9F93 push r25
377 02be 8F93 push r24
378 02c0 DF93 push r29
379 02c2 CF93 push r28
380 02c4 E091 0000 lds r30,_printf_P
381 02c8 F091 0000 lds r31,(_printf_P)+1
382 02cc 0995 icall
383 02ce 0F90 pop __tmp_reg__
384 02d0 0F90 pop __tmp_reg__
385 02d2 0F90 pop __tmp_reg__
386 02d4 0F90 pop __tmp_reg__
387 02d6 18C0 rjmp .L6
388 .L7:
389 02d8 8730 cpi r24,lo8(7)
390 02da B0F4 brsh .L6
391 02dc 88E1 ldi r24,lo8(24)
392 02de 0E94 0000 call LIBFC_JetiBox_SetPos
393 02e2 8FED ldi r24,lo8(223)
394 02e4 90E0 ldi r25,hi8(223)
395 02e6 9F93 push r25
396 02e8 8F93 push r24
397 02ea 80E0 ldi r24,lo8(__c.13)
398 02ec 90E0 ldi r25,hi8(__c.13)
399 02ee 9F93 push r25
400 02f0 8F93 push r24
401 02f2 DF93 push r29
402 02f4 CF93 push r28
403 02f6 E091 0000 lds r30,_printf_P
404 02fa F091 0000 lds r31,(_printf_P)+1
405 02fe 0995 icall
406 0300 8DB7 in r24,__SP_L__
407 0302 9EB7 in r25,__SP_H__
408 0304 0696 adiw r24,6
409 0306 8DBF out __SP_L__,r24
410 .L6:
411 /* epilogue: frame size=0 */
412 0308 DF91 pop r29
413 030a CF91 pop r28
414 030c 0895 ret
415 /* epilogue end (size=3) */
416 /* function Menu_Temperature size 148 (143) */
418 .section .progmem.data
421 __c.8:
422 008d 2532 692E .string "%2i.%1iV %3i.%1iA"
422 2531 6956
422 2020 2533
422 692E 2531
422 6941 00
425 __c.9:
426 00a0 2534 6957 .string "%4iW %6imAh"
426 2025 3669
426 6D41 6800
427 .text
428 .global Menu_Battery
430 Menu_Battery:
431 /* prologue: frame size=0 */
432 030e 0F93 push r16
433 0310 1F93 push r17
434 /* prologue end (size=2) */
435 0312 80E0 ldi r24,lo8(0)
436 0314 0E94 0000 call LIBFC_JetiBox_SetPos
437 0318 2AE0 ldi r18,lo8(10)
438 031a 30E0 ldi r19,hi8(10)
439 031c 8091 0000 lds r24,Capacity
440 0320 9091 0000 lds r25,(Capacity)+1
441 0324 B901 movw r22,r18
442 0326 0E94 0000 call __udivmodhi4
443 032a 9F93 push r25
444 032c 8F93 push r24
445 032e 8091 0000 lds r24,Capacity
446 0332 9091 0000 lds r25,(Capacity)+1
447 0336 B901 movw r22,r18
448 0338 0E94 0000 call __udivmodhi4
449 033c 7F93 push r23
450 033e 6F93 push r22
451 0340 8091 0000 lds r24,UBat
452 0344 9091 0000 lds r25,(UBat)+1
453 0348 B901 movw r22,r18
454 034a 0E94 0000 call __divmodhi4
455 034e 9F93 push r25
456 0350 8F93 push r24
457 0352 8091 0000 lds r24,UBat
458 0356 9091 0000 lds r25,(UBat)+1
459 035a B901 movw r22,r18
460 035c 0E94 0000 call __divmodhi4
461 0360 7F93 push r23
462 0362 6F93 push r22
463 0364 80E0 ldi r24,lo8(__c.8)
464 0366 90E0 ldi r25,hi8(__c.8)
465 0368 9F93 push r25
466 036a 8F93 push r24
467 036c 00E0 ldi r16,lo8(pm(LIBFC_JetiBox_Putchar))
468 036e 10E0 ldi r17,hi8(pm(LIBFC_JetiBox_Putchar))
469 0370 1F93 push r17
470 0372 0F93 push r16
471 0374 E091 0000 lds r30,_printf_P
472 0378 F091 0000 lds r31,(_printf_P)+1
473 037c 0995 icall
474 037e 80E1 ldi r24,lo8(16)
475 0380 0E94 0000 call LIBFC_JetiBox_SetPos
476 0384 8DB7 in r24,__SP_L__
477 0386 9EB7 in r25,__SP_H__
478 0388 0C96 adiw r24,12
479 038a 8DBF out __SP_L__,r24
480 038c 8091 0000 lds r24,Capacity+6
481 0390 9091 0000 lds r25,(Capacity+6)+1
482 0394 9F93 push r25
483 0396 8F93 push r24
484 0398 8091 0000 lds r24,Capacity+2
485 039c 9091 0000 lds r25,(Capacity+2)+1
486 03a0 9F93 push r25
487 03a2 8F93 push r24
488 03a4 80E0 ldi r24,lo8(__c.9)
489 03a6 90E0 ldi r25,hi8(__c.9)
490 03a8 9F93 push r25
491 03aa 8F93 push r24
492 03ac 1F93 push r17
493 03ae 0F93 push r16
494 03b0 E091 0000 lds r30,_printf_P
495 03b4 F091 0000 lds r31,(_printf_P)+1
496 03b8 0995 icall
497 03ba 8DB7 in r24,__SP_L__
498 03bc 9EB7 in r25,__SP_H__
499 03be 0896 adiw r24,8
500 03c0 8DBF out __SP_L__,r24
501 /* epilogue: frame size=0 */
502 03c2 1F91 pop r17
503 03c4 0F91 pop r16
504 03c6 0895 ret
505 /* epilogue end (size=3) */
506 /* function Menu_Battery size 93 (88) */
508 .section .progmem.data
511 __c.2:
512 00ac 2532 756D .string "%2um/s Sat:%d "
512 2F73 2053
512 6174 3A25
512 6420 00
515 __c.3:
516 00bb 2020 3344 .string " 3D"
516 00
519 __c.4:
520 00c0 4E6F 4678 .string "NoFx"
520 00
523 __c.5:
524 00c5 4447 5053 .string "DGPS"
524 00
527 __c.6:
528 00ca 486F 6D65 .string "Home:%3dm %3d%c"
528 3A25 3364
528 6D20 2533
528 6425 6300
531 __c.7:
532 00da 4E6F 204E .string "No NaviCtrl!"
532 6176 6943
532 7472 6C21
532 00
533 .text
534 .global Menu_PosInfo
536 Menu_PosInfo:
537 /* prologue: frame size=0 */
538 03c8 0F93 push r16
539 03ca 1F93 push r17
540 03cc CF93 push r28
541 03ce DF93 push r29
542 /* prologue end (size=4) */
543 03d0 8091 0000 lds r24,NaviDataOkay
544 03d4 C0E0 ldi r28,lo8(pm(LIBFC_JetiBox_Putchar))
545 03d6 D0E0 ldi r29,hi8(pm(LIBFC_JetiBox_Putchar))
546 03d8 8823 tst r24
547 03da 09F4 brne .+2
548 03dc 78C0 rjmp .L12
549 03de 80E0 ldi r24,lo8(0)
550 03e0 0E94 0000 call LIBFC_JetiBox_SetPos
551 03e4 8091 0000 lds r24,GPSInfo+1
552 03e8 9927 clr r25
553 03ea 9F93 push r25
554 03ec 8F93 push r24
555 03ee 8091 0000 lds r24,GPSInfo+3
556 03f2 9927 clr r25
557 03f4 9F93 push r25
558 03f6 8F93 push r24
559 03f8 80E0 ldi r24,lo8(__c.2)
560 03fa 90E0 ldi r25,hi8(__c.2)
561 03fc 9F93 push r25
562 03fe 8F93 push r24
563 0400 8E01 movw r16,r28
564 0402 DF93 push r29
565 0404 CF93 push r28
566 0406 E091 0000 lds r30,_printf_P
567 040a F091 0000 lds r31,(_printf_P)+1
568 040e 0995 icall
569 0410 8DB7 in r24,__SP_L__
570 0412 9EB7 in r25,__SP_H__
571 0414 0896 adiw r24,8
572 0416 8DBF out __SP_L__,r24
573 0418 8091 0000 lds r24,GPSInfo+2
574 041c 8330 cpi r24,lo8(3)
575 041e 31F4 brne .L17
576 0420 8CE0 ldi r24,lo8(12)
577 0422 0E94 0000 call LIBFC_JetiBox_SetPos
578 0426 80E0 ldi r24,lo8(__c.3)
579 0428 90E0 ldi r25,hi8(__c.3)
580 042a 05C0 rjmp .L20
581 .L17:
582 042c 8CE0 ldi r24,lo8(12)
583 042e 0E94 0000 call LIBFC_JetiBox_SetPos
584 0432 80E0 ldi r24,lo8(__c.4)
585 0434 90E0 ldi r25,hi8(__c.4)
586 .L20:
587 0436 9F93 push r25
588 0438 8F93 push r24
589 043a DF93 push r29
590 043c CF93 push r28
591 043e E091 0000 lds r30,_printf_P
592 0442 F091 0000 lds r31,(_printf_P)+1
593 0446 0995 icall
594 0448 0F90 pop __tmp_reg__
595 044a 0F90 pop __tmp_reg__
596 044c 0F90 pop __tmp_reg__
597 044e 0F90 pop __tmp_reg__
598 0450 8091 0000 lds r24,GPSInfo
599 0454 81FF sbrs r24,1
600 0456 12C0 rjmp .L18
601 0458 8CE0 ldi r24,lo8(12)
602 045a 0E94 0000 call LIBFC_JetiBox_SetPos
603 045e 80E0 ldi r24,lo8(__c.5)
604 0460 90E0 ldi r25,hi8(__c.5)
605 0462 9F93 push r25
606 0464 8F93 push r24
607 0466 1F93 push r17
608 0468 0F93 push r16
609 046a E091 0000 lds r30,_printf_P
610 046e F091 0000 lds r31,(_printf_P)+1
611 0472 0995 icall
612 0474 0F90 pop __tmp_reg__
613 0476 0F90 pop __tmp_reg__
614 0478 0F90 pop __tmp_reg__
615 047a 0F90 pop __tmp_reg__
616 .L18:
617 047c 80E1 ldi r24,lo8(16)
618 047e 0E94 0000 call LIBFC_JetiBox_SetPos
619 0482 8FED ldi r24,lo8(223)
620 0484 90E0 ldi r25,hi8(223)
621 0486 9F93 push r25
622 0488 8F93 push r24
623 048a 8091 0000 lds r24,GPSInfo+6
624 048e 9091 0000 lds r25,(GPSInfo+6)+1
625 0492 9F93 push r25
626 0494 8F93 push r24
627 0496 8091 0000 lds r24,GPSInfo+4
628 049a 9091 0000 lds r25,(GPSInfo+4)+1
629 049e 6AE0 ldi r22,lo8(10)
630 04a0 70E0 ldi r23,hi8(10)
631 04a2 0E94 0000 call __udivmodhi4
632 04a6 7F93 push r23
633 04a8 6F93 push r22
634 04aa 80E0 ldi r24,lo8(__c.6)
635 04ac 90E0 ldi r25,hi8(__c.6)
636 04ae 9F93 push r25
637 04b0 8F93 push r24
638 04b2 80E0 ldi r24,lo8(pm(LIBFC_JetiBox_Putchar))
639 04b4 90E0 ldi r25,hi8(pm(LIBFC_JetiBox_Putchar))
640 04b6 9F93 push r25
641 04b8 8F93 push r24
642 04ba E091 0000 lds r30,_printf_P
643 04be F091 0000 lds r31,(_printf_P)+1
644 04c2 0995 icall
645 04c4 8DB7 in r24,__SP_L__
646 04c6 9EB7 in r25,__SP_H__
647 04c8 0A96 adiw r24,10
648 04ca 8DBF out __SP_L__,r24
649 04cc 12C0 rjmp .L11
650 .L12:
651 04ce 82E0 ldi r24,lo8(2)
652 04d0 0E94 0000 call LIBFC_JetiBox_SetPos
653 04d4 80E0 ldi r24,lo8(__c.7)
654 04d6 90E0 ldi r25,hi8(__c.7)
655 04d8 9F93 push r25
656 04da 8F93 push r24
657 04dc DF93 push r29
658 04de CF93 push r28
659 04e0 E091 0000 lds r30,_printf_P
660 04e4 F091 0000 lds r31,(_printf_P)+1
661 04e8 0995 icall
662 04ea 0F90 pop __tmp_reg__
663 04ec 0F90 pop __tmp_reg__
664 04ee 0F90 pop __tmp_reg__
665 04f0 0F90 pop __tmp_reg__
666 .L11:
667 /* epilogue: frame size=0 */
668 04f2 DF91 pop r29
669 04f4 CF91 pop r28
670 04f6 1F91 pop r17
671 04f8 0F91 pop r16
672 04fa 0895 ret
673 /* epilogue end (size=5) */
674 /* function Menu_PosInfo size 154 (145) */
676 .lcomm item.0,1
677 .lcomm last_item.1,1
678 .global JetiBox_Update
680 JetiBox_Update:
681 /* prologue: frame size=0 */
682 04fc CF93 push r28
683 /* prologue end (size=1) */
684 04fe C82F mov r28,r24
685 0500 2091 0000 lds r18,item.0
686 0504 2093 0000 sts last_item.1,r18
687 0508 9927 clr r25
688 050a 8F32 cpi r24,47
689 050c 9105 cpc r25,__zero_reg__
690 050e 09F1 breq .L27
691 0510 8033 cpi r24,48
692 0512 9105 cpc r25,__zero_reg__
693 0514 1CF4 brge .L30
694 0516 4F97 sbiw r24,31
695 0518 A1F0 breq .L26
696 051a 2CC0 rjmp .L22
697 .L30:
698 051c 8F34 cpi r24,79
699 051e 9105 cpc r25,__zero_reg__
700 0520 01F1 breq .L28
701 0522 8F38 cpi r24,143
702 0524 9105 cpc r25,__zero_reg__
703 0526 31F5 brne .L22
704 0528 2223 tst r18
705 052a 19F4 brne .L24
706 052c 81E0 ldi r24,lo8(1)
707 052e 90E0 ldi r25,hi8(1)
708 0530 38C0 rjmp .L21
709 .L24:
710 0532 86E0 ldi r24,lo8(6)
711 0534 289F mul r18,r24
712 0536 F001 movw r30,r0
713 0538 1124 clr r1
714 053a E050 subi r30,lo8(-(JetiBox_Menu))
715 053c F040 sbci r31,hi8(-(JetiBox_Menu))
716 /* #APP */
717 053e 8491 lpm r24, Z
718
719 /* #NOAPP */
720 0540 17C0 rjmp .L32
721 .L26:
722 0542 86E0 ldi r24,lo8(6)
723 0544 289F mul r18,r24
724 0546 F001 movw r30,r0
725 0548 1124 clr r1
726 054a E050 subi r30,lo8(-(JetiBox_Menu+1))
727 054c F040 sbci r31,hi8(-(JetiBox_Menu+1))
728 /* #APP */
729 054e 8491 lpm r24, Z
730
731 /* #NOAPP */
732 0550 0FC0 rjmp .L32
733 .L27:
734 0552 86E0 ldi r24,lo8(6)
735 0554 289F mul r18,r24
736 0556 F001 movw r30,r0
737 0558 1124 clr r1
738 055a E050 subi r30,lo8(-(JetiBox_Menu+2))
739 055c F040 sbci r31,hi8(-(JetiBox_Menu+2))
740 /* #APP */
741 055e 8491 lpm r24, Z
742
743 /* #NOAPP */
744 0560 07C0 rjmp .L32
745 .L28:
746 0562 86E0 ldi r24,lo8(6)
747 0564 289F mul r18,r24
748 0566 F001 movw r30,r0
749 0568 1124 clr r1
750 056a E050 subi r30,lo8(-(JetiBox_Menu+3))
751 056c F040 sbci r31,hi8(-(JetiBox_Menu+3))
752 /* #APP */
753 056e 8491 lpm r24, Z
754
755 /* #NOAPP */
756 .L32:
757 0570 8093 0000 sts item.0,r24
758 .L22:
759 0574 9091 0000 lds r25,item.0
760 0578 8091 0000 lds r24,last_item.1
761 057c 9813 cpse r25,r24
762 057e C0E0 ldi r28,lo8(0)
763 .L31:
764 0580 0E94 0000 call LIBFC_JetiBox_Clear
765 0584 9091 0000 lds r25,item.0
766 0588 86E0 ldi r24,lo8(6)
767 058a 989F mul r25,r24
768 058c F001 movw r30,r0
769 058e 1124 clr r1
770 0590 E050 subi r30,lo8(-(JetiBox_Menu+4))
771 0592 F040 sbci r31,hi8(-(JetiBox_Menu+4))
772 /* #APP */
773 0594 2591 lpm r18, Z+
774 0596 3491 lpm r19, Z
775
776 /* #NOAPP */
777 0598 8C2F mov r24,r28
778 059a F901 movw r30,r18
779 059c 0995 icall
780 059e 80E0 ldi r24,lo8(0)
781 05a0 90E0 ldi r25,hi8(0)
782 .L21:
783 /* epilogue: frame size=0 */
784 05a2 CF91 pop r28
785 05a4 0895 ret
786 /* epilogue end (size=2) */
787 /* function JetiBox_Update size 103 (100) */
789 /* File "jetimenu.c": code 741 = 0x02e5 ( 714), prologues 11, epilogues 16 */
DEFINED SYMBOLS
*ABS*:00000000 jetimenu.c
C:\Users\Thomas\AppData\Local\Temp/ccENbaaa.s:3 *ABS*:0000003f __SREG__
C:\Users\Thomas\AppData\Local\Temp/ccENbaaa.s:4 *ABS*:0000003e __SP_H__
C:\Users\Thomas\AppData\Local\Temp/ccENbaaa.s:5 *ABS*:0000003d __SP_L__
C:\Users\Thomas\AppData\Local\Temp/ccENbaaa.s:6 *ABS*:00000000 __tmp_reg__
C:\Users\Thomas\AppData\Local\Temp/ccENbaaa.s:7 *ABS*:00000001 __zero_reg__
C:\Users\Thomas\AppData\Local\Temp/ccENbaaa.s:14 .progmem.data:00000000 JetiBox_Menu
C:\Users\Thomas\AppData\Local\Temp/ccENbaaa.s:62 .text:00000000 Menu_Status
C:\Users\Thomas\AppData\Local\Temp/ccENbaaa.s:282 .text:000001e6 Menu_Temperature
C:\Users\Thomas\AppData\Local\Temp/ccENbaaa.s:430 .text:0000030e Menu_Battery
C:\Users\Thomas\AppData\Local\Temp/ccENbaaa.s:536 .text:000003c8 Menu_PosInfo
C:\Users\Thomas\AppData\Local\Temp/ccENbaaa.s:37 .progmem.data:00000018 __c.14
C:\Users\Thomas\AppData\Local\Temp/ccENbaaa.s:41 .progmem.data:00000021 __c.15
C:\Users\Thomas\AppData\Local\Temp/ccENbaaa.s:45 .progmem.data:0000002d __c.16
C:\Users\Thomas\AppData\Local\Temp/ccENbaaa.s:49 .progmem.data:00000034 __c.17
C:\Users\Thomas\AppData\Local\Temp/ccENbaaa.s:53 .progmem.data:0000003f __c.18
C:\Users\Thomas\AppData\Local\Temp/ccENbaaa.s:57 .progmem.data:0000004c __c.19
C:\Users\Thomas\AppData\Local\Temp/ccENbaaa.s:265 .progmem.data:00000053 __c.10
C:\Users\Thomas\AppData\Local\Temp/ccENbaaa.s:269 .progmem.data:00000063 __c.11
C:\Users\Thomas\AppData\Local\Temp/ccENbaaa.s:273 .progmem.data:00000073 __c.12
C:\Users\Thomas\AppData\Local\Temp/ccENbaaa.s:277 .progmem.data:00000084 __c.13
C:\Users\Thomas\AppData\Local\Temp/ccENbaaa.s:421 .progmem.data:0000008d __c.8
C:\Users\Thomas\AppData\Local\Temp/ccENbaaa.s:425 .progmem.data:000000a0 __c.9
C:\Users\Thomas\AppData\Local\Temp/ccENbaaa.s:511 .progmem.data:000000ac __c.2
C:\Users\Thomas\AppData\Local\Temp/ccENbaaa.s:515 .progmem.data:000000bb __c.3
C:\Users\Thomas\AppData\Local\Temp/ccENbaaa.s:519 .progmem.data:000000c0 __c.4
C:\Users\Thomas\AppData\Local\Temp/ccENbaaa.s:523 .progmem.data:000000c5 __c.5
C:\Users\Thomas\AppData\Local\Temp/ccENbaaa.s:527 .progmem.data:000000ca __c.6
C:\Users\Thomas\AppData\Local\Temp/ccENbaaa.s:531 .progmem.data:000000da __c.7
.bss:00000000 item.0
C:\Users\Thomas\AppData\Local\Temp/ccENbaaa.s:676 .bss:00000001 last_item.1
C:\Users\Thomas\AppData\Local\Temp/ccENbaaa.s:680 .text:000004fc JetiBox_Update
 
UNDEFINED SYMBOLS
__do_copy_data
__do_clear_bss
LIBFC_JetiBox_SetPos
UBat
__divmodhi4
LIBFC_JetiBox_Putchar
_printf_P
NaviDataOkay
GPSInfo
__udivmodhi4
ErsatzKompass
GIER_GRAD_FAKTOR
__divmodsi4
NC_ErrorCode
FlugSekunden
Capacity
EE_Parameter
VarioCharacter
HoehenWert
Motor
RequiredMotors
LIBFC_JetiBox_Clear
/branches/metro/v0.82a metro_Akku+/led.c
0,0 → 1,98
#include <inttypes.h>
#include "main.h"
 
uint16_t LED1_Timing = 0;
uint16_t LED2_Timing = 0;
unsigned char J16Blinkcount = 0, J16Mask = 1;
unsigned char J17Blinkcount = 0, J17Mask = 1;
 
// initializes the LED control outputs J16, J17
void LED_Init(void)
{
// set PC2 & PC3 as output (control of J16 & J17)
DDRC |= (1<<DDC2)|(1<<DDC3);
J16_OFF;
J17_OFF;
J16Blinkcount = 0; J16Mask = 128;
J17Blinkcount = 0; J17Mask = 128;
}
 
// called in UpdateMotors() every 2ms
void LED_Update(void)
{
static char delay = 0;
static unsigned char J16Bitmask = 0;
static unsigned char J17Bitmask = 0;
static unsigned char J16Warn = 0, J17Warn = 0;
if(!delay--) // 10ms Intervall
{
delay = 4;
if(FC_StatusFlags & (FC_STATUS_LOWBAT | FC_STATUS_EMERGENCY_LANDING) || (VersionInfo.HardwareError[1] & FC_ERROR1_I2C))
{
if(EE_Parameter.WARN_J16_Bitmask)
{
if(!J16Warn) J16Blinkcount = 4;
J16Warn = 1;
}
if(EE_Parameter.WARN_J17_Bitmask)
{
if(!J17Warn) J17Blinkcount = 4;
J17Warn = 1;
}
}
else
{
J16Warn = 0;
J17Warn = 0;
J16Bitmask = EE_Parameter.J16Bitmask;
J17Bitmask = EE_Parameter.J17Bitmask;
}
 
if(!J16Warn)
{
if((EE_Parameter.BitConfig & CFG_MOTOR_BLINK) && !MotorenEin) {if(EE_Parameter.BitConfig & CFG_MOTOR_OFF_LED1) J16_ON; else J16_OFF;}
else
if((EE_Parameter.J16Timing > 247) && (Parameter_J16Timing > 220)) {if(J16Bitmask & 128) J16_ON; else J16_OFF;}
else
if((EE_Parameter.J16Timing > 247) && (Parameter_J16Timing < 10)) {if(J16Bitmask & 128) J16_OFF; else J16_ON;}
else
if(!J16Blinkcount--)
{
J16Blinkcount = Parameter_J16Timing-1;
if(J16Mask == 1) J16Mask = 128; else J16Mask /= 2;
if(J16Mask & J16Bitmask) J16_ON; else J16_OFF;
}
}
else
if(!J16Blinkcount--)
{
J16Blinkcount = 10-1;
if(J16Mask == 1) J16Mask = 128; else J16Mask /= 2;
if(J16Mask & EE_Parameter.WARN_J16_Bitmask) J16_ON; else J16_OFF;
}
 
if(!J17Warn)
{
if((EE_Parameter.BitConfig & CFG_MOTOR_BLINK) && !MotorenEin) {if(EE_Parameter.BitConfig & CFG_MOTOR_OFF_LED2) J17_ON; else J17_OFF;}
else
if((EE_Parameter.J17Timing > 247) && (Parameter_J17Timing > 220)) {if(J17Bitmask & 128) J17_ON; else J17_OFF;}
else
if((EE_Parameter.J17Timing > 247) && (Parameter_J17Timing < 10)) {if(J17Bitmask & 128) J17_OFF; else J17_ON;}
else
if(!J17Blinkcount--)
{
J17Blinkcount = Parameter_J17Timing-1;
if(J17Mask == 1) J17Mask = 128; else J17Mask /= 2;
if(J17Mask & J17Bitmask) J17_ON; else J17_OFF;
}
}
else
if(!J17Blinkcount--)
{
J17Blinkcount = 10-1;
if(J17Mask == 1) J17Mask = 128; else J17Mask /= 2;
if(J17Mask & EE_Parameter.WARN_J17_Bitmask) J17_ON; else J17_OFF;
}
}
}
 
/branches/metro/v0.82a metro_Akku+/led.d
0,0 → 1,3
led.o led.d : led.c main.h old_macros.h printf_P.h timer0.h uart.h analog.h \
twimaster.h menu.h rc.h fc.h gps.h spi.h led.h spektrum.h capacity.h \
eeprom.h libfc.h debug.h
/branches/metro/v0.82a metro_Akku+/led.h
0,0 → 1,11
#include <avr/io.h>
 
#define J16_ON PORTC |= (1<<PORTC2)
#define J16_OFF PORTC &= ~(1<<PORTC2)
#define J16_TOGGLE PORTC ^= (1<<PORTC2)
#define J17_ON PORTC |= (1<<PORTC3)
#define J17_OFF PORTC &= ~(1<<PORTC3)
#define J17_TOGGLE PORTC ^= (1<<PORTC3)
 
extern void LED_Init(void);
extern void LED_Update(void);
/branches/metro/v0.82a metro_Akku+/led.lst
0,0 → 1,323
1 .file "led.c"
2 .arch atmega644p
3 __SREG__ = 0x3f
4 __SP_H__ = 0x3e
5 __SP_L__ = 0x3d
6 __tmp_reg__ = 0
7 __zero_reg__ = 1
8 .global __do_copy_data
9 .global __do_clear_bss
10 .global J17Mask
11 .data
14 J17Mask:
15 0000 01 .byte 1
16 .global J17Blinkcount
17 .global J17Blinkcount
18 .section .bss
21 J17Blinkcount:
22 0000 00 .skip 1,0
23 .global J16Mask
24 .data
27 J16Mask:
28 0001 01 .byte 1
29 .global J16Blinkcount
30 .global J16Blinkcount
31 .section .bss
34 J16Blinkcount:
35 0001 00 .skip 1,0
36 .global LED2_Timing
37 .global LED2_Timing
40 LED2_Timing:
41 0002 0000 .skip 2,0
42 .global LED1_Timing
43 .global LED1_Timing
46 LED1_Timing:
47 0004 0000 .skip 2,0
48 .text
49 .global LED_Init
51 LED_Init:
52 /* prologue: frame size=0 */
53 /* prologue end (size=0) */
54 0000 87B1 in r24,39-0x20
55 0002 8C60 ori r24,lo8(12)
56 0004 87B9 out 39-0x20,r24
57 0006 4298 cbi 40-0x20,2
58 0008 4398 cbi 40-0x20,3
59 000a 1092 0000 sts J16Blinkcount,__zero_reg__
60 000e 80E8 ldi r24,lo8(-128)
61 0010 8093 0000 sts J16Mask,r24
62 0014 1092 0000 sts J17Blinkcount,__zero_reg__
63 0018 8093 0000 sts J17Mask,r24
64 /* epilogue: frame size=0 */
65 001c 0895 ret
66 /* epilogue end (size=1) */
67 /* function LED_Init size 15 (14) */
69 .lcomm delay.0,1
70 .lcomm J16Bitmask.1,1
71 .lcomm J17Bitmask.2,1
72 .lcomm J16Warn.3,1
73 .lcomm J17Warn.4,1
74 .global LED_Update
76 LED_Update:
77 /* prologue: frame size=0 */
78 /* prologue end (size=0) */
79 001e 8091 0000 lds r24,delay.0
80 0022 8150 subi r24,lo8(-(-1))
81 0024 8093 0000 sts delay.0,r24
82 0028 8F3F cpi r24,lo8(-1)
83 002a 09F0 breq .+2
84 002c FBC0 rjmp .L2
85 002e 24E0 ldi r18,lo8(4)
86 0030 2093 0000 sts delay.0,r18
87 0034 8091 0000 lds r24,FC_StatusFlags
88 0038 9927 clr r25
89 003a 8073 andi r24,lo8(48)
90 003c 9070 andi r25,hi8(48)
91 003e 892B or r24,r25
92 0040 21F4 brne .L5
93 0042 8091 0000 lds r24,VersionInfo+6
94 0046 80FF sbrs r24,0
95 0048 1CC0 rjmp .L4
96 .L5:
97 004a 8091 0000 lds r24,EE_Parameter+78
98 004e 8823 tst r24
99 0050 49F0 breq .L6
100 0052 8091 0000 lds r24,J16Warn.3
101 0056 8823 tst r24
102 0058 11F4 brne .L7
103 005a 2093 0000 sts J16Blinkcount,r18
104 .L7:
105 005e 81E0 ldi r24,lo8(1)
106 0060 8093 0000 sts J16Warn.3,r24
107 .L6:
108 0064 8091 0000 lds r24,EE_Parameter+79
109 0068 8823 tst r24
110 006a B9F0 breq .L10
111 006c 8091 0000 lds r24,J17Warn.4
112 0070 8823 tst r24
113 0072 19F4 brne .L9
114 0074 84E0 ldi r24,lo8(4)
115 0076 8093 0000 sts J17Blinkcount,r24
116 .L9:
117 007a 81E0 ldi r24,lo8(1)
118 007c 8093 0000 sts J17Warn.4,r24
119 0080 0CC0 rjmp .L10
120 .L4:
121 0082 1092 0000 sts J16Warn.3,__zero_reg__
122 0086 1092 0000 sts J17Warn.4,__zero_reg__
123 008a 8091 0000 lds r24,EE_Parameter+74
124 008e 8093 0000 sts J16Bitmask.1,r24
125 0092 8091 0000 lds r24,EE_Parameter+76
126 0096 8093 0000 sts J17Bitmask.2,r24
127 .L10:
128 009a 8091 0000 lds r24,J16Warn.3
129 009e 8823 tst r24
130 00a0 09F0 breq .+2
131 00a2 40C0 rjmp .L11
132 00a4 8091 0000 lds r24,EE_Parameter+100
133 00a8 282F mov r18,r24
134 00aa 3327 clr r19
135 00ac 24FF sbrs r18,4
136 00ae 07C0 rjmp .L12
137 00b0 8091 0000 lds r24,MotorenEin
138 00b4 8823 tst r24
139 00b6 19F4 brne .L12
140 00b8 25FD sbrc r18,5
141 00ba 4DC0 rjmp .L61
142 00bc 4EC0 rjmp .L33
143 .L12:
144 00be 9091 0000 lds r25,EE_Parameter+75
145 00c2 983F cpi r25,lo8(-8)
146 00c4 50F0 brlo .L16
147 00c6 8091 0000 lds r24,Parameter_J16Timing
148 00ca 8D3D cpi r24,lo8(-35)
149 00cc 30F0 brlo .L16
150 00ce 8091 0000 lds r24,J16Bitmask.1
151 00d2 8823 tst r24
152 00d4 0CF4 brge .+2
153 00d6 3FC0 rjmp .L61
154 00d8 40C0 rjmp .L33
155 .L16:
156 00da 983F cpi r25,lo8(-8)
157 00dc 48F0 brlo .L20
158 00de 8091 0000 lds r24,Parameter_J16Timing
159 00e2 8A30 cpi r24,lo8(10)
160 00e4 28F4 brsh .L20
161 00e6 8091 0000 lds r24,J16Bitmask.1
162 00ea 8823 tst r24
163 00ec B4F1 brlt .L33
164 00ee 33C0 rjmp .L61
165 .L20:
166 00f0 8091 0000 lds r24,J16Blinkcount
167 00f4 8150 subi r24,lo8(-(-1))
168 00f6 8093 0000 sts J16Blinkcount,r24
169 00fa 8F3F cpi r24,lo8(-1)
170 00fc 79F5 brne .L29
171 00fe 8091 0000 lds r24,Parameter_J16Timing
172 0102 8150 subi r24,lo8(-(-1))
173 0104 8093 0000 sts J16Blinkcount,r24
174 0108 8091 0000 lds r24,J16Mask
175 010c 8130 cpi r24,lo8(1)
176 010e 11F4 brne .L25
177 0110 80E8 ldi r24,lo8(-128)
178 0112 01C0 rjmp .L59
179 .L25:
180 0114 8695 lsr r24
181 .L59:
182 0116 8093 0000 sts J16Mask,r24
183 011a 8091 0000 lds r24,J16Mask
184 011e 9091 0000 lds r25,J16Bitmask.1
185 0122 17C0 rjmp .L68
186 .L11:
187 0124 8091 0000 lds r24,J16Blinkcount
188 0128 8150 subi r24,lo8(-(-1))
189 012a 8093 0000 sts J16Blinkcount,r24
190 012e 8F3F cpi r24,lo8(-1)
191 0130 A9F4 brne .L29
192 0132 89E0 ldi r24,lo8(9)
193 0134 8093 0000 sts J16Blinkcount,r24
194 0138 8091 0000 lds r24,J16Mask
195 013c 8130 cpi r24,lo8(1)
196 013e 11F4 brne .L31
197 0140 80E8 ldi r24,lo8(-128)
198 0142 01C0 rjmp .L60
199 .L31:
200 0144 8695 lsr r24
201 .L60:
202 0146 8093 0000 sts J16Mask,r24
203 014a 8091 0000 lds r24,J16Mask
204 014e 9091 0000 lds r25,EE_Parameter+78
205 .L68:
206 0152 8923 and r24,r25
207 0154 11F0 breq .L33
208 .L61:
209 0156 429A sbi 40-0x20,2
210 0158 01C0 rjmp .L29
211 .L33:
212 015a 4298 cbi 40-0x20,2
213 .L29:
214 015c 8091 0000 lds r24,J17Warn.4
215 0160 8823 tst r24
216 0162 09F0 breq .+2
217 0164 43C0 rjmp .L35
218 0166 8091 0000 lds r24,EE_Parameter+100
219 016a 282F mov r18,r24
220 016c 3327 clr r19
221 016e 24FF sbrs r18,4
222 0170 07C0 rjmp .L36
223 0172 8091 0000 lds r24,MotorenEin
224 0176 8823 tst r24
225 0178 19F4 brne .L36
226 017a 26FD sbrc r18,6
227 017c 50C0 rjmp .L67
228 017e 34C0 rjmp .L51
229 .L36:
230 0180 9091 0000 lds r25,EE_Parameter+77
231 0184 983F cpi r25,lo8(-8)
232 0186 50F0 brlo .L40
233 0188 8091 0000 lds r24,Parameter_J17Timing
234 018c 8D3D cpi r24,lo8(-35)
235 018e 30F0 brlo .L40
236 0190 8091 0000 lds r24,J17Bitmask.2
237 0194 8823 tst r24
238 0196 0CF4 brge .+2
239 0198 42C0 rjmp .L67
240 019a 26C0 rjmp .L51
241 .L40:
242 019c 983F cpi r25,lo8(-8)
243 019e 48F0 brlo .L44
244 01a0 8091 0000 lds r24,Parameter_J17Timing
245 01a4 8A30 cpi r24,lo8(10)
246 01a6 28F4 brsh .L44
247 01a8 8091 0000 lds r24,J17Bitmask.2
248 01ac 8823 tst r24
249 01ae E4F0 brlt .L51
250 01b0 36C0 rjmp .L67
251 .L44:
252 01b2 8091 0000 lds r24,J17Blinkcount
253 01b6 8150 subi r24,lo8(-(-1))
254 01b8 8093 0000 sts J17Blinkcount,r24
255 01bc 8F3F cpi r24,lo8(-1)
256 01be 91F5 brne .L2
257 01c0 8091 0000 lds r24,Parameter_J17Timing
258 01c4 8150 subi r24,lo8(-(-1))
259 01c6 8093 0000 sts J17Blinkcount,r24
260 01ca 8091 0000 lds r24,J17Mask
261 01ce 8130 cpi r24,lo8(1)
262 01d0 11F4 brne .L49
263 01d2 80E8 ldi r24,lo8(-128)
264 01d4 01C0 rjmp .L62
265 .L49:
266 01d6 8695 lsr r24
267 .L62:
268 01d8 8093 0000 sts J17Mask,r24
269 01dc 8091 0000 lds r24,J17Mask
270 01e0 9091 0000 lds r25,J17Bitmask.2
271 01e4 8923 and r24,r25
272 01e6 D9F4 brne .L67
273 .L51:
274 01e8 4398 cbi 40-0x20,3
275 01ea 0895 ret
276 .L35:
277 01ec 8091 0000 lds r24,J17Blinkcount
278 01f0 8150 subi r24,lo8(-(-1))
279 01f2 8093 0000 sts J17Blinkcount,r24
280 01f6 8F3F cpi r24,lo8(-1)
281 01f8 A9F4 brne .L2
282 01fa 89E0 ldi r24,lo8(9)
283 01fc 8093 0000 sts J17Blinkcount,r24
284 0200 8091 0000 lds r24,J17Mask
285 0204 8130 cpi r24,lo8(1)
286 0206 11F4 brne .L55
287 0208 80E8 ldi r24,lo8(-128)
288 020a 01C0 rjmp .L63
289 .L55:
290 020c 8695 lsr r24
291 .L63:
292 020e 8093 0000 sts J17Mask,r24
293 0212 8091 0000 lds r24,J17Mask
294 0216 9091 0000 lds r25,EE_Parameter+79
295 021a 8923 and r24,r25
296 021c 11F0 breq .L57
297 .L67:
298 021e 439A sbi 40-0x20,3
299 0220 0895 ret
300 .L57:
301 0222 4398 cbi 40-0x20,3
302 .L2:
303 0224 0895 ret
304 /* epilogue: frame size=0 */
305 /* epilogue: noreturn */
306 /* epilogue end (size=0) */
307 /* function LED_Update size 267 (267) */
309 /* File "led.c": code 282 = 0x011a ( 281), prologues 0, epilogues 1 */
DEFINED SYMBOLS
*ABS*:00000000 led.c
C:\Users\Thomas\AppData\Local\Temp/ccCQbaaa.s:3 *ABS*:0000003f __SREG__
C:\Users\Thomas\AppData\Local\Temp/ccCQbaaa.s:4 *ABS*:0000003e __SP_H__
C:\Users\Thomas\AppData\Local\Temp/ccCQbaaa.s:5 *ABS*:0000003d __SP_L__
C:\Users\Thomas\AppData\Local\Temp/ccCQbaaa.s:6 *ABS*:00000000 __tmp_reg__
C:\Users\Thomas\AppData\Local\Temp/ccCQbaaa.s:7 *ABS*:00000001 __zero_reg__
C:\Users\Thomas\AppData\Local\Temp/ccCQbaaa.s:14 .data:00000000 J17Mask
C:\Users\Thomas\AppData\Local\Temp/ccCQbaaa.s:21 .bss:00000000 J17Blinkcount
C:\Users\Thomas\AppData\Local\Temp/ccCQbaaa.s:27 .data:00000001 J16Mask
C:\Users\Thomas\AppData\Local\Temp/ccCQbaaa.s:34 .bss:00000001 J16Blinkcount
C:\Users\Thomas\AppData\Local\Temp/ccCQbaaa.s:40 .bss:00000002 LED2_Timing
C:\Users\Thomas\AppData\Local\Temp/ccCQbaaa.s:46 .bss:00000004 LED1_Timing
C:\Users\Thomas\AppData\Local\Temp/ccCQbaaa.s:51 .text:00000000 LED_Init
.bss:00000006 delay.0
C:\Users\Thomas\AppData\Local\Temp/ccCQbaaa.s:69 .bss:00000007 J16Bitmask.1
C:\Users\Thomas\AppData\Local\Temp/ccCQbaaa.s:70 .bss:00000008 J17Bitmask.2
C:\Users\Thomas\AppData\Local\Temp/ccCQbaaa.s:71 .bss:00000009 J16Warn.3
C:\Users\Thomas\AppData\Local\Temp/ccCQbaaa.s:72 .bss:0000000a J17Warn.4
C:\Users\Thomas\AppData\Local\Temp/ccCQbaaa.s:76 .text:0000001e LED_Update
 
UNDEFINED SYMBOLS
__do_copy_data
__do_clear_bss
FC_StatusFlags
VersionInfo
EE_Parameter
MotorenEin
Parameter_J16Timing
Parameter_J17Timing
/branches/metro/v0.82a metro_Akku+/libfc.h
0,0 → 1,20
#ifndef _LIBFC_H
#define _LIBFC_H
 
 
#define CPU_UNKNOWN 0
#define CPU_ATMEGA644 1
#define CPU_ATMEGA644P 2
#define CPU_ATMEGA1284 3
#define CPU_ATMEGA1284P 4
 
extern void LIBFC_Init(void);
extern void LIBFC_Polling(void);
extern void LIBFC_ReceiverInit(unsigned char rtype);
 
extern void LIBFC_JetiBox_Putchar(char c);
extern void LIBFC_JetiBox_SetPos(unsigned char index);
extern void LIBFC_JetiBox_Clear(void);
extern unsigned char LIBFC_GetCPUType(void);
 
#endif //_LIBFC_H
/branches/metro/v0.82a metro_Akku+/main.c
0,0 → 1,403
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// + Copyright (c) Holger Buss, Ingo Busker
// + Nur für den privaten Gebrauch / NON-COMMERCIAL USE ONLY
// + www.MikroKopter.com
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// + Es gilt für das gesamte Projekt (Hardware, Software, Binärfiles, Sourcecode und Dokumentation),
// + dass eine Nutzung (auch auszugsweise) nur für den privaten und nicht-kommerziellen Gebrauch zulässig ist.
// + Sollten direkte oder indirekte kommerzielle Absichten verfolgt werden, ist mit uns (info@mikrokopter.de) Kontakt
// + bzgl. der Nutzungsbedingungen aufzunehmen.
// + Eine kommerzielle Nutzung ist z.B.Verkauf von MikroKoptern, Bestückung und Verkauf von Platinen oder Bausätzen,
// + Verkauf von Luftbildaufnahmen, usw.
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// + Werden Teile des Quellcodes (mit oder ohne Modifikation) weiterverwendet oder veröffentlicht,
// + unterliegen sie auch diesen Nutzungsbedingungen und diese Nutzungsbedingungen incl. Copyright müssen dann beiliegen
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// + Sollte die Software (auch auszugesweise) oder sonstige Informationen des MikroKopter-Projekts
// + auf anderen Webseiten oder Medien veröffentlicht werden, muss unsere Webseite "http://www.mikrokopter.de"
// + eindeutig als Ursprung verlinkt und genannt werden
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// + Keine Gewähr auf Fehlerfreiheit, Vollständigkeit oder Funktion
// + Benutzung auf eigene Gefahr
// + Wir übernehmen keinerlei Haftung für direkte oder indirekte Personen- oder Sachschäden
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// + Die Portierung oder Nutzung der Software (oder Teile davon) auf andere Systeme (ausser der Hardware von www.mikrokopter.de) ist nur
// + mit unserer Zustimmung zulässig
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// + Die Funktion printf_P() unterliegt ihrer eigenen Lizenz und ist hiervon nicht betroffen
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// + Redistributions of source code (with or without modifications) must retain the above copyright notice,
// + this list of conditions and the following disclaimer.
// + * Neither the name of the copyright holders nor the names of contributors may be used to endorse or promote products derived
// + from this software without specific prior written permission.
// + * The use of this project (hardware, software, binary files, sources and documentation) is only permittet
// + for non-commercial use (directly or indirectly)
// + Commercial use (for excample: selling of MikroKopters, selling of PCBs, assembly, ...) is only permitted
// + with our written permission
// + * If sources or documentations are redistributet on other webpages, out webpage (http://www.MikroKopter.de) must be
// + clearly linked as origin
// + * porting the sources to other systems or using the software on other systems (except hardware from www.mikrokopter.de) is not allowed
// + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
// + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
// + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
// + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
// + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
// + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
// + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
// + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
// + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
// + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
// + POSSIBILITY OF SUCH DAMAGE.
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#include "main.h"
 
//MartinW MaxSize is 63488 bytes
 
unsigned char PlatinenVersion = 10;
unsigned char SendVersionToNavi = 1;
unsigned char BattLowVoltageWarning = 94;
unsigned int FlugMinuten = 0,FlugMinutenGesamt = 0;
unsigned int FlugSekunden = 0;
pVoidFnct_pVoidFnctChar_const_fmt _printf_P;
unsigned char FoundMotors = 0;
 
void CalMk3Mag(void)
{
static unsigned char stick = 1;
if(PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] > -20) stick = 0;
if((PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] < -70) && !stick)
{
stick = 1;
WinkelOut.CalcState++;
if(WinkelOut.CalcState > 4)
{
// WinkelOut.CalcState = 0; // in Uart.c
beeptime = 1000;
}
else Piep(WinkelOut.CalcState,150);
}
DebugOut.Analog[19] = WinkelOut.CalcState;
}
 
 
void LipoDetection(unsigned char print)
{
#define MAX_CELL_VOLTAGE 43 // max cell volatage for LiPO
unsigned int timer, cells;
if(print) printf("\n\rBatt:");
if(EE_Parameter.UnterspannungsWarnung < 50) // automatische Zellenerkennung
{
timer = SetDelay(500);
if(print) while (!CheckDelay(timer));
// up to 6s LiPo, less than 2s is technical impossible
for(cells = 2; cells < 7; cells++)
{
if(UBat < cells * MAX_CELL_VOLTAGE) break;
}
 
BattLowVoltageWarning = cells * EE_Parameter.UnterspannungsWarnung;
if(print)
{
Piep(cells, 200);
printf(" %d Cells ", cells);
}
}
else BattLowVoltageWarning = EE_Parameter.UnterspannungsWarnung;
if(print) printf(" Low warning level: %d.%d",BattLowVoltageWarning/10,BattLowVoltageWarning%10);
}
 
//############################################################################
//Hauptprogramm
int main (void)
//############################################################################
{
unsigned int timer,i,timer2 = 0, timerPolling;
 
DDRB = 0x00;
PORTB = 0x00;
for(timer = 0; timer < 1000; timer++); // verzögern
#if (defined(__AVR_ATmega1284__) || defined(__AVR_ATmega1284P__))
PlatinenVersion = 21;
#else
if(PINB & 0x01)
{
if(PINB & 0x02) PlatinenVersion = 13;
else PlatinenVersion = 11;
}
else
{
if(PINB & 0x02) PlatinenVersion = 20;
else PlatinenVersion = 10;
}
#endif
DDRC = 0x81; // SCL
DDRC |=0x40; // HEF4017 Reset
PORTC = 0xff; // Pullup SDA
DDRB = 0x1B; // LEDs und Druckoffset
PORTB = 0x01; // LED_Rot
DDRD = 0x3E; // Speaker & TXD & J3 J4 J5
PORTD = 0x47; // LED
HEF4017R_ON;
MCUSR &=~(1<<WDRF);
WDTCSR |= (1<<WDCE)|(1<<WDE);
WDTCSR = 0;
 
beeptime = 2500;
StickGier = 0; PPM_in[K_GAS] = 0; StickRoll = 0; StickNick = 0;
if(PlatinenVersion >= 20) GIER_GRAD_FAKTOR = 1220; else GIER_GRAD_FAKTOR = 1291; // unterschiedlich für ME und ENC
ROT_OFF;
 
Timer_Init();
TIMER2_Init();
UART_Init();
rc_sum_init();
ADC_Init();
I2C_Init(1);
SPI_MasterInit();
LIBFC_Init();
GRN_ON;
sei();
ParamSet_Init();
Capacity_Init(); //Moved by metro
 
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// + Check connected BL-Ctrls
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// Check connected BL-Ctrls
BLFlags |= BLFLAG_READ_VERSION;
motor_read = 0; // read the first I2C-Data
SendMotorData();
timer = SetDelay(500);
while(!(BLFlags & BLFLAG_TX_COMPLETE) && !CheckDelay(timer)); //wait for complete transfer
 
printf("\n\rFound BL-Ctrl: ");
timer = SetDelay(4000);
for(i=0; i < MAX_MOTORS; i++)
{
SendMotorData();
while(!(BLFlags & BLFLAG_TX_COMPLETE) && !CheckDelay(timer)); //wait for complete transfer
if(Mixer.Motor[i][0] > 0) // wait max 4 sec for the BL-Ctrls to wake up
{
while(!CheckDelay(timer) && !(Motor[i].State & MOTOR_STATE_PRESENT_MASK) )
{
SendMotorData();
while(!(BLFlags & BLFLAG_TX_COMPLETE) && !CheckDelay(timer)); //wait for complete transfer
}
}
if(Motor[i].State & MOTOR_STATE_PRESENT_MASK)
{
printf("%d",i+1);
FoundMotors++;
// if(Motor[i].Version & MOTOR_STATE_NEW_PROTOCOL_MASK) printf("(new) ");
}
}
for(i=0; i < MAX_MOTORS; i++)
{
if(!(Motor[i].State & MOTOR_STATE_PRESENT_MASK) && Mixer.Motor[i][0] > 0)
{
printf("\n\r\n\r!! MISSING BL-CTRL: %d !!",i+1);
ServoActive = 2; // just in case the FC would be used as camera-stabilizer
}
Motor[i].State &= ~MOTOR_STATE_ERROR_MASK; // clear error counter
}
printf("\n\r===================================");
 
if(RequiredMotors < FoundMotors) VersionInfo.HardwareError[1] |= FC_ERROR1_MIXER;
 
//if(EE_Parameter.GlobalConfig & CFG_HOEHENREGELUNG)
{
printf("\n\rCalibrating pressure sensor..");
timer = SetDelay(1000);
SucheLuftruckOffset();
while (!CheckDelay(timer));
printf("OK\n\r");
}
 
SetNeutral(0);
 
ROT_OFF;
 
beeptime = 2000;
ExternControl.Digital[0] = 0x55;
 
 
FlugMinuten = (unsigned int)GetParamByte(PID_FLIGHT_MINUTES) * 256 + (unsigned int)GetParamByte(PID_FLIGHT_MINUTES + 1);
FlugMinutenGesamt = (unsigned int)GetParamByte(PID_FLIGHT_MINUTES_TOTAL) * 256 + (unsigned int)GetParamByte(PID_FLIGHT_MINUTES_TOTAL + 1);
 
if((FlugMinutenGesamt == 0xFFFF) || (FlugMinuten == 0xFFFF))
{
FlugMinuten = 0;
FlugMinutenGesamt = 0;
}
printf("\n\rFlight-time %u min Total:%u min", FlugMinuten, FlugMinutenGesamt);
 
printf("\n\rControl: ");
if (EE_Parameter.GlobalConfig & CFG_HEADING_HOLD) printf("HeadingHold");
else printf("Normal (ACC-Mode)");
 
LcdClear();
I2CTimeout = 5000;
WinkelOut.Orientation = 1;
LipoDetection(1);
 
LIBFC_ReceiverInit(EE_Parameter.Receiver);
 
printf("\n\r===================================\n\r");
//SpektrumBinding();
timer = SetDelay(2000);
timerPolling = SetDelay(250);
 
Debug(ANSI_CLEAR "FC-Start!\n\rFlugzeit: %d min", FlugMinutenGesamt); // Note: this won't waste flash memory, if #DEBUG is not active
DebugOut.Status[0] = 0x01 | 0x02;
 
while (1)
{
if (JetiUpdateModeActive) while (1);
if(CheckDelay(timerPolling))
{
timerPolling = SetDelay(100);
LIBFC_Polling();
}
if(UpdateMotor && AdReady) // ReglerIntervall
{
UpdateMotor=0;
if(WinkelOut.CalcState) CalMk3Mag();
else MotorRegler();
SendMotorData();
ROT_OFF;
if(SenderOkay) { SenderOkay--; VersionInfo.HardwareError[1] &= ~FC_ERROR1_PPM; }
else
{
TIMSK1 |= _BV(ICIE1); // enable PPM-Input
PPM_in[0] = 0; // set RSSI to zero on data timeout
VersionInfo.HardwareError[1] |= FC_ERROR1_PPM;
}
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//if(HoehenReglerAktiv && NaviDataOkay && SenderOkay < 160 && SenderOkay > 10 && FromNaviCtrl_Value.SerialDataOkay > 220) SenderOkay = 160;
//if(HoehenReglerAktiv && NaviDataOkay && SenderOkay < 101 && SenderOkay > 10 && FromNaviCtrl_Value.SerialDataOkay > 1) SenderOkay = 101;
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
if(!--I2CTimeout || MissingMotor)
{
if(!I2CTimeout)
{
I2C_Reset();
I2CTimeout = 5;
DebugOut.Analog[28]++; // I2C-Error
VersionInfo.HardwareError[1] |= FC_ERROR1_I2C;
DebugOut.Status[1] |= 0x02; // BL-Error-Status
}
if((BeepMuster == 0xffff) && MotorenEin)
{
beeptime = 10000;
BeepMuster = 0x0080;
}
}
else
{
ROT_OFF;
if(!beeptime)
{
VersionInfo.HardwareError[1] &= ~FC_ERROR1_I2C;
}
}
if(!UpdateMotor)
{
if(CalculateServoSignals) CalculateServo();
DatenUebertragung();
BearbeiteRxDaten();
if(CheckDelay(timer))
{
static unsigned char second;
timer += 20; // 20 ms interval
if(MissingMotor)
{
VersionInfo.HardwareError[1] |= FC_ERROR1_BL_MISSING;
DebugOut.Status[1] |= 0x02; // BL-Error-Status
}
else
{
VersionInfo.HardwareError[1] &= ~FC_ERROR1_BL_MISSING;
if(I2CTimeout > 6) DebugOut.Status[1] &= ~0x02; // BL-Error-Status
}
 
if(I2CTimeout > 6) VersionInfo.HardwareError[1] &= ~FC_ERROR1_I2C;
 
if(PcZugriff) PcZugriff--;
else
{
ExternControl.Config = 0;
ExternStickNick = 0;
ExternStickRoll = 0;
ExternStickGier = 0;
if(BeepMuster == 0xffff && SenderOkay == 0)
{
beeptime = 15000;
BeepMuster = 0x0c00;
}
}
if(NaviDataOkay > 200)
{
NaviDataOkay--;
VersionInfo.HardwareError[1] &= ~FC_ERROR1_SPI_RX;
}
else
{
if(NC_Version.Compatible)
{
VersionInfo.HardwareError[1] |= FC_ERROR1_SPI_RX;
if(BeepMuster == 0xffff && MotorenEin)
{
beeptime = 15000;
BeepMuster = 0xA800;
}
}
GPS_Nick = 0;
GPS_Roll = 0;
//if(!beeptime)
FromNaviCtrl.CompassValue = -1;
NaviDataOkay = 0;
}
if((UBat < BattLowVoltageWarning)||((Capacity.RemainCapacity<=0)&&(EE_Parameter.UserParam1!=0))) //Modified by metro
{
FC_StatusFlags |= FC_STATUS_LOWBAT;
if(BeepMuster == 0xffff)
{
beeptime = 6000;
BeepMuster = 0x0300;
}
}
else if(!beeptime) FC_StatusFlags &= ~FC_STATUS_LOWBAT;
 
SPI_StartTransmitPacket();
SendSPI = 4;
if(!MotorenEin) timer2 = 1450; // 0,5 Minuten aufrunden
else
if(++second == 49)
{
second = 0;
FlugSekunden++;
}
if(++timer2 == 2930) // eine Minute
{
timer2 = 0;
FlugMinuten++;
FlugMinutenGesamt++;
SetParamByte(PID_FLIGHT_MINUTES,FlugMinuten / 256);
SetParamByte(PID_FLIGHT_MINUTES+1,FlugMinuten % 256);
SetParamByte(PID_FLIGHT_MINUTES_TOTAL,FlugMinutenGesamt / 256);
SetParamByte(PID_FLIGHT_MINUTES_TOTAL+1,FlugMinutenGesamt % 256);
timer = SetDelay(20); // falls "timer += 20;" mal nicht geht
}
}
LED_Update();
Capacity_Update();
}
}
if(!SendSPI) { SPI_TransmitByte(); }
}
return (1);
}
 
 
/branches/metro/v0.82a metro_Akku+/main.d
0,0 → 1,3
main.o main.d : main.c main.h old_macros.h printf_P.h timer0.h uart.h analog.h \
twimaster.h menu.h rc.h fc.h gps.h spi.h led.h spektrum.h capacity.h \
eeprom.h libfc.h debug.h
/branches/metro/v0.82a metro_Akku+/main.h
0,0 → 1,75
#ifndef _MAIN_H
#define _MAIN_H
 
//#define DEBUG // use to activate debug output to MK-Tool: use Debug(text);
//#define ACT_S3D_SUMMENSIGNAL
//#define SWITCH_LEARNS_CAREFREE
//#define RECEIVER_SPEKTRUM_EXP
 
// neue Hardware
#define ROT_OFF {if((PlatinenVersion == 10)||(PlatinenVersion >= 20)) PORTB &=~0x01; else PORTB |= 0x01;}
#define ROT_ON {if((PlatinenVersion == 10)||(PlatinenVersion >= 20)) PORTB |= 0x01; else PORTB &=~0x01;}
#define ROT_FLASH PORTB ^= 0x01
#define GRN_OFF {if((PlatinenVersion < 12)) PORTB &=~0x02; else PORTB |= 0x02;}
#define GRN_ON {if((PlatinenVersion < 12)) PORTB |= 0x02; else PORTB &=~0x02;}
#define GRN_FLASH PORTB ^= 0x02
 
#define SYSCLK F_CPU
 
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 
#define J3High PORTD |= 0x20
#define J3Low PORTD &= ~0x20
#define J4High PORTD |= 0x10
#define J4Low PORTD &= ~0x10
#define J5High PORTD |= 0x08
#define J5Low PORTD &= ~0x08
 
extern volatile unsigned char SenderOkay;
extern unsigned char BattLowVoltageWarning;
extern unsigned char CosinusNickWinkel, CosinusRollWinkel;
extern unsigned char PlatinenVersion;
extern unsigned char SendVersionToNavi;
extern unsigned char FoundMotors;
 
void LipoDetection(unsigned char print);
extern unsigned int FlugMinuten,FlugMinutenGesamt,FlugSekunden;
 
#include <stdlib.h>
#include <string.h>
#include <avr/io.h>
#include <avr/pgmspace.h>
#include <avr/interrupt.h>
#include <avr/eeprom.h>
#include <avr/boot.h>
#include <avr/wdt.h>
 
 
#include "old_macros.h"
 
#include "printf_P.h"
#include "timer0.h"
#include "uart.h"
#include "analog.h"
#include "twimaster.h"
#include "menu.h"
#include "rc.h"
#include "fc.h"
#include "gps.h"
#include "spi.h"
#include "led.h"
#include "spektrum.h"
#include "capacity.h"
#include "eeprom.h"
#include "libfc.h"
#include "debug.h"
 
 
 
#endif //_MAIN_H
 
 
 
 
 
 
/branches/metro/v0.82a metro_Akku+/main.lst
0,0 → 1,1306
1 .file "main.c"
2 .arch atmega644p
3 __SREG__ = 0x3f
4 __SP_H__ = 0x3e
5 __SP_L__ = 0x3d
6 __tmp_reg__ = 0
7 __zero_reg__ = 1
8 .global __do_copy_data
9 .global __do_clear_bss
10 .global FoundMotors
11 .global FoundMotors
12 .section .bss
15 FoundMotors:
16 0000 00 .skip 1,0
17 .global FlugSekunden
18 .global FlugSekunden
21 FlugSekunden:
22 0001 0000 .skip 2,0
23 .global FlugMinutenGesamt
24 .global FlugMinutenGesamt
27 FlugMinutenGesamt:
28 0003 0000 .skip 2,0
29 .global FlugMinuten
30 .global FlugMinuten
33 FlugMinuten:
34 0005 0000 .skip 2,0
35 .global BattLowVoltageWarning
36 .data
39 BattLowVoltageWarning:
40 0000 5E .byte 94
41 .global SendVersionToNavi
44 SendVersionToNavi:
45 0001 01 .byte 1
46 .global PlatinenVersion
49 PlatinenVersion:
50 0002 0A .byte 10
53 stick.15:
54 0003 01 .byte 1
55 .text
56 .global CalMk3Mag
58 CalMk3Mag:
59 /* prologue: frame size=0 */
60 /* prologue end (size=0) */
61 0000 8091 0000 lds r24,EE_Parameter+1
62 0004 E82F mov r30,r24
63 0006 FF27 clr r31
64 0008 EE0F add r30,r30
65 000a FF1F adc r31,r31
66 000c E050 subi r30,lo8(-(PPM_in))
67 000e F040 sbci r31,hi8(-(PPM_in))
68 0010 8081 ld r24,Z
69 0012 9181 ldd r25,Z+1
70 0014 8D5E subi r24,lo8(-19)
71 0016 9F4F sbci r25,hi8(-19)
72 0018 14F0 brlt .L2
73 001a 1092 0000 sts stick.15,__zero_reg__
74 .L2:
75 001e 8081 ld r24,Z
76 0020 9181 ldd r25,Z+1
77 0022 8A5B subi r24,lo8(-70)
78 0024 9F4F sbci r25,hi8(-70)
79 0026 CCF4 brge .L3
80 0028 8091 0000 lds r24,stick.15
81 002c 8823 tst r24
82 002e A9F4 brne .L3
83 0030 81E0 ldi r24,lo8(1)
84 0032 8093 0000 sts stick.15,r24
85 0036 8091 0000 lds r24,WinkelOut+6
86 003a 8F5F subi r24,lo8(-(1))
87 003c 8093 0000 sts WinkelOut+6,r24
88 0040 8530 cpi r24,lo8(5)
89 0042 38F0 brlo .L4
90 0044 88EE ldi r24,lo8(1000)
91 0046 93E0 ldi r25,hi8(1000)
92 0048 9093 0000 sts (beeptime)+1,r25
93 004c 8093 0000 sts beeptime,r24
94 0050 04C0 rjmp .L3
95 .L4:
96 0052 66E9 ldi r22,lo8(150)
97 0054 70E0 ldi r23,hi8(150)
98 0056 0E94 0000 call Piep
99 .L3:
100 005a 8091 0000 lds r24,WinkelOut+6
101 005e 9927 clr r25
102 0060 9093 0000 sts (DebugOut+40)+1,r25
103 0064 8093 0000 sts DebugOut+40,r24
104 /* epilogue: frame size=0 */
105 0068 0895 ret
106 /* epilogue end (size=1) */
107 /* function CalMk3Mag size 55 (54) */
109 .section .progmem.data,"a",@progbits
112 __c.12:
113 0000 0A0D 4261 .string "\n\rBatt:"
113 7474 3A00
116 __c.13:
117 0008 2025 6420 .string " %d Cells "
117 4365 6C6C
117 7320 00
120 __c.14:
121 0013 204C 6F77 .string " Low warning level: %d.%d"
121 2077 6172
121 6E69 6E67
121 206C 6576
121 656C 3A20
122 .text
123 .global LipoDetection
125 LipoDetection:
126 /* prologue: frame size=0 */
127 006a 1F93 push r17
128 006c CF93 push r28
129 006e DF93 push r29
130 /* prologue end (size=3) */
131 0070 182F mov r17,r24
132 0072 8823 tst r24
133 0074 89F0 breq .L7
134 0076 80E0 ldi r24,lo8(__c.12)
135 0078 90E0 ldi r25,hi8(__c.12)
136 007a 9F93 push r25
137 007c 8F93 push r24
138 007e 80E0 ldi r24,lo8(pm(uart_putchar))
139 0080 90E0 ldi r25,hi8(pm(uart_putchar))
140 0082 9F93 push r25
141 0084 8F93 push r24
142 0086 E091 0000 lds r30,_printf_P
143 008a F091 0000 lds r31,(_printf_P)+1
144 008e 0995 icall
145 0090 0F90 pop __tmp_reg__
146 0092 0F90 pop __tmp_reg__
147 0094 0F90 pop __tmp_reg__
148 0096 0F90 pop __tmp_reg__
149 .L7:
150 0098 8091 0000 lds r24,EE_Parameter+36
151 009c 8233 cpi r24,lo8(50)
152 009e 08F0 brlo .+2
153 00a0 44C0 rjmp .L8
154 00a2 84EF ldi r24,lo8(500)
155 00a4 91E0 ldi r25,hi8(500)
156 00a6 0E94 0000 call SetDelay
157 00aa EC01 movw r28,r24
158 00ac 1123 tst r17
159 00ae 29F0 breq .L9
160 .L10:
161 00b0 CE01 movw r24,r28
162 00b2 0E94 0000 call CheckDelay
163 00b6 8823 tst r24
164 00b8 D9F3 breq .L10
165 .L9:
166 00ba C2E0 ldi r28,lo8(2)
167 00bc D0E0 ldi r29,hi8(2)
168 00be 26E5 ldi r18,lo8(86)
169 00c0 30E0 ldi r19,hi8(86)
170 .L17:
171 00c2 8091 0000 lds r24,UBat
172 00c6 9091 0000 lds r25,(UBat)+1
173 00ca 8217 cp r24,r18
174 00cc 9307 cpc r25,r19
175 00ce 30F0 brlo .L14
176 00d0 2196 adiw r28,1
177 00d2 255D subi r18,lo8(-(43))
178 00d4 3F4F sbci r19,hi8(-(43))
179 00d6 C730 cpi r28,7
180 00d8 D105 cpc r29,__zero_reg__
181 00da 98F3 brlo .L17
182 .L14:
183 00dc 8091 0000 lds r24,EE_Parameter+36
184 00e0 9927 clr r25
185 00e2 C89F mul r28,r24
186 00e4 9001 movw r18,r0
187 00e6 C99F mul r28,r25
188 00e8 300D add r19,r0
189 00ea D89F mul r29,r24
190 00ec 300D add r19,r0
191 00ee 1124 clr r1
192 00f0 2093 0000 sts BattLowVoltageWarning,r18
193 00f4 1123 tst r17
194 00f6 D9F0 breq .L19
195 00f8 68EC ldi r22,lo8(200)
196 00fa 70E0 ldi r23,hi8(200)
197 00fc 8C2F mov r24,r28
198 00fe 0E94 0000 call Piep
199 0102 DF93 push r29
200 0104 CF93 push r28
201 0106 80E0 ldi r24,lo8(__c.13)
202 0108 90E0 ldi r25,hi8(__c.13)
203 010a 9F93 push r25
204 010c 8F93 push r24
205 010e 80E0 ldi r24,lo8(pm(uart_putchar))
206 0110 90E0 ldi r25,hi8(pm(uart_putchar))
207 0112 9F93 push r25
208 0114 8F93 push r24
209 0116 E091 0000 lds r30,_printf_P
210 011a F091 0000 lds r31,(_printf_P)+1
211 011e 0995 icall
212 0120 8DB7 in r24,__SP_L__
213 0122 9EB7 in r25,__SP_H__
214 0124 0696 adiw r24,6
215 0126 8DBF out __SP_L__,r24
216 0128 02C0 rjmp .L19
217 .L8:
218 012a 8093 0000 sts BattLowVoltageWarning,r24
219 .L19:
220 012e 1123 tst r17
221 0130 11F1 breq .L6
222 0132 8091 0000 lds r24,BattLowVoltageWarning
223 0136 6AE0 ldi r22,lo8(10)
224 0138 0E94 0000 call __udivmodqi4
225 013c 892F mov r24,r25
226 013e 9927 clr r25
227 0140 9F93 push r25
228 0142 8F93 push r24
229 0144 8091 0000 lds r24,BattLowVoltageWarning
230 0148 0E94 0000 call __udivmodqi4
231 014c 9927 clr r25
232 014e 9F93 push r25
233 0150 8F93 push r24
234 0152 80E0 ldi r24,lo8(__c.14)
235 0154 90E0 ldi r25,hi8(__c.14)
236 0156 9F93 push r25
237 0158 8F93 push r24
238 015a 80E0 ldi r24,lo8(pm(uart_putchar))
239 015c 90E0 ldi r25,hi8(pm(uart_putchar))
240 015e 9F93 push r25
241 0160 8F93 push r24
242 0162 E091 0000 lds r30,_printf_P
243 0166 F091 0000 lds r31,(_printf_P)+1
244 016a 0995 icall
245 016c 2DB7 in r18,__SP_L__
246 016e 3EB7 in r19,__SP_H__
247 0170 285F subi r18,lo8(-(8))
248 0172 3F4F sbci r19,hi8(-(8))
249 0174 2DBF out __SP_L__,r18
250 .L6:
251 /* epilogue: frame size=0 */
252 0176 DF91 pop r29
253 0178 CF91 pop r28
254 017a 1F91 pop r17
255 017c 0895 ret
256 /* epilogue end (size=4) */
257 /* function LipoDetection size 138 (131) */
259 .section .progmem.data
262 __c.0:
263 002d 0A0D 466F .string "\n\rFound BL-Ctrl: "
263 756E 6420
263 424C 2D43
263 7472 6C3A
263 2000
266 __c.1:
267 003f 2564 00 .string "%d"
270 __c.2:
271 0042 0A0D 0A0D .string "\n\r\n\r!! MISSING BL-CTRL: %d !!"
271 2121 204D
271 4953 5349
271 4E47 2042
271 4C2D 4354
274 __c.3:
275 0060 0A0D 3D3D .string "\n\r==================================="
275 3D3D 3D3D
275 3D3D 3D3D
275 3D3D 3D3D
275 3D3D 3D3D
278 __c.4:
279 0086 0A0D 4361 .string "\n\rCalibrating pressure sensor.."
279 6C69 6272
279 6174 696E
279 6720 7072
279 6573 7375
282 __c.5:
283 00a6 4F4B 0A0D .string "OK\n\r"
283 00
286 __c.6:
287 00ab 0A0D 466C .string "\n\rFlight-time %u min Total:%u min"
287 6967 6874
287 2D74 696D
287 6520 2575
287 206D 696E
290 __c.7:
291 00ce 0A0D 436F .string "\n\rControl: "
291 6E74 726F
291 6C3A 2000
294 __c.8:
295 00da 4865 6164 .string "HeadingHold"
295 696E 6748
295 6F6C 6400
298 __c.9:
299 00e6 4E6F 726D .string "Normal (ACC-Mode)"
299 616C 2028
299 4143 432D
299 4D6F 6465
299 2900
302 __c.10:
303 00f8 0A0D 3D3D .string "\n\r===================================\n\r"
303 3D3D 3D3D
303 3D3D 3D3D
303 3D3D 3D3D
303 3D3D 3D3D
304 .lcomm second.11,1
305 .text
306 .global main
308 main:
309 /* prologue: frame size=0 */
310 017e C0E0 ldi r28,lo8(__stack - 0)
311 0180 D0E0 ldi r29,hi8(__stack - 0)
312 0182 DEBF out __SP_H__,r29
313 0184 CDBF out __SP_L__,r28
314 /* prologue end (size=4) */
315 0186 8824 clr r8
316 0188 9924 clr r9
317 018a 14B8 out 36-0x20,__zero_reg__
318 018c 15B8 out 37-0x20,__zero_reg__
319 018e 07EE ldi r16,lo8(999)
320 0190 13E0 ldi r17,hi8(999)
321 .L26:
322 0192 0253 subi r16,lo8(-(-50))
323 0194 1040 sbci r17,hi8(-(-50))
324 0196 17FF sbrs r17,7
325 0198 FCCF rjmp .L26
326 019a 189B sbis 35-0x20,0
327 019c 06C0 rjmp .L27
328 019e 199B sbis 35-0x20,1
329 01a0 02C0 rjmp .L28
330 01a2 8DE0 ldi r24,lo8(13)
331 01a4 07C0 rjmp .L233
332 .L28:
333 01a6 8BE0 ldi r24,lo8(11)
334 01a8 05C0 rjmp .L233
335 .L27:
336 01aa 199B sbis 35-0x20,1
337 01ac 02C0 rjmp .L31
338 01ae 84E1 ldi r24,lo8(20)
339 01b0 01C0 rjmp .L233
340 .L31:
341 01b2 8AE0 ldi r24,lo8(10)
342 .L233:
343 01b4 8093 0000 sts PlatinenVersion,r24
344 01b8 81E8 ldi r24,lo8(-127)
345 01ba 87B9 out 39-0x20,r24
346 01bc 3E9A sbi 39-0x20,6
347 01be 8FEF ldi r24,lo8(-1)
348 01c0 88B9 out 40-0x20,r24
349 01c2 8BE1 ldi r24,lo8(27)
350 01c4 84B9 out 36-0x20,r24
351 01c6 81E0 ldi r24,lo8(1)
352 01c8 85B9 out 37-0x20,r24
353 01ca 8EE3 ldi r24,lo8(62)
354 01cc 8AB9 out 42-0x20,r24
355 01ce 87E4 ldi r24,lo8(71)
356 01d0 8BB9 out 43-0x20,r24
357 01d2 469A sbi 40-0x20,6
358 01d4 84B7 in r24,84-0x20
359 01d6 877F andi r24,lo8(-9)
360 01d8 84BF out 84-0x20,r24
361 01da 8091 6000 lds r24,96
362 01de 8861 ori r24,lo8(24)
363 01e0 8093 6000 sts 96,r24
364 01e4 1092 6000 sts 96,__zero_reg__
365 01e8 84EC ldi r24,lo8(2500)
366 01ea 99E0 ldi r25,hi8(2500)
367 01ec 9093 0000 sts (beeptime)+1,r25
368 01f0 8093 0000 sts beeptime,r24
369 01f4 1092 0000 sts (StickGier)+1,__zero_reg__
370 01f8 1092 0000 sts StickGier,__zero_reg__
371 01fc 1092 0000 sts (PPM_in+4)+1,__zero_reg__
372 0200 1092 0000 sts PPM_in+4,__zero_reg__
373 0204 1092 0000 sts (StickRoll)+1,__zero_reg__
374 0208 1092 0000 sts StickRoll,__zero_reg__
375 020c 1092 0000 sts (StickNick)+1,__zero_reg__
376 0210 1092 0000 sts StickNick,__zero_reg__
377 0214 2091 0000 lds r18,PlatinenVersion
378 0218 2431 cpi r18,lo8(20)
379 021a 28F0 brlo .L33
380 021c 84EC ldi r24,lo8(1220)
381 021e 94E0 ldi r25,hi8(1220)
382 0220 A0E0 ldi r26,hlo8(1220)
383 0222 B0E0 ldi r27,hhi8(1220)
384 0224 04C0 rjmp .L234
385 .L33:
386 0226 8BE0 ldi r24,lo8(1291)
387 0228 95E0 ldi r25,hi8(1291)
388 022a A0E0 ldi r26,hlo8(1291)
389 022c B0E0 ldi r27,hhi8(1291)
390 .L234:
391 022e 8093 0000 sts GIER_GRAD_FAKTOR,r24
392 0232 9093 0000 sts (GIER_GRAD_FAKTOR)+1,r25
393 0236 A093 0000 sts (GIER_GRAD_FAKTOR)+2,r26
394 023a B093 0000 sts (GIER_GRAD_FAKTOR)+3,r27
395 023e 2A30 cpi r18,lo8(10)
396 0240 11F0 breq .L36
397 0242 2431 cpi r18,lo8(20)
398 0244 10F0 brlo .L35
399 .L36:
400 0246 2898 cbi 37-0x20,0
401 0248 01C0 rjmp .L37
402 .L35:
403 024a 289A sbi 37-0x20,0
404 .L37:
405 024c 0E94 0000 call Timer_Init
406 0250 0E94 0000 call TIMER2_Init
407 0254 0E94 0000 call UART_Init
408 0258 0E94 0000 call rc_sum_init
409 025c 0E94 0000 call ADC_Init
410 0260 81E0 ldi r24,lo8(1)
411 0262 0E94 0000 call I2C_Init
412 0266 0E94 0000 call SPI_MasterInit
413 026a 0E94 0000 call LIBFC_Init
414 026e 8091 0000 lds r24,PlatinenVersion
415 0272 8C30 cpi r24,lo8(12)
416 0274 10F4 brsh .L38
417 0276 299A sbi 37-0x20,1
418 0278 01C0 rjmp .L39
419 .L38:
420 027a 2998 cbi 37-0x20,1
421 .L39:
422 /* #APP */
423 027c 7894 sei
424 /* #NOAPP */
425 027e 0E94 0000 call ParamSet_Init
426 0282 0E94 0000 call Capacity_Init
427 0286 8091 0000 lds r24,BLFlags
428 028a 8260 ori r24,lo8(2)
429 028c 8093 0000 sts BLFlags,r24
430 0290 1092 0000 sts motor_read,__zero_reg__
431 0294 0E94 0000 call SendMotorData
432 0298 84EF ldi r24,lo8(500)
433 029a 91E0 ldi r25,hi8(500)
434 029c 0E94 0000 call SetDelay
435 02a0 8C01 movw r16,r24
436 .L40:
437 02a2 8091 0000 lds r24,BLFlags
438 02a6 80FD sbrc r24,0
439 02a8 05C0 rjmp .L41
440 02aa C801 movw r24,r16
441 02ac 0E94 0000 call CheckDelay
442 02b0 8823 tst r24
443 02b2 B9F3 breq .L40
444 .L41:
445 02b4 80E0 ldi r24,lo8(__c.0)
446 02b6 90E0 ldi r25,hi8(__c.0)
447 02b8 9F93 push r25
448 02ba 8F93 push r24
449 02bc B0E0 ldi r27,lo8(pm(uart_putchar))
450 02be AB2E mov r10,r27
451 02c0 B0E0 ldi r27,hi8(pm(uart_putchar))
452 02c2 BB2E mov r11,r27
453 02c4 BF92 push r11
454 02c6 AF92 push r10
455 02c8 E091 0000 lds r30,_printf_P
456 02cc F091 0000 lds r31,(_printf_P)+1
457 02d0 0995 icall
458 02d2 80EA ldi r24,lo8(4000)
459 02d4 9FE0 ldi r25,hi8(4000)
460 02d6 0E94 0000 call SetDelay
461 02da 8C01 movw r16,r24
462 02dc C0E0 ldi r28,lo8(0)
463 02de D0E0 ldi r29,hi8(0)
464 02e0 0F90 pop __tmp_reg__
465 02e2 0F90 pop __tmp_reg__
466 02e4 0F90 pop __tmp_reg__
467 02e6 0F90 pop __tmp_reg__
468 02e8 A0E0 ldi r26,lo8(Motor+3)
469 02ea EA2E mov r14,r26
470 02ec A0E0 ldi r26,hi8(Motor+3)
471 02ee FA2E mov r15,r26
472 02f0 F0E0 ldi r31,lo8(Mixer+13)
473 02f2 CF2E mov r12,r31
474 02f4 F0E0 ldi r31,hi8(Mixer+13)
475 02f6 DF2E mov r13,r31
476 .L57:
477 02f8 0E94 0000 call SendMotorData
478 .L46:
479 02fc 8091 0000 lds r24,BLFlags
480 0300 80FD sbrc r24,0
481 0302 05C0 rjmp .L47
482 0304 C801 movw r24,r16
483 0306 0E94 0000 call CheckDelay
484 030a 8823 tst r24
485 030c B9F3 breq .L46
486 .L47:
487 030e F601 movw r30,r12
488 0310 8081 ld r24,Z
489 0312 1816 cp __zero_reg__,r24
490 0314 ACF4 brge .L49
491 0316 0BC0 rjmp .L238
492 .L55:
493 0318 0E94 0000 call SendMotorData
494 .L52:
495 031c 8091 0000 lds r24,BLFlags
496 0320 80FD sbrc r24,0
497 0322 05C0 rjmp .L238
498 0324 C801 movw r24,r16
499 0326 0E94 0000 call CheckDelay
500 032a 8823 tst r24
501 032c B9F3 breq .L52
502 .L238:
503 032e C801 movw r24,r16
504 0330 0E94 0000 call CheckDelay
505 0334 8823 tst r24
506 0336 21F4 brne .L49
507 0338 F701 movw r30,r14
508 033a 8081 ld r24,Z
509 033c 8823 tst r24
510 033e 64F7 brge .L55
511 .L49:
512 0340 F701 movw r30,r14
513 0342 8081 ld r24,Z
514 0344 87FF sbrs r24,7
515 0346 18C0 rjmp .L45
516 0348 2196 adiw r28,1
517 034a DF93 push r29
518 034c CF93 push r28
519 034e 2197 sbiw r28,1
520 0350 80E0 ldi r24,lo8(__c.1)
521 0352 90E0 ldi r25,hi8(__c.1)
522 0354 9F93 push r25
523 0356 8F93 push r24
524 0358 BF92 push r11
525 035a AF92 push r10
526 035c E091 0000 lds r30,_printf_P
527 0360 F091 0000 lds r31,(_printf_P)+1
528 0364 0995 icall
529 0366 8091 0000 lds r24,FoundMotors
530 036a 8F5F subi r24,lo8(-(1))
531 036c 8093 0000 sts FoundMotors,r24
532 0370 8DB7 in r24,__SP_L__
533 0372 9EB7 in r25,__SP_H__
534 0374 0696 adiw r24,6
535 0376 8DBF out __SP_L__,r24
536 .L45:
537 0378 2196 adiw r28,1
538 037a E4E0 ldi r30,lo8(4)
539 037c F0E0 ldi r31,hi8(4)
540 037e CE0E add r12,r30
541 0380 DF1E adc r13,r31
542 0382 88E0 ldi r24,lo8(8)
543 0384 90E0 ldi r25,hi8(8)
544 0386 E80E add r14,r24
545 0388 F91E adc r15,r25
546 038a CC30 cpi r28,12
547 038c D105 cpc r29,__zero_reg__
548 038e 08F4 brsh .+2
549 0390 B3CF rjmp .L57
550 0392 C0E0 ldi r28,lo8(0)
551 0394 D0E0 ldi r29,hi8(0)
552 0396 00E0 ldi r16,lo8(Motor)
553 0398 10E0 ldi r17,hi8(Motor)
554 039a E0E0 ldi r30,lo8(Mixer+13)
555 039c EE2E mov r14,r30
556 039e E0E0 ldi r30,hi8(Mixer+13)
557 03a0 FE2E mov r15,r30
558 .L62:
559 03a2 F801 movw r30,r16
560 03a4 8381 ldd r24,Z+3
561 03a6 87FD sbrc r24,7
562 03a8 1CC0 rjmp .L61
563 03aa F701 movw r30,r14
564 03ac 8081 ld r24,Z
565 03ae 1816 cp __zero_reg__,r24
566 03b0 C4F4 brge .L61
567 03b2 2196 adiw r28,1
568 03b4 DF93 push r29
569 03b6 CF93 push r28
570 03b8 2197 sbiw r28,1
571 03ba 80E0 ldi r24,lo8(__c.2)
572 03bc 90E0 ldi r25,hi8(__c.2)
573 03be 9F93 push r25
574 03c0 8F93 push r24
575 03c2 80E0 ldi r24,lo8(pm(uart_putchar))
576 03c4 90E0 ldi r25,hi8(pm(uart_putchar))
577 03c6 9F93 push r25
578 03c8 8F93 push r24
579 03ca E091 0000 lds r30,_printf_P
580 03ce F091 0000 lds r31,(_printf_P)+1
581 03d2 0995 icall
582 03d4 82E0 ldi r24,lo8(2)
583 03d6 8093 0000 sts ServoActive,r24
584 03da 8DB7 in r24,__SP_L__
585 03dc 9EB7 in r25,__SP_H__
586 03de 0696 adiw r24,6
587 03e0 8DBF out __SP_L__,r24
588 .L61:
589 03e2 F801 movw r30,r16
590 03e4 8381 ldd r24,Z+3
591 03e6 8078 andi r24,lo8(-128)
592 03e8 8383 std Z+3,r24
593 03ea 2196 adiw r28,1
594 03ec 84E0 ldi r24,lo8(4)
595 03ee 90E0 ldi r25,hi8(4)
596 03f0 E80E add r14,r24
597 03f2 F91E adc r15,r25
598 03f4 085F subi r16,lo8(-(8))
599 03f6 1F4F sbci r17,hi8(-(8))
600 03f8 CC30 cpi r28,12
601 03fa D105 cpc r29,__zero_reg__
602 03fc 90F2 brlo .L62
603 03fe 80E0 ldi r24,lo8(__c.3)
604 0400 90E0 ldi r25,hi8(__c.3)
605 0402 9F93 push r25
606 0404 8F93 push r24
607 0406 C0E0 ldi r28,lo8(pm(uart_putchar))
608 0408 D0E0 ldi r29,hi8(pm(uart_putchar))
609 040a DF93 push r29
610 040c CF93 push r28
611 040e E091 0000 lds r30,_printf_P
612 0412 F091 0000 lds r31,(_printf_P)+1
613 0416 0995 icall
614 0418 9091 0000 lds r25,RequiredMotors
615 041c 8091 0000 lds r24,FoundMotors
616 0420 0F90 pop __tmp_reg__
617 0422 0F90 pop __tmp_reg__
618 0424 0F90 pop __tmp_reg__
619 0426 0F90 pop __tmp_reg__
620 0428 9817 cp r25,r24
621 042a 28F4 brsh .L63
622 042c 8091 0000 lds r24,VersionInfo+6
623 0430 8061 ori r24,lo8(16)
624 0432 8093 0000 sts VersionInfo+6,r24
625 .L63:
626 0436 80E0 ldi r24,lo8(__c.4)
627 0438 90E0 ldi r25,hi8(__c.4)
628 043a 9F93 push r25
629 043c 8F93 push r24
630 043e DF93 push r29
631 0440 CF93 push r28
632 0442 E091 0000 lds r30,_printf_P
633 0446 F091 0000 lds r31,(_printf_P)+1
634 044a 0995 icall
635 044c 88EE ldi r24,lo8(1000)
636 044e 93E0 ldi r25,hi8(1000)
637 0450 0E94 0000 call SetDelay
638 0454 8C01 movw r16,r24
639 0456 0E94 0000 call SucheLuftruckOffset
640 045a 0F90 pop __tmp_reg__
641 045c 0F90 pop __tmp_reg__
642 045e 0F90 pop __tmp_reg__
643 0460 0F90 pop __tmp_reg__
644 .L64:
645 0462 C801 movw r24,r16
646 0464 0E94 0000 call CheckDelay
647 0468 8823 tst r24
648 046a D9F3 breq .L64
649 046c 80E0 ldi r24,lo8(__c.5)
650 046e 90E0 ldi r25,hi8(__c.5)
651 0470 9F93 push r25
652 0472 8F93 push r24
653 0474 DF93 push r29
654 0476 CF93 push r28
655 0478 E091 0000 lds r30,_printf_P
656 047c F091 0000 lds r31,(_printf_P)+1
657 0480 0995 icall
658 0482 80E0 ldi r24,lo8(0)
659 0484 0E94 0000 call SetNeutral
660 0488 8091 0000 lds r24,PlatinenVersion
661 048c 0F90 pop __tmp_reg__
662 048e 0F90 pop __tmp_reg__
663 0490 0F90 pop __tmp_reg__
664 0492 0F90 pop __tmp_reg__
665 0494 8A30 cpi r24,lo8(10)
666 0496 11F0 breq .L68
667 0498 8431 cpi r24,lo8(20)
668 049a 10F0 brlo .L67
669 .L68:
670 049c 2898 cbi 37-0x20,0
671 049e 01C0 rjmp .L69
672 .L67:
673 04a0 289A sbi 37-0x20,0
674 .L69:
675 04a2 80ED ldi r24,lo8(2000)
676 04a4 97E0 ldi r25,hi8(2000)
677 04a6 9093 0000 sts (beeptime)+1,r25
678 04aa 8093 0000 sts beeptime,r24
679 04ae 85E5 ldi r24,lo8(85)
680 04b0 8093 0000 sts ExternControl,r24
681 04b4 8EE0 ldi r24,lo8(14)
682 04b6 90E0 ldi r25,hi8(14)
683 04b8 0E94 0000 call GetParamByte
684 04bc 9927 clr r25
685 04be 182F mov r17,r24
686 04c0 0027 clr r16
687 04c2 8FE0 ldi r24,lo8(15)
688 04c4 90E0 ldi r25,hi8(15)
689 04c6 0E94 0000 call GetParamByte
690 04ca 080F add r16,r24
691 04cc 111D adc r17,__zero_reg__
692 04ce 1093 0000 sts (FlugMinuten)+1,r17
693 04d2 0093 0000 sts FlugMinuten,r16
694 04d6 8AE0 ldi r24,lo8(10)
695 04d8 90E0 ldi r25,hi8(10)
696 04da 0E94 0000 call GetParamByte
697 04de 9927 clr r25
698 04e0 182F mov r17,r24
699 04e2 0027 clr r16
700 04e4 8BE0 ldi r24,lo8(11)
701 04e6 90E0 ldi r25,hi8(11)
702 04e8 0E94 0000 call GetParamByte
703 04ec 080F add r16,r24
704 04ee 111D adc r17,__zero_reg__
705 04f0 1093 0000 sts (FlugMinutenGesamt)+1,r17
706 04f4 0093 0000 sts FlugMinutenGesamt,r16
707 04f8 0F5F subi r16,lo8(-1)
708 04fa 1F4F sbci r17,hi8(-1)
709 04fc 39F0 breq .L71
710 04fe 8091 0000 lds r24,FlugMinuten
711 0502 9091 0000 lds r25,(FlugMinuten)+1
712 0506 8F5F subi r24,lo8(-1)
713 0508 9F4F sbci r25,hi8(-1)
714 050a 41F4 brne .L70
715 .L71:
716 050c 1092 0000 sts (FlugMinuten)+1,__zero_reg__
717 0510 1092 0000 sts FlugMinuten,__zero_reg__
718 0514 1092 0000 sts (FlugMinutenGesamt)+1,__zero_reg__
719 0518 1092 0000 sts FlugMinutenGesamt,__zero_reg__
720 .L70:
721 051c 8091 0000 lds r24,FlugMinutenGesamt
722 0520 9091 0000 lds r25,(FlugMinutenGesamt)+1
723 0524 9F93 push r25
724 0526 8F93 push r24
725 0528 8091 0000 lds r24,FlugMinuten
726 052c 9091 0000 lds r25,(FlugMinuten)+1
727 0530 9F93 push r25
728 0532 8F93 push r24
729 0534 80E0 ldi r24,lo8(__c.6)
730 0536 90E0 ldi r25,hi8(__c.6)
731 0538 9F93 push r25
732 053a 8F93 push r24
733 053c DF93 push r29
734 053e CF93 push r28
735 0540 E091 0000 lds r30,_printf_P
736 0544 F091 0000 lds r31,(_printf_P)+1
737 0548 0995 icall
738 054a 8DB7 in r24,__SP_L__
739 054c 9EB7 in r25,__SP_H__
740 054e 0896 adiw r24,8
741 0550 8DBF out __SP_L__,r24
742 0552 80E0 ldi r24,lo8(__c.7)
743 0554 90E0 ldi r25,hi8(__c.7)
744 0556 9F93 push r25
745 0558 8F93 push r24
746 055a DF93 push r29
747 055c CF93 push r28
748 055e E091 0000 lds r30,_printf_P
749 0562 F091 0000 lds r31,(_printf_P)+1
750 0566 0995 icall
751 0568 8091 0000 lds r24,EE_Parameter+13
752 056c 0F90 pop __tmp_reg__
753 056e 0F90 pop __tmp_reg__
754 0570 0F90 pop __tmp_reg__
755 0572 0F90 pop __tmp_reg__
756 0574 E091 0000 lds r30,_printf_P
757 0578 F091 0000 lds r31,(_printf_P)+1
758 057c 82FF sbrs r24,2
759 057e 07C0 rjmp .L72
760 0580 80E0 ldi r24,lo8(__c.8)
761 0582 90E0 ldi r25,hi8(__c.8)
762 0584 9F93 push r25
763 0586 8F93 push r24
764 0588 DF93 push r29
765 058a CF93 push r28
766 058c 08C0 rjmp .L235
767 .L72:
768 058e 80E0 ldi r24,lo8(__c.9)
769 0590 90E0 ldi r25,hi8(__c.9)
770 0592 9F93 push r25
771 0594 8F93 push r24
772 0596 80E0 ldi r24,lo8(pm(uart_putchar))
773 0598 90E0 ldi r25,hi8(pm(uart_putchar))
774 059a 9F93 push r25
775 059c 8F93 push r24
776 .L235:
777 059e 0995 icall
778 05a0 0F90 pop __tmp_reg__
779 05a2 0F90 pop __tmp_reg__
780 05a4 0F90 pop __tmp_reg__
781 05a6 0F90 pop __tmp_reg__
782 05a8 0E94 0000 call LcdClear
783 05ac 88E8 ldi r24,lo8(5000)
784 05ae 93E1 ldi r25,hi8(5000)
785 05b0 9093 0000 sts (I2CTimeout)+1,r25
786 05b4 8093 0000 sts I2CTimeout,r24
787 05b8 81E0 ldi r24,lo8(1)
788 05ba 8093 0000 sts WinkelOut+7,r24
789 05be 0E94 0000 call LipoDetection
790 05c2 8091 0000 lds r24,EE_Parameter+39
791 05c6 0E94 0000 call LIBFC_ReceiverInit
792 05ca 80E0 ldi r24,lo8(__c.10)
793 05cc 90E0 ldi r25,hi8(__c.10)
794 05ce 9F93 push r25
795 05d0 8F93 push r24
796 05d2 DF93 push r29
797 05d4 CF93 push r28
798 05d6 E091 0000 lds r30,_printf_P
799 05da F091 0000 lds r31,(_printf_P)+1
800 05de 0995 icall
801 05e0 80ED ldi r24,lo8(2000)
802 05e2 97E0 ldi r25,hi8(2000)
803 05e4 0E94 0000 call SetDelay
804 05e8 8C01 movw r16,r24
805 05ea 8AEF ldi r24,lo8(250)
806 05ec 90E0 ldi r25,hi8(250)
807 05ee 0E94 0000 call SetDelay
808 05f2 EC01 movw r28,r24
809 05f4 83E0 ldi r24,lo8(3)
810 05f6 8093 0000 sts DebugOut,r24
811 05fa 0F90 pop __tmp_reg__
812 05fc 0F90 pop __tmp_reg__
813 05fe 0F90 pop __tmp_reg__
814 0600 0F90 pop __tmp_reg__
815 .L239:
816 0602 8091 0000 lds r24,JetiUpdateModeActive
817 0606 8111 cpse r24,__zero_reg__
818 .L77:
819 0608 FFCF rjmp .L77
820 .L76:
821 060a CE01 movw r24,r28
822 060c 0E94 0000 call CheckDelay
823 0610 8823 tst r24
824 0612 39F0 breq .L79
825 0614 84E6 ldi r24,lo8(100)
826 0616 90E0 ldi r25,hi8(100)
827 0618 0E94 0000 call SetDelay
828 061c EC01 movw r28,r24
829 061e 0E94 0000 call LIBFC_Polling
830 .L79:
831 0622 8091 0000 lds r24,UpdateMotor
832 0626 8823 tst r24
833 0628 09F4 brne .+2
834 062a E0C1 rjmp .L80
835 062c 8091 0000 lds r24,AdReady
836 0630 8823 tst r24
837 0632 09F4 brne .+2
838 0634 DBC1 rjmp .L80
839 0636 1092 0000 sts UpdateMotor,__zero_reg__
840 063a 8091 0000 lds r24,WinkelOut+6
841 063e 8823 tst r24
842 0640 19F0 breq .L81
843 0642 0E94 0000 call CalMk3Mag
844 0646 02C0 rjmp .L82
845 .L81:
846 0648 0E94 0000 call MotorRegler
847 .L82:
848 064c 0E94 0000 call SendMotorData
849 0650 2091 0000 lds r18,PlatinenVersion
850 0654 2A30 cpi r18,lo8(10)
851 0656 11F0 breq .L84
852 0658 2431 cpi r18,lo8(20)
853 065a 10F0 brlo .L83
854 .L84:
855 065c 2898 cbi 37-0x20,0
856 065e 01C0 rjmp .L85
857 .L83:
858 0660 289A sbi 37-0x20,0
859 .L85:
860 0662 8091 0000 lds r24,SenderOkay
861 0666 9091 0000 lds r25,VersionInfo+6
862 066a 8823 tst r24
863 066c 39F0 breq .L86
864 066e 8091 0000 lds r24,SenderOkay
865 0672 8150 subi r24,lo8(-(-1))
866 0674 8093 0000 sts SenderOkay,r24
867 0678 977F andi r25,lo8(-9)
868 067a 0AC0 rjmp .L236
869 .L86:
870 067c 8091 6F00 lds r24,111
871 0680 8062 ori r24,lo8(32)
872 0682 8093 6F00 sts 111,r24
873 0686 1092 0000 sts (PPM_in)+1,__zero_reg__
874 068a 1092 0000 sts PPM_in,__zero_reg__
875 068e 9860 ori r25,lo8(8)
876 .L236:
877 0690 9093 0000 sts VersionInfo+6,r25
878 0694 8091 0000 lds r24,I2CTimeout
879 0698 9091 0000 lds r25,(I2CTimeout)+1
880 069c 0197 sbiw r24,1
881 069e 9093 0000 sts (I2CTimeout)+1,r25
882 06a2 8093 0000 sts I2CTimeout,r24
883 06a6 8091 0000 lds r24,I2CTimeout
884 06aa 9091 0000 lds r25,(I2CTimeout)+1
885 06ae 892B or r24,r25
886 06b0 21F0 breq .L89
887 06b2 8091 0000 lds r24,MissingMotor
888 06b6 8823 tst r24
889 06b8 C9F1 breq .L88
890 .L89:
891 06ba 8091 0000 lds r24,I2CTimeout
892 06be 9091 0000 lds r25,(I2CTimeout)+1
893 06c2 892B or r24,r25
894 06c4 D9F4 brne .L90
895 06c6 0E94 0000 call I2C_Reset
896 06ca 85E0 ldi r24,lo8(5)
897 06cc 90E0 ldi r25,hi8(5)
898 06ce 9093 0000 sts (I2CTimeout)+1,r25
899 06d2 8093 0000 sts I2CTimeout,r24
900 06d6 8091 0000 lds r24,DebugOut+58
901 06da 9091 0000 lds r25,(DebugOut+58)+1
902 06de 0196 adiw r24,1
903 06e0 9093 0000 sts (DebugOut+58)+1,r25
904 06e4 8093 0000 sts DebugOut+58,r24
905 06e8 8091 0000 lds r24,VersionInfo+6
906 06ec 8160 ori r24,lo8(1)
907 06ee 8093 0000 sts VersionInfo+6,r24
908 06f2 8091 0000 lds r24,DebugOut+1
909 06f6 8260 ori r24,lo8(2)
910 06f8 8093 0000 sts DebugOut+1,r24
911 .L90:
912 06fc 8091 0000 lds r24,BeepMuster
913 0700 9091 0000 lds r25,(BeepMuster)+1
914 0704 8F5F subi r24,lo8(-1)
915 0706 9F4F sbci r25,hi8(-1)
916 0708 19F5 brne .L92
917 070a 8091 0000 lds r24,MotorenEin
918 070e 8823 tst r24
919 0710 F9F0 breq .L92
920 0712 80E1 ldi r24,lo8(10000)
921 0714 97E2 ldi r25,hi8(10000)
922 0716 9093 0000 sts (beeptime)+1,r25
923 071a 8093 0000 sts beeptime,r24
924 071e 80E8 ldi r24,lo8(128)
925 0720 90E0 ldi r25,hi8(128)
926 0722 9093 0000 sts (BeepMuster)+1,r25
927 0726 8093 0000 sts BeepMuster,r24
928 072a 12C0 rjmp .L92
929 .L88:
930 072c 2A30 cpi r18,lo8(10)
931 072e 11F0 breq .L94
932 0730 2431 cpi r18,lo8(20)
933 0732 10F0 brlo .L93
934 .L94:
935 0734 2898 cbi 37-0x20,0
936 0736 01C0 rjmp .L95
937 .L93:
938 0738 289A sbi 37-0x20,0
939 .L95:
940 073a 8091 0000 lds r24,beeptime
941 073e 9091 0000 lds r25,(beeptime)+1
942 0742 892B or r24,r25
943 0744 29F4 brne .L92
944 0746 8091 0000 lds r24,VersionInfo+6
945 074a 8E7F andi r24,lo8(-2)
946 074c 8093 0000 sts VersionInfo+6,r24
947 .L92:
948 0750 8091 0000 lds r24,UpdateMotor
949 0754 8823 tst r24
950 0756 09F0 breq .+2
951 0758 49C1 rjmp .L80
952 075a 8091 0000 lds r24,CalculateServoSignals
953 075e 8823 tst r24
954 0760 11F0 breq .L98
955 0762 0E94 0000 call CalculateServo
956 .L98:
957 0766 0E94 0000 call DatenUebertragung
958 076a 0E94 0000 call BearbeiteRxDaten
959 076e C801 movw r24,r16
960 0770 0E94 0000 call CheckDelay
961 0774 8823 tst r24
962 0776 09F4 brne .+2
963 0778 35C1 rjmp .L99
964 077a 0C5E subi r16,lo8(-(20))
965 077c 1F4F sbci r17,hi8(-(20))
966 077e 8091 0000 lds r24,MissingMotor
967 0782 9091 0000 lds r25,VersionInfo+6
968 0786 8823 tst r24
969 0788 39F0 breq .L100
970 078a 9260 ori r25,lo8(2)
971 078c 9093 0000 sts VersionInfo+6,r25
972 0790 8091 0000 lds r24,DebugOut+1
973 0794 8260 ori r24,lo8(2)
974 0796 0CC0 rjmp .L237
975 .L100:
976 0798 9D7F andi r25,lo8(-3)
977 079a 9093 0000 sts VersionInfo+6,r25
978 079e 8091 0000 lds r24,I2CTimeout
979 07a2 9091 0000 lds r25,(I2CTimeout)+1
980 07a6 0797 sbiw r24,7
981 07a8 28F0 brlo .L101
982 07aa 8091 0000 lds r24,DebugOut+1
983 07ae 8D7F andi r24,lo8(-3)
984 .L237:
985 07b0 8093 0000 sts DebugOut+1,r24
986 .L101:
987 07b4 8091 0000 lds r24,I2CTimeout
988 07b8 9091 0000 lds r25,(I2CTimeout)+1
989 07bc 0797 sbiw r24,7
990 07be 28F0 brlo .L103
991 07c0 8091 0000 lds r24,VersionInfo+6
992 07c4 8E7F andi r24,lo8(-2)
993 07c6 8093 0000 sts VersionInfo+6,r24
994 .L103:
995 07ca 8091 0000 lds r24,PcZugriff
996 07ce 8823 tst r24
997 07d0 21F0 breq .L104
998 07d2 8150 subi r24,lo8(-(-1))
999 07d4 8093 0000 sts PcZugriff,r24
1000 07d8 25C0 rjmp .L105
1001 .L104:
1002 07da 8093 0000 sts ExternControl+10,r24
1003 07de 1092 0000 sts (ExternStickNick)+1,__zero_reg__
1004 07e2 1092 0000 sts ExternStickNick,__zero_reg__
1005 07e6 1092 0000 sts (ExternStickRoll)+1,__zero_reg__
1006 07ea 1092 0000 sts ExternStickRoll,__zero_reg__
1007 07ee 1092 0000 sts (ExternStickGier)+1,__zero_reg__
1008 07f2 1092 0000 sts ExternStickGier,__zero_reg__
1009 07f6 8091 0000 lds r24,BeepMuster
1010 07fa 9091 0000 lds r25,(BeepMuster)+1
1011 07fe 8F5F subi r24,lo8(-1)
1012 0800 9F4F sbci r25,hi8(-1)
1013 0802 81F4 brne .L105
1014 0804 8091 0000 lds r24,SenderOkay
1015 0808 8823 tst r24
1016 080a 61F4 brne .L105
1017 080c 88E9 ldi r24,lo8(15000)
1018 080e 9AE3 ldi r25,hi8(15000)
1019 0810 9093 0000 sts (beeptime)+1,r25
1020 0814 8093 0000 sts beeptime,r24
1021 0818 80E0 ldi r24,lo8(3072)
1022 081a 9CE0 ldi r25,hi8(3072)
1023 081c 9093 0000 sts (BeepMuster)+1,r25
1024 0820 8093 0000 sts BeepMuster,r24
1025 .L105:
1026 0824 8091 0000 lds r24,NaviDataOkay
1027 0828 893C cpi r24,lo8(-55)
1028 082a 48F0 brlo .L107
1029 082c 8150 subi r24,lo8(-(-1))
1030 082e 8093 0000 sts NaviDataOkay,r24
1031 0832 8091 0000 lds r24,VersionInfo+6
1032 0836 8B7F andi r24,lo8(-5)
1033 0838 8093 0000 sts VersionInfo+6,r24
1034 083c 30C0 rjmp .L108
1035 .L107:
1036 083e 8091 0000 lds r24,NC_Version+3
1037 0842 8823 tst r24
1038 0844 E1F0 breq .L109
1039 0846 8091 0000 lds r24,VersionInfo+6
1040 084a 8460 ori r24,lo8(4)
1041 084c 8093 0000 sts VersionInfo+6,r24
1042 0850 8091 0000 lds r24,BeepMuster
1043 0854 9091 0000 lds r25,(BeepMuster)+1
1044 0858 8F5F subi r24,lo8(-1)
1045 085a 9F4F sbci r25,hi8(-1)
1046 085c 81F4 brne .L109
1047 085e 8091 0000 lds r24,MotorenEin
1048 0862 8823 tst r24
1049 0864 61F0 breq .L109
1050 0866 88E9 ldi r24,lo8(15000)
1051 0868 9AE3 ldi r25,hi8(15000)
1052 086a 9093 0000 sts (beeptime)+1,r25
1053 086e 8093 0000 sts beeptime,r24
1054 0872 80E0 ldi r24,lo8(-22528)
1055 0874 98EA ldi r25,hi8(-22528)
1056 0876 9093 0000 sts (BeepMuster)+1,r25
1057 087a 8093 0000 sts BeepMuster,r24
1058 .L109:
1059 087e 1092 0000 sts (GPS_Nick)+1,__zero_reg__
1060 0882 1092 0000 sts GPS_Nick,__zero_reg__
1061 0886 1092 0000 sts (GPS_Roll)+1,__zero_reg__
1062 088a 1092 0000 sts GPS_Roll,__zero_reg__
1063 088e 8FEF ldi r24,lo8(-1)
1064 0890 9FEF ldi r25,hi8(-1)
1065 0892 9093 0000 sts (FromNaviCtrl+7)+1,r25
1066 0896 8093 0000 sts FromNaviCtrl+7,r24
1067 089a 1092 0000 sts NaviDataOkay,__zero_reg__
1068 .L108:
1069 089e 8091 0000 lds r24,BattLowVoltageWarning
1070 08a2 282F mov r18,r24
1071 08a4 3327 clr r19
1072 08a6 8091 0000 lds r24,UBat
1073 08aa 9091 0000 lds r25,(UBat)+1
1074 08ae 8217 cp r24,r18
1075 08b0 9307 cpc r25,r19
1076 08b2 5CF0 brlt .L112
1077 08b4 8091 0000 lds r24,Capacity+6
1078 08b8 9091 0000 lds r25,(Capacity+6)+1
1079 08bc 1816 cp __zero_reg__,r24
1080 08be 1906 cpc __zero_reg__,r25
1081 08c0 ECF0 brlt .L111
1082 08c2 8091 0000 lds r24,EE_Parameter+41
1083 08c6 8823 tst r24
1084 08c8 C9F0 breq .L111
1085 .L112:
1086 08ca 8091 0000 lds r24,FC_StatusFlags
1087 08ce 8062 ori r24,lo8(32)
1088 08d0 8093 0000 sts FC_StatusFlags,r24
1089 08d4 8091 0000 lds r24,BeepMuster
1090 08d8 9091 0000 lds r25,(BeepMuster)+1
1091 08dc 8F5F subi r24,lo8(-1)
1092 08de 9F4F sbci r25,hi8(-1)
1093 08e0 C1F4 brne .L114
1094 08e2 80E7 ldi r24,lo8(6000)
1095 08e4 97E1 ldi r25,hi8(6000)
1096 08e6 9093 0000 sts (beeptime)+1,r25
1097 08ea 8093 0000 sts beeptime,r24
1098 08ee 80E0 ldi r24,lo8(768)
1099 08f0 93E0 ldi r25,hi8(768)
1100 08f2 9093 0000 sts (BeepMuster)+1,r25
1101 08f6 8093 0000 sts BeepMuster,r24
1102 08fa 0BC0 rjmp .L114
1103 .L111:
1104 08fc 8091 0000 lds r24,beeptime
1105 0900 9091 0000 lds r25,(beeptime)+1
1106 0904 892B or r24,r25
1107 0906 29F4 brne .L114
1108 0908 8091 0000 lds r24,FC_StatusFlags
1109 090c 8F7D andi r24,lo8(-33)
1110 090e 8093 0000 sts FC_StatusFlags,r24
1111 .L114:
1112 0912 0E94 0000 call SPI_StartTransmitPacket
1113 0916 84E0 ldi r24,lo8(4)
1114 0918 8093 0000 sts SendSPI,r24
1115 091c 8091 0000 lds r24,MotorenEin
1116 0920 8823 tst r24
1117 0922 29F4 brne .L116
1118 0924 5AEA ldi r21,lo8(1450)
1119 0926 852E mov r8,r21
1120 0928 55E0 ldi r21,hi8(1450)
1121 092a 952E mov r9,r21
1122 092c 12C0 rjmp .L117
1123 .L116:
1124 092e 8091 0000 lds r24,second.11
1125 0932 8F5F subi r24,lo8(-(1))
1126 0934 8093 0000 sts second.11,r24
1127 0938 8133 cpi r24,lo8(49)
1128 093a 59F4 brne .L117
1129 093c 1092 0000 sts second.11,__zero_reg__
1130 0940 8091 0000 lds r24,FlugSekunden
1131 0944 9091 0000 lds r25,(FlugSekunden)+1
1132 0948 0196 adiw r24,1
1133 094a 9093 0000 sts (FlugSekunden)+1,r25
1134 094e 8093 0000 sts FlugSekunden,r24
1135 .L117:
1136 0952 0894 sec
1137 0954 811C adc r8,__zero_reg__
1138 0956 911C adc r9,__zero_reg__
1139 0958 F2E7 ldi r31,lo8(2930)
1140 095a 8F16 cp r8,r31
1141 095c FBE0 ldi r31,hi8(2930)
1142 095e 9F06 cpc r9,r31
1143 0960 09F0 breq .+2
1144 0962 40C0 rjmp .L99
1145 0964 8824 clr r8
1146 0966 9924 clr r9
1147 0968 2091 0000 lds r18,FlugMinuten
1148 096c 3091 0000 lds r19,(FlugMinuten)+1
1149 0970 2F5F subi r18,lo8(-(1))
1150 0972 3F4F sbci r19,hi8(-(1))
1151 0974 3093 0000 sts (FlugMinuten)+1,r19
1152 0978 2093 0000 sts FlugMinuten,r18
1153 097c 8091 0000 lds r24,FlugMinutenGesamt
1154 0980 9091 0000 lds r25,(FlugMinutenGesamt)+1
1155 0984 0196 adiw r24,1
1156 0986 9093 0000 sts (FlugMinutenGesamt)+1,r25
1157 098a 8093 0000 sts FlugMinutenGesamt,r24
1158 098e 832F mov r24,r19
1159 0990 9927 clr r25
1160 0992 682F mov r22,r24
1161 0994 8EE0 ldi r24,lo8(14)
1162 0996 90E0 ldi r25,hi8(14)
1163 0998 0E94 0000 call SetParamByte
1164 099c 8091 0000 lds r24,FlugMinuten
1165 09a0 9091 0000 lds r25,(FlugMinuten)+1
1166 09a4 9070 andi r25,hi8(255)
1167 09a6 682F mov r22,r24
1168 09a8 8FE0 ldi r24,lo8(15)
1169 09aa 90E0 ldi r25,hi8(15)
1170 09ac 0E94 0000 call SetParamByte
1171 09b0 8091 0000 lds r24,FlugMinutenGesamt
1172 09b4 9091 0000 lds r25,(FlugMinutenGesamt)+1
1173 09b8 892F mov r24,r25
1174 09ba 9927 clr r25
1175 09bc 682F mov r22,r24
1176 09be 8AE0 ldi r24,lo8(10)
1177 09c0 90E0 ldi r25,hi8(10)
1178 09c2 0E94 0000 call SetParamByte
1179 09c6 8091 0000 lds r24,FlugMinutenGesamt
1180 09ca 9091 0000 lds r25,(FlugMinutenGesamt)+1
1181 09ce 9070 andi r25,hi8(255)
1182 09d0 682F mov r22,r24
1183 09d2 8BE0 ldi r24,lo8(11)
1184 09d4 90E0 ldi r25,hi8(11)
1185 09d6 0E94 0000 call SetParamByte
1186 09da 84E1 ldi r24,lo8(20)
1187 09dc 90E0 ldi r25,hi8(20)
1188 09de 0E94 0000 call SetDelay
1189 09e2 8C01 movw r16,r24
1190 .L99:
1191 09e4 0E94 0000 call LED_Update
1192 09e8 0E94 0000 call Capacity_Update
1193 .L80:
1194 09ec 8091 0000 lds r24,SendSPI
1195 09f0 8823 tst r24
1196 09f2 09F0 breq .+2
1197 09f4 06CE rjmp .L239
1198 09f6 0E94 0000 call SPI_TransmitByte
1199 09fa 03CE rjmp .L239
1200 /* epilogue: frame size=0 */
1201 /* epilogue: noreturn */
1202 /* epilogue end (size=0) */
1203 /* function main size 1100 (1096) */
1205 .comm _printf_P,2,1
1206 /* File "main.c": code 1293 = 0x050d (1281), prologues 7, epilogues 5 */
DEFINED SYMBOLS
*ABS*:00000000 main.c
C:\Users\Thomas\AppData\Local\Temp/cc42aaaa.s:3 *ABS*:0000003f __SREG__
C:\Users\Thomas\AppData\Local\Temp/cc42aaaa.s:4 *ABS*:0000003e __SP_H__
C:\Users\Thomas\AppData\Local\Temp/cc42aaaa.s:5 *ABS*:0000003d __SP_L__
C:\Users\Thomas\AppData\Local\Temp/cc42aaaa.s:6 *ABS*:00000000 __tmp_reg__
C:\Users\Thomas\AppData\Local\Temp/cc42aaaa.s:7 *ABS*:00000001 __zero_reg__
C:\Users\Thomas\AppData\Local\Temp/cc42aaaa.s:15 .bss:00000000 FoundMotors
C:\Users\Thomas\AppData\Local\Temp/cc42aaaa.s:21 .bss:00000001 FlugSekunden
C:\Users\Thomas\AppData\Local\Temp/cc42aaaa.s:27 .bss:00000003 FlugMinutenGesamt
C:\Users\Thomas\AppData\Local\Temp/cc42aaaa.s:33 .bss:00000005 FlugMinuten
C:\Users\Thomas\AppData\Local\Temp/cc42aaaa.s:39 .data:00000000 BattLowVoltageWarning
C:\Users\Thomas\AppData\Local\Temp/cc42aaaa.s:44 .data:00000001 SendVersionToNavi
C:\Users\Thomas\AppData\Local\Temp/cc42aaaa.s:49 .data:00000002 PlatinenVersion
C:\Users\Thomas\AppData\Local\Temp/cc42aaaa.s:53 .data:00000003 stick.15
C:\Users\Thomas\AppData\Local\Temp/cc42aaaa.s:58 .text:00000000 CalMk3Mag
C:\Users\Thomas\AppData\Local\Temp/cc42aaaa.s:112 .progmem.data:00000000 __c.12
C:\Users\Thomas\AppData\Local\Temp/cc42aaaa.s:116 .progmem.data:00000008 __c.13
C:\Users\Thomas\AppData\Local\Temp/cc42aaaa.s:120 .progmem.data:00000013 __c.14
C:\Users\Thomas\AppData\Local\Temp/cc42aaaa.s:125 .text:0000006a LipoDetection
*COM*:00000002 _printf_P
C:\Users\Thomas\AppData\Local\Temp/cc42aaaa.s:262 .progmem.data:0000002d __c.0
C:\Users\Thomas\AppData\Local\Temp/cc42aaaa.s:266 .progmem.data:0000003f __c.1
C:\Users\Thomas\AppData\Local\Temp/cc42aaaa.s:270 .progmem.data:00000042 __c.2
C:\Users\Thomas\AppData\Local\Temp/cc42aaaa.s:274 .progmem.data:00000060 __c.3
C:\Users\Thomas\AppData\Local\Temp/cc42aaaa.s:278 .progmem.data:00000086 __c.4
C:\Users\Thomas\AppData\Local\Temp/cc42aaaa.s:282 .progmem.data:000000a6 __c.5
C:\Users\Thomas\AppData\Local\Temp/cc42aaaa.s:286 .progmem.data:000000ab __c.6
C:\Users\Thomas\AppData\Local\Temp/cc42aaaa.s:290 .progmem.data:000000ce __c.7
C:\Users\Thomas\AppData\Local\Temp/cc42aaaa.s:294 .progmem.data:000000da __c.8
C:\Users\Thomas\AppData\Local\Temp/cc42aaaa.s:298 .progmem.data:000000e6 __c.9
C:\Users\Thomas\AppData\Local\Temp/cc42aaaa.s:302 .progmem.data:000000f8 __c.10
.bss:00000007 second.11
C:\Users\Thomas\AppData\Local\Temp/cc42aaaa.s:308 .text:0000017e main
 
UNDEFINED SYMBOLS
__do_copy_data
__do_clear_bss
EE_Parameter
PPM_in
WinkelOut
beeptime
Piep
DebugOut
uart_putchar
SetDelay
CheckDelay
UBat
__udivmodqi4
__stack
StickGier
StickRoll
StickNick
GIER_GRAD_FAKTOR
Timer_Init
TIMER2_Init
UART_Init
rc_sum_init
ADC_Init
I2C_Init
SPI_MasterInit
LIBFC_Init
ParamSet_Init
Capacity_Init
BLFlags
motor_read
SendMotorData
Motor
Mixer
ServoActive
RequiredMotors
VersionInfo
SucheLuftruckOffset
SetNeutral
ExternControl
GetParamByte
LcdClear
I2CTimeout
LIBFC_ReceiverInit
JetiUpdateModeActive
LIBFC_Polling
UpdateMotor
AdReady
MotorRegler
SenderOkay
MissingMotor
I2C_Reset
BeepMuster
MotorenEin
CalculateServoSignals
CalculateServo
DatenUebertragung
BearbeiteRxDaten
PcZugriff
ExternStickNick
ExternStickRoll
ExternStickGier
NaviDataOkay
NC_Version
GPS_Nick
GPS_Roll
FromNaviCtrl
Capacity
FC_StatusFlags
SPI_StartTransmitPacket
SendSPI
SetParamByte
LED_Update
Capacity_Update
SPI_TransmitByte
/branches/metro/v0.82a metro_Akku+/makefile
0,0 → 1,465
#--------------------------------------------------------------------
# MCU name
#MCU = atmega1284p
MCU = atmega644p
F_CPU = 20000000
#-------------------------------------------------------------------
VERSION_MAJOR = 0
VERSION_MINOR = 82
VERSION_PATCH = 0
NAMEEXT = akku001
VERSION_SERIAL_MAJOR = 11 # Serial Protocol
VERSION_SERIAL_MINOR = 0 # Serial Protocol
NC_SPI_COMPATIBLE = 16 # Navi-Kompatibilität
#-------------------------------------------------------------------
 
# get SVN revision
REV := $(shell sh -c "cat .svn/entries | sed -n '4p'")
 
ifeq ($(MCU), atmega1284p)
FUSE_SETTINGS = -u -U lfuse:w:0xff:m -U hfuse:w:0xdf:m
HEX_NAME = MEGA1284P
LIBFC_EXT = 1284
endif
 
ifeq ($(MCU), atmega644p)
FUSE_SETTINGS = -u -U lfuse:w:0xff:m -U hfuse:w:0xdf:m
HEX_NAME = MEGA644
LIBFC_EXT = 644
endif
 
ifeq ($(F_CPU), 16000000)
QUARZ = 16MHZ
endif
 
ifeq ($(F_CPU), 20000000)
QUARZ = 20MHZ
endif
 
 
# Output format. (can be srec, ihex, binary)
FORMAT = ihex
 
# Target file name (without extension).
 
ifeq ($(VERSION_PATCH), 0)
TARGET = Flight-Ctrl_$(HEX_NAME)_V$(VERSION_MAJOR)_$(VERSION_MINOR)a_SVN$(REV)_$(NAMEEXT)
endif
ifeq ($(VERSION_PATCH), 1)
TARGET = Flight-Ctrl_$(HEX_NAME)_V$(VERSION_MAJOR)_$(VERSION_MINOR)b_SVN$(REV)_$(NAMEEXT)
endif
ifeq ($(VERSION_PATCH), 2)
TARGET = Flight-Ctrl_$(HEX_NAME)_V$(VERSION_MAJOR)_$(VERSION_MINOR)c_SVN$(REV)_$(NAMEEXT)
endif
ifeq ($(VERSION_PATCH), 3)
TARGET = Flight-Ctrl_$(HEX_NAME)_V$(VERSION_MAJOR)_$(VERSION_MINOR)d_SVN$(REV)_$(NAMEEXT)
endif
ifeq ($(VERSION_PATCH), 4)
TARGET = Flight-Ctrl_$(HEX_NAME)_V$(VERSION_MAJOR)_$(VERSION_MINOR)e_SVN$(REV)_$(NAMEEXT)
endif
ifeq ($(VERSION_PATCH), 5)
TARGET = Flight-Ctrl_$(HEX_NAME)_V$(VERSION_MAJOR)_$(VERSION_MINOR)f_SVN$(REV)_$(NAMEEXT)
endif
ifeq ($(VERSION_PATCH), 6)
TARGET = Flight-Ctrl_$(HEX_NAME)_V$(VERSION_MAJOR)_$(VERSION_MINOR)g_SVN$(REV)
endif
ifeq ($(VERSION_PATCH), 7)
TARGET = Flight-Ctrl_$(HEX_NAME)_V$(VERSION_MAJOR)_$(VERSION_MINOR)h_SVN$(REV)
endif
ifeq ($(VERSION_PATCH), 8)
TARGET = Flight-Ctrl_$(HEX_NAME)_V$(VERSION_MAJOR)_$(VERSION_MINOR)i_SVN$(REV)
endif
ifeq ($(VERSION_PATCH), 9)
TARGET = Flight-Ctrl_$(HEX_NAME)_V$(VERSION_MAJOR)_$(VERSION_MINOR)j_SVN$(REV)
endif
ifeq ($(VERSION_PATCH), 10)
TARGET = Flight-Ctrl_$(HEX_NAME)_V$(VERSION_MAJOR)_$(VERSION_MINOR)k_SVN$(REV)
endif
ifeq ($(VERSION_PATCH), 11)
TARGET = Flight-Ctrl_$(HEX_NAME)_V$(VERSION_MAJOR)_$(VERSION_MINOR)L_SVN$(REV)
endif
ifeq ($(VERSION_PATCH), 12)
TARGET = Flight-Ctrl_$(HEX_NAME)_V$(VERSION_MAJOR)_$(VERSION_MINOR)m_SVN$(REV)
endif
ifeq ($(VERSION_PATCH), 13)
TARGET = Flight-Ctrl_$(HEX_NAME)_V$(VERSION_MAJOR)_$(VERSION_MINOR)n_SVN$(REV)
endif
ifeq ($(VERSION_PATCH), 14)
TARGET = Flight-Ctrl_$(HEX_NAME)_V$(VERSION_MAJOR)_$(VERSION_MINOR)o_SVN$(REV)
endif
ifeq ($(VERSION_PATCH), 15)
TARGET = Flight-Ctrl_$(HEX_NAME)_V$(VERSION_MAJOR)_$(VERSION_MINOR)p_SVN$(REV)
endif
ifeq ($(VERSION_PATCH), 16)
TARGET = Flight-Ctrl_$(HEX_NAME)_V$(VERSION_MAJOR)_$(VERSION_MINOR)q_SVN$(REV)
endif
ifeq ($(VERSION_PATCH), 17)
TARGET = Flight-Ctrl_$(HEX_NAME)_V$(VERSION_MAJOR)_$(VERSION_MINOR)r_SVN$(REV)
endif
ifeq ($(VERSION_PATCH), 18)
TARGET = Flight-Ctrl_$(HEX_NAME)_V$(VERSION_MAJOR)_$(VERSION_MINOR)s_SVN$(REV)
endif
ifeq ($(VERSION_PATCH), 19)
TARGET = Flight-Ctrl_$(HEX_NAME)_V$(VERSION_MAJOR)_$(VERSION_MINOR)t_SVN$(REV)
endif
ifeq ($(VERSION_PATCH), 20)
TARGET = Flight-Ctrl_$(HEX_NAME)_V$(VERSION_MAJOR)_$(VERSION_MINOR)u_SVN$(REV)
endif
 
 
# Optimization level, can be [0, 1, 2, 3, s]. 0 turns off optimization.
# (Note: 3 is not always the best optimization level. See avr-libc FAQ.)
OPT = s
#OPT = 2
 
##########################################################################################################
# List C source files here. (C dependencies are automatically generated.)
SRC = main.c uart.c timer0.c analog.c menu.c eeprom.c
SRC += twimaster.c rc.c fc.c GPS.c spi.c led.c Spektrum.c
SRC += mymath.c jetimenu.c capacity.c debug.c
 
##########################################################################################################
 
 
# List Assembler source files here.
# Make them always end in a capital .S. Files ending in a lowercase .s
# will not be considered source files but generated files (assembler
# output from the compiler), and will be deleted upon "make clean"!
# Even though the DOS/Win* filesystem matches both .s and .S the same,
# it will preserve the spelling of the filenames, and gcc itself does
# care about how the name is spelled on its command-line.
ASRC = isqrt.S
 
 
 
# List any extra directories to look for include files here.
# Each directory must be seperated by a space.
EXTRAINCDIRS =
 
 
# Optional compiler flags.
# -g: generate debugging information (for GDB, or for COFF conversion)
# -O*: optimization level
# -f...: tuning, see gcc manual and avr-libc documentation
# -Wall...: warning level
# -Wa,...: tell GCC to pass this to the assembler.
# -ahlms: create assembler listing
CFLAGS = -O$(OPT) -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-adhlns=$(<:%.c=%.lst) $(patsubst %,-I%,$(EXTRAINCDIRS))
 
 
# Set a "language standard" compiler flag.
# Unremark just one line below to set the language standard to use.
# gnu99 = C99 + GNU extensions. See GCC manual for more information.
#CFLAGS += -std=c89
#CFLAGS += -std=gnu89
#CFLAGS += -std=c99
CFLAGS += -std=gnu99
 
# shrink code size
CFLAGS += -mtiny-stack
#CFLAGS += -fno-inline-functions
CFLAGS += -mcall-prologues
 
CFLAGS += -DF_CPU=$(F_CPU) -DVERSION_MAJOR=$(VERSION_MAJOR) -DVERSION_MINOR=$(VERSION_MINOR) -DVERSION_PATCH=$(VERSION_PATCH) -DVERSION_SERIAL_MAJOR=$(VERSION_SERIAL_MAJOR) -DVERSION_SERIAL_MINOR=$(VERSION_SERIAL_MINOR) -DNC_SPI_COMPATIBLE=$(NC_SPI_COMPATIBLE)
 
 
# Optional assembler flags.
# -Wa,...: tell GCC to pass this to the assembler.
# -ahlms: create listing
# -gstabs: have the assembler create line number information; note that
# for use in COFF files, additional information about filenames
# and function names needs to be present in the assembler source
# files -- see avr-libc docs [FIXME: not yet described there]
ASFLAGS = -Wa,-adhlns=$(<:.S=.lst),-gstabs
 
 
 
# Optional linker flags.
# -Wl,...: tell GCC to pass this to linker.
# -Map: create map file
# --cref: add cross reference to map file
LDFLAGS = -Wl,-Map=$(TARGET).map,--cref
 
# Additional libraries
 
# Minimalistic printf version
#LDFLAGS += -Wl,-u,vfprintf -lprintf_min
 
# Floating point printf version (requires -lm below)
#LDFLAGS += -Wl,-u,vfprintf -lprintf_flt
 
# -lm = math library
LDFLAGS += -lm
 
LDFLAGS += libfc$(LIBFC_EXT).a
 
##LDFLAGS += -T./linkerfile/avr5.x
 
 
 
# Programming support using avrdude. Settings and variables.
 
# Programming hardware: alf avr910 avrisp bascom bsd
# dt006 pavr picoweb pony-stk200 sp12 stk200 stk500
#
# Type: avrdude -c ?
# to get a full listing.
#
#AVRDUDE_PROGRAMMER = dt006
#AVRDUDE_PROGRAMMER = stk200
#AVRDUDE_PROGRAMMER = ponyser
AVRDUDE_PROGRAMMER = avrispv2
#falls Ponyser ausgewählt wird, muss sich unsere avrdude-Configdatei im Bin-Verzeichnis des Compilers befinden
 
#AVRDUDE_PORT = com1 # programmer connected to serial device
#AVRDUDE_PORT = lpt1 # programmer connected to parallel port
AVRDUDE_PORT = usb # programmer connected to USB
 
#AVRDUDE_WRITE_FLASH = -U flash:w:$(TARGET).hex
AVRDUDE_WRITE_FLASH = -U flash:w:$(TARGET).hex $(FUSE_SETTINGS)
#AVRDUDE_WRITE_EEPROM = -U eeprom:w:$(TARGET).eep
 
#avrdude -c avrispv2 -P usb -p m32 -U flash:w:blink.hex
AVRDUDE_FLAGS = -p $(MCU) -P $(AVRDUDE_PORT) -c $(AVRDUDE_PROGRAMMER)
 
# Uncomment the following if you want avrdude's erase cycle counter.
# Note that this counter needs to be initialized first using -Yn,
# see avrdude manual.
#AVRDUDE_ERASE += -y
 
# Uncomment the following if you do /not/ wish a verification to be
# performed after programming the device.
AVRDUDE_FLAGS += -V
 
# Increase verbosity level. Please use this when submitting bug
# reports about avrdude. See <http://savannah.nongnu.org/projects/avrdude>
# to submit bug reports.
#AVRDUDE_FLAGS += -v -v
 
# ---------------------------------------------------------------------------
# Define directories, if needed.
DIRAVR = c:/winavr
DIRAVRBIN = $(DIRAVR)/bin
DIRAVRUTILS = $(DIRAVR)/utils/bin
DIRINC = .
DIRLIB = $(DIRAVR)/avr/lib
 
 
# Define programs and commands.
SHELL = sh
 
CC = avr-gcc
 
OBJCOPY = avr-objcopy
OBJDUMP = avr-objdump
SIZE = avr-size
 
# Programming support using avrdude.
AVRDUDE = avrdude
 
REMOVE = rm -f
COPY = cp
 
HEXSIZE = $(SIZE) --target=$(FORMAT) $(TARGET).hex
ELFSIZE = $(SIZE) -x -A $(TARGET).elf
LIMITS = $(SIZE) --mcu=$(MCU) -C $(TARGET).elf
 
 
# Define Messages
# English
MSG_ERRORS_NONE = Errors: none
MSG_BEGIN = -------- begin --------
MSG_END = -------- end --------
MSG_SIZE_BEFORE = Size before:
MSG_SIZE_AFTER = Size after:
MSG_COFF = Converting to AVR COFF:
MSG_EXTENDED_COFF = Converting to AVR Extended COFF:
MSG_FLASH = Creating load file for Flash:
MSG_EEPROM = Creating load file for EEPROM:
MSG_EXTENDED_LISTING = Creating Extended Listing:
MSG_SYMBOL_TABLE = Creating Symbol Table:
MSG_LINKING = Linking:
MSG_COMPILING = Compiling:
MSG_ASSEMBLING = Assembling:
MSG_CLEANING = Cleaning project:
 
 
# Define all object files.
OBJ = $(SRC:.c=.o) $(ASRC:.S=.o)
 
# Define all listing files.
LST = $(ASRC:.S=.lst) $(SRC:.c=.lst)
 
# Combine all necessary flags and optional flags.
# Add target processor to flags.
#ALL_CFLAGS = -mmcu=$(MCU) -DF_CPU=$(F_CPU) -I. $(CFLAGS)
ALL_CFLAGS = -mmcu=$(MCU) -I. $(CFLAGS)
ALL_ASFLAGS = -mmcu=$(MCU) -I. -x assembler-with-cpp $(ASFLAGS)
 
 
# Default target.
all: begin gccversion sizebefore $(TARGET).elf $(TARGET).hex sizeafter finished end
 
 
# Eye candy.
# AVR Studio 3.x does not check make's exit code but relies on
# the following magic strings to be generated by the compile job.
begin:
@echo
@echo $(MSG_BEGIN)
 
finished:
@echo $(MSG_ERRORS_NONE)
 
end:
@echo $(MSG_END)
@echo
 
 
# Display size of file.
sizebefore:
@if [ -f $(TARGET).elf ]; then echo Size before:; $(ELFSIZE); $(HEXSIZE); $(LIMITS); echo; fi
sizeafter:
@if [ -f $(TARGET).elf ]; then echo Size after:; $(ELFSIZE); $(HEXSIZE); $(LIMITS); echo; fi
 
 
# Display compiler version information.
gccversion :
@$(CC) --version
 
 
# Convert ELF to COFF for use in debugging / simulating in
# AVR Studio or VMLAB.
COFFCONVERT=$(OBJCOPY) --debugging \
--change-section-address .data-0x800000 \
--change-section-address .bss-0x800000 \
--change-section-address .noinit-0x800000 \
--change-section-address .eeprom-0x810000
 
 
coff: $(TARGET).elf
@echo
@echo $(MSG_COFF) $(TARGET).cof
$(COFFCONVERT) -O coff-avr $< $(TARGET).cof
 
 
extcoff: $(TARGET).elf
@echo
@echo $(MSG_EXTENDED_COFF) $(TARGET).cof
$(COFFCONVERT) -O coff-ext-avr $< $(TARGET).cof
 
 
 
 
# Program the device.
program: $(TARGET).hex $(TARGET).eep
$(AVRDUDE) $(AVRDUDE_FLAGS) $(AVRDUDE_WRITE_FLASH) $(AVRDUDE_WRITE_EEPROM)
 
 
 
 
# Create final output files (.hex, .eep) from ELF output file.
%.hex: %.elf
@echo
@echo $(MSG_FLASH) $@
$(OBJCOPY) -O $(FORMAT) -R .eeprom $< $@
 
%.eep: %.elf
@echo
@echo $(MSG_EEPROM) $@
-$(OBJCOPY) -j .eeprom --set-section-flags=.eeprom="alloc,load" \
--change-section-lma .eeprom=0 -O $(FORMAT) $< $@
 
# Create extended listing file from ELF output file.
%.lss: %.elf
@echo
@echo $(MSG_EXTENDED_LISTING) $@
$(OBJDUMP) -h -S $< > $@
 
# Create a symbol table from ELF output file.
%.sym: %.elf
@echo
@echo $(MSG_SYMBOL_TABLE) $@
avr-nm -n $< > $@
 
 
 
# Link: create ELF output file from object files.
.SECONDARY : $(TARGET).elf
.PRECIOUS : $(OBJ)
%.elf: $(OBJ)
@echo
@echo $(MSG_LINKING) $@
$(CC) $(ALL_CFLAGS) $(OBJ) --output $@ $(LDFLAGS)
 
 
# Compile: create object files from C source files.
%.o : %.c
@echo
@echo $(MSG_COMPILING) $<
$(CC) -c $(ALL_CFLAGS) $< -o $@
 
 
# Compile: create assembler files from C source files.
%.s : %.c
$(CC) -S $(ALL_CFLAGS) $< -o $@
 
 
# Assemble: create object files from assembler source files.
%.o : %.S
@echo
@echo $(MSG_ASSEMBLING) $<
$(CC) -c $(ALL_ASFLAGS) $< -o $@
 
 
 
 
 
 
# Target: clean project.
clean: begin clean_list finished end
 
clean_list :
@echo
@echo $(MSG_CLEANING)
$(REMOVE) Flight-Ctrl_*.hex
$(REMOVE) Flight-Ctrl_*.eep
$(REMOVE) $(TARGET).obj
$(REMOVE) $(TARGET).cof
$(REMOVE) Flight-Ctrl_*.elf
$(REMOVE) Flight-Ctrl_*.map
$(REMOVE) $(TARGET).obj
$(REMOVE) $(TARGET).a90
$(REMOVE) Flight-Ctrl_*.sym
$(REMOVE) $(TARGET).lnk
$(REMOVE) $(TARGET).lss
$(REMOVE) $(OBJ)
$(REMOVE) $(LST)
$(REMOVE) $(SRC:.c=.s)
$(REMOVE) $(SRC:.c=.d)
$(REMOVE) $(SRC:.c=.o)
 
 
# Automatically generate C source code dependencies.
# (Code originally taken from the GNU make user manual and modified
# (See README.txt Credits).)
#
# Note that this will work with sh (bash) and sed that is shipped with WinAVR
# (see the SHELL variable defined above).
# This may not work with other shells or other seds.
#
%.d: %.c
set -e; $(CC) -MM $(ALL_CFLAGS) $< \
| sed 's,\(.*\)\.o[ :]*,\1.o \1.d : ,g' > $@; \
[ -s $@ ] || rm -f $@
 
 
# Remove the '-' if you want to see the dependency files generated.
-include $(SRC:%.c=%.d)
 
 
 
# Listing of phony targets.
.PHONY : all begin finish end sizebefore sizeafter gccversion coff extcoff \
clean clean_list program
 
/branches/metro/v0.82a metro_Akku+/menu.c
0,0 → 1,204
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// + Copyright (c) Holger Buss, Ingo Busker
// + only for non-profit use
// + www.MikroKopter.com
// + porting the sources to other systems or using the software on other systems (except hardware from www.mikrokopter.de) is not allowed
// + see the File "License.txt" for further Informations
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#include "main.h"
#include "eeprom.h"
 
char DisplayBuff[80] = "Hello World";
unsigned char DispPtr = 0;
 
unsigned char MaxMenue = 17;
unsigned char MenuePunkt = 0;
unsigned char RemoteKeys = 0;
 
#define KEY1 0x01
#define KEY2 0x02
#define KEY3 0x04
#define KEY4 0x08
#define KEY5 0x10
 
void LcdClear(void)
{
unsigned char i;
for(i=0;i<80;i++) DisplayBuff[i] = ' ';
}
 
void Menu_Putchar(char c)
{
DisplayBuff[DispPtr++] = c;
}
 
void Menu(void)
{
if(RemoteKeys & KEY1) { if(MenuePunkt) MenuePunkt--; else MenuePunkt = MaxMenue;}
if(RemoteKeys & KEY2) { if(MenuePunkt == MaxMenue) MenuePunkt = 0; else MenuePunkt++;}
if((RemoteKeys & KEY1) && (RemoteKeys & KEY2)) MenuePunkt = 0;
LcdClear();
if(MenuePunkt < 10) {LCD_printfxy(17,0,"[%i]",MenuePunkt);}
else {LCD_printfxy(16,0,"[%i]",MenuePunkt);};
 
switch(MenuePunkt)
{
case 0:
LCD_printfxy(0,0,"+ MikroKopter +");
LCD_printfxy(0,1,"HW:V%d.%d SW:%d.%d%c",PlatinenVersion/10,PlatinenVersion%10, VERSION_MAJOR, VERSION_MINOR, VERSION_PATCH +'a');
LCD_printfxy(0,2,"Setting:%d %s", GetActiveParamSet(),Mixer.Name);
if(VersionInfo.HardwareError[0]) LCD_printfxy(0,3,"Hardware Error 1:%d !!",VersionInfo.HardwareError[0])
else
if(MissingMotor) LCD_printfxy(0,3,"Missing BL-Ctrl:%d!!",MissingMotor)
else
if(VersionInfo.HardwareError[1] & FC_ERROR1_MIXER) LCD_printfxy(0,3,"Mixer Error!")
else
// if(VersionInfo.HardwareError[1]) LCD_printfxy(0,3,"Error 2:%d !!",VersionInfo.HardwareError[1])
// else
if(I2CTimeout < 6) LCD_printfxy(0,3,"I2C ERROR!!!")
break;
case 1:
if(EE_Parameter.GlobalConfig & CFG_HOEHENREGELUNG)
{
LCD_printfxy(0,0,"Height: %5i",(int)(HoehenWert/5));
LCD_printfxy(0,1,"Setpoint:%5i",(int)(SollHoehe/5));
LCD_printfxy(0,2,"Pressure:%5i",MessLuftdruck);
LCD_printfxy(0,3,"Offset: %5i",OCR0A);
}
else
{
LCD_printfxy(0,0,"Height control");
LCD_printfxy(0,1,"DISABLED");
LCD_printfxy(0,2,"Height control");
LCD_printfxy(0,3,"DISABLED");
}
 
break;
case 2:
LCD_printfxy(0,0,"act. bearing");
LCD_printfxy(0,1,"Nick: %5i",IntegralNick/1024);
LCD_printfxy(0,2,"Roll: %5i",IntegralRoll/1024);
LCD_printfxy(0,3,"Compass: %5i",KompassValue);
break;
case 3:
LCD_printfxy(0,0,"K1:%4i K2:%4i ",PPM_in[1],PPM_in[2]);
LCD_printfxy(0,1,"K3:%4i K4:%4i ",PPM_in[3],PPM_in[4]);
LCD_printfxy(0,2,"K5:%4i K6:%4i ",PPM_in[5],PPM_in[6]);
LCD_printfxy(0,3,"K7:%4i K8:%4i ",PPM_in[7],PPM_in[8]);
break;
case 4:
LCD_printfxy(0,0,"Ni:%4i Ro:%4i ",PPM_in[EE_Parameter.Kanalbelegung[K_NICK]],PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]]);
LCD_printfxy(0,1,"Gs:%4i Gi:%4i ",PPM_in[EE_Parameter.Kanalbelegung[K_GAS]]+120,PPM_in[EE_Parameter.Kanalbelegung[K_GIER]]);
LCD_printfxy(0,2,"P1:%4i P2:%4i ",PPM_in[EE_Parameter.Kanalbelegung[K_POTI1]]+110,PPM_in[EE_Parameter.Kanalbelegung[K_POTI2]]+110);
LCD_printfxy(0,3,"P3:%4i P4:%4i ",PPM_in[EE_Parameter.Kanalbelegung[K_POTI3]]+110,PPM_in[EE_Parameter.Kanalbelegung[K_POTI4]]+110);
break;
case 5:
LCD_printfxy(0,0,"Gyro - Sensor");
if(PlatinenVersion == 10)
{
LCD_printfxy(0,1,"Nick%4i (%3i.%i)",AdWertNick - AdNeutralNick/8, AdNeutralNick/8, AdNeutralNick%8);
LCD_printfxy(0,2,"Roll%4i (%3i.%i)",AdWertRoll - AdNeutralRoll/8, AdNeutralRoll/8, AdNeutralRoll%8);
LCD_printfxy(0,3,"Gier%4i (%3i)",AdNeutralGier - AdWertGier, AdNeutralGier);
}
else
if((PlatinenVersion == 11) || (PlatinenVersion >= 20))
{
LCD_printfxy(0,1,"Nick %4i (%3i.%x)",AdWertNick - AdNeutralNick/8, AdNeutralNick/16, (AdNeutralNick%16)/2);
LCD_printfxy(0,2,"Roll %4i (%3i.%x)",AdWertRoll - AdNeutralRoll/8, AdNeutralRoll/16, (AdNeutralRoll%16)/2);
LCD_printfxy(0,3,"Yaw %4i (%3i)",AdNeutralGier - AdWertGier, AdNeutralGier/2);
}
else
if(PlatinenVersion == 13)
{
LCD_printfxy(0,1,"Nick %4i (%3i)(%3i)",AdWertNick - AdNeutralNick/8, AdNeutralNick/16,AnalogOffsetNick);
LCD_printfxy(0,2,"Roll %4i (%3i)(%3i)",AdWertRoll - AdNeutralRoll/8, AdNeutralRoll/16,AnalogOffsetRoll);
LCD_printfxy(0,3,"Yaw %4i (%3i)(%3i)",AdNeutralGier - AdWertGier, AdNeutralGier/2,AnalogOffsetGier);
}
break;
case 6:
LCD_printfxy(0,0,"ACC - Sensor");
LCD_printfxy(0,1,"Nick %4i (%3i)",AdWertAccNick,NeutralAccX);
LCD_printfxy(0,2,"Roll %4i (%3i)",AdWertAccRoll,NeutralAccY);
LCD_printfxy(0,3,"Z %4i (%3i)",AdWertAccHoch,(int)NeutralAccZ);
break;
case 7:
LCD_printfxy(0,0,"Voltage: %3i.%1iV",UBat/10, UBat%10);
LCD_printfxy(0,1,"Current: %3i.%1iA",Capacity.ActualCurrent/10, Capacity.ActualCurrent%10);
LCD_printfxy(0,2,"Power: %4iW",Capacity.ActualPower);
LCD_printfxy(0,3,"Discharge: %5imAh", Capacity.UsedCapacity);
break;
case 8:
LCD_printfxy(0,0,"Receiver");
LCD_printfxy(0,1,"RC-RSSI: %4i", PPM_in[0]);
LCD_printfxy(0,2,"RC-Quality: %4i", SenderOkay);
LCD_printfxy(0,3,"RC-Channels:%4i", Channels-1);
break;
case 9:
LCD_printfxy(0,0,"Compass");
LCD_printfxy(0,1,"Heading: %5i",KompassRichtung);
LCD_printfxy(0,2,"Value: %5i",KompassValue);
LCD_printfxy(0,3,"Start: %5i",KompassStartwert);
break;
case 10:
LCD_printfxy(0,0,"Poti1: %3i",Poti[0]);
LCD_printfxy(0,1,"Poti2: %3i",Poti[1]);
LCD_printfxy(0,2,"Poti3: %3i",Poti[2]);
LCD_printfxy(0,3,"Poti4: %3i",Poti[3]);
break;
case 11:
LCD_printfxy(0,0,"Poti5: %3i",Poti[4]);
LCD_printfxy(0,1,"Poti6: %3i",Poti[5]);
LCD_printfxy(0,2,"Poti7: %3i",Poti[6]);
LCD_printfxy(0,3,"Poti8: %3i",Poti[7]);
break;
case 12:
LCD_printfxy(0,0,"Servo " );
LCD_printfxy(0,1,"Setpoint %3i",Parameter_ServoNickControl);
LCD_printfxy(0,2,"Position: %3i",ServoNickValue/4);
LCD_printfxy(0,3,"Range:%3i-%3i",EE_Parameter.ServoNickMin,EE_Parameter.ServoNickMax);
break;
case 13:
LCD_printfxy(0,0,"ExternControl " );
LCD_printfxy(0,1,"Ni:%4i Ro:%4i ",ExternControl.Nick,ExternControl.Roll);
LCD_printfxy(0,2,"Gs:%4i Gi:%4i ",ExternControl.Gas,ExternControl.Gier);
LCD_printfxy(0,3,"Hi:%4i Cf:%4i ",ExternControl.Hight,ExternControl.Config);
break;
case 14:
LCD_printfxy(0,0,"BL-Ctrl Errors " );
LCD_printfxy(0,1,"%3d %3d %3d %3d ",Motor[0].State & MOTOR_STATE_ERROR_MASK,Motor[1].State & MOTOR_STATE_ERROR_MASK,Motor[2].State & MOTOR_STATE_ERROR_MASK,Motor[3].State & MOTOR_STATE_ERROR_MASK);
LCD_printfxy(0,2,"%3d %3d %3d %3d ",Motor[4].State & MOTOR_STATE_ERROR_MASK,Motor[5].State & MOTOR_STATE_ERROR_MASK,Motor[6].State & MOTOR_STATE_ERROR_MASK,Motor[7].State & MOTOR_STATE_ERROR_MASK);
LCD_printfxy(0,3,"%3d %3d %3d %3d ",Motor[8].State & MOTOR_STATE_ERROR_MASK,Motor[9].State & MOTOR_STATE_ERROR_MASK,Motor[10].State & MOTOR_STATE_ERROR_MASK,Motor[11].State & MOTOR_STATE_ERROR_MASK);
break;
case 15:
LCD_printfxy(0,0,"BL Temperature" );
LCD_printfxy(0,1,"%3i %3i %3i %3i ",Motor[0].Temperature,Motor[1].Temperature,Motor[2].Temperature,Motor[3].Temperature);
LCD_printfxy(0,2,"%3i %3i %3i %3i ",Motor[4].Temperature,Motor[5].Temperature,Motor[6].Temperature,Motor[7].Temperature);
LCD_printfxy(0,3,"%3i %3i %3i %3i ",Motor[8].Temperature,Motor[9].Temperature,Motor[10].Temperature,Motor[11].Temperature);
break;
case 16:
LCD_printfxy(0,0,"BL-Ctrl found " );
LCD_printfxy(0,1," %c %c %c %c ",'-' + 4 * (Motor[0].State>>7),'-' + 5 * (Motor[1].State>>7),'-' + 6 * (Motor[2].State>>7),'-' + 7 * (Motor[3].State>>7));
LCD_printfxy(0,2," %c %c %c %c ",'-' + 8 * (Motor[4].State>>7),'-' + 9 * (Motor[5].State>>7),'-' + 10 * (Motor[6].State>>7),'-' + 11 * (Motor[7].State>>7));
LCD_printfxy(0,3," %c - - - ",'-' + 12 * (Motor[8].State>>7));
if(Motor[9].State>>7) LCD_printfxy(4,3,"10");
if(Motor[10].State>>7) LCD_printfxy(8,3,"11");
if(Motor[11].State>>7) LCD_printfxy(12,3,"12");
break;
case 17:
LCD_printfxy(0,0,"Flight-Time " );
LCD_printfxy(0,1,"Total:%5umin",FlugMinutenGesamt);
LCD_printfxy(0,2,"Act: %5umin",FlugMinuten);
LCD_printfxy(13,3,"(reset)");
if(RemoteKeys & KEY4)
{
FlugMinuten = 0;
SetParamWord(PID_FLIGHT_MINUTES, FlugMinuten);
}
break;
default:
if(MenuePunkt == MaxMenue) MaxMenue--;
MenuePunkt = 0;
break;
}
RemoteKeys = 0;
}
/branches/metro/v0.82a metro_Akku+/menu.d
0,0 → 1,3
menu.o menu.d : menu.c main.h old_macros.h printf_P.h timer0.h uart.h analog.h \
twimaster.h menu.h rc.h fc.h gps.h spi.h led.h spektrum.h capacity.h \
eeprom.h libfc.h debug.h
/branches/metro/v0.82a metro_Akku+/menu.h
0,0 → 1,17
#ifndef _MENU_H
#define _MENU_H
 
extern void Menu(void);
extern void LcdClear(void);
extern void Menu_Putchar(char c);
extern char DisplayBuff[80];
extern unsigned char DispPtr;
 
extern unsigned char MaxMenue;
extern unsigned char MenuePunkt;
extern unsigned char RemoteKeys;
 
#define LCD_printfxy(x,y,format, args...) { DispPtr = y * 20 + x; _printf_P(&Menu_Putchar,PSTR(format) , ## args);}
#define LCD_printf(format, args...) { _printf_P(&Menu_Putchar, PSTR(format) , ## args);}
 
#endif //_MENU_H
/branches/metro/v0.82a metro_Akku+/menu.lst
0,0 → 1,3080
1 .file "menu.c"
2 .arch atmega644p
3 __SREG__ = 0x3f
4 __SP_H__ = 0x3e
5 __SP_L__ = 0x3d
6 __tmp_reg__ = 0
7 __zero_reg__ = 1
8 .global __do_copy_data
9 .global __do_clear_bss
10 .global RemoteKeys
11 .global RemoteKeys
12 .section .bss
15 RemoteKeys:
16 0000 00 .skip 1,0
17 .global MenuePunkt
18 .global MenuePunkt
21 MenuePunkt:
22 0001 00 .skip 1,0
23 .global MaxMenue
24 .data
27 MaxMenue:
28 0000 11 .byte 17
29 .global DispPtr
30 .global DispPtr
31 .section .bss
34 DispPtr:
35 0002 00 .skip 1,0
36 .global DisplayBuff
37 .data
40 DisplayBuff:
41 0001 4865 6C6C .string "Hello World"
41 6F20 576F
41 726C 6400
42 000d 0000 0000 .skip 68,0
42 0000 0000
42 0000 0000
42 0000 0000
42 0000 0000
43 .text
44 .global LcdClear
46 LcdClear:
47 /* prologue: frame size=0 */
48 /* prologue end (size=0) */
49 0000 90E2 ldi r25,lo8(32)
50 0002 E0E0 ldi r30,lo8(DisplayBuff)
51 0004 F0E0 ldi r31,hi8(DisplayBuff)
52 0006 8FE4 ldi r24,lo8(79)
53 .L5:
54 0008 9193 st Z+,r25
55 000a 8150 subi r24,lo8(-(-1))
56 000c 87FF sbrs r24,7
57 000e FCCF rjmp .L5
58 /* epilogue: frame size=0 */
59 0010 0895 ret
60 /* epilogue end (size=1) */
61 /* function LcdClear size 9 (8) */
63 .global Menu_Putchar
65 Menu_Putchar:
66 /* prologue: frame size=0 */
67 /* prologue end (size=0) */
68 0012 9091 0000 lds r25,DispPtr
69 0016 E0E0 ldi r30,lo8(DisplayBuff)
70 0018 F0E0 ldi r31,hi8(DisplayBuff)
71 001a E90F add r30,r25
72 001c F11D adc r31,__zero_reg__
73 001e 8083 st Z,r24
74 0020 9F5F subi r25,lo8(-(1))
75 0022 9093 0000 sts DispPtr,r25
76 /* epilogue: frame size=0 */
77 0026 0895 ret
78 /* epilogue end (size=1) */
79 /* function Menu_Putchar size 11 (10) */
81 .section .progmem.data,"a",@progbits
84 __c.0:
85 0000 5B25 695D .string "[%i]"
85 00
88 __c.1:
89 0005 5B25 695D .string "[%i]"
89 00
92 __c.2:
93 000a 2B20 4D69 .string "+ MikroKopter +"
93 6B72 6F4B
93 6F70 7465
93 7220 2B00
96 __c.3:
97 001a 4857 3A56 .string "HW:V%d.%d SW:%d.%d%c"
97 2564 2E25
97 6420 5357
97 3A25 642E
97 2564 2563
100 __c.4:
101 002f 5365 7474 .string "Setting:%d %s"
101 696E 673A
101 2564 2025
101 7300
104 __c.5:
105 003d 4861 7264 .string "Hardware Error 1:%d !!"
105 7761 7265
105 2045 7272
105 6F72 2031
105 3A25 6420
108 __c.6:
109 0054 4D69 7373 .string "Missing BL-Ctrl:%d!!"
109 696E 6720
109 424C 2D43
109 7472 6C3A
109 2564 2121
112 __c.7:
113 0069 4D69 7865 .string "Mixer Error!"
113 7220 4572
113 726F 7221
113 00
116 __c.8:
117 0076 4932 4320 .string "I2C ERROR!!!"
117 4552 524F
117 5221 2121
117 00
120 __c.9:
121 0083 4865 6967 .string "Height: %5i"
121 6874 3A20
121 2025 3569
121 00
124 __c.10:
125 0090 5365 7470 .string "Setpoint:%5i"
125 6F69 6E74
125 3A25 3569
125 00
128 __c.11:
129 009d 5072 6573 .string "Pressure:%5i"
129 7375 7265
129 3A25 3569
129 00
132 __c.12:
133 00aa 4F66 6673 .string "Offset: %5i"
133 6574 3A20
133 2025 3569
133 00
136 __c.13:
137 00b7 4865 6967 .string "Height control"
137 6874 2063
137 6F6E 7472
137 6F6C 00
140 __c.14:
141 00c6 4449 5341 .string "DISABLED"
141 424C 4544
141 00
144 __c.15:
145 00cf 4865 6967 .string "Height control"
145 6874 2063
145 6F6E 7472
145 6F6C 00
148 __c.16:
149 00de 4449 5341 .string "DISABLED"
149 424C 4544
149 00
152 __c.17:
153 00e7 6163 742E .string "act. bearing"
153 2062 6561
153 7269 6E67
153 00
156 __c.18:
157 00f4 4E69 636B .string "Nick: %5i"
157 3A20 2020
157 2020 2025
157 3569 00
160 __c.19:
161 0103 526F 6C6C .string "Roll: %5i"
161 3A20 2020
161 2020 2025
161 3569 00
164 __c.20:
165 0112 436F 6D70 .string "Compass: %5i"
165 6173 733A
165 2020 2025
165 3569 00
168 __c.21:
169 0121 4B31 3A25 .string "K1:%4i K2:%4i "
169 3469 2020
169 4B32 3A25
169 3469 2000
172 __c.22:
173 0131 4B33 3A25 .string "K3:%4i K4:%4i "
173 3469 2020
173 4B34 3A25
173 3469 2000
176 __c.23:
177 0141 4B35 3A25 .string "K5:%4i K6:%4i "
177 3469 2020
177 4B36 3A25
177 3469 2000
180 __c.24:
181 0151 4B37 3A25 .string "K7:%4i K8:%4i "
181 3469 2020
181 4B38 3A25
181 3469 2000
184 __c.25:
185 0161 4E69 3A25 .string "Ni:%4i Ro:%4i "
185 3469 2020
185 526F 3A25
185 3469 2000
188 __c.26:
189 0171 4773 3A25 .string "Gs:%4i Gi:%4i "
189 3469 2020
189 4769 3A25
189 3469 2000
192 __c.27:
193 0181 5031 3A25 .string "P1:%4i P2:%4i "
193 3469 2020
193 5032 3A25
193 3469 2000
196 __c.28:
197 0191 5033 3A25 .string "P3:%4i P4:%4i "
197 3469 2020
197 5034 3A25
197 3469 2000
200 __c.29:
201 01a1 4779 726F .string "Gyro - Sensor"
201 202D 2053
201 656E 736F
201 7200
204 __c.30:
205 01af 4E69 636B .string "Nick%4i (%3i.%i)"
205 2534 6920
205 2825 3369
205 2E25 6929
205 00
208 __c.31:
209 01c0 526F 6C6C .string "Roll%4i (%3i.%i)"
209 2534 6920
209 2825 3369
209 2E25 6929
209 00
212 __c.32:
213 01d1 4769 6572 .string "Gier%4i (%3i)"
213 2534 6920
213 2825 3369
213 2900
216 __c.33:
217 01df 4E69 636B .string "Nick %4i (%3i.%x)"
217 2025 3469
217 2028 2533
217 692E 2578
217 2900
220 __c.34:
221 01f1 526F 6C6C .string "Roll %4i (%3i.%x)"
221 2025 3469
221 2028 2533
221 692E 2578
221 2900
224 __c.35:
225 0203 5961 7720 .string "Yaw %4i (%3i)"
225 2025 3469
225 2028 2533
225 6929 00
228 __c.36:
229 0212 4E69 636B .string "Nick %4i (%3i)(%3i)"
229 2025 3469
229 2028 2533
229 6929 2825
229 3369 2900
232 __c.37:
233 0226 526F 6C6C .string "Roll %4i (%3i)(%3i)"
233 2025 3469
233 2028 2533
233 6929 2825
233 3369 2900
236 __c.38:
237 023a 5961 7720 .string "Yaw %4i (%3i)(%3i)"
237 2025 3469
237 2028 2533
237 6929 2825
237 3369 2900
240 __c.39:
241 024e 4143 4320 .string "ACC - Sensor"
241 2D20 5365
241 6E73 6F72
241 00
244 __c.40:
245 025b 4E69 636B .string "Nick %4i (%3i)"
245 2025 3469
245 2028 2533
245 6929 00
248 __c.41:
249 026a 526F 6C6C .string "Roll %4i (%3i)"
249 2025 3469
249 2028 2533
249 6929 00
252 __c.42:
253 0279 5A20 2020 .string "Z %4i (%3i)"
253 2025 3469
253 2028 2533
253 6929 00
256 __c.43:
257 0288 566F 6C74 .string "Voltage: %3i.%1iV"
257 6167 653A
257 2020 2025
257 3369 2E25
257 3169 5600
260 __c.44:
261 029c 4375 7272 .string "Current: %3i.%1iA"
261 656E 743A
261 2020 2025
261 3369 2E25
261 3169 4100
264 __c.45:
265 02b0 506F 7765 .string "Power: %4iW"
265 723A 2020
265 2020 2025
265 3469 5700
268 __c.46:
269 02c0 4469 7363 .string "Discharge: %5imAh"
269 6861 7267
269 653A 2025
269 3569 6D41
269 6800
272 __c.47:
273 02d2 5265 6365 .string "Receiver"
273 6976 6572
273 00
276 __c.48:
277 02db 5243 2D52 .string "RC-RSSI: %4i"
277 5353 493A
277 2020 2020
277 2534 6900
280 __c.49:
281 02eb 5243 2D51 .string "RC-Quality: %4i"
281 7561 6C69
281 7479 3A20
281 2534 6900
284 __c.50:
285 02fb 5243 2D43 .string "RC-Channels:%4i"
285 6861 6E6E
285 656C 733A
285 2534 6900
288 __c.51:
289 030b 436F 6D70 .string "Compass"
289 6173 7300
292 __c.52:
293 0313 4865 6164 .string "Heading: %5i"
293 696E 673A
293 2020 2535
293 6900
296 __c.53:
297 0321 5661 6C75 .string "Value: %5i"
297 653A 2020
297 2020 2535
297 6900
300 __c.54:
301 032f 5374 6172 .string "Start: %5i"
301 743A 2020
301 2020 2535
301 6900
304 __c.55:
305 033d 506F 7469 .string "Poti1: %3i"
305 313A 2020
305 2533 6900
308 __c.56:
309 0349 506F 7469 .string "Poti2: %3i"
309 323A 2020
309 2533 6900
312 __c.57:
313 0355 506F 7469 .string "Poti3: %3i"
313 333A 2020
313 2533 6900
316 __c.58:
317 0361 506F 7469 .string "Poti4: %3i"
317 343A 2020
317 2533 6900
320 __c.59:
321 036d 506F 7469 .string "Poti5: %3i"
321 353A 2020
321 2533 6900
324 __c.60:
325 0379 506F 7469 .string "Poti6: %3i"
325 363A 2020
325 2533 6900
328 __c.61:
329 0385 506F 7469 .string "Poti7: %3i"
329 373A 2020
329 2533 6900
332 __c.62:
333 0391 506F 7469 .string "Poti8: %3i"
333 383A 2020
333 2533 6900
336 __c.63:
337 039d 5365 7276 .string "Servo "
337 6F20 2000
340 __c.64:
341 03a5 5365 7470 .string "Setpoint %3i"
341 6F69 6E74
341 2020 2533
341 6900
344 __c.65:
345 03b3 506F 7369 .string "Position: %3i"
345 7469 6F6E
345 3A20 2533
345 6900
348 __c.66:
349 03c1 5261 6E67 .string "Range:%3i-%3i"
349 653A 2533
349 692D 2533
349 6900
352 __c.67:
353 03cf 4578 7465 .string "ExternControl "
353 726E 436F
353 6E74 726F
353 6C20 2000
356 __c.68:
357 03df 4E69 3A25 .string "Ni:%4i Ro:%4i "
357 3469 2020
357 526F 3A25
357 3469 2000
360 __c.69:
361 03ef 4773 3A25 .string "Gs:%4i Gi:%4i "
361 3469 2020
361 4769 3A25
361 3469 2000
364 __c.70:
365 03ff 4869 3A25 .string "Hi:%4i Cf:%4i "
365 3469 2020
365 4366 3A25
365 3469 2000
368 __c.71:
369 040f 424C 2D43 .string "BL-Ctrl Errors "
369 7472 6C20
369 4572 726F
369 7273 2000
372 __c.72:
373 041f 2533 6420 .string "%3d %3d %3d %3d "
373 2533 6420
373 2533 6420
373 2533 6420
373 00
376 __c.73:
377 0430 2533 6420 .string "%3d %3d %3d %3d "
377 2533 6420
377 2533 6420
377 2533 6420
377 00
380 __c.74:
381 0441 2533 6420 .string "%3d %3d %3d %3d "
381 2533 6420
381 2533 6420
381 2533 6420
381 00
384 __c.75:
385 0452 424C 2054 .string "BL Temperature"
385 656D 7065
385 7261 7475
385 7265 00
388 __c.76:
389 0461 2533 6920 .string "%3i %3i %3i %3i "
389 2533 6920
389 2533 6920
389 2533 6920
389 00
392 __c.77:
393 0472 2533 6920 .string "%3i %3i %3i %3i "
393 2533 6920
393 2533 6920
393 2533 6920
393 00
396 __c.78:
397 0483 2533 6920 .string "%3i %3i %3i %3i "
397 2533 6920
397 2533 6920
397 2533 6920
397 00
400 __c.79:
401 0494 424C 2D43 .string "BL-Ctrl found "
401 7472 6C20
401 666F 756E
401 6420 00
404 __c.80:
405 04a3 2025 6320 .string " %c %c %c %c "
405 2020 2563
405 2020 2025
405 6320 2020
405 2563 2000
408 __c.81:
409 04b7 2025 6320 .string " %c %c %c %c "
409 2020 2563
409 2020 2025
409 6320 2020
409 2563 2000
412 __c.82:
413 04cb 2025 6320 .string " %c - - - "
413 2020 2D20
413 2020 2D20
413 2020 2D20
413 00
416 __c.83:
417 04dc 3130 00 .string "10"
420 __c.84:
421 04df 3131 00 .string "11"
424 __c.85:
425 04e2 3132 00 .string "12"
428 __c.86:
429 04e5 466C 6967 .string "Flight-Time "
429 6874 2D54
429 696D 6520
429 2000
432 __c.87:
433 04f3 546F 7461 .string "Total:%5umin"
433 6C3A 2535
433 756D 696E
433 00
436 __c.88:
437 0500 4163 743A .string "Act: %5umin"
437 2020 2535
437 756D 696E
437 00
440 __c.89:
441 050d 2872 6573 .string "(reset)"
441 6574 2900
442 .text
443 .global Menu
445 Menu:
446 /* prologue: frame size=0 */
447 0028 EF92 push r14
448 002a FF92 push r15
449 002c 0F93 push r16
450 002e 1F93 push r17
451 0030 CF93 push r28
452 0032 DF93 push r29
453 /* prologue end (size=6) */
454 0034 2091 0000 lds r18,RemoteKeys
455 0038 20FF sbrs r18,0
456 003a 0AC0 rjmp .L10
457 003c 8091 0000 lds r24,MenuePunkt
458 0040 8823 tst r24
459 0042 11F0 breq .L11
460 0044 8150 subi r24,lo8(-(-1))
461 0046 02C0 rjmp .L83
462 .L11:
463 0048 8091 0000 lds r24,MaxMenue
464 .L83:
465 004c 8093 0000 sts MenuePunkt,r24
466 .L10:
467 0050 21FF sbrs r18,1
468 0052 0CC0 rjmp .L13
469 0054 9091 0000 lds r25,MenuePunkt
470 0058 8091 0000 lds r24,MaxMenue
471 005c 9817 cp r25,r24
472 005e 19F4 brne .L14
473 0060 1092 0000 sts MenuePunkt,__zero_reg__
474 0064 03C0 rjmp .L13
475 .L14:
476 0066 9F5F subi r25,lo8(-(1))
477 0068 9093 0000 sts MenuePunkt,r25
478 .L13:
479 006c 822F mov r24,r18
480 006e 9927 clr r25
481 0070 80FF sbrs r24,0
482 0072 04C0 rjmp .L16
483 0074 81FF sbrs r24,1
484 0076 02C0 rjmp .L16
485 0078 1092 0000 sts MenuePunkt,__zero_reg__
486 .L16:
487 007c 0E94 0000 call LcdClear
488 0080 8091 0000 lds r24,MenuePunkt
489 0084 282F mov r18,r24
490 0086 3327 clr r19
491 0088 50E0 ldi r21,lo8(pm(Menu_Putchar))
492 008a E52E mov r14,r21
493 008c 50E0 ldi r21,hi8(pm(Menu_Putchar))
494 008e F52E mov r15,r21
495 0090 C091 0000 lds r28,_printf_P
496 0094 D091 0000 lds r29,(_printf_P)+1
497 0098 8A30 cpi r24,lo8(10)
498 009a 98F4 brsh .L17
499 009c 81E1 ldi r24,lo8(17)
500 009e 8093 0000 sts DispPtr,r24
501 00a2 3F93 push r19
502 00a4 2F93 push r18
503 00a6 80E0 ldi r24,lo8(__c.0)
504 00a8 90E0 ldi r25,hi8(__c.0)
505 00aa 9F93 push r25
506 00ac 8F93 push r24
507 00ae FF92 push r15
508 00b0 EF92 push r14
509 00b2 FE01 movw r30,r28
510 00b4 0995 icall
511 00b6 2DB7 in r18,__SP_L__
512 00b8 3EB7 in r19,__SP_H__
513 00ba 2A5F subi r18,lo8(-(6))
514 00bc 3F4F sbci r19,hi8(-(6))
515 00be 2DBF out __SP_L__,r18
516 00c0 11C0 rjmp .L18
517 .L17:
518 00c2 80E1 ldi r24,lo8(16)
519 00c4 8093 0000 sts DispPtr,r24
520 00c8 3F93 push r19
521 00ca 2F93 push r18
522 00cc 80E0 ldi r24,lo8(__c.1)
523 00ce 90E0 ldi r25,hi8(__c.1)
524 00d0 9F93 push r25
525 00d2 8F93 push r24
526 00d4 FF92 push r15
527 00d6 EF92 push r14
528 00d8 FE01 movw r30,r28
529 00da 0995 icall
530 00dc 8DB7 in r24,__SP_L__
531 00de 9EB7 in r25,__SP_H__
532 00e0 0696 adiw r24,6
533 00e2 8DBF out __SP_L__,r24
534 .L18:
535 00e4 2091 0000 lds r18,MenuePunkt
536 00e8 822F mov r24,r18
537 00ea 9927 clr r25
538 00ec AA27 clr r26
539 00ee BB27 clr r27
540 00f0 FC01 movw r30,r24
541 00f2 4297 sbiw r24,18
542 00f4 10F0 brlo .+4
543 00f6 0C94 0000 jmp .L80
544 00fa E050 subi r30,lo8(-(pm(.L82)))
545 00fc F040 sbci r31,hi8(-(pm(.L82)))
546 00fe 40E0 ldi r20,lo8(pm(Menu_Putchar))
547 0100 E42E mov r14,r20
548 0102 40E0 ldi r20,hi8(pm(Menu_Putchar))
549 0104 F42E mov r15,r20
550 0106 C091 0000 lds r28,_printf_P
551 010a D091 0000 lds r29,(_printf_P)+1
552 010e 0C94 0000 jmp __tablejump2__
553 .data
554 .section .progmem.gcc_sw_table, "a", @progbits
555 .p2align 1
556 .L82:
557 0000 0000 .word pm(.L20)
558 0002 0000 .word pm(.L28)
559 0004 0000 .word pm(.L31)
560 0006 0000 .word pm(.L34)
561 0008 0000 .word pm(.L35)
562 000a 0000 .word pm(.L36)
563 000c 0000 .word pm(.L63)
564 000e 0000 .word pm(.L64)
565 0010 0000 .word pm(.L65)
566 0012 0000 .word pm(.L66)
567 0014 0000 .word pm(.L67)
568 0016 0000 .word pm(.L68)
569 0018 0000 .word pm(.L69)
570 001a 0000 .word pm(.L71)
571 001c 0000 .word pm(.L72)
572 001e 0000 .word pm(.L73)
573 0020 0000 .word pm(.L74)
574 0022 0000 .word pm(.L78)
575 .text
576 .L20:
577 0112 1092 0000 sts DispPtr,__zero_reg__
578 0116 80E0 ldi r24,lo8(__c.2)
579 0118 90E0 ldi r25,hi8(__c.2)
580 011a 9F93 push r25
581 011c 8F93 push r24
582 011e 00E0 ldi r16,lo8(pm(Menu_Putchar))
583 0120 10E0 ldi r17,hi8(pm(Menu_Putchar))
584 0122 FF92 push r15
585 0124 EF92 push r14
586 0126 FE01 movw r30,r28
587 0128 0995 icall
588 012a 84E1 ldi r24,lo8(20)
589 012c 8093 0000 sts DispPtr,r24
590 0130 0F90 pop __tmp_reg__
591 0132 0F90 pop __tmp_reg__
592 0134 0F90 pop __tmp_reg__
593 0136 0F90 pop __tmp_reg__
594 0138 81E6 ldi r24,lo8(97)
595 013a 90E0 ldi r25,hi8(97)
596 013c 9F93 push r25
597 013e 8F93 push r24
598 0140 82E5 ldi r24,lo8(82)
599 0142 90E0 ldi r25,hi8(82)
600 0144 9F93 push r25
601 0146 8F93 push r24
602 0148 1F92 push __zero_reg__
603 014a 1F92 push __zero_reg__
604 014c 8091 0000 lds r24,PlatinenVersion
605 0150 6AE0 ldi r22,lo8(10)
606 0152 0E94 0000 call __udivmodqi4
607 0156 892F mov r24,r25
608 0158 9927 clr r25
609 015a 9F93 push r25
610 015c 8F93 push r24
611 015e 8091 0000 lds r24,PlatinenVersion
612 0162 0E94 0000 call __udivmodqi4
613 0166 9927 clr r25
614 0168 9F93 push r25
615 016a 8F93 push r24
616 016c 80E0 ldi r24,lo8(__c.3)
617 016e 90E0 ldi r25,hi8(__c.3)
618 0170 9F93 push r25
619 0172 8F93 push r24
620 0174 FF92 push r15
621 0176 EF92 push r14
622 0178 E091 0000 lds r30,_printf_P
623 017c F091 0000 lds r31,(_printf_P)+1
624 0180 0995 icall
625 0182 88E2 ldi r24,lo8(40)
626 0184 8093 0000 sts DispPtr,r24
627 0188 2DB7 in r18,__SP_L__
628 018a 3EB7 in r19,__SP_H__
629 018c 225F subi r18,lo8(-(14))
630 018e 3F4F sbci r19,hi8(-(14))
631 0190 2DBF out __SP_L__,r18
632 0192 80E0 ldi r24,lo8(Mixer+1)
633 0194 90E0 ldi r25,hi8(Mixer+1)
634 0196 9F93 push r25
635 0198 8F93 push r24
636 019a 0E94 0000 call GetActiveParamSet
637 019e 9927 clr r25
638 01a0 9F93 push r25
639 01a2 8F93 push r24
640 01a4 80E0 ldi r24,lo8(__c.4)
641 01a6 90E0 ldi r25,hi8(__c.4)
642 01a8 9F93 push r25
643 01aa 8F93 push r24
644 01ac FF92 push r15
645 01ae EF92 push r14
646 01b0 E091 0000 lds r30,_printf_P
647 01b4 F091 0000 lds r31,(_printf_P)+1
648 01b8 0995 icall
649 01ba 8DB7 in r24,__SP_L__
650 01bc 9EB7 in r25,__SP_H__
651 01be 0896 adiw r24,8
652 01c0 8DBF out __SP_L__,r24
653 01c2 9091 0000 lds r25,VersionInfo+5
654 01c6 9923 tst r25
655 01c8 51F0 breq .L21
656 01ca 8CE3 ldi r24,lo8(60)
657 01cc 8093 0000 sts DispPtr,r24
658 01d0 892F mov r24,r25
659 01d2 9927 clr r25
660 01d4 9F93 push r25
661 01d6 8F93 push r24
662 01d8 80E0 ldi r24,lo8(__c.5)
663 01da 90E0 ldi r25,hi8(__c.5)
664 01dc 81C6 rjmp .L94
665 .L21:
666 01de 9091 0000 lds r25,MissingMotor
667 01e2 9923 tst r25
668 01e4 71F0 breq .L23
669 01e6 8CE3 ldi r24,lo8(60)
670 01e8 8093 0000 sts DispPtr,r24
671 01ec 892F mov r24,r25
672 01ee 9927 clr r25
673 01f0 9F93 push r25
674 01f2 8F93 push r24
675 01f4 80E0 ldi r24,lo8(__c.6)
676 01f6 90E0 ldi r25,hi8(__c.6)
677 01f8 9F93 push r25
678 01fa 8F93 push r24
679 01fc 1F93 push r17
680 01fe 0F93 push r16
681 0200 91C0 rjmp .L87
682 .L23:
683 0202 8091 0000 lds r24,VersionInfo+6
684 0206 84FF sbrs r24,4
685 0208 07C0 rjmp .L25
686 020a 8CE3 ldi r24,lo8(60)
687 020c 8093 0000 sts DispPtr,r24
688 0210 80E0 ldi r24,lo8(__c.7)
689 0212 90E0 ldi r25,hi8(__c.7)
690 0214 0C94 0000 jmp .L92
691 .L25:
692 0218 8091 0000 lds r24,I2CTimeout
693 021c 9091 0000 lds r25,(I2CTimeout)+1
694 0220 0697 sbiw r24,6
695 0222 10F0 brlo .+4
696 0224 0C94 0000 jmp .L19
697 0228 8CE3 ldi r24,lo8(60)
698 022a 8093 0000 sts DispPtr,r24
699 022e 80E0 ldi r24,lo8(__c.8)
700 0230 90E0 ldi r25,hi8(__c.8)
701 0232 0C94 0000 jmp .L92
702 .L28:
703 0236 8091 0000 lds r24,EE_Parameter+13
704 023a 30E0 ldi r19,lo8(pm(Menu_Putchar))
705 023c E32E mov r14,r19
706 023e 30E0 ldi r19,hi8(pm(Menu_Putchar))
707 0240 F32E mov r15,r19
708 0242 C091 0000 lds r28,_printf_P
709 0246 D091 0000 lds r29,(_printf_P)+1
710 024a 80FF sbrs r24,0
711 024c 74C0 rjmp .L29
712 024e 1092 0000 sts DispPtr,__zero_reg__
713 0252 8091 0000 lds r24,HoehenWert
714 0256 9091 0000 lds r25,(HoehenWert)+1
715 025a A091 0000 lds r26,(HoehenWert)+2
716 025e B091 0000 lds r27,(HoehenWert)+3
717 0262 BC01 movw r22,r24
718 0264 CD01 movw r24,r26
719 0266 25E0 ldi r18,lo8(5)
720 0268 30E0 ldi r19,hi8(5)
721 026a 40E0 ldi r20,hlo8(5)
722 026c 50E0 ldi r21,hhi8(5)
723 026e 0E94 0000 call __divmodsi4
724 0272 3F93 push r19
725 0274 2F93 push r18
726 0276 80E0 ldi r24,lo8(__c.9)
727 0278 90E0 ldi r25,hi8(__c.9)
728 027a 9F93 push r25
729 027c 8F93 push r24
730 027e FF92 push r15
731 0280 EF92 push r14
732 0282 FE01 movw r30,r28
733 0284 0995 icall
734 0286 84E1 ldi r24,lo8(20)
735 0288 8093 0000 sts DispPtr,r24
736 028c 2DB7 in r18,__SP_L__
737 028e 3EB7 in r19,__SP_H__
738 0290 2A5F subi r18,lo8(-(6))
739 0292 3F4F sbci r19,hi8(-(6))
740 0294 2DBF out __SP_L__,r18
741 0296 8091 0000 lds r24,SollHoehe
742 029a 9091 0000 lds r25,(SollHoehe)+1
743 029e A091 0000 lds r26,(SollHoehe)+2
744 02a2 B091 0000 lds r27,(SollHoehe)+3
745 02a6 BC01 movw r22,r24
746 02a8 CD01 movw r24,r26
747 02aa 25E0 ldi r18,lo8(5)
748 02ac 30E0 ldi r19,hi8(5)
749 02ae 40E0 ldi r20,hlo8(5)
750 02b0 50E0 ldi r21,hhi8(5)
751 02b2 0E94 0000 call __divmodsi4
752 02b6 3F93 push r19
753 02b8 2F93 push r18
754 02ba 80E0 ldi r24,lo8(__c.10)
755 02bc 90E0 ldi r25,hi8(__c.10)
756 02be 9F93 push r25
757 02c0 8F93 push r24
758 02c2 FF92 push r15
759 02c4 EF92 push r14
760 02c6 E091 0000 lds r30,_printf_P
761 02ca F091 0000 lds r31,(_printf_P)+1
762 02ce 0995 icall
763 02d0 88E2 ldi r24,lo8(40)
764 02d2 8093 0000 sts DispPtr,r24
765 02d6 8DB7 in r24,__SP_L__
766 02d8 9EB7 in r25,__SP_H__
767 02da 0696 adiw r24,6
768 02dc 8DBF out __SP_L__,r24
769 02de 8091 0000 lds r24,MessLuftdruck
770 02e2 9091 0000 lds r25,(MessLuftdruck)+1
771 02e6 9F93 push r25
772 02e8 8F93 push r24
773 02ea 80E0 ldi r24,lo8(__c.11)
774 02ec 90E0 ldi r25,hi8(__c.11)
775 02ee 9F93 push r25
776 02f0 8F93 push r24
777 02f2 FF92 push r15
778 02f4 EF92 push r14
779 02f6 E091 0000 lds r30,_printf_P
780 02fa F091 0000 lds r31,(_printf_P)+1
781 02fe 0995 icall
782 0300 8CE3 ldi r24,lo8(60)
783 0302 8093 0000 sts DispPtr,r24
784 0306 2DB7 in r18,__SP_L__
785 0308 3EB7 in r19,__SP_H__
786 030a 2A5F subi r18,lo8(-(6))
787 030c 3F4F sbci r19,hi8(-(6))
788 030e 2DBF out __SP_L__,r18
789 0310 87B5 in r24,71-0x20
790 0312 9927 clr r25
791 0314 9F93 push r25
792 0316 8F93 push r24
793 0318 80E0 ldi r24,lo8(__c.12)
794 031a 90E0 ldi r25,hi8(__c.12)
795 .L93:
796 031c 9F93 push r25
797 031e 8F93 push r24
798 0320 FF92 push r15
799 0322 EF92 push r14
800 .L87:
801 0324 E091 0000 lds r30,_printf_P
802 0328 F091 0000 lds r31,(_printf_P)+1
803 032c 0995 icall
804 032e 8DB7 in r24,__SP_L__
805 0330 9EB7 in r25,__SP_H__
806 0332 0696 adiw r24,6
807 0334 33C7 rjmp .L85
808 .L29:
809 0336 1092 0000 sts DispPtr,__zero_reg__
810 033a 80E0 ldi r24,lo8(__c.13)
811 033c 90E0 ldi r25,hi8(__c.13)
812 033e 9F93 push r25
813 0340 8F93 push r24
814 0342 FF92 push r15
815 0344 EF92 push r14
816 0346 FE01 movw r30,r28
817 0348 0995 icall
818 034a 84E1 ldi r24,lo8(20)
819 034c 8093 0000 sts DispPtr,r24
820 0350 0F90 pop __tmp_reg__
821 0352 0F90 pop __tmp_reg__
822 0354 0F90 pop __tmp_reg__
823 0356 0F90 pop __tmp_reg__
824 0358 80E0 ldi r24,lo8(__c.14)
825 035a 90E0 ldi r25,hi8(__c.14)
826 035c 9F93 push r25
827 035e 8F93 push r24
828 0360 FF92 push r15
829 0362 EF92 push r14
830 0364 E091 0000 lds r30,_printf_P
831 0368 F091 0000 lds r31,(_printf_P)+1
832 036c 0995 icall
833 036e 88E2 ldi r24,lo8(40)
834 0370 8093 0000 sts DispPtr,r24
835 0374 0F90 pop __tmp_reg__
836 0376 0F90 pop __tmp_reg__
837 0378 0F90 pop __tmp_reg__
838 037a 0F90 pop __tmp_reg__
839 037c 80E0 ldi r24,lo8(__c.15)
840 037e 90E0 ldi r25,hi8(__c.15)
841 0380 9F93 push r25
842 0382 8F93 push r24
843 0384 FF92 push r15
844 0386 EF92 push r14
845 0388 E091 0000 lds r30,_printf_P
846 038c F091 0000 lds r31,(_printf_P)+1
847 0390 0995 icall
848 0392 8CE3 ldi r24,lo8(60)
849 0394 8093 0000 sts DispPtr,r24
850 0398 0F90 pop __tmp_reg__
851 039a 0F90 pop __tmp_reg__
852 039c 0F90 pop __tmp_reg__
853 039e 0F90 pop __tmp_reg__
854 03a0 80E0 ldi r24,lo8(__c.16)
855 03a2 90E0 ldi r25,hi8(__c.16)
856 03a4 9F93 push r25
857 03a6 8F93 push r24
858 03a8 FF92 push r15
859 03aa EF92 push r14
860 03ac 0C94 0000 jmp .L86
861 .L31:
862 03b0 1092 0000 sts DispPtr,__zero_reg__
863 03b4 80E0 ldi r24,lo8(__c.17)
864 03b6 90E0 ldi r25,hi8(__c.17)
865 03b8 9F93 push r25
866 03ba 8F93 push r24
867 03bc 00E0 ldi r16,lo8(pm(Menu_Putchar))
868 03be 10E0 ldi r17,hi8(pm(Menu_Putchar))
869 03c0 FF92 push r15
870 03c2 EF92 push r14
871 03c4 FE01 movw r30,r28
872 03c6 0995 icall
873 03c8 84E1 ldi r24,lo8(20)
874 03ca 8093 0000 sts DispPtr,r24
875 03ce 0F90 pop __tmp_reg__
876 03d0 0F90 pop __tmp_reg__
877 03d2 0F90 pop __tmp_reg__
878 03d4 0F90 pop __tmp_reg__
879 03d6 8091 0000 lds r24,IntegralNick
880 03da 9091 0000 lds r25,(IntegralNick)+1
881 03de A091 0000 lds r26,(IntegralNick)+2
882 03e2 B091 0000 lds r27,(IntegralNick)+3
883 03e6 B7FF sbrs r27,7
884 03e8 04C0 rjmp .L32
885 03ea 8150 subi r24,lo8(-(1023))
886 03ec 9C4F sbci r25,hi8(-(1023))
887 03ee AF4F sbci r26,hlo8(-(1023))
888 03f0 BF4F sbci r27,hhi8(-(1023))
889 .L32:
890 03f2 2AE0 ldi r18,10
891 03f4 B595 1: asr r27
892 03f6 A795 ror r26
893 03f8 9795 ror r25
894 03fa 8795 ror r24
895 03fc 2A95 dec r18
896 03fe D1F7 brne 1b
897 0400 BF93 push r27
898 0402 AF93 push r26
899 0404 9F93 push r25
900 0406 8F93 push r24
901 0408 80E0 ldi r24,lo8(__c.18)
902 040a 90E0 ldi r25,hi8(__c.18)
903 040c 9F93 push r25
904 040e 8F93 push r24
905 0410 1F93 push r17
906 0412 0F93 push r16
907 0414 E091 0000 lds r30,_printf_P
908 0418 F091 0000 lds r31,(_printf_P)+1
909 041c 0995 icall
910 041e 88E2 ldi r24,lo8(40)
911 0420 8093 0000 sts DispPtr,r24
912 0424 2DB7 in r18,__SP_L__
913 0426 3EB7 in r19,__SP_H__
914 0428 285F subi r18,lo8(-(8))
915 042a 3F4F sbci r19,hi8(-(8))
916 042c 2DBF out __SP_L__,r18
917 042e 8091 0000 lds r24,IntegralRoll
918 0432 9091 0000 lds r25,(IntegralRoll)+1
919 0436 A091 0000 lds r26,(IntegralRoll)+2
920 043a B091 0000 lds r27,(IntegralRoll)+3
921 043e B7FF sbrs r27,7
922 0440 04C0 rjmp .L33
923 0442 8150 subi r24,lo8(-(1023))
924 0444 9C4F sbci r25,hi8(-(1023))
925 0446 AF4F sbci r26,hlo8(-(1023))
926 0448 BF4F sbci r27,hhi8(-(1023))
927 .L33:
928 044a CAE0 ldi r28,10
929 044c B595 1: asr r27
930 044e A795 ror r26
931 0450 9795 ror r25
932 0452 8795 ror r24
933 0454 CA95 dec r28
934 0456 D1F7 brne 1b
935 0458 BF93 push r27
936 045a AF93 push r26
937 045c 9F93 push r25
938 045e 8F93 push r24
939 0460 80E0 ldi r24,lo8(__c.19)
940 0462 90E0 ldi r25,hi8(__c.19)
941 0464 9F93 push r25
942 0466 8F93 push r24
943 0468 1F93 push r17
944 046a 0F93 push r16
945 046c E091 0000 lds r30,_printf_P
946 0470 F091 0000 lds r31,(_printf_P)+1
947 0474 0995 icall
948 0476 8CE3 ldi r24,lo8(60)
949 0478 8093 0000 sts DispPtr,r24
950 047c 8DB7 in r24,__SP_L__
951 047e 9EB7 in r25,__SP_H__
952 0480 0896 adiw r24,8
953 0482 8DBF out __SP_L__,r24
954 0484 8091 0000 lds r24,KompassValue
955 0488 9091 0000 lds r25,(KompassValue)+1
956 048c 9F93 push r25
957 048e 8F93 push r24
958 0490 80E0 ldi r24,lo8(__c.20)
959 0492 90E0 ldi r25,hi8(__c.20)
960 0494 9F93 push r25
961 0496 8F93 push r24
962 0498 1F93 push r17
963 049a 0F93 push r16
964 .L89:
965 049c E091 0000 lds r30,_printf_P
966 04a0 F091 0000 lds r31,(_printf_P)+1
967 04a4 0995 icall
968 04a6 2DB7 in r18,__SP_L__
969 04a8 3EB7 in r19,__SP_H__
970 04aa 2A5F subi r18,lo8(-(6))
971 04ac 3F4F sbci r19,hi8(-(6))
972 04ae 11C7 rjmp .L84
973 .L34:
974 04b0 1092 0000 sts DispPtr,__zero_reg__
975 04b4 8091 0000 lds r24,PPM_in+4
976 04b8 9091 0000 lds r25,(PPM_in+4)+1
977 04bc 9F93 push r25
978 04be 8F93 push r24
979 04c0 8091 0000 lds r24,PPM_in+2
980 04c4 9091 0000 lds r25,(PPM_in+2)+1
981 04c8 9F93 push r25
982 04ca 8F93 push r24
983 04cc 80E0 ldi r24,lo8(__c.21)
984 04ce 90E0 ldi r25,hi8(__c.21)
985 04d0 9F93 push r25
986 04d2 8F93 push r24
987 04d4 FF92 push r15
988 04d6 EF92 push r14
989 04d8 FE01 movw r30,r28
990 04da 0995 icall
991 04dc 84E1 ldi r24,lo8(20)
992 04de 8093 0000 sts DispPtr,r24
993 04e2 8DB7 in r24,__SP_L__
994 04e4 9EB7 in r25,__SP_H__
995 04e6 0896 adiw r24,8
996 04e8 8DBF out __SP_L__,r24
997 04ea 8091 0000 lds r24,PPM_in+8
998 04ee 9091 0000 lds r25,(PPM_in+8)+1
999 04f2 9F93 push r25
1000 04f4 8F93 push r24
1001 04f6 8091 0000 lds r24,PPM_in+6
1002 04fa 9091 0000 lds r25,(PPM_in+6)+1
1003 04fe 9F93 push r25
1004 0500 8F93 push r24
1005 0502 80E0 ldi r24,lo8(__c.22)
1006 0504 90E0 ldi r25,hi8(__c.22)
1007 0506 9F93 push r25
1008 0508 8F93 push r24
1009 050a FF92 push r15
1010 050c EF92 push r14
1011 050e E091 0000 lds r30,_printf_P
1012 0512 F091 0000 lds r31,(_printf_P)+1
1013 0516 0995 icall
1014 0518 88E2 ldi r24,lo8(40)
1015 051a 8093 0000 sts DispPtr,r24
1016 051e 2DB7 in r18,__SP_L__
1017 0520 3EB7 in r19,__SP_H__
1018 0522 285F subi r18,lo8(-(8))
1019 0524 3F4F sbci r19,hi8(-(8))
1020 0526 2DBF out __SP_L__,r18
1021 0528 8091 0000 lds r24,PPM_in+12
1022 052c 9091 0000 lds r25,(PPM_in+12)+1
1023 0530 9F93 push r25
1024 0532 8F93 push r24
1025 0534 8091 0000 lds r24,PPM_in+10
1026 0538 9091 0000 lds r25,(PPM_in+10)+1
1027 053c 9F93 push r25
1028 053e 8F93 push r24
1029 0540 80E0 ldi r24,lo8(__c.23)
1030 0542 90E0 ldi r25,hi8(__c.23)
1031 0544 9F93 push r25
1032 0546 8F93 push r24
1033 0548 FF92 push r15
1034 054a EF92 push r14
1035 054c E091 0000 lds r30,_printf_P
1036 0550 F091 0000 lds r31,(_printf_P)+1
1037 0554 0995 icall
1038 0556 8CE3 ldi r24,lo8(60)
1039 0558 8093 0000 sts DispPtr,r24
1040 055c 8DB7 in r24,__SP_L__
1041 055e 9EB7 in r25,__SP_H__
1042 0560 0896 adiw r24,8
1043 0562 8DBF out __SP_L__,r24
1044 0564 8091 0000 lds r24,PPM_in+16
1045 0568 9091 0000 lds r25,(PPM_in+16)+1
1046 056c 9F93 push r25
1047 056e 8F93 push r24
1048 0570 8091 0000 lds r24,PPM_in+14
1049 0574 9091 0000 lds r25,(PPM_in+14)+1
1050 0578 9F93 push r25
1051 057a 8F93 push r24
1052 057c 80E0 ldi r24,lo8(__c.24)
1053 057e 90E0 ldi r25,hi8(__c.24)
1054 0580 A2C0 rjmp .L90
1055 .L35:
1056 0582 1092 0000 sts DispPtr,__zero_reg__
1057 0586 8091 0000 lds r24,EE_Parameter+2
1058 058a E82F mov r30,r24
1059 058c FF27 clr r31
1060 058e EE0F add r30,r30
1061 0590 FF1F adc r31,r31
1062 0592 E050 subi r30,lo8(-(PPM_in))
1063 0594 F040 sbci r31,hi8(-(PPM_in))
1064 0596 8081 ld r24,Z
1065 0598 9181 ldd r25,Z+1
1066 059a 9F93 push r25
1067 059c 8F93 push r24
1068 059e 8091 0000 lds r24,EE_Parameter+1
1069 05a2 E82F mov r30,r24
1070 05a4 FF27 clr r31
1071 05a6 EE0F add r30,r30
1072 05a8 FF1F adc r31,r31
1073 05aa E050 subi r30,lo8(-(PPM_in))
1074 05ac F040 sbci r31,hi8(-(PPM_in))
1075 05ae 8081 ld r24,Z
1076 05b0 9181 ldd r25,Z+1
1077 05b2 9F93 push r25
1078 05b4 8F93 push r24
1079 05b6 80E0 ldi r24,lo8(__c.25)
1080 05b8 90E0 ldi r25,hi8(__c.25)
1081 05ba 9F93 push r25
1082 05bc 8F93 push r24
1083 05be FF92 push r15
1084 05c0 EF92 push r14
1085 05c2 FE01 movw r30,r28
1086 05c4 0995 icall
1087 05c6 84E1 ldi r24,lo8(20)
1088 05c8 8093 0000 sts DispPtr,r24
1089 05cc 8DB7 in r24,__SP_L__
1090 05ce 9EB7 in r25,__SP_H__
1091 05d0 0896 adiw r24,8
1092 05d2 8DBF out __SP_L__,r24
1093 05d4 8091 0000 lds r24,EE_Parameter+4
1094 05d8 E82F mov r30,r24
1095 05da FF27 clr r31
1096 05dc EE0F add r30,r30
1097 05de FF1F adc r31,r31
1098 05e0 E050 subi r30,lo8(-(PPM_in))
1099 05e2 F040 sbci r31,hi8(-(PPM_in))
1100 05e4 8081 ld r24,Z
1101 05e6 9181 ldd r25,Z+1
1102 05e8 9F93 push r25
1103 05ea 8F93 push r24
1104 05ec 8091 0000 lds r24,EE_Parameter+3
1105 05f0 E82F mov r30,r24
1106 05f2 FF27 clr r31
1107 05f4 EE0F add r30,r30
1108 05f6 FF1F adc r31,r31
1109 05f8 E050 subi r30,lo8(-(PPM_in))
1110 05fa F040 sbci r31,hi8(-(PPM_in))
1111 05fc 8081 ld r24,Z
1112 05fe 9181 ldd r25,Z+1
1113 0600 8858 subi r24,lo8(-(120))
1114 0602 9F4F sbci r25,hi8(-(120))
1115 0604 9F93 push r25
1116 0606 8F93 push r24
1117 0608 80E0 ldi r24,lo8(__c.26)
1118 060a 90E0 ldi r25,hi8(__c.26)
1119 060c 9F93 push r25
1120 060e 8F93 push r24
1121 0610 FF92 push r15
1122 0612 EF92 push r14
1123 0614 E091 0000 lds r30,_printf_P
1124 0618 F091 0000 lds r31,(_printf_P)+1
1125 061c 0995 icall
1126 061e 88E2 ldi r24,lo8(40)
1127 0620 8093 0000 sts DispPtr,r24
1128 0624 2DB7 in r18,__SP_L__
1129 0626 3EB7 in r19,__SP_H__
1130 0628 285F subi r18,lo8(-(8))
1131 062a 3F4F sbci r19,hi8(-(8))
1132 062c 2DBF out __SP_L__,r18
1133 062e 8091 0000 lds r24,EE_Parameter+6
1134 0632 E82F mov r30,r24
1135 0634 FF27 clr r31
1136 0636 EE0F add r30,r30
1137 0638 FF1F adc r31,r31
1138 063a E050 subi r30,lo8(-(PPM_in))
1139 063c F040 sbci r31,hi8(-(PPM_in))
1140 063e 8081 ld r24,Z
1141 0640 9181 ldd r25,Z+1
1142 0642 8259 subi r24,lo8(-(110))
1143 0644 9F4F sbci r25,hi8(-(110))
1144 0646 9F93 push r25
1145 0648 8F93 push r24
1146 064a 8091 0000 lds r24,EE_Parameter+5
1147 064e E82F mov r30,r24
1148 0650 FF27 clr r31
1149 0652 EE0F add r30,r30
1150 0654 FF1F adc r31,r31
1151 0656 E050 subi r30,lo8(-(PPM_in))
1152 0658 F040 sbci r31,hi8(-(PPM_in))
1153 065a 8081 ld r24,Z
1154 065c 9181 ldd r25,Z+1
1155 065e 8259 subi r24,lo8(-(110))
1156 0660 9F4F sbci r25,hi8(-(110))
1157 0662 9F93 push r25
1158 0664 8F93 push r24
1159 0666 80E0 ldi r24,lo8(__c.27)
1160 0668 90E0 ldi r25,hi8(__c.27)
1161 066a 9F93 push r25
1162 066c 8F93 push r24
1163 066e FF92 push r15
1164 0670 EF92 push r14
1165 0672 E091 0000 lds r30,_printf_P
1166 0676 F091 0000 lds r31,(_printf_P)+1
1167 067a 0995 icall
1168 067c 8CE3 ldi r24,lo8(60)
1169 067e 8093 0000 sts DispPtr,r24
1170 0682 8DB7 in r24,__SP_L__
1171 0684 9EB7 in r25,__SP_H__
1172 0686 0896 adiw r24,8
1173 0688 8DBF out __SP_L__,r24
1174 068a 8091 0000 lds r24,EE_Parameter+8
1175 068e E82F mov r30,r24
1176 0690 FF27 clr r31
1177 0692 EE0F add r30,r30
1178 0694 FF1F adc r31,r31
1179 0696 E050 subi r30,lo8(-(PPM_in))
1180 0698 F040 sbci r31,hi8(-(PPM_in))
1181 069a 8081 ld r24,Z
1182 069c 9181 ldd r25,Z+1
1183 069e 8259 subi r24,lo8(-(110))
1184 06a0 9F4F sbci r25,hi8(-(110))
1185 06a2 9F93 push r25
1186 06a4 8F93 push r24
1187 06a6 8091 0000 lds r24,EE_Parameter+7
1188 06aa E82F mov r30,r24
1189 06ac FF27 clr r31
1190 06ae EE0F add r30,r30
1191 06b0 FF1F adc r31,r31
1192 06b2 E050 subi r30,lo8(-(PPM_in))
1193 06b4 F040 sbci r31,hi8(-(PPM_in))
1194 06b6 8081 ld r24,Z
1195 06b8 9181 ldd r25,Z+1
1196 06ba 8259 subi r24,lo8(-(110))
1197 06bc 9F4F sbci r25,hi8(-(110))
1198 06be 9F93 push r25
1199 06c0 8F93 push r24
1200 06c2 80E0 ldi r24,lo8(__c.28)
1201 06c4 90E0 ldi r25,hi8(__c.28)
1202 .L90:
1203 06c6 9F93 push r25
1204 06c8 8F93 push r24
1205 06ca FF92 push r15
1206 06cc EF92 push r14
1207 .L91:
1208 06ce E091 0000 lds r30,_printf_P
1209 06d2 F091 0000 lds r31,(_printf_P)+1
1210 06d6 0995 icall
1211 06d8 2DB7 in r18,__SP_L__
1212 06da 3EB7 in r19,__SP_H__
1213 06dc 285F subi r18,lo8(-(8))
1214 06de 3F4F sbci r19,hi8(-(8))
1215 06e0 F8C5 rjmp .L84
1216 .L36:
1217 06e2 1092 0000 sts DispPtr,__zero_reg__
1218 06e6 80E0 ldi r24,lo8(__c.29)
1219 06e8 90E0 ldi r25,hi8(__c.29)
1220 06ea 9F93 push r25
1221 06ec 8F93 push r24
1222 06ee 00E0 ldi r16,lo8(pm(Menu_Putchar))
1223 06f0 10E0 ldi r17,hi8(pm(Menu_Putchar))
1224 06f2 FF92 push r15
1225 06f4 EF92 push r14
1226 06f6 FE01 movw r30,r28
1227 06f8 0995 icall
1228 06fa 8091 0000 lds r24,PlatinenVersion
1229 06fe 0F90 pop __tmp_reg__
1230 0700 0F90 pop __tmp_reg__
1231 0702 0F90 pop __tmp_reg__
1232 0704 0F90 pop __tmp_reg__
1233 0706 8A30 cpi r24,lo8(10)
1234 0708 09F0 breq .+2
1235 070a 9DC0 rjmp .L37
1236 070c 84E1 ldi r24,lo8(20)
1237 070e 8093 0000 sts DispPtr,r24
1238 0712 8091 0000 lds r24,AdNeutralNick
1239 0716 9091 0000 lds r25,(AdNeutralNick)+1
1240 071a 9C01 movw r18,r24
1241 071c 97FF sbrs r25,7
1242 071e 02C0 rjmp .L38
1243 0720 295F subi r18,lo8(-(7))
1244 0722 3F4F sbci r19,hi8(-(7))
1245 .L38:
1246 0724 287F andi r18,lo8(-8)
1247 0726 821B sub r24,r18
1248 0728 930B sbc r25,r19
1249 072a 9F93 push r25
1250 072c 8F93 push r24
1251 072e 8091 0000 lds r24,AdNeutralNick
1252 0732 9091 0000 lds r25,(AdNeutralNick)+1
1253 0736 97FD sbrc r25,7
1254 0738 0796 adiw r24,7
1255 .L39:
1256 073a A3E0 ldi r26,3
1257 073c 9595 1: asr r25
1258 073e 8795 ror r24
1259 0740 AA95 dec r26
1260 0742 E1F7 brne 1b
1261 0744 9F93 push r25
1262 0746 8F93 push r24
1263 0748 2091 0000 lds r18,AdNeutralNick
1264 074c 3091 0000 lds r19,(AdNeutralNick)+1
1265 0750 37FF sbrs r19,7
1266 0752 02C0 rjmp .L40
1267 0754 295F subi r18,lo8(-(7))
1268 0756 3F4F sbci r19,hi8(-(7))
1269 .L40:
1270 0758 F3E0 ldi r31,3
1271 075a 3595 1: asr r19
1272 075c 2795 ror r18
1273 075e FA95 dec r31
1274 0760 E1F7 brne 1b
1275 0762 8091 0000 lds r24,AdWertNick
1276 0766 9091 0000 lds r25,(AdWertNick)+1
1277 076a 821B sub r24,r18
1278 076c 930B sbc r25,r19
1279 076e 9F93 push r25
1280 0770 8F93 push r24
1281 0772 80E0 ldi r24,lo8(__c.30)
1282 0774 90E0 ldi r25,hi8(__c.30)
1283 0776 9F93 push r25
1284 0778 8F93 push r24
1285 077a 1F93 push r17
1286 077c 0F93 push r16
1287 077e E091 0000 lds r30,_printf_P
1288 0782 F091 0000 lds r31,(_printf_P)+1
1289 0786 0995 icall
1290 0788 88E2 ldi r24,lo8(40)
1291 078a 8093 0000 sts DispPtr,r24
1292 078e 8DB7 in r24,__SP_L__
1293 0790 9EB7 in r25,__SP_H__
1294 0792 0A96 adiw r24,10
1295 0794 8DBF out __SP_L__,r24
1296 0796 8091 0000 lds r24,AdNeutralRoll
1297 079a 9091 0000 lds r25,(AdNeutralRoll)+1
1298 079e 9C01 movw r18,r24
1299 07a0 97FF sbrs r25,7
1300 07a2 02C0 rjmp .L41
1301 07a4 295F subi r18,lo8(-(7))
1302 07a6 3F4F sbci r19,hi8(-(7))
1303 .L41:
1304 07a8 287F andi r18,lo8(-8)
1305 07aa 821B sub r24,r18
1306 07ac 930B sbc r25,r19
1307 07ae 9F93 push r25
1308 07b0 8F93 push r24
1309 07b2 8091 0000 lds r24,AdNeutralRoll
1310 07b6 9091 0000 lds r25,(AdNeutralRoll)+1
1311 07ba 97FD sbrc r25,7
1312 07bc 0796 adiw r24,7
1313 .L42:
1314 07be E3E0 ldi r30,3
1315 07c0 9595 1: asr r25
1316 07c2 8795 ror r24
1317 07c4 EA95 dec r30
1318 07c6 E1F7 brne 1b
1319 07c8 9F93 push r25
1320 07ca 8F93 push r24
1321 07cc 2091 0000 lds r18,AdNeutralRoll
1322 07d0 3091 0000 lds r19,(AdNeutralRoll)+1
1323 07d4 37FF sbrs r19,7
1324 07d6 02C0 rjmp .L43
1325 07d8 295F subi r18,lo8(-(7))
1326 07da 3F4F sbci r19,hi8(-(7))
1327 .L43:
1328 07dc 73E0 ldi r23,3
1329 07de 3595 1: asr r19
1330 07e0 2795 ror r18
1331 07e2 7A95 dec r23
1332 07e4 E1F7 brne 1b
1333 07e6 8091 0000 lds r24,AdWertRoll
1334 07ea 9091 0000 lds r25,(AdWertRoll)+1
1335 07ee 821B sub r24,r18
1336 07f0 930B sbc r25,r19
1337 07f2 9F93 push r25
1338 07f4 8F93 push r24
1339 07f6 80E0 ldi r24,lo8(__c.31)
1340 07f8 90E0 ldi r25,hi8(__c.31)
1341 07fa 9F93 push r25
1342 07fc 8F93 push r24
1343 07fe 1F93 push r17
1344 0800 0F93 push r16
1345 0802 E091 0000 lds r30,_printf_P
1346 0806 F091 0000 lds r31,(_printf_P)+1
1347 080a 0995 icall
1348 080c 8CE3 ldi r24,lo8(60)
1349 080e 8093 0000 sts DispPtr,r24
1350 0812 2DB7 in r18,__SP_L__
1351 0814 3EB7 in r19,__SP_H__
1352 0816 265F subi r18,lo8(-(10))
1353 0818 3F4F sbci r19,hi8(-(10))
1354 081a 2DBF out __SP_L__,r18
1355 081c 8091 0000 lds r24,AdNeutralGier
1356 0820 9091 0000 lds r25,(AdNeutralGier)+1
1357 0824 9F93 push r25
1358 0826 8F93 push r24
1359 0828 8091 0000 lds r24,AdNeutralGier
1360 082c 9091 0000 lds r25,(AdNeutralGier)+1
1361 0830 2091 0000 lds r18,AdWertGier
1362 0834 3091 0000 lds r19,(AdWertGier)+1
1363 0838 821B sub r24,r18
1364 083a 930B sbc r25,r19
1365 083c 9F93 push r25
1366 083e 8F93 push r24
1367 0840 80E0 ldi r24,lo8(__c.32)
1368 0842 90E0 ldi r25,hi8(__c.32)
1369 0844 A7C3 rjmp .L88
1370 .L37:
1371 0846 8B30 cpi r24,lo8(11)
1372 0848 19F0 breq .L46
1373 084a 8431 cpi r24,lo8(20)
1374 084c 08F4 brsh .+2
1375 084e ADC0 rjmp .L45
1376 .L46:
1377 0850 84E1 ldi r24,lo8(20)
1378 0852 8093 0000 sts DispPtr,r24
1379 0856 8091 0000 lds r24,AdNeutralNick
1380 085a 9091 0000 lds r25,(AdNeutralNick)+1
1381 085e 9C01 movw r18,r24
1382 0860 97FF sbrs r25,7
1383 0862 02C0 rjmp .L47
1384 0864 215F subi r18,lo8(-(15))
1385 0866 3F4F sbci r19,hi8(-(15))
1386 .L47:
1387 0868 207F andi r18,lo8(-16)
1388 086a 821B sub r24,r18
1389 086c 930B sbc r25,r19
1390 086e 97FD sbrc r25,7
1391 0870 0196 adiw r24,1
1392 .L48:
1393 0872 9595 asr r25
1394 0874 8795 ror r24
1395 0876 9F93 push r25
1396 0878 8F93 push r24
1397 087a 8091 0000 lds r24,AdNeutralNick
1398 087e 9091 0000 lds r25,(AdNeutralNick)+1
1399 0882 97FD sbrc r25,7
1400 0884 0F96 adiw r24,15
1401 .L49:
1402 0886 54E0 ldi r21,4
1403 0888 9595 1: asr r25
1404 088a 8795 ror r24
1405 088c 5A95 dec r21
1406 088e E1F7 brne 1b
1407 0890 9F93 push r25
1408 0892 8F93 push r24
1409 0894 2091 0000 lds r18,AdNeutralNick
1410 0898 3091 0000 lds r19,(AdNeutralNick)+1
1411 089c 37FF sbrs r19,7
1412 089e 02C0 rjmp .L50
1413 08a0 295F subi r18,lo8(-(7))
1414 08a2 3F4F sbci r19,hi8(-(7))
1415 .L50:
1416 08a4 43E0 ldi r20,3
1417 08a6 3595 1: asr r19
1418 08a8 2795 ror r18
1419 08aa 4A95 dec r20
1420 08ac E1F7 brne 1b
1421 08ae 8091 0000 lds r24,AdWertNick
1422 08b2 9091 0000 lds r25,(AdWertNick)+1
1423 08b6 821B sub r24,r18
1424 08b8 930B sbc r25,r19
1425 08ba 9F93 push r25
1426 08bc 8F93 push r24
1427 08be 80E0 ldi r24,lo8(__c.33)
1428 08c0 90E0 ldi r25,hi8(__c.33)
1429 08c2 9F93 push r25
1430 08c4 8F93 push r24
1431 08c6 1F93 push r17
1432 08c8 0F93 push r16
1433 08ca E091 0000 lds r30,_printf_P
1434 08ce F091 0000 lds r31,(_printf_P)+1
1435 08d2 0995 icall
1436 08d4 88E2 ldi r24,lo8(40)
1437 08d6 8093 0000 sts DispPtr,r24
1438 08da 2DB7 in r18,__SP_L__
1439 08dc 3EB7 in r19,__SP_H__
1440 08de 265F subi r18,lo8(-(10))
1441 08e0 3F4F sbci r19,hi8(-(10))
1442 08e2 2DBF out __SP_L__,r18
1443 08e4 8091 0000 lds r24,AdNeutralRoll
1444 08e8 9091 0000 lds r25,(AdNeutralRoll)+1
1445 08ec 9C01 movw r18,r24
1446 08ee 97FF sbrs r25,7
1447 08f0 02C0 rjmp .L51
1448 08f2 215F subi r18,lo8(-(15))
1449 08f4 3F4F sbci r19,hi8(-(15))
1450 .L51:
1451 08f6 207F andi r18,lo8(-16)
1452 08f8 821B sub r24,r18
1453 08fa 930B sbc r25,r19
1454 08fc 97FD sbrc r25,7
1455 08fe 0196 adiw r24,1
1456 .L52:
1457 0900 9595 asr r25
1458 0902 8795 ror r24
1459 0904 9F93 push r25
1460 0906 8F93 push r24
1461 0908 8091 0000 lds r24,AdNeutralRoll
1462 090c 9091 0000 lds r25,(AdNeutralRoll)+1
1463 0910 97FD sbrc r25,7
1464 0912 0F96 adiw r24,15
1465 .L53:
1466 0914 C4E0 ldi r28,4
1467 0916 9595 1: asr r25
1468 0918 8795 ror r24
1469 091a CA95 dec r28
1470 091c E1F7 brne 1b
1471 091e 9F93 push r25
1472 0920 8F93 push r24
1473 0922 2091 0000 lds r18,AdNeutralRoll
1474 0926 3091 0000 lds r19,(AdNeutralRoll)+1
1475 092a 37FF sbrs r19,7
1476 092c 02C0 rjmp .L54
1477 092e 295F subi r18,lo8(-(7))
1478 0930 3F4F sbci r19,hi8(-(7))
1479 .L54:
1480 0932 B3E0 ldi r27,3
1481 0934 3595 1: asr r19
1482 0936 2795 ror r18
1483 0938 BA95 dec r27
1484 093a E1F7 brne 1b
1485 093c 8091 0000 lds r24,AdWertRoll
1486 0940 9091 0000 lds r25,(AdWertRoll)+1
1487 0944 821B sub r24,r18
1488 0946 930B sbc r25,r19
1489 0948 9F93 push r25
1490 094a 8F93 push r24
1491 094c 80E0 ldi r24,lo8(__c.34)
1492 094e 90E0 ldi r25,hi8(__c.34)
1493 0950 9F93 push r25
1494 0952 8F93 push r24
1495 0954 1F93 push r17
1496 0956 0F93 push r16
1497 0958 E091 0000 lds r30,_printf_P
1498 095c F091 0000 lds r31,(_printf_P)+1
1499 0960 0995 icall
1500 0962 8CE3 ldi r24,lo8(60)
1501 0964 8093 0000 sts DispPtr,r24
1502 0968 8DB7 in r24,__SP_L__
1503 096a 9EB7 in r25,__SP_H__
1504 096c 0A96 adiw r24,10
1505 096e 8DBF out __SP_L__,r24
1506 0970 8091 0000 lds r24,AdNeutralGier
1507 0974 9091 0000 lds r25,(AdNeutralGier)+1
1508 0978 97FD sbrc r25,7
1509 097a 0196 adiw r24,1
1510 .L55:
1511 097c 9595 asr r25
1512 097e 8795 ror r24
1513 0980 9F93 push r25
1514 0982 8F93 push r24
1515 0984 8091 0000 lds r24,AdNeutralGier
1516 0988 9091 0000 lds r25,(AdNeutralGier)+1
1517 098c 2091 0000 lds r18,AdWertGier
1518 0990 3091 0000 lds r19,(AdWertGier)+1
1519 0994 821B sub r24,r18
1520 0996 930B sbc r25,r19
1521 0998 9F93 push r25
1522 099a 8F93 push r24
1523 099c 80E0 ldi r24,lo8(__c.35)
1524 099e 90E0 ldi r25,hi8(__c.35)
1525 09a0 9F93 push r25
1526 09a2 8F93 push r24
1527 09a4 1F93 push r17
1528 09a6 0F93 push r16
1529 09a8 92CE rjmp .L91
1530 .L45:
1531 09aa 8D30 cpi r24,lo8(13)
1532 09ac 09F0 breq .+2
1533 09ae F6C5 rjmp .L19
1534 09b0 84E1 ldi r24,lo8(20)
1535 09b2 8093 0000 sts DispPtr,r24
1536 09b6 8091 0000 lds r24,AnalogOffsetNick
1537 09ba 9927 clr r25
1538 09bc 9F93 push r25
1539 09be 8F93 push r24
1540 09c0 8091 0000 lds r24,AdNeutralNick
1541 09c4 9091 0000 lds r25,(AdNeutralNick)+1
1542 09c8 97FD sbrc r25,7
1543 09ca 0F96 adiw r24,15
1544 .L58:
1545 09cc F4E0 ldi r31,4
1546 09ce 9595 1: asr r25
1547 09d0 8795 ror r24
1548 09d2 FA95 dec r31
1549 09d4 E1F7 brne 1b
1550 09d6 9F93 push r25
1551 09d8 8F93 push r24
1552 09da 2091 0000 lds r18,AdNeutralNick
1553 09de 3091 0000 lds r19,(AdNeutralNick)+1
1554 09e2 37FF sbrs r19,7
1555 09e4 02C0 rjmp .L59
1556 09e6 295F subi r18,lo8(-(7))
1557 09e8 3F4F sbci r19,hi8(-(7))
1558 .L59:
1559 09ea E3E0 ldi r30,3
1560 09ec 3595 1: asr r19
1561 09ee 2795 ror r18
1562 09f0 EA95 dec r30
1563 09f2 E1F7 brne 1b
1564 09f4 8091 0000 lds r24,AdWertNick
1565 09f8 9091 0000 lds r25,(AdWertNick)+1
1566 09fc 821B sub r24,r18
1567 09fe 930B sbc r25,r19
1568 0a00 9F93 push r25
1569 0a02 8F93 push r24
1570 0a04 80E0 ldi r24,lo8(__c.36)
1571 0a06 90E0 ldi r25,hi8(__c.36)
1572 0a08 9F93 push r25
1573 0a0a 8F93 push r24
1574 0a0c 1F93 push r17
1575 0a0e 0F93 push r16
1576 0a10 E091 0000 lds r30,_printf_P
1577 0a14 F091 0000 lds r31,(_printf_P)+1
1578 0a18 0995 icall
1579 0a1a 88E2 ldi r24,lo8(40)
1580 0a1c 8093 0000 sts DispPtr,r24
1581 0a20 8DB7 in r24,__SP_L__
1582 0a22 9EB7 in r25,__SP_H__
1583 0a24 0A96 adiw r24,10
1584 0a26 8DBF out __SP_L__,r24
1585 0a28 8091 0000 lds r24,AnalogOffsetRoll
1586 0a2c 9927 clr r25
1587 0a2e 9F93 push r25
1588 0a30 8F93 push r24
1589 0a32 8091 0000 lds r24,AdNeutralRoll
1590 0a36 9091 0000 lds r25,(AdNeutralRoll)+1
1591 0a3a 97FD sbrc r25,7
1592 0a3c 0F96 adiw r24,15
1593 .L60:
1594 0a3e 74E0 ldi r23,4
1595 0a40 9595 1: asr r25
1596 0a42 8795 ror r24
1597 0a44 7A95 dec r23
1598 0a46 E1F7 brne 1b
1599 0a48 9F93 push r25
1600 0a4a 8F93 push r24
1601 0a4c 2091 0000 lds r18,AdNeutralRoll
1602 0a50 3091 0000 lds r19,(AdNeutralRoll)+1
1603 0a54 37FF sbrs r19,7
1604 0a56 02C0 rjmp .L61
1605 0a58 295F subi r18,lo8(-(7))
1606 0a5a 3F4F sbci r19,hi8(-(7))
1607 .L61:
1608 0a5c 63E0 ldi r22,3
1609 0a5e 3595 1: asr r19
1610 0a60 2795 ror r18
1611 0a62 6A95 dec r22
1612 0a64 E1F7 brne 1b
1613 0a66 8091 0000 lds r24,AdWertRoll
1614 0a6a 9091 0000 lds r25,(AdWertRoll)+1
1615 0a6e 821B sub r24,r18
1616 0a70 930B sbc r25,r19
1617 0a72 9F93 push r25
1618 0a74 8F93 push r24
1619 0a76 80E0 ldi r24,lo8(__c.37)
1620 0a78 90E0 ldi r25,hi8(__c.37)
1621 0a7a 9F93 push r25
1622 0a7c 8F93 push r24
1623 0a7e 1F93 push r17
1624 0a80 0F93 push r16
1625 0a82 E091 0000 lds r30,_printf_P
1626 0a86 F091 0000 lds r31,(_printf_P)+1
1627 0a8a 0995 icall
1628 0a8c 8CE3 ldi r24,lo8(60)
1629 0a8e 8093 0000 sts DispPtr,r24
1630 0a92 2DB7 in r18,__SP_L__
1631 0a94 3EB7 in r19,__SP_H__
1632 0a96 265F subi r18,lo8(-(10))
1633 0a98 3F4F sbci r19,hi8(-(10))
1634 0a9a 2DBF out __SP_L__,r18
1635 0a9c 8091 0000 lds r24,AnalogOffsetGier
1636 0aa0 9927 clr r25
1637 0aa2 9F93 push r25
1638 0aa4 8F93 push r24
1639 0aa6 8091 0000 lds r24,AdNeutralGier
1640 0aaa 9091 0000 lds r25,(AdNeutralGier)+1
1641 0aae 97FD sbrc r25,7
1642 0ab0 0196 adiw r24,1
1643 .L62:
1644 0ab2 9595 asr r25
1645 0ab4 8795 ror r24
1646 0ab6 9F93 push r25
1647 0ab8 8F93 push r24
1648 0aba 8091 0000 lds r24,AdNeutralGier
1649 0abe 9091 0000 lds r25,(AdNeutralGier)+1
1650 0ac2 2091 0000 lds r18,AdWertGier
1651 0ac6 3091 0000 lds r19,(AdWertGier)+1
1652 0aca 821B sub r24,r18
1653 0acc 930B sbc r25,r19
1654 0ace 9F93 push r25
1655 0ad0 8F93 push r24
1656 0ad2 80E0 ldi r24,lo8(__c.38)
1657 0ad4 90E0 ldi r25,hi8(__c.38)
1658 0ad6 9F93 push r25
1659 0ad8 8F93 push r24
1660 0ada 1F93 push r17
1661 0adc 0F93 push r16
1662 0ade E091 0000 lds r30,_printf_P
1663 0ae2 F091 0000 lds r31,(_printf_P)+1
1664 0ae6 0995 icall
1665 0ae8 8DB7 in r24,__SP_L__
1666 0aea 9EB7 in r25,__SP_H__
1667 0aec 0A96 adiw r24,10
1668 0aee 56C3 rjmp .L85
1669 .L63:
1670 0af0 1092 0000 sts DispPtr,__zero_reg__
1671 0af4 80E0 ldi r24,lo8(__c.39)
1672 0af6 90E0 ldi r25,hi8(__c.39)
1673 0af8 9F93 push r25
1674 0afa 8F93 push r24
1675 0afc FF92 push r15
1676 0afe EF92 push r14
1677 0b00 FE01 movw r30,r28
1678 0b02 0995 icall
1679 0b04 84E1 ldi r24,lo8(20)
1680 0b06 8093 0000 sts DispPtr,r24
1681 0b0a 0F90 pop __tmp_reg__
1682 0b0c 0F90 pop __tmp_reg__
1683 0b0e 0F90 pop __tmp_reg__
1684 0b10 0F90 pop __tmp_reg__
1685 0b12 8091 0000 lds r24,NeutralAccX
1686 0b16 9091 0000 lds r25,(NeutralAccX)+1
1687 0b1a 9F93 push r25
1688 0b1c 8F93 push r24
1689 0b1e 8091 0000 lds r24,AdWertAccNick
1690 0b22 9091 0000 lds r25,(AdWertAccNick)+1
1691 0b26 9F93 push r25
1692 0b28 8F93 push r24
1693 0b2a 80E0 ldi r24,lo8(__c.40)
1694 0b2c 90E0 ldi r25,hi8(__c.40)
1695 0b2e 9F93 push r25
1696 0b30 8F93 push r24
1697 0b32 FF92 push r15
1698 0b34 EF92 push r14
1699 0b36 E091 0000 lds r30,_printf_P
1700 0b3a F091 0000 lds r31,(_printf_P)+1
1701 0b3e 0995 icall
1702 0b40 88E2 ldi r24,lo8(40)
1703 0b42 8093 0000 sts DispPtr,r24
1704 0b46 2DB7 in r18,__SP_L__
1705 0b48 3EB7 in r19,__SP_H__
1706 0b4a 285F subi r18,lo8(-(8))
1707 0b4c 3F4F sbci r19,hi8(-(8))
1708 0b4e 2DBF out __SP_L__,r18
1709 0b50 8091 0000 lds r24,NeutralAccY
1710 0b54 9091 0000 lds r25,(NeutralAccY)+1
1711 0b58 9F93 push r25
1712 0b5a 8F93 push r24
1713 0b5c 8091 0000 lds r24,AdWertAccRoll
1714 0b60 9091 0000 lds r25,(AdWertAccRoll)+1
1715 0b64 9F93 push r25
1716 0b66 8F93 push r24
1717 0b68 80E0 ldi r24,lo8(__c.41)
1718 0b6a 90E0 ldi r25,hi8(__c.41)
1719 0b6c 9F93 push r25
1720 0b6e 8F93 push r24
1721 0b70 FF92 push r15
1722 0b72 EF92 push r14
1723 0b74 E091 0000 lds r30,_printf_P
1724 0b78 F091 0000 lds r31,(_printf_P)+1
1725 0b7c 0995 icall
1726 0b7e 8CE3 ldi r24,lo8(60)
1727 0b80 8093 0000 sts DispPtr,r24
1728 0b84 8DB7 in r24,__SP_L__
1729 0b86 9EB7 in r25,__SP_H__
1730 0b88 0896 adiw r24,8
1731 0b8a 8DBF out __SP_L__,r24
1732 0b8c 8091 0000 lds r24,NeutralAccZ
1733 0b90 9091 0000 lds r25,(NeutralAccZ)+1
1734 0b94 9F93 push r25
1735 0b96 8F93 push r24
1736 0b98 8091 0000 lds r24,AdWertAccHoch
1737 0b9c 9091 0000 lds r25,(AdWertAccHoch)+1
1738 0ba0 9F93 push r25
1739 0ba2 8F93 push r24
1740 0ba4 80E0 ldi r24,lo8(__c.42)
1741 0ba6 90E0 ldi r25,hi8(__c.42)
1742 0ba8 8ECD rjmp .L90
1743 .L64:
1744 0baa 1092 0000 sts DispPtr,__zero_reg__
1745 0bae 8091 0000 lds r24,UBat
1746 0bb2 9091 0000 lds r25,(UBat)+1
1747 0bb6 6AE0 ldi r22,lo8(10)
1748 0bb8 70E0 ldi r23,hi8(10)
1749 0bba 0E94 0000 call __divmodhi4
1750 0bbe 9F93 push r25
1751 0bc0 8F93 push r24
1752 0bc2 8091 0000 lds r24,UBat
1753 0bc6 9091 0000 lds r25,(UBat)+1
1754 0bca 6AE0 ldi r22,lo8(10)
1755 0bcc 70E0 ldi r23,hi8(10)
1756 0bce 0E94 0000 call __divmodhi4
1757 0bd2 7F93 push r23
1758 0bd4 6F93 push r22
1759 0bd6 80E0 ldi r24,lo8(__c.43)
1760 0bd8 90E0 ldi r25,hi8(__c.43)
1761 0bda 9F93 push r25
1762 0bdc 8F93 push r24
1763 0bde FF92 push r15
1764 0be0 EF92 push r14
1765 0be2 FE01 movw r30,r28
1766 0be4 0995 icall
1767 0be6 84E1 ldi r24,lo8(20)
1768 0be8 8093 0000 sts DispPtr,r24
1769 0bec 8DB7 in r24,__SP_L__
1770 0bee 9EB7 in r25,__SP_H__
1771 0bf0 0896 adiw r24,8
1772 0bf2 8DBF out __SP_L__,r24
1773 0bf4 8091 0000 lds r24,Capacity
1774 0bf8 9091 0000 lds r25,(Capacity)+1
1775 0bfc 6AE0 ldi r22,lo8(10)
1776 0bfe 70E0 ldi r23,hi8(10)
1777 0c00 0E94 0000 call __udivmodhi4
1778 0c04 9F93 push r25
1779 0c06 8F93 push r24
1780 0c08 8091 0000 lds r24,Capacity
1781 0c0c 9091 0000 lds r25,(Capacity)+1
1782 0c10 6AE0 ldi r22,lo8(10)
1783 0c12 70E0 ldi r23,hi8(10)
1784 0c14 0E94 0000 call __udivmodhi4
1785 0c18 7F93 push r23
1786 0c1a 6F93 push r22
1787 0c1c 80E0 ldi r24,lo8(__c.44)
1788 0c1e 90E0 ldi r25,hi8(__c.44)
1789 0c20 9F93 push r25
1790 0c22 8F93 push r24
1791 0c24 FF92 push r15
1792 0c26 EF92 push r14
1793 0c28 E091 0000 lds r30,_printf_P
1794 0c2c F091 0000 lds r31,(_printf_P)+1
1795 0c30 0995 icall
1796 0c32 88E2 ldi r24,lo8(40)
1797 0c34 8093 0000 sts DispPtr,r24
1798 0c38 2DB7 in r18,__SP_L__
1799 0c3a 3EB7 in r19,__SP_H__
1800 0c3c 285F subi r18,lo8(-(8))
1801 0c3e 3F4F sbci r19,hi8(-(8))
1802 0c40 2DBF out __SP_L__,r18
1803 0c42 8091 0000 lds r24,Capacity+2
1804 0c46 9091 0000 lds r25,(Capacity+2)+1
1805 0c4a 9F93 push r25
1806 0c4c 8F93 push r24
1807 0c4e 80E0 ldi r24,lo8(__c.45)
1808 0c50 90E0 ldi r25,hi8(__c.45)
1809 0c52 9F93 push r25
1810 0c54 8F93 push r24
1811 0c56 FF92 push r15
1812 0c58 EF92 push r14
1813 0c5a E091 0000 lds r30,_printf_P
1814 0c5e F091 0000 lds r31,(_printf_P)+1
1815 0c62 0995 icall
1816 0c64 8CE3 ldi r24,lo8(60)
1817 0c66 8093 0000 sts DispPtr,r24
1818 0c6a 8DB7 in r24,__SP_L__
1819 0c6c 9EB7 in r25,__SP_H__
1820 0c6e 0696 adiw r24,6
1821 0c70 8DBF out __SP_L__,r24
1822 0c72 8091 0000 lds r24,Capacity+4
1823 0c76 9091 0000 lds r25,(Capacity+4)+1
1824 0c7a 9F93 push r25
1825 0c7c 8F93 push r24
1826 0c7e 80E0 ldi r24,lo8(__c.46)
1827 0c80 90E0 ldi r25,hi8(__c.46)
1828 0c82 2EC1 rjmp .L94
1829 .L65:
1830 0c84 1092 0000 sts DispPtr,__zero_reg__
1831 0c88 80E0 ldi r24,lo8(__c.47)
1832 0c8a 90E0 ldi r25,hi8(__c.47)
1833 0c8c 9F93 push r25
1834 0c8e 8F93 push r24
1835 0c90 FF92 push r15
1836 0c92 EF92 push r14
1837 0c94 FE01 movw r30,r28
1838 0c96 0995 icall
1839 0c98 84E1 ldi r24,lo8(20)
1840 0c9a 8093 0000 sts DispPtr,r24
1841 0c9e 0F90 pop __tmp_reg__
1842 0ca0 0F90 pop __tmp_reg__
1843 0ca2 0F90 pop __tmp_reg__
1844 0ca4 0F90 pop __tmp_reg__
1845 0ca6 8091 0000 lds r24,PPM_in
1846 0caa 9091 0000 lds r25,(PPM_in)+1
1847 0cae 9F93 push r25
1848 0cb0 8F93 push r24
1849 0cb2 80E0 ldi r24,lo8(__c.48)
1850 0cb4 90E0 ldi r25,hi8(__c.48)
1851 0cb6 9F93 push r25
1852 0cb8 8F93 push r24
1853 0cba FF92 push r15
1854 0cbc EF92 push r14
1855 0cbe E091 0000 lds r30,_printf_P
1856 0cc2 F091 0000 lds r31,(_printf_P)+1
1857 0cc6 0995 icall
1858 0cc8 88E2 ldi r24,lo8(40)
1859 0cca 8093 0000 sts DispPtr,r24
1860 0cce 8DB7 in r24,__SP_L__
1861 0cd0 9EB7 in r25,__SP_H__
1862 0cd2 0696 adiw r24,6
1863 0cd4 8DBF out __SP_L__,r24
1864 0cd6 8091 0000 lds r24,SenderOkay
1865 0cda 9927 clr r25
1866 0cdc 9F93 push r25
1867 0cde 8F93 push r24
1868 0ce0 80E0 ldi r24,lo8(__c.49)
1869 0ce2 90E0 ldi r25,hi8(__c.49)
1870 0ce4 9F93 push r25
1871 0ce6 8F93 push r24
1872 0ce8 FF92 push r15
1873 0cea EF92 push r14
1874 0cec E091 0000 lds r30,_printf_P
1875 0cf0 F091 0000 lds r31,(_printf_P)+1
1876 0cf4 0995 icall
1877 0cf6 8CE3 ldi r24,lo8(60)
1878 0cf8 8093 0000 sts DispPtr,r24
1879 0cfc 2DB7 in r18,__SP_L__
1880 0cfe 3EB7 in r19,__SP_H__
1881 0d00 2A5F subi r18,lo8(-(6))
1882 0d02 3F4F sbci r19,hi8(-(6))
1883 0d04 2DBF out __SP_L__,r18
1884 0d06 8091 0000 lds r24,Channels
1885 0d0a 9927 clr r25
1886 0d0c 0197 sbiw r24,1
1887 0d0e 9F93 push r25
1888 0d10 8F93 push r24
1889 0d12 80E0 ldi r24,lo8(__c.50)
1890 0d14 90E0 ldi r25,hi8(__c.50)
1891 0d16 02CB rjmp .L93
1892 .L66:
1893 0d18 1092 0000 sts DispPtr,__zero_reg__
1894 0d1c 80E0 ldi r24,lo8(__c.51)
1895 0d1e 90E0 ldi r25,hi8(__c.51)
1896 0d20 9F93 push r25
1897 0d22 8F93 push r24
1898 0d24 FF92 push r15
1899 0d26 EF92 push r14
1900 0d28 FE01 movw r30,r28
1901 0d2a 0995 icall
1902 0d2c 84E1 ldi r24,lo8(20)
1903 0d2e 8093 0000 sts DispPtr,r24
1904 0d32 0F90 pop __tmp_reg__
1905 0d34 0F90 pop __tmp_reg__
1906 0d36 0F90 pop __tmp_reg__
1907 0d38 0F90 pop __tmp_reg__
1908 0d3a 8091 0000 lds r24,KompassRichtung
1909 0d3e 9091 0000 lds r25,(KompassRichtung)+1
1910 0d42 9F93 push r25
1911 0d44 8F93 push r24
1912 0d46 80E0 ldi r24,lo8(__c.52)
1913 0d48 90E0 ldi r25,hi8(__c.52)
1914 0d4a 9F93 push r25
1915 0d4c 8F93 push r24
1916 0d4e FF92 push r15
1917 0d50 EF92 push r14
1918 0d52 E091 0000 lds r30,_printf_P
1919 0d56 F091 0000 lds r31,(_printf_P)+1
1920 0d5a 0995 icall
1921 0d5c 88E2 ldi r24,lo8(40)
1922 0d5e 8093 0000 sts DispPtr,r24
1923 0d62 2DB7 in r18,__SP_L__
1924 0d64 3EB7 in r19,__SP_H__
1925 0d66 2A5F subi r18,lo8(-(6))
1926 0d68 3F4F sbci r19,hi8(-(6))
1927 0d6a 2DBF out __SP_L__,r18
1928 0d6c 8091 0000 lds r24,KompassValue
1929 0d70 9091 0000 lds r25,(KompassValue)+1
1930 0d74 9F93 push r25
1931 0d76 8F93 push r24
1932 0d78 80E0 ldi r24,lo8(__c.53)
1933 0d7a 90E0 ldi r25,hi8(__c.53)
1934 0d7c 9F93 push r25
1935 0d7e 8F93 push r24
1936 0d80 FF92 push r15
1937 0d82 EF92 push r14
1938 0d84 E091 0000 lds r30,_printf_P
1939 0d88 F091 0000 lds r31,(_printf_P)+1
1940 0d8c 0995 icall
1941 0d8e 8CE3 ldi r24,lo8(60)
1942 0d90 8093 0000 sts DispPtr,r24
1943 0d94 8DB7 in r24,__SP_L__
1944 0d96 9EB7 in r25,__SP_H__
1945 0d98 0696 adiw r24,6
1946 0d9a 8DBF out __SP_L__,r24
1947 0d9c 8091 0000 lds r24,KompassStartwert
1948 0da0 9091 0000 lds r25,(KompassStartwert)+1
1949 0da4 9F93 push r25
1950 0da6 8F93 push r24
1951 0da8 80E0 ldi r24,lo8(__c.54)
1952 0daa 90E0 ldi r25,hi8(__c.54)
1953 0dac 99C0 rjmp .L94
1954 .L67:
1955 0dae 1092 0000 sts DispPtr,__zero_reg__
1956 0db2 8091 0000 lds r24,Poti
1957 0db6 9927 clr r25
1958 0db8 9F93 push r25
1959 0dba 8F93 push r24
1960 0dbc 80E0 ldi r24,lo8(__c.55)
1961 0dbe 90E0 ldi r25,hi8(__c.55)
1962 0dc0 9F93 push r25
1963 0dc2 8F93 push r24
1964 0dc4 FF92 push r15
1965 0dc6 EF92 push r14
1966 0dc8 FE01 movw r30,r28
1967 0dca 0995 icall
1968 0dcc 84E1 ldi r24,lo8(20)
1969 0dce 8093 0000 sts DispPtr,r24
1970 0dd2 8DB7 in r24,__SP_L__
1971 0dd4 9EB7 in r25,__SP_H__
1972 0dd6 0696 adiw r24,6
1973 0dd8 8DBF out __SP_L__,r24
1974 0dda 8091 0000 lds r24,Poti+1
1975 0dde 9927 clr r25
1976 0de0 9F93 push r25
1977 0de2 8F93 push r24
1978 0de4 80E0 ldi r24,lo8(__c.56)
1979 0de6 90E0 ldi r25,hi8(__c.56)
1980 0de8 9F93 push r25
1981 0dea 8F93 push r24
1982 0dec FF92 push r15
1983 0dee EF92 push r14
1984 0df0 E091 0000 lds r30,_printf_P
1985 0df4 F091 0000 lds r31,(_printf_P)+1
1986 0df8 0995 icall
1987 0dfa 88E2 ldi r24,lo8(40)
1988 0dfc 8093 0000 sts DispPtr,r24
1989 0e00 2DB7 in r18,__SP_L__
1990 0e02 3EB7 in r19,__SP_H__
1991 0e04 2A5F subi r18,lo8(-(6))
1992 0e06 3F4F sbci r19,hi8(-(6))
1993 0e08 2DBF out __SP_L__,r18
1994 0e0a 8091 0000 lds r24,Poti+2
1995 0e0e 9927 clr r25
1996 0e10 9F93 push r25
1997 0e12 8F93 push r24
1998 0e14 80E0 ldi r24,lo8(__c.57)
1999 0e16 90E0 ldi r25,hi8(__c.57)
2000 0e18 9F93 push r25
2001 0e1a 8F93 push r24
2002 0e1c FF92 push r15
2003 0e1e EF92 push r14
2004 0e20 E091 0000 lds r30,_printf_P
2005 0e24 F091 0000 lds r31,(_printf_P)+1
2006 0e28 0995 icall
2007 0e2a 8CE3 ldi r24,lo8(60)
2008 0e2c 8093 0000 sts DispPtr,r24
2009 0e30 8DB7 in r24,__SP_L__
2010 0e32 9EB7 in r25,__SP_H__
2011 0e34 0696 adiw r24,6
2012 0e36 8DBF out __SP_L__,r24
2013 0e38 8091 0000 lds r24,Poti+3
2014 0e3c 9927 clr r25
2015 0e3e 9F93 push r25
2016 0e40 8F93 push r24
2017 0e42 80E0 ldi r24,lo8(__c.58)
2018 0e44 90E0 ldi r25,hi8(__c.58)
2019 0e46 4CC0 rjmp .L94
2020 .L68:
2021 0e48 1092 0000 sts DispPtr,__zero_reg__
2022 0e4c 8091 0000 lds r24,Poti+4
2023 0e50 9927 clr r25
2024 0e52 9F93 push r25
2025 0e54 8F93 push r24
2026 0e56 80E0 ldi r24,lo8(__c.59)
2027 0e58 90E0 ldi r25,hi8(__c.59)
2028 0e5a 9F93 push r25
2029 0e5c 8F93 push r24
2030 0e5e FF92 push r15
2031 0e60 EF92 push r14
2032 0e62 FE01 movw r30,r28
2033 0e64 0995 icall
2034 0e66 84E1 ldi r24,lo8(20)
2035 0e68 8093 0000 sts DispPtr,r24
2036 0e6c 8DB7 in r24,__SP_L__
2037 0e6e 9EB7 in r25,__SP_H__
2038 0e70 0696 adiw r24,6
2039 0e72 8DBF out __SP_L__,r24
2040 0e74 8091 0000 lds r24,Poti+5
2041 0e78 9927 clr r25
2042 0e7a 9F93 push r25
2043 0e7c 8F93 push r24
2044 0e7e 80E0 ldi r24,lo8(__c.60)
2045 0e80 90E0 ldi r25,hi8(__c.60)
2046 0e82 9F93 push r25
2047 0e84 8F93 push r24
2048 0e86 FF92 push r15
2049 0e88 EF92 push r14
2050 0e8a E091 0000 lds r30,_printf_P
2051 0e8e F091 0000 lds r31,(_printf_P)+1
2052 0e92 0995 icall
2053 0e94 88E2 ldi r24,lo8(40)
2054 0e96 8093 0000 sts DispPtr,r24
2055 0e9a 2DB7 in r18,__SP_L__
2056 0e9c 3EB7 in r19,__SP_H__
2057 0e9e 2A5F subi r18,lo8(-(6))
2058 0ea0 3F4F sbci r19,hi8(-(6))
2059 0ea2 2DBF out __SP_L__,r18
2060 0ea4 8091 0000 lds r24,Poti+6
2061 0ea8 9927 clr r25
2062 0eaa 9F93 push r25
2063 0eac 8F93 push r24
2064 0eae 80E0 ldi r24,lo8(__c.61)
2065 0eb0 90E0 ldi r25,hi8(__c.61)
2066 0eb2 9F93 push r25
2067 0eb4 8F93 push r24
2068 0eb6 FF92 push r15
2069 0eb8 EF92 push r14
2070 0eba E091 0000 lds r30,_printf_P
2071 0ebe F091 0000 lds r31,(_printf_P)+1
2072 0ec2 0995 icall
2073 0ec4 8CE3 ldi r24,lo8(60)
2074 0ec6 8093 0000 sts DispPtr,r24
2075 0eca 8DB7 in r24,__SP_L__
2076 0ecc 9EB7 in r25,__SP_H__
2077 0ece 0696 adiw r24,6
2078 0ed0 8DBF out __SP_L__,r24
2079 0ed2 8091 0000 lds r24,Poti+7
2080 0ed6 9927 clr r25
2081 0ed8 9F93 push r25
2082 0eda 8F93 push r24
2083 0edc 80E0 ldi r24,lo8(__c.62)
2084 0ede 90E0 ldi r25,hi8(__c.62)
2085 .L94:
2086 0ee0 9F93 push r25
2087 0ee2 8F93 push r24
2088 0ee4 FF92 push r15
2089 0ee6 EF92 push r14
2090 0ee8 D9CA rjmp .L89
2091 .L69:
2092 0eea 1092 0000 sts DispPtr,__zero_reg__
2093 0eee 80E0 ldi r24,lo8(__c.63)
2094 0ef0 90E0 ldi r25,hi8(__c.63)
2095 0ef2 9F93 push r25
2096 0ef4 8F93 push r24
2097 0ef6 00E0 ldi r16,lo8(pm(Menu_Putchar))
2098 0ef8 10E0 ldi r17,hi8(pm(Menu_Putchar))
2099 0efa FF92 push r15
2100 0efc EF92 push r14
2101 0efe FE01 movw r30,r28
2102 0f00 0995 icall
2103 0f02 84E1 ldi r24,lo8(20)
2104 0f04 8093 0000 sts DispPtr,r24
2105 0f08 0F90 pop __tmp_reg__
2106 0f0a 0F90 pop __tmp_reg__
2107 0f0c 0F90 pop __tmp_reg__
2108 0f0e 0F90 pop __tmp_reg__
2109 0f10 8091 0000 lds r24,Parameter_ServoNickControl
2110 0f14 9927 clr r25
2111 0f16 9F93 push r25
2112 0f18 8F93 push r24
2113 0f1a 80E0 ldi r24,lo8(__c.64)
2114 0f1c 90E0 ldi r25,hi8(__c.64)
2115 0f1e 9F93 push r25
2116 0f20 8F93 push r24
2117 0f22 FF92 push r15
2118 0f24 EF92 push r14
2119 0f26 E091 0000 lds r30,_printf_P
2120 0f2a F091 0000 lds r31,(_printf_P)+1
2121 0f2e 0995 icall
2122 0f30 88E2 ldi r24,lo8(40)
2123 0f32 8093 0000 sts DispPtr,r24
2124 0f36 8DB7 in r24,__SP_L__
2125 0f38 9EB7 in r25,__SP_H__
2126 0f3a 0696 adiw r24,6
2127 0f3c 8DBF out __SP_L__,r24
2128 0f3e 8091 0000 lds r24,ServoNickValue
2129 0f42 9091 0000 lds r25,(ServoNickValue)+1
2130 0f46 97FD sbrc r25,7
2131 0f48 0396 adiw r24,3
2132 .L70:
2133 0f4a 9595 asr r25
2134 0f4c 8795 ror r24
2135 0f4e 9595 asr r25
2136 0f50 8795 ror r24
2137 0f52 9F93 push r25
2138 0f54 8F93 push r24
2139 0f56 80E0 ldi r24,lo8(__c.65)
2140 0f58 90E0 ldi r25,hi8(__c.65)
2141 0f5a 9F93 push r25
2142 0f5c 8F93 push r24
2143 0f5e 1F93 push r17
2144 0f60 0F93 push r16
2145 0f62 E091 0000 lds r30,_printf_P
2146 0f66 F091 0000 lds r31,(_printf_P)+1
2147 0f6a 0995 icall
2148 0f6c 8CE3 ldi r24,lo8(60)
2149 0f6e 8093 0000 sts DispPtr,r24
2150 0f72 2DB7 in r18,__SP_L__
2151 0f74 3EB7 in r19,__SP_H__
2152 0f76 2A5F subi r18,lo8(-(6))
2153 0f78 3F4F sbci r19,hi8(-(6))
2154 0f7a 2DBF out __SP_L__,r18
2155 0f7c 8091 0000 lds r24,EE_Parameter+48
2156 0f80 9927 clr r25
2157 0f82 9F93 push r25
2158 0f84 8F93 push r24
2159 0f86 8091 0000 lds r24,EE_Parameter+47
2160 0f8a 9927 clr r25
2161 0f8c 9F93 push r25
2162 0f8e 8F93 push r24
2163 0f90 80E0 ldi r24,lo8(__c.66)
2164 0f92 90E0 ldi r25,hi8(__c.66)
2165 .L88:
2166 0f94 9F93 push r25
2167 0f96 8F93 push r24
2168 0f98 1F93 push r17
2169 0f9a 0F93 push r16
2170 0f9c E091 0000 lds r30,_printf_P
2171 0fa0 F091 0000 lds r31,(_printf_P)+1
2172 0fa4 0995 icall
2173 0fa6 8DB7 in r24,__SP_L__
2174 0fa8 9EB7 in r25,__SP_H__
2175 0faa 0896 adiw r24,8
2176 0fac F7C0 rjmp .L85
2177 .L71:
2178 0fae 1092 0000 sts DispPtr,__zero_reg__
2179 0fb2 80E0 ldi r24,lo8(__c.67)
2180 0fb4 90E0 ldi r25,hi8(__c.67)
2181 0fb6 9F93 push r25
2182 0fb8 8F93 push r24
2183 0fba FF92 push r15
2184 0fbc EF92 push r14
2185 0fbe FE01 movw r30,r28
2186 0fc0 0995 icall
2187 0fc2 84E1 ldi r24,lo8(20)
2188 0fc4 8093 0000 sts DispPtr,r24
2189 0fc8 0F90 pop __tmp_reg__
2190 0fca 0F90 pop __tmp_reg__
2191 0fcc 0F90 pop __tmp_reg__
2192 0fce 0F90 pop __tmp_reg__
2193 0fd0 8091 0000 lds r24,ExternControl+4
2194 0fd4 9927 clr r25
2195 0fd6 87FD sbrc r24,7
2196 0fd8 9095 com r25
2197 0fda 9F93 push r25
2198 0fdc 8F93 push r24
2199 0fde 8091 0000 lds r24,ExternControl+3
2200 0fe2 9927 clr r25
2201 0fe4 87FD sbrc r24,7
2202 0fe6 9095 com r25
2203 0fe8 9F93 push r25
2204 0fea 8F93 push r24
2205 0fec 80E0 ldi r24,lo8(__c.68)
2206 0fee 90E0 ldi r25,hi8(__c.68)
2207 0ff0 9F93 push r25
2208 0ff2 8F93 push r24
2209 0ff4 FF92 push r15
2210 0ff6 EF92 push r14
2211 0ff8 E091 0000 lds r30,_printf_P
2212 0ffc F091 0000 lds r31,(_printf_P)+1
2213 1000 0995 icall
2214 1002 88E2 ldi r24,lo8(40)
2215 1004 8093 0000 sts DispPtr,r24
2216 1008 2DB7 in r18,__SP_L__
2217 100a 3EB7 in r19,__SP_H__
2218 100c 285F subi r18,lo8(-(8))
2219 100e 3F4F sbci r19,hi8(-(8))
2220 1010 2DBF out __SP_L__,r18
2221 1012 8091 0000 lds r24,ExternControl+5
2222 1016 9927 clr r25
2223 1018 87FD sbrc r24,7
2224 101a 9095 com r25
2225 101c 9F93 push r25
2226 101e 8F93 push r24
2227 1020 8091 0000 lds r24,ExternControl+6
2228 1024 9927 clr r25
2229 1026 9F93 push r25
2230 1028 8F93 push r24
2231 102a 80E0 ldi r24,lo8(__c.69)
2232 102c 90E0 ldi r25,hi8(__c.69)
2233 102e 9F93 push r25
2234 1030 8F93 push r24
2235 1032 FF92 push r15
2236 1034 EF92 push r14
2237 1036 E091 0000 lds r30,_printf_P
2238 103a F091 0000 lds r31,(_printf_P)+1
2239 103e 0995 icall
2240 1040 8CE3 ldi r24,lo8(60)
2241 1042 8093 0000 sts DispPtr,r24
2242 1046 8DB7 in r24,__SP_L__
2243 1048 9EB7 in r25,__SP_H__
2244 104a 0896 adiw r24,8
2245 104c 8DBF out __SP_L__,r24
2246 104e 8091 0000 lds r24,ExternControl+10
2247 1052 9927 clr r25
2248 1054 9F93 push r25
2249 1056 8F93 push r24
2250 1058 8091 0000 lds r24,ExternControl+7
2251 105c 9927 clr r25
2252 105e 87FD sbrc r24,7
2253 1060 9095 com r25
2254 1062 9F93 push r25
2255 1064 8F93 push r24
2256 1066 80E0 ldi r24,lo8(__c.70)
2257 1068 90E0 ldi r25,hi8(__c.70)
2258 106a 2DCB rjmp .L90
2259 .L72:
2260 106c 1092 0000 sts DispPtr,__zero_reg__
2261 1070 80E0 ldi r24,lo8(__c.71)
2262 1072 90E0 ldi r25,hi8(__c.71)
2263 1074 9F93 push r25
2264 1076 8F93 push r24
2265 1078 FF92 push r15
2266 107a EF92 push r14
2267 107c FE01 movw r30,r28
2268 107e 0995 icall
2269 1080 84E1 ldi r24,lo8(20)
2270 1082 8093 0000 sts DispPtr,r24
2271 1086 0F90 pop __tmp_reg__
2272 1088 0F90 pop __tmp_reg__
2273 108a 0F90 pop __tmp_reg__
2274 108c 0F90 pop __tmp_reg__
2275 108e 8091 0000 lds r24,Motor+27
2276 1092 9927 clr r25
2277 1094 8F77 andi r24,lo8(127)
2278 1096 9070 andi r25,hi8(127)
2279 1098 9F93 push r25
2280 109a 8F93 push r24
2281 109c 8091 0000 lds r24,Motor+19
2282 10a0 9927 clr r25
2283 10a2 8F77 andi r24,lo8(127)
2284 10a4 9070 andi r25,hi8(127)
2285 10a6 9F93 push r25
2286 10a8 8F93 push r24
2287 10aa 8091 0000 lds r24,Motor+11
2288 10ae 9927 clr r25
2289 10b0 8F77 andi r24,lo8(127)
2290 10b2 9070 andi r25,hi8(127)
2291 10b4 9F93 push r25
2292 10b6 8F93 push r24
2293 10b8 8091 0000 lds r24,Motor+3
2294 10bc 9927 clr r25
2295 10be 8F77 andi r24,lo8(127)
2296 10c0 9070 andi r25,hi8(127)
2297 10c2 9F93 push r25
2298 10c4 8F93 push r24
2299 10c6 80E0 ldi r24,lo8(__c.72)
2300 10c8 90E0 ldi r25,hi8(__c.72)
2301 10ca 9F93 push r25
2302 10cc 8F93 push r24
2303 10ce FF92 push r15
2304 10d0 EF92 push r14
2305 10d2 E091 0000 lds r30,_printf_P
2306 10d6 F091 0000 lds r31,(_printf_P)+1
2307 10da 0995 icall
2308 10dc 88E2 ldi r24,lo8(40)
2309 10de 8093 0000 sts DispPtr,r24
2310 10e2 8DB7 in r24,__SP_L__
2311 10e4 9EB7 in r25,__SP_H__
2312 10e6 0C96 adiw r24,12
2313 10e8 8DBF out __SP_L__,r24
2314 10ea 8091 0000 lds r24,Motor+59
2315 10ee 9927 clr r25
2316 10f0 8F77 andi r24,lo8(127)
2317 10f2 9070 andi r25,hi8(127)
2318 10f4 9F93 push r25
2319 10f6 8F93 push r24
2320 10f8 8091 0000 lds r24,Motor+51
2321 10fc 9927 clr r25
2322 10fe 8F77 andi r24,lo8(127)
2323 1100 9070 andi r25,hi8(127)
2324 1102 9F93 push r25
2325 1104 8F93 push r24
2326 1106 8091 0000 lds r24,Motor+43
2327 110a 9927 clr r25
2328 110c 8F77 andi r24,lo8(127)
2329 110e 9070 andi r25,hi8(127)
2330 1110 9F93 push r25
2331 1112 8F93 push r24
2332 1114 8091 0000 lds r24,Motor+35
2333 1118 9927 clr r25
2334 111a 8F77 andi r24,lo8(127)
2335 111c 9070 andi r25,hi8(127)
2336 111e 9F93 push r25
2337 1120 8F93 push r24
2338 1122 80E0 ldi r24,lo8(__c.73)
2339 1124 90E0 ldi r25,hi8(__c.73)
2340 1126 9F93 push r25
2341 1128 8F93 push r24
2342 112a FF92 push r15
2343 112c EF92 push r14
2344 112e E091 0000 lds r30,_printf_P
2345 1132 F091 0000 lds r31,(_printf_P)+1
2346 1136 0995 icall
2347 1138 8CE3 ldi r24,lo8(60)
2348 113a 8093 0000 sts DispPtr,r24
2349 113e 2DB7 in r18,__SP_L__
2350 1140 3EB7 in r19,__SP_H__
2351 1142 245F subi r18,lo8(-(12))
2352 1144 3F4F sbci r19,hi8(-(12))
2353 1146 2DBF out __SP_L__,r18
2354 1148 8091 0000 lds r24,Motor+91
2355 114c 9927 clr r25
2356 114e 8F77 andi r24,lo8(127)
2357 1150 9070 andi r25,hi8(127)
2358 1152 9F93 push r25
2359 1154 8F93 push r24
2360 1156 8091 0000 lds r24,Motor+83
2361 115a 9927 clr r25
2362 115c 8F77 andi r24,lo8(127)
2363 115e 9070 andi r25,hi8(127)
2364 1160 9F93 push r25
2365 1162 8F93 push r24
2366 1164 8091 0000 lds r24,Motor+75
2367 1168 9927 clr r25
2368 116a 8F77 andi r24,lo8(127)
2369 116c 9070 andi r25,hi8(127)
2370 116e 9F93 push r25
2371 1170 8F93 push r24
2372 1172 8091 0000 lds r24,Motor+67
2373 1176 9927 clr r25
2374 1178 8F77 andi r24,lo8(127)
2375 117a 9070 andi r25,hi8(127)
2376 117c 9F93 push r25
2377 117e 8F93 push r24
2378 1180 80E0 ldi r24,lo8(__c.74)
2379 1182 90E0 ldi r25,hi8(__c.74)
2380 1184 9F93 push r25
2381 1186 8F93 push r24
2382 1188 FF92 push r15
2383 118a EF92 push r14
2384 118c E091 0000 lds r30,_printf_P
2385 1190 F091 0000 lds r31,(_printf_P)+1
2386 1194 0995 icall
2387 1196 8DB7 in r24,__SP_L__
2388 1198 9EB7 in r25,__SP_H__
2389 119a 0C96 adiw r24,12
2390 .L85:
2391 119c 8DBF out __SP_L__,r24
2392 119e FEC1 rjmp .L19
2393 .L73:
2394 11a0 1092 0000 sts DispPtr,__zero_reg__
2395 11a4 80E0 ldi r24,lo8(__c.75)
2396 11a6 90E0 ldi r25,hi8(__c.75)
2397 11a8 9F93 push r25
2398 11aa 8F93 push r24
2399 11ac FF92 push r15
2400 11ae EF92 push r14
2401 11b0 FE01 movw r30,r28
2402 11b2 0995 icall
2403 11b4 84E1 ldi r24,lo8(20)
2404 11b6 8093 0000 sts DispPtr,r24
2405 11ba 0F90 pop __tmp_reg__
2406 11bc 0F90 pop __tmp_reg__
2407 11be 0F90 pop __tmp_reg__
2408 11c0 0F90 pop __tmp_reg__
2409 11c2 8091 0000 lds r24,Motor+31
2410 11c6 9927 clr r25
2411 11c8 87FD sbrc r24,7
2412 11ca 9095 com r25
2413 11cc 9F93 push r25
2414 11ce 8F93 push r24
2415 11d0 8091 0000 lds r24,Motor+23
2416 11d4 9927 clr r25
2417 11d6 87FD sbrc r24,7
2418 11d8 9095 com r25
2419 11da 9F93 push r25
2420 11dc 8F93 push r24
2421 11de 8091 0000 lds r24,Motor+15
2422 11e2 9927 clr r25
2423 11e4 87FD sbrc r24,7
2424 11e6 9095 com r25
2425 11e8 9F93 push r25
2426 11ea 8F93 push r24
2427 11ec 8091 0000 lds r24,Motor+7
2428 11f0 9927 clr r25
2429 11f2 87FD sbrc r24,7
2430 11f4 9095 com r25
2431 11f6 9F93 push r25
2432 11f8 8F93 push r24
2433 11fa 80E0 ldi r24,lo8(__c.76)
2434 11fc 90E0 ldi r25,hi8(__c.76)
2435 11fe 9F93 push r25
2436 1200 8F93 push r24
2437 1202 FF92 push r15
2438 1204 EF92 push r14
2439 1206 E091 0000 lds r30,_printf_P
2440 120a F091 0000 lds r31,(_printf_P)+1
2441 120e 0995 icall
2442 1210 88E2 ldi r24,lo8(40)
2443 1212 8093 0000 sts DispPtr,r24
2444 1216 2DB7 in r18,__SP_L__
2445 1218 3EB7 in r19,__SP_H__
2446 121a 245F subi r18,lo8(-(12))
2447 121c 3F4F sbci r19,hi8(-(12))
2448 121e 2DBF out __SP_L__,r18
2449 1220 8091 0000 lds r24,Motor+63
2450 1224 9927 clr r25
2451 1226 87FD sbrc r24,7
2452 1228 9095 com r25
2453 122a 9F93 push r25
2454 122c 8F93 push r24
2455 122e 8091 0000 lds r24,Motor+55
2456 1232 9927 clr r25
2457 1234 87FD sbrc r24,7
2458 1236 9095 com r25
2459 1238 9F93 push r25
2460 123a 8F93 push r24
2461 123c 8091 0000 lds r24,Motor+47
2462 1240 9927 clr r25
2463 1242 87FD sbrc r24,7
2464 1244 9095 com r25
2465 1246 9F93 push r25
2466 1248 8F93 push r24
2467 124a 8091 0000 lds r24,Motor+39
2468 124e 9927 clr r25
2469 1250 87FD sbrc r24,7
2470 1252 9095 com r25
2471 1254 9F93 push r25
2472 1256 8F93 push r24
2473 1258 80E0 ldi r24,lo8(__c.77)
2474 125a 90E0 ldi r25,hi8(__c.77)
2475 125c 9F93 push r25
2476 125e 8F93 push r24
2477 1260 FF92 push r15
2478 1262 EF92 push r14
2479 1264 E091 0000 lds r30,_printf_P
2480 1268 F091 0000 lds r31,(_printf_P)+1
2481 126c 0995 icall
2482 126e 8CE3 ldi r24,lo8(60)
2483 1270 8093 0000 sts DispPtr,r24
2484 1274 8DB7 in r24,__SP_L__
2485 1276 9EB7 in r25,__SP_H__
2486 1278 0C96 adiw r24,12
2487 127a 8DBF out __SP_L__,r24
2488 127c 8091 0000 lds r24,Motor+95
2489 1280 9927 clr r25
2490 1282 87FD sbrc r24,7
2491 1284 9095 com r25
2492 1286 9F93 push r25
2493 1288 8F93 push r24
2494 128a 8091 0000 lds r24,Motor+87
2495 128e 9927 clr r25
2496 1290 87FD sbrc r24,7
2497 1292 9095 com r25
2498 1294 9F93 push r25
2499 1296 8F93 push r24
2500 1298 8091 0000 lds r24,Motor+79
2501 129c 9927 clr r25
2502 129e 87FD sbrc r24,7
2503 12a0 9095 com r25
2504 12a2 9F93 push r25
2505 12a4 8F93 push r24
2506 12a6 8091 0000 lds r24,Motor+71
2507 12aa 9927 clr r25
2508 12ac 87FD sbrc r24,7
2509 12ae 9095 com r25
2510 12b0 9F93 push r25
2511 12b2 8F93 push r24
2512 12b4 80E0 ldi r24,lo8(__c.78)
2513 12b6 90E0 ldi r25,hi8(__c.78)
2514 12b8 9F93 push r25
2515 12ba 8F93 push r24
2516 12bc FF92 push r15
2517 12be EF92 push r14
2518 12c0 E091 0000 lds r30,_printf_P
2519 12c4 F091 0000 lds r31,(_printf_P)+1
2520 12c8 0995 icall
2521 12ca 2DB7 in r18,__SP_L__
2522 12cc 3EB7 in r19,__SP_H__
2523 12ce 245F subi r18,lo8(-(12))
2524 12d0 3F4F sbci r19,hi8(-(12))
2525 .L84:
2526 12d2 2DBF out __SP_L__,r18
2527 12d4 63C1 rjmp .L19
2528 .L74:
2529 12d6 1092 0000 sts DispPtr,__zero_reg__
2530 12da 80E0 ldi r24,lo8(__c.79)
2531 12dc 90E0 ldi r25,hi8(__c.79)
2532 12de 9F93 push r25
2533 12e0 8F93 push r24
2534 12e2 00E0 ldi r16,lo8(pm(Menu_Putchar))
2535 12e4 10E0 ldi r17,hi8(pm(Menu_Putchar))
2536 12e6 FF92 push r15
2537 12e8 EF92 push r14
2538 12ea FE01 movw r30,r28
2539 12ec 0995 icall
2540 12ee 84E1 ldi r24,lo8(20)
2541 12f0 8093 0000 sts DispPtr,r24
2542 12f4 0F90 pop __tmp_reg__
2543 12f6 0F90 pop __tmp_reg__
2544 12f8 0F90 pop __tmp_reg__
2545 12fa 0F90 pop __tmp_reg__
2546 12fc 8091 0000 lds r24,Motor+27
2547 1300 881F rol r24
2548 1302 8827 clr r24
2549 1304 881F rol r24
2550 1306 97E0 ldi r25,lo8(7)
2551 1308 899F mul r24,r25
2552 130a C001 movw r24,r0
2553 130c 1124 clr r1
2554 130e 8D96 adiw r24,45
2555 1310 9F93 push r25
2556 1312 8F93 push r24
2557 1314 8091 0000 lds r24,Motor+19
2558 1318 881F rol r24
2559 131a 8827 clr r24
2560 131c 881F rol r24
2561 131e 96E0 ldi r25,lo8(6)
2562 1320 899F mul r24,r25
2563 1322 C001 movw r24,r0
2564 1324 1124 clr r1
2565 1326 8D96 adiw r24,45
2566 1328 9F93 push r25
2567 132a 8F93 push r24
2568 132c 8091 0000 lds r24,Motor+11
2569 1330 881F rol r24
2570 1332 8827 clr r24
2571 1334 881F rol r24
2572 1336 95E0 ldi r25,lo8(5)
2573 1338 899F mul r24,r25
2574 133a C001 movw r24,r0
2575 133c 1124 clr r1
2576 133e 8D96 adiw r24,45
2577 1340 9F93 push r25
2578 1342 8F93 push r24
2579 1344 8091 0000 lds r24,Motor+3
2580 1348 881F rol r24
2581 134a 8827 clr r24
2582 134c 881F rol r24
2583 134e 9927 clr r25
2584 1350 880F lsl r24
2585 1352 991F rol r25
2586 1354 880F lsl r24
2587 1356 991F rol r25
2588 1358 8D96 adiw r24,45
2589 135a 9F93 push r25
2590 135c 8F93 push r24
2591 135e 80E0 ldi r24,lo8(__c.80)
2592 1360 90E0 ldi r25,hi8(__c.80)
2593 1362 9F93 push r25
2594 1364 8F93 push r24
2595 1366 FF92 push r15
2596 1368 EF92 push r14
2597 136a E091 0000 lds r30,_printf_P
2598 136e F091 0000 lds r31,(_printf_P)+1
2599 1372 0995 icall
2600 1374 88E2 ldi r24,lo8(40)
2601 1376 8093 0000 sts DispPtr,r24
2602 137a 8DB7 in r24,__SP_L__
2603 137c 9EB7 in r25,__SP_H__
2604 137e 0C96 adiw r24,12
2605 1380 8DBF out __SP_L__,r24
2606 1382 8091 0000 lds r24,Motor+59
2607 1386 881F rol r24
2608 1388 8827 clr r24
2609 138a 881F rol r24
2610 138c 9BE0 ldi r25,lo8(11)
2611 138e 899F mul r24,r25
2612 1390 C001 movw r24,r0
2613 1392 1124 clr r1
2614 1394 8D96 adiw r24,45
2615 1396 9F93 push r25
2616 1398 8F93 push r24
2617 139a 8091 0000 lds r24,Motor+51
2618 139e 881F rol r24
2619 13a0 8827 clr r24
2620 13a2 881F rol r24
2621 13a4 9AE0 ldi r25,lo8(10)
2622 13a6 899F mul r24,r25
2623 13a8 C001 movw r24,r0
2624 13aa 1124 clr r1
2625 13ac 8D96 adiw r24,45
2626 13ae 9F93 push r25
2627 13b0 8F93 push r24
2628 13b2 8091 0000 lds r24,Motor+43
2629 13b6 881F rol r24
2630 13b8 8827 clr r24
2631 13ba 881F rol r24
2632 13bc 99E0 ldi r25,lo8(9)
2633 13be 899F mul r24,r25
2634 13c0 C001 movw r24,r0
2635 13c2 1124 clr r1
2636 13c4 8D96 adiw r24,45
2637 13c6 9F93 push r25
2638 13c8 8F93 push r24
2639 13ca 8091 0000 lds r24,Motor+35
2640 13ce 881F rol r24
2641 13d0 8827 clr r24
2642 13d2 881F rol r24
2643 13d4 9927 clr r25
2644 13d6 23E0 ldi r18,3
2645 13d8 880F 1: lsl r24
2646 13da 991F rol r25
2647 13dc 2A95 dec r18
2648 13de E1F7 brne 1b
2649 13e0 8D96 adiw r24,45
2650 13e2 9F93 push r25
2651 13e4 8F93 push r24
2652 13e6 80E0 ldi r24,lo8(__c.81)
2653 13e8 90E0 ldi r25,hi8(__c.81)
2654 13ea 9F93 push r25
2655 13ec 8F93 push r24
2656 13ee FF92 push r15
2657 13f0 EF92 push r14
2658 13f2 E091 0000 lds r30,_printf_P
2659 13f6 F091 0000 lds r31,(_printf_P)+1
2660 13fa 0995 icall
2661 13fc 8CE3 ldi r24,lo8(60)
2662 13fe 8093 0000 sts DispPtr,r24
2663 1402 2DB7 in r18,__SP_L__
2664 1404 3EB7 in r19,__SP_H__
2665 1406 245F subi r18,lo8(-(12))
2666 1408 3F4F sbci r19,hi8(-(12))
2667 140a 2DBF out __SP_L__,r18
2668 140c 8091 0000 lds r24,Motor+67
2669 1410 881F rol r24
2670 1412 8827 clr r24
2671 1414 881F rol r24
2672 1416 9CE0 ldi r25,lo8(12)
2673 1418 899F mul r24,r25
2674 141a C001 movw r24,r0
2675 141c 1124 clr r1
2676 141e 8D96 adiw r24,45
2677 1420 9F93 push r25
2678 1422 8F93 push r24
2679 1424 80E0 ldi r24,lo8(__c.82)
2680 1426 90E0 ldi r25,hi8(__c.82)
2681 1428 9F93 push r25
2682 142a 8F93 push r24
2683 142c FF92 push r15
2684 142e EF92 push r14
2685 1430 E091 0000 lds r30,_printf_P
2686 1434 F091 0000 lds r31,(_printf_P)+1
2687 1438 0995 icall
2688 143a 8091 0000 lds r24,Motor+75
2689 143e 2DB7 in r18,__SP_L__
2690 1440 3EB7 in r19,__SP_H__
2691 1442 2A5F subi r18,lo8(-(6))
2692 1444 3F4F sbci r19,hi8(-(6))
2693 1446 2DBF out __SP_L__,r18
2694 1448 87FF sbrs r24,7
2695 144a 12C0 rjmp .L75
2696 144c 80E4 ldi r24,lo8(64)
2697 144e 8093 0000 sts DispPtr,r24
2698 1452 80E0 ldi r24,lo8(__c.83)
2699 1454 90E0 ldi r25,hi8(__c.83)
2700 1456 9F93 push r25
2701 1458 8F93 push r24
2702 145a FF92 push r15
2703 145c EF92 push r14
2704 145e E091 0000 lds r30,_printf_P
2705 1462 F091 0000 lds r31,(_printf_P)+1
2706 1466 0995 icall
2707 1468 0F90 pop __tmp_reg__
2708 146a 0F90 pop __tmp_reg__
2709 146c 0F90 pop __tmp_reg__
2710 146e 0F90 pop __tmp_reg__
2711 .L75:
2712 1470 8091 0000 lds r24,Motor+83
2713 1474 87FF sbrs r24,7
2714 1476 12C0 rjmp .L76
2715 1478 84E4 ldi r24,lo8(68)
2716 147a 8093 0000 sts DispPtr,r24
2717 147e 80E0 ldi r24,lo8(__c.84)
2718 1480 90E0 ldi r25,hi8(__c.84)
2719 1482 9F93 push r25
2720 1484 8F93 push r24
2721 1486 1F93 push r17
2722 1488 0F93 push r16
2723 148a E091 0000 lds r30,_printf_P
2724 148e F091 0000 lds r31,(_printf_P)+1
2725 1492 0995 icall
2726 1494 0F90 pop __tmp_reg__
2727 1496 0F90 pop __tmp_reg__
2728 1498 0F90 pop __tmp_reg__
2729 149a 0F90 pop __tmp_reg__
2730 .L76:
2731 149c 8091 0000 lds r24,Motor+91
2732 14a0 87FF sbrs r24,7
2733 14a2 7CC0 rjmp .L19
2734 14a4 88E4 ldi r24,lo8(72)
2735 14a6 8093 0000 sts DispPtr,r24
2736 14aa 80E0 ldi r24,lo8(__c.85)
2737 14ac 90E0 ldi r25,hi8(__c.85)
2738 .L92:
2739 14ae 9F93 push r25
2740 14b0 8F93 push r24
2741 14b2 1F93 push r17
2742 14b4 0F93 push r16
2743 .L86:
2744 14b6 E091 0000 lds r30,_printf_P
2745 14ba F091 0000 lds r31,(_printf_P)+1
2746 14be 0995 icall
2747 14c0 0F90 pop __tmp_reg__
2748 14c2 0F90 pop __tmp_reg__
2749 14c4 0F90 pop __tmp_reg__
2750 14c6 0F90 pop __tmp_reg__
2751 14c8 69C0 rjmp .L19
2752 .L78:
2753 14ca 1092 0000 sts DispPtr,__zero_reg__
2754 14ce 80E0 ldi r24,lo8(__c.86)
2755 14d0 90E0 ldi r25,hi8(__c.86)
2756 14d2 9F93 push r25
2757 14d4 8F93 push r24
2758 14d6 FF92 push r15
2759 14d8 EF92 push r14
2760 14da FE01 movw r30,r28
2761 14dc 0995 icall
2762 14de 84E1 ldi r24,lo8(20)
2763 14e0 8093 0000 sts DispPtr,r24
2764 14e4 0F90 pop __tmp_reg__
2765 14e6 0F90 pop __tmp_reg__
2766 14e8 0F90 pop __tmp_reg__
2767 14ea 0F90 pop __tmp_reg__
2768 14ec 8091 0000 lds r24,FlugMinutenGesamt
2769 14f0 9091 0000 lds r25,(FlugMinutenGesamt)+1
2770 14f4 9F93 push r25
2771 14f6 8F93 push r24
2772 14f8 80E0 ldi r24,lo8(__c.87)
2773 14fa 90E0 ldi r25,hi8(__c.87)
2774 14fc 9F93 push r25
2775 14fe 8F93 push r24
2776 1500 FF92 push r15
2777 1502 EF92 push r14
2778 1504 E091 0000 lds r30,_printf_P
2779 1508 F091 0000 lds r31,(_printf_P)+1
2780 150c 0995 icall
2781 150e 88E2 ldi r24,lo8(40)
2782 1510 8093 0000 sts DispPtr,r24
2783 1514 8DB7 in r24,__SP_L__
2784 1516 9EB7 in r25,__SP_H__
2785 1518 0696 adiw r24,6
2786 151a 8DBF out __SP_L__,r24
2787 151c 8091 0000 lds r24,FlugMinuten
2788 1520 9091 0000 lds r25,(FlugMinuten)+1
2789 1524 9F93 push r25
2790 1526 8F93 push r24
2791 1528 80E0 ldi r24,lo8(__c.88)
2792 152a 90E0 ldi r25,hi8(__c.88)
2793 152c 9F93 push r25
2794 152e 8F93 push r24
2795 1530 FF92 push r15
2796 1532 EF92 push r14
2797 1534 E091 0000 lds r30,_printf_P
2798 1538 F091 0000 lds r31,(_printf_P)+1
2799 153c 0995 icall
2800 153e 89E4 ldi r24,lo8(73)
2801 1540 8093 0000 sts DispPtr,r24
2802 1544 2DB7 in r18,__SP_L__
2803 1546 3EB7 in r19,__SP_H__
2804 1548 2A5F subi r18,lo8(-(6))
2805 154a 3F4F sbci r19,hi8(-(6))
2806 154c 2DBF out __SP_L__,r18
2807 154e 80E0 ldi r24,lo8(__c.89)
2808 1550 90E0 ldi r25,hi8(__c.89)
2809 1552 9F93 push r25
2810 1554 8F93 push r24
2811 1556 FF92 push r15
2812 1558 EF92 push r14
2813 155a E091 0000 lds r30,_printf_P
2814 155e F091 0000 lds r31,(_printf_P)+1
2815 1562 0995 icall
2816 1564 8091 0000 lds r24,RemoteKeys
2817 1568 0F90 pop __tmp_reg__
2818 156a 0F90 pop __tmp_reg__
2819 156c 0F90 pop __tmp_reg__
2820 156e 0F90 pop __tmp_reg__
2821 1570 83FF sbrs r24,3
2822 1572 14C0 rjmp .L19
2823 1574 1092 0000 sts (FlugMinuten)+1,__zero_reg__
2824 1578 1092 0000 sts FlugMinuten,__zero_reg__
2825 157c 60E0 ldi r22,lo8(0)
2826 157e 70E0 ldi r23,hi8(0)
2827 1580 8EE0 ldi r24,lo8(14)
2828 1582 90E0 ldi r25,hi8(14)
2829 1584 0E94 0000 call SetParamWord
2830 1588 09C0 rjmp .L19
2831 .L80:
2832 158a 8091 0000 lds r24,MaxMenue
2833 158e 2817 cp r18,r24
2834 1590 19F4 brne .L81
2835 1592 2150 subi r18,lo8(-(-1))
2836 1594 2093 0000 sts MaxMenue,r18
2837 .L81:
2838 1598 1092 0000 sts MenuePunkt,__zero_reg__
2839 .L19:
2840 159c 1092 0000 sts RemoteKeys,__zero_reg__
2841 /* epilogue: frame size=0 */
2842 15a0 E6E0 ldi r30,6
2843 15a2 CDB7 in r28,__SP_L__
2844 15a4 DEB7 in r29,__SP_H__
2845 15a6 0C94 0000 jmp __epilogue_restores__+24
2846 /* epilogue end (size=5) */
2847 /* function Menu size 2788 (2777) */
2849 /* File "menu.c": code 2808 = 0x0af8 (2795), prologues 6, epilogues 7 */
DEFINED SYMBOLS
*ABS*:00000000 menu.c
C:\Users\Thomas\AppData\Local\Temp/cc0mbaaa.s:3 *ABS*:0000003f __SREG__
C:\Users\Thomas\AppData\Local\Temp/cc0mbaaa.s:4 *ABS*:0000003e __SP_H__
C:\Users\Thomas\AppData\Local\Temp/cc0mbaaa.s:5 *ABS*:0000003d __SP_L__
C:\Users\Thomas\AppData\Local\Temp/cc0mbaaa.s:6 *ABS*:00000000 __tmp_reg__
C:\Users\Thomas\AppData\Local\Temp/cc0mbaaa.s:7 *ABS*:00000001 __zero_reg__
C:\Users\Thomas\AppData\Local\Temp/cc0mbaaa.s:15 .bss:00000000 RemoteKeys
C:\Users\Thomas\AppData\Local\Temp/cc0mbaaa.s:21 .bss:00000001 MenuePunkt
C:\Users\Thomas\AppData\Local\Temp/cc0mbaaa.s:27 .data:00000000 MaxMenue
C:\Users\Thomas\AppData\Local\Temp/cc0mbaaa.s:34 .bss:00000002 DispPtr
C:\Users\Thomas\AppData\Local\Temp/cc0mbaaa.s:40 .data:00000001 DisplayBuff
C:\Users\Thomas\AppData\Local\Temp/cc0mbaaa.s:46 .text:00000000 LcdClear
C:\Users\Thomas\AppData\Local\Temp/cc0mbaaa.s:65 .text:00000012 Menu_Putchar
C:\Users\Thomas\AppData\Local\Temp/cc0mbaaa.s:84 .progmem.data:00000000 __c.0
C:\Users\Thomas\AppData\Local\Temp/cc0mbaaa.s:88 .progmem.data:00000005 __c.1
C:\Users\Thomas\AppData\Local\Temp/cc0mbaaa.s:92 .progmem.data:0000000a __c.2
C:\Users\Thomas\AppData\Local\Temp/cc0mbaaa.s:96 .progmem.data:0000001a __c.3
C:\Users\Thomas\AppData\Local\Temp/cc0mbaaa.s:100 .progmem.data:0000002f __c.4
C:\Users\Thomas\AppData\Local\Temp/cc0mbaaa.s:104 .progmem.data:0000003d __c.5
C:\Users\Thomas\AppData\Local\Temp/cc0mbaaa.s:108 .progmem.data:00000054 __c.6
C:\Users\Thomas\AppData\Local\Temp/cc0mbaaa.s:112 .progmem.data:00000069 __c.7
C:\Users\Thomas\AppData\Local\Temp/cc0mbaaa.s:116 .progmem.data:00000076 __c.8
C:\Users\Thomas\AppData\Local\Temp/cc0mbaaa.s:120 .progmem.data:00000083 __c.9
C:\Users\Thomas\AppData\Local\Temp/cc0mbaaa.s:124 .progmem.data:00000090 __c.10
C:\Users\Thomas\AppData\Local\Temp/cc0mbaaa.s:128 .progmem.data:0000009d __c.11
C:\Users\Thomas\AppData\Local\Temp/cc0mbaaa.s:132 .progmem.data:000000aa __c.12
C:\Users\Thomas\AppData\Local\Temp/cc0mbaaa.s:136 .progmem.data:000000b7 __c.13
C:\Users\Thomas\AppData\Local\Temp/cc0mbaaa.s:140 .progmem.data:000000c6 __c.14
C:\Users\Thomas\AppData\Local\Temp/cc0mbaaa.s:144 .progmem.data:000000cf __c.15
C:\Users\Thomas\AppData\Local\Temp/cc0mbaaa.s:148 .progmem.data:000000de __c.16
C:\Users\Thomas\AppData\Local\Temp/cc0mbaaa.s:152 .progmem.data:000000e7 __c.17
C:\Users\Thomas\AppData\Local\Temp/cc0mbaaa.s:156 .progmem.data:000000f4 __c.18
C:\Users\Thomas\AppData\Local\Temp/cc0mbaaa.s:160 .progmem.data:00000103 __c.19
C:\Users\Thomas\AppData\Local\Temp/cc0mbaaa.s:164 .progmem.data:00000112 __c.20
C:\Users\Thomas\AppData\Local\Temp/cc0mbaaa.s:168 .progmem.data:00000121 __c.21
C:\Users\Thomas\AppData\Local\Temp/cc0mbaaa.s:172 .progmem.data:00000131 __c.22
C:\Users\Thomas\AppData\Local\Temp/cc0mbaaa.s:176 .progmem.data:00000141 __c.23
C:\Users\Thomas\AppData\Local\Temp/cc0mbaaa.s:180 .progmem.data:00000151 __c.24
C:\Users\Thomas\AppData\Local\Temp/cc0mbaaa.s:184 .progmem.data:00000161 __c.25
C:\Users\Thomas\AppData\Local\Temp/cc0mbaaa.s:188 .progmem.data:00000171 __c.26
C:\Users\Thomas\AppData\Local\Temp/cc0mbaaa.s:192 .progmem.data:00000181 __c.27
C:\Users\Thomas\AppData\Local\Temp/cc0mbaaa.s:196 .progmem.data:00000191 __c.28
C:\Users\Thomas\AppData\Local\Temp/cc0mbaaa.s:200 .progmem.data:000001a1 __c.29
C:\Users\Thomas\AppData\Local\Temp/cc0mbaaa.s:204 .progmem.data:000001af __c.30
C:\Users\Thomas\AppData\Local\Temp/cc0mbaaa.s:208 .progmem.data:000001c0 __c.31
C:\Users\Thomas\AppData\Local\Temp/cc0mbaaa.s:212 .progmem.data:000001d1 __c.32
C:\Users\Thomas\AppData\Local\Temp/cc0mbaaa.s:216 .progmem.data:000001df __c.33
C:\Users\Thomas\AppData\Local\Temp/cc0mbaaa.s:220 .progmem.data:000001f1 __c.34
C:\Users\Thomas\AppData\Local\Temp/cc0mbaaa.s:224 .progmem.data:00000203 __c.35
C:\Users\Thomas\AppData\Local\Temp/cc0mbaaa.s:228 .progmem.data:00000212 __c.36
C:\Users\Thomas\AppData\Local\Temp/cc0mbaaa.s:232 .progmem.data:00000226 __c.37
C:\Users\Thomas\AppData\Local\Temp/cc0mbaaa.s:236 .progmem.data:0000023a __c.38
C:\Users\Thomas\AppData\Local\Temp/cc0mbaaa.s:240 .progmem.data:0000024e __c.39
C:\Users\Thomas\AppData\Local\Temp/cc0mbaaa.s:244 .progmem.data:0000025b __c.40
C:\Users\Thomas\AppData\Local\Temp/cc0mbaaa.s:248 .progmem.data:0000026a __c.41
C:\Users\Thomas\AppData\Local\Temp/cc0mbaaa.s:252 .progmem.data:00000279 __c.42
C:\Users\Thomas\AppData\Local\Temp/cc0mbaaa.s:256 .progmem.data:00000288 __c.43
C:\Users\Thomas\AppData\Local\Temp/cc0mbaaa.s:260 .progmem.data:0000029c __c.44
C:\Users\Thomas\AppData\Local\Temp/cc0mbaaa.s:264 .progmem.data:000002b0 __c.45
C:\Users\Thomas\AppData\Local\Temp/cc0mbaaa.s:268 .progmem.data:000002c0 __c.46
C:\Users\Thomas\AppData\Local\Temp/cc0mbaaa.s:272 .progmem.data:000002d2 __c.47
C:\Users\Thomas\AppData\Local\Temp/cc0mbaaa.s:276 .progmem.data:000002db __c.48
C:\Users\Thomas\AppData\Local\Temp/cc0mbaaa.s:280 .progmem.data:000002eb __c.49
C:\Users\Thomas\AppData\Local\Temp/cc0mbaaa.s:284 .progmem.data:000002fb __c.50
C:\Users\Thomas\AppData\Local\Temp/cc0mbaaa.s:288 .progmem.data:0000030b __c.51
C:\Users\Thomas\AppData\Local\Temp/cc0mbaaa.s:292 .progmem.data:00000313 __c.52
C:\Users\Thomas\AppData\Local\Temp/cc0mbaaa.s:296 .progmem.data:00000321 __c.53
C:\Users\Thomas\AppData\Local\Temp/cc0mbaaa.s:300 .progmem.data:0000032f __c.54
C:\Users\Thomas\AppData\Local\Temp/cc0mbaaa.s:304 .progmem.data:0000033d __c.55
C:\Users\Thomas\AppData\Local\Temp/cc0mbaaa.s:308 .progmem.data:00000349 __c.56
C:\Users\Thomas\AppData\Local\Temp/cc0mbaaa.s:312 .progmem.data:00000355 __c.57
C:\Users\Thomas\AppData\Local\Temp/cc0mbaaa.s:316 .progmem.data:00000361 __c.58
C:\Users\Thomas\AppData\Local\Temp/cc0mbaaa.s:320 .progmem.data:0000036d __c.59
C:\Users\Thomas\AppData\Local\Temp/cc0mbaaa.s:324 .progmem.data:00000379 __c.60
C:\Users\Thomas\AppData\Local\Temp/cc0mbaaa.s:328 .progmem.data:00000385 __c.61
C:\Users\Thomas\AppData\Local\Temp/cc0mbaaa.s:332 .progmem.data:00000391 __c.62
C:\Users\Thomas\AppData\Local\Temp/cc0mbaaa.s:336 .progmem.data:0000039d __c.63
C:\Users\Thomas\AppData\Local\Temp/cc0mbaaa.s:340 .progmem.data:000003a5 __c.64
C:\Users\Thomas\AppData\Local\Temp/cc0mbaaa.s:344 .progmem.data:000003b3 __c.65
C:\Users\Thomas\AppData\Local\Temp/cc0mbaaa.s:348 .progmem.data:000003c1 __c.66
C:\Users\Thomas\AppData\Local\Temp/cc0mbaaa.s:352 .progmem.data:000003cf __c.67
C:\Users\Thomas\AppData\Local\Temp/cc0mbaaa.s:356 .progmem.data:000003df __c.68
C:\Users\Thomas\AppData\Local\Temp/cc0mbaaa.s:360 .progmem.data:000003ef __c.69
C:\Users\Thomas\AppData\Local\Temp/cc0mbaaa.s:364 .progmem.data:000003ff __c.70
C:\Users\Thomas\AppData\Local\Temp/cc0mbaaa.s:368 .progmem.data:0000040f __c.71
C:\Users\Thomas\AppData\Local\Temp/cc0mbaaa.s:372 .progmem.data:0000041f __c.72
C:\Users\Thomas\AppData\Local\Temp/cc0mbaaa.s:376 .progmem.data:00000430 __c.73
C:\Users\Thomas\AppData\Local\Temp/cc0mbaaa.s:380 .progmem.data:00000441 __c.74
C:\Users\Thomas\AppData\Local\Temp/cc0mbaaa.s:384 .progmem.data:00000452 __c.75
C:\Users\Thomas\AppData\Local\Temp/cc0mbaaa.s:388 .progmem.data:00000461 __c.76
C:\Users\Thomas\AppData\Local\Temp/cc0mbaaa.s:392 .progmem.data:00000472 __c.77
C:\Users\Thomas\AppData\Local\Temp/cc0mbaaa.s:396 .progmem.data:00000483 __c.78
C:\Users\Thomas\AppData\Local\Temp/cc0mbaaa.s:400 .progmem.data:00000494 __c.79
C:\Users\Thomas\AppData\Local\Temp/cc0mbaaa.s:404 .progmem.data:000004a3 __c.80
C:\Users\Thomas\AppData\Local\Temp/cc0mbaaa.s:408 .progmem.data:000004b7 __c.81
C:\Users\Thomas\AppData\Local\Temp/cc0mbaaa.s:412 .progmem.data:000004cb __c.82
C:\Users\Thomas\AppData\Local\Temp/cc0mbaaa.s:416 .progmem.data:000004dc __c.83
C:\Users\Thomas\AppData\Local\Temp/cc0mbaaa.s:420 .progmem.data:000004df __c.84
C:\Users\Thomas\AppData\Local\Temp/cc0mbaaa.s:424 .progmem.data:000004e2 __c.85
C:\Users\Thomas\AppData\Local\Temp/cc0mbaaa.s:428 .progmem.data:000004e5 __c.86
C:\Users\Thomas\AppData\Local\Temp/cc0mbaaa.s:432 .progmem.data:000004f3 __c.87
C:\Users\Thomas\AppData\Local\Temp/cc0mbaaa.s:436 .progmem.data:00000500 __c.88
C:\Users\Thomas\AppData\Local\Temp/cc0mbaaa.s:440 .progmem.data:0000050d __c.89
C:\Users\Thomas\AppData\Local\Temp/cc0mbaaa.s:445 .text:00000028 Menu
 
UNDEFINED SYMBOLS
__do_copy_data
__do_clear_bss
_printf_P
__tablejump2__
PlatinenVersion
__udivmodqi4
Mixer
GetActiveParamSet
VersionInfo
MissingMotor
I2CTimeout
EE_Parameter
HoehenWert
__divmodsi4
SollHoehe
MessLuftdruck
IntegralNick
IntegralRoll
KompassValue
PPM_in
AdNeutralNick
AdWertNick
AdNeutralRoll
AdWertRoll
AdNeutralGier
AdWertGier
AnalogOffsetNick
AnalogOffsetRoll
AnalogOffsetGier
NeutralAccX
AdWertAccNick
NeutralAccY
AdWertAccRoll
NeutralAccZ
AdWertAccHoch
UBat
__divmodhi4
Capacity
__udivmodhi4
SenderOkay
Channels
KompassRichtung
KompassStartwert
Poti
Parameter_ServoNickControl
ServoNickValue
ExternControl
Motor
FlugMinutenGesamt
FlugMinuten
SetParamWord
__epilogue_restores__
/branches/metro/v0.82a metro_Akku+/mymath.c
0,0 → 1,41
#include <stdlib.h>
#include <avr/pgmspace.h>
#include "mymath.h"
 
// discrete mathematics
 
// Sinus with argument in degree at an angular resolution of 1 degree and a discretisation of 13 bit.
const uint16_t pgm_sinlookup[91] PROGMEM = {0, 143, 286, 429, 571, 714, 856, 998, 1140, 1282, 1423, 1563, 1703, 1843, 1982, 2120, 2258, 2395, 2531, 2667, 2802, 2936, 3069, 3201, 3332, 3462, 3591, 3719, 3846, 3972, 4096, 4219, 4341, 4462, 4581, 4699, 4815, 4930, 5043, 5155, 5266, 5374, 5482, 5587, 5691, 5793, 5893, 5991, 6088, 6183, 6275, 6366, 6455, 6542, 6627, 6710, 6791, 6870, 6947, 7022, 7094, 7165, 7233, 7299, 7363, 7424, 7484, 7541, 7595, 7648, 7698, 7746, 7791, 7834, 7875, 7913, 7949, 7982, 8013, 8041, 8068, 8091, 8112, 8131, 8147, 8161, 8172, 8181, 8187, 8191, 8192};
 
int16_t c_sin_8192(int16_t angle)
{
int8_t m,n;
int16_t sinus;
 
// avoid negative angles
if (angle < 0)
{
m = -1;
angle = abs(angle);
}
else m = +1;
 
// fold angle to intervall 0 to 359
angle %= 360;
 
// check quadrant
if (angle <= 90) n=1; // first quadrant
else if ((angle > 90) && (angle <= 180)) {angle = 180 - angle; n = 1;} // second quadrant
else if ((angle > 180) && (angle <= 270)) {angle = angle - 180; n = -1;} // third quadrant
else {angle = 360 - angle; n = -1;} //fourth quadrant
// get lookup value
sinus = pgm_read_word(&pgm_sinlookup[angle]);
// calculate sinus value
return (sinus * m * n);
}
 
// Cosinus with argument in degree at an angular resolution of 1 degree and a discretisation of 13 bit.
int16_t c_cos_8192(int16_t angle)
{
return (c_sin_8192(90 - angle));
}
/branches/metro/v0.82a metro_Akku+/mymath.d
0,0 → 1,0
mymath.o mymath.d : mymath.c mymath.h
/branches/metro/v0.82a metro_Akku+/mymath.h
0,0 → 1,10
#ifndef _MYMATH_H
#define _MYMATH_H
 
#include <inttypes.h>
 
extern int16_t c_sin_8192(int16_t angle);
extern int16_t c_cos_8192(int16_t angle);
extern int16_t c_atan2(int16_t y, int16_t x);
extern uint32_t c_sqrt(uint32_t a);
#endif // _MYMATH_H
/branches/metro/v0.82a metro_Akku+/mymath.lst
0,0 → 1,226
1 .file "mymath.c"
2 .arch atmega644p
3 __SREG__ = 0x3f
4 __SP_H__ = 0x3e
5 __SP_L__ = 0x3d
6 __tmp_reg__ = 0
7 __zero_reg__ = 1
8 .global __do_copy_data
9 .global __do_clear_bss
10 .global pgm_sinlookup
11 .section .progmem.data,"a",@progbits
14 pgm_sinlookup:
15 0000 0000 .word 0
16 0002 8F00 .word 143
17 0004 1E01 .word 286
18 0006 AD01 .word 429
19 0008 3B02 .word 571
20 000a CA02 .word 714
21 000c 5803 .word 856
22 000e E603 .word 998
23 0010 7404 .word 1140
24 0012 0205 .word 1282
25 0014 8F05 .word 1423
26 0016 1B06 .word 1563
27 0018 A706 .word 1703
28 001a 3307 .word 1843
29 001c BE07 .word 1982
30 001e 4808 .word 2120
31 0020 D208 .word 2258
32 0022 5B09 .word 2395
33 0024 E309 .word 2531
34 0026 6B0A .word 2667
35 0028 F20A .word 2802
36 002a 780B .word 2936
37 002c FD0B .word 3069
38 002e 810C .word 3201
39 0030 040D .word 3332
40 0032 860D .word 3462
41 0034 070E .word 3591
42 0036 870E .word 3719
43 0038 060F .word 3846
44 003a 840F .word 3972
45 003c 0010 .word 4096
46 003e 7B10 .word 4219
47 0040 F510 .word 4341
48 0042 6E11 .word 4462
49 0044 E511 .word 4581
50 0046 5B12 .word 4699
51 0048 CF12 .word 4815
52 004a 4213 .word 4930
53 004c B313 .word 5043
54 004e 2314 .word 5155
55 0050 9214 .word 5266
56 0052 FE14 .word 5374
57 0054 6A15 .word 5482
58 0056 D315 .word 5587
59 0058 3B16 .word 5691
60 005a A116 .word 5793
61 005c 0517 .word 5893
62 005e 6717 .word 5991
63 0060 C817 .word 6088
64 0062 2718 .word 6183
65 0064 8318 .word 6275
66 0066 DE18 .word 6366
67 0068 3719 .word 6455
68 006a 8E19 .word 6542
69 006c E319 .word 6627
70 006e 361A .word 6710
71 0070 871A .word 6791
72 0072 D61A .word 6870
73 0074 231B .word 6947
74 0076 6E1B .word 7022
75 0078 B61B .word 7094
76 007a FD1B .word 7165
77 007c 411C .word 7233
78 007e 831C .word 7299
79 0080 C31C .word 7363
80 0082 001D .word 7424
81 0084 3C1D .word 7484
82 0086 751D .word 7541
83 0088 AB1D .word 7595
84 008a E01D .word 7648
85 008c 121E .word 7698
86 008e 421E .word 7746
87 0090 6F1E .word 7791
88 0092 9A1E .word 7834
89 0094 C31E .word 7875
90 0096 E91E .word 7913
91 0098 0D1F .word 7949
92 009a 2E1F .word 7982
93 009c 4D1F .word 8013
94 009e 691F .word 8041
95 00a0 841F .word 8068
96 00a2 9B1F .word 8091
97 00a4 B01F .word 8112
98 00a6 C31F .word 8131
99 00a8 D31F .word 8147
100 00aa E11F .word 8161
101 00ac EC1F .word 8172
102 00ae F51F .word 8181
103 00b0 FB1F .word 8187
104 00b2 FF1F .word 8191
105 00b4 0020 .word 8192
106 .text
107 .global c_sin_8192
109 c_sin_8192:
110 /* prologue: frame size=0 */
111 0000 CF93 push r28
112 /* prologue end (size=1) */
113 0002 FC01 movw r30,r24
114 0004 97FF sbrs r25,7
115 0006 05C0 rjmp .L2
116 0008 CFEF ldi r28,lo8(-1)
117 000a F095 com r31
118 000c E195 neg r30
119 000e FF4F sbci r31,lo8(-1)
120 0010 01C0 rjmp .L4
121 .L2:
122 0012 C1E0 ldi r28,lo8(1)
123 .L4:
124 0014 28E6 ldi r18,lo8(360)
125 0016 31E0 ldi r19,hi8(360)
126 0018 CF01 movw r24,r30
127 001a B901 movw r22,r18
128 001c 0E94 0000 call __divmodhi4
129 0020 FC01 movw r30,r24
130 0022 8B35 cpi r24,91
131 0024 9105 cpc r25,__zero_reg__
132 0026 54F0 brlt .L12
133 0028 8B55 subi r24,lo8(-(-91))
134 002a 9040 sbci r25,hi8(-(-91))
135 002c 8A35 cpi r24,90
136 002e 9105 cpc r25,__zero_reg__
137 0030 38F4 brsh .L7
138 0032 84EB ldi r24,lo8(180)
139 0034 90E0 ldi r25,hi8(180)
140 0036 8E1B sub r24,r30
141 0038 9F0B sbc r25,r31
142 003a FC01 movw r30,r24
143 .L12:
144 003c 41E0 ldi r20,lo8(1)
145 003e 0DC0 rjmp .L6
146 .L7:
147 0040 CF01 movw r24,r30
148 0042 855B subi r24,lo8(-(-181))
149 0044 9040 sbci r25,hi8(-(-181))
150 0046 8A35 cpi r24,90
151 0048 9105 cpc r25,__zero_reg__
152 004a 18F4 brsh .L9
153 004c E45B subi r30,lo8(-(-180))
154 004e F040 sbci r31,hi8(-(-180))
155 0050 03C0 rjmp .L11
156 .L9:
157 0052 2E1B sub r18,r30
158 0054 3F0B sbc r19,r31
159 0056 F901 movw r30,r18
160 .L11:
161 0058 4FEF ldi r20,lo8(-1)
162 .L6:
163 005a EE0F add r30,r30
164 005c FF1F adc r31,r31
165 005e E050 subi r30,lo8(-(pgm_sinlookup))
166 0060 F040 sbci r31,hi8(-(pgm_sinlookup))
167 /* #APP */
168 0062 2591 lpm r18, Z+
169 0064 3491 lpm r19, Z
170
171 /* #NOAPP */
172 0066 8C2F mov r24,r28
173 0068 9927 clr r25
174 006a 87FD sbrc r24,7
175 006c 9095 com r25
176 006e 289F mul r18,r24
177 0070 B001 movw r22,r0
178 0072 299F mul r18,r25
179 0074 700D add r23,r0
180 0076 389F mul r19,r24
181 0078 700D add r23,r0
182 007a 1124 clr r1
183 007c 842F mov r24,r20
184 007e 9927 clr r25
185 0080 87FD sbrc r24,7
186 0082 9095 com r25
187 0084 689F mul r22,r24
188 0086 A001 movw r20,r0
189 0088 699F mul r22,r25
190 008a 500D add r21,r0
191 008c 789F mul r23,r24
192 008e 500D add r21,r0
193 0090 1124 clr r1
194 0092 CA01 movw r24,r20
195 /* epilogue: frame size=0 */
196 0094 CF91 pop r28
197 0096 0895 ret
198 /* epilogue end (size=2) */
199 /* function c_sin_8192 size 80 (77) */
201 .global c_cos_8192
203 c_cos_8192:
204 /* prologue: frame size=0 */
205 /* prologue end (size=0) */
206 0098 2AE5 ldi r18,lo8(90)
207 009a 30E0 ldi r19,hi8(90)
208 009c 281B sub r18,r24
209 009e 390B sbc r19,r25
210 00a0 C901 movw r24,r18
211 00a2 0E94 0000 call c_sin_8192
212 /* epilogue: frame size=0 */
213 00a6 0895 ret
214 /* epilogue end (size=1) */
215 /* function c_cos_8192 size 8 (7) */
217 /* File "mymath.c": code 88 = 0x0058 ( 84), prologues 1, epilogues 3 */
DEFINED SYMBOLS
*ABS*:00000000 mymath.c
C:\Users\Thomas\AppData\Local\Temp/ccywbaaa.s:3 *ABS*:0000003f __SREG__
C:\Users\Thomas\AppData\Local\Temp/ccywbaaa.s:4 *ABS*:0000003e __SP_H__
C:\Users\Thomas\AppData\Local\Temp/ccywbaaa.s:5 *ABS*:0000003d __SP_L__
C:\Users\Thomas\AppData\Local\Temp/ccywbaaa.s:6 *ABS*:00000000 __tmp_reg__
C:\Users\Thomas\AppData\Local\Temp/ccywbaaa.s:7 *ABS*:00000001 __zero_reg__
C:\Users\Thomas\AppData\Local\Temp/ccywbaaa.s:14 .progmem.data:00000000 pgm_sinlookup
C:\Users\Thomas\AppData\Local\Temp/ccywbaaa.s:109 .text:00000000 c_sin_8192
C:\Users\Thomas\AppData\Local\Temp/ccywbaaa.s:203 .text:00000098 c_cos_8192
 
UNDEFINED SYMBOLS
__do_copy_data
__do_clear_bss
__divmodhi4
/branches/metro/v0.82a metro_Akku+/old_macros.h
0,0 → 1,47
/*
For backwards compatibility only.
Ingo Busker ingo@mikrocontroller.com
*/
 
#ifndef cbi
#define cbi(sfr, bit) (_SFR_BYTE(sfr) &= ~_BV(bit))
#endif
 
#ifndef sbi
#define sbi(sfr, bit) (_SFR_BYTE(sfr) |= _BV(bit))
#endif
 
#ifndef inb
#define inb(sfr) _SFR_BYTE(sfr)
#endif
 
#ifndef outb
#define outb(sfr, val) (_SFR_BYTE(sfr) = (val))
#endif
 
#ifndef inw
#define inw(sfr) _SFR_WORD(sfr)
#endif
 
#ifndef outw
#define outw(sfr, val) (_SFR_WORD(sfr) = (val))
#endif
 
#ifndef outp
#define outp(val, sfr) outb(sfr, val)
#endif
 
#ifndef inp
#define inp(sfr) inb(sfr)
#endif
 
#ifndef BV
#define BV(bit) _BV(bit)
#endif
 
 
#ifndef PRG_RDB
#define PRG_RDB pgm_read_byte
#endif
 
/branches/metro/v0.82a metro_Akku+/printf_P.h
0,0 → 1,69
// Die Funktion printf_P() unterliegt ihrer eigenen Lizenz und ist nicht von der Lizenz für den MikroKopter-Teil unterstellt
 
/*
Copyright (C) 1993 Free Software Foundation
 
This file is part of the GNU IO Library. This library is free
software; you can redistribute it and/or modify it under the
terms of the GNU General Public License as published by the
Free Software Foundation; either version 2, or (at your option)
any later version.
 
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
 
You should have received a copy of the GNU General Public License
along with this library; see the file COPYING. If not, write to the Free
Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
 
As a special exception, if you link this library with files
compiled with a GNU compiler to produce an executable, this does not cause
the resulting executable to be covered by the GNU General Public License.
This exception does not however invalidate any other reasons why
the executable file might be covered by the GNU General Public License. */
 
/*
* Copyright (c) 1990 Regents of the University of California.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. [rescinded 22 July 1999]
* 4. Neither the name of the University nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*/
 
/******************************************************************************/
#ifndef _PRINTF_P_H_
#define _PRINTF_P_H_
 
#include <avr/pgmspace.h>
 
// function pointer to external callback function
typedef void (*pVoidFnctChar) (char );
typedef void (*pVoidFnct_pVoidFnctChar_const_fmt) (pVoidFnctChar, char const *fmt0, ...);
extern pVoidFnct_pVoidFnctChar_const_fmt _printf_P;
 
 
#endif //_PRINTF_P_H_
/branches/metro/v0.82a metro_Akku+/rc.c
0,0 → 1,217
/*#######################################################################################
Decodieren eines RC Summen Signals
#######################################################################################*/
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// + Copyright (c) Holger Buss, Ingo Busker
// + only for non-profit use
// + www.MikroKopter.com
// + porting the sources to other systems or using the software on other systems (except hardware from www.mikrokopter.de) is not allowed
// + see the File "License.txt" for further Informations
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 
#include "rc.h"
#include "main.h"
// Achtung: ACT_S3D_SUMMENSIGNAL wird in der Main.h gesetzt
 
volatile int PPM_in[26];
volatile int PPM_diff[26]; // das diffenzierte Stick-Signal
volatile char Channels,tmpChannels = 0;
volatile unsigned char NewPpmData = 1;
 
//############################################################################
//zum decodieren des PPM-Signals wird Timer1 mit seiner Input
//Capture Funktion benutzt:
void rc_sum_init (void)
//############################################################################
{
unsigned char i;
for(i=0;i<26;i++)
{
PPM_in[i] = 0;
PPM_diff[i] = 0;
}
 
AdNeutralGier = 0;
AdNeutralRoll = 0;
AdNeutralNick = 0;
return;
}
 
#ifndef ACT_S3D_SUMMENSIGNAL
//############################################################################
//Diese Routine startet und inizialisiert den Timer für RC
ISR(TIMER1_CAPT_vect)
//############################################################################
{
if(!(EE_Parameter.ExtraConfig & CFG_SENSITIVE_RC))
{
static unsigned int AltICR=0;
signed int signal = 0,tmp;
static int index;
 
signal = (unsigned int) ICR1 - AltICR;
AltICR = ICR1;
//Syncronisationspause? (3.52 ms < signal < 25.6 ms)
if((signal > 1100) && (signal < 8000))
{
Channels = index;
if(index >= 4) NewPpmData = 0; // Null bedeutet: Neue Daten
index = 1;
}
else
{
if(index < 13)
{
if((signal > 250) && (signal < 687))
{
signal -= 466;
// Stabiles Signal
if(abs(signal - PPM_in[index]) < 6) { if(SenderOkay < 200) SenderOkay += 10; else SenderOkay = 200;}
tmp = (3 * (PPM_in[index]) + signal) / 4;
if(tmp > signal+1) tmp--; else
if(tmp < signal-1) tmp++;
if(SenderOkay >= 195) PPM_diff[index] = ((tmp - PPM_in[index]) / 3) * 3;
else PPM_diff[index] = 0;
PPM_in[index] = tmp;
}
index++;
if(PlatinenVersion < 20)
{
if(index == 5) J3High; else J3Low; // Servosignal an J3 anlegen
if(index == 6) J4High; else J4Low; // Servosignal an J4 anlegen
if(index == 7) J5High; else J5Low; // Servosignal an J5 anlegen
}
}
}
}
else
{
static unsigned int AltICR=0;
static int ppm_in[13];
static int ppm_diff[13];
static int old_ppm_in[13];
static int old_ppm_diff[13];
signed int signal = 0,tmp;
static unsigned char index, okay_cnt = 0;
signal = (unsigned int) ICR1 - AltICR;
AltICR = ICR1;
//Syncronisationspause? (3.52 ms < signal < 25.6 ms)
if((signal > 1100) && (signal < 8000))
{
tmpChannels = index;
if(tmpChannels >= 4 && Channels == tmpChannels)
{
if(okay_cnt > 10)
{
NewPpmData = 0; // Null bedeutet: Neue Daten
for(index = 0; index < 13; index++)
{
if(okay_cnt > 30)
{
old_ppm_in[index] = PPM_in[index];
old_ppm_diff[index] = PPM_diff[index];
}
PPM_in[index] = ppm_in[index];
PPM_diff[index] = ppm_diff[index];
}
}
if(okay_cnt < 255) okay_cnt++;
}
else
{
if(okay_cnt > 100) okay_cnt = 10; else okay_cnt = 0;
ROT_ON;
}
index = 1;
if(!MotorenEin) Channels = tmpChannels;
}
else
{
if(index < 13)
{
if((signal > 250) && (signal < 687))
{
signal -= 466;
// Stabiles Signal
if((abs(signal - ppm_in[index]) < 6))
{
if(okay_cnt > 25) SenderOkay += 10;
else
if(okay_cnt > 10) SenderOkay += 2;
if(SenderOkay > 200) SenderOkay = 200;
}
tmp = (3 * (ppm_in[index]) + signal) / 4;
if(tmp > signal+1) tmp--; else
if(tmp < signal-1) tmp++;
if(SenderOkay >= 190) ppm_diff[index] = ((tmp - ppm_in[index]) / 3) * 3;
else ppm_diff[index] = 0;
ppm_in[index] = tmp;
}
else ROT_ON;
if(PlatinenVersion < 20)
{
if(index == 5) J3High; else J3Low; // Servosignal an J3 anlegen
if(index == 6) J4High; else J4Low; // Servosignal an J4 anlegen
if(index == 7) J5High; else J5Low; // Servosignal an J5 anlegen
}
}
if(index < 20) index++;
else
if(index == 20)
{
unsigned char i;
ROT_ON;
index = 30;
for(i=0;i<13;i++) // restore from older data
{
PPM_in[i] = old_ppm_in[i];
PPM_diff[i] = 0;
// okay_cnt /= 2;
}
}
}
}
}
 
#else
//############################################################################
//Diese Routine startet und inizialisiert den Timer für RC
ISR(TIMER1_CAPT_vect)
//############################################################################
 
{
static unsigned int AltICR=0;
signed int signal = 0,tmp;
static int index;
 
signal = (unsigned int) ICR1 - AltICR;
signal /= 2;
AltICR = ICR1;
//Syncronisationspause?
if((signal > 1100*2) && (signal < 8000*2))
{
if(index >= 4) NewPpmData = 0; // Null bedeutet: Neue Daten
index = 1;
}
else
{
if(index < 13)
{
if((signal > 250) && (signal < 687*2))
{
signal -= 962;
// Stabiles Signal
if(abs(signal - PPM_in[index]) < 6) { if(SenderOkay < 200) SenderOkay += 10;}
tmp = (3 * (PPM_in[index]) + signal) / 4;
if(tmp > signal+1) tmp--; else
if(tmp < signal-1) tmp++;
if(SenderOkay >= 195) PPM_diff[index] = ((tmp - PPM_in[index]) / 3) * 3;
else PPM_diff[index] = 0;
PPM_in[index] = tmp;
}
index++;
}
}
}
#endif
 
/branches/metro/v0.82a metro_Akku+/rc.d
0,0 → 1,3
rc.o rc.d : rc.c rc.h main.h old_macros.h printf_P.h timer0.h uart.h analog.h \
twimaster.h menu.h fc.h gps.h spi.h led.h spektrum.h capacity.h \
eeprom.h libfc.h debug.h
/branches/metro/v0.82a metro_Akku+/rc.h
0,0 → 1,31
/*#######################################################################################
Derkodieren eines RC Summen Signals
#######################################################################################*/
 
#ifndef _RC_H
#define _RC_H
 
#if defined (__AVR_ATmega32__)
#define TIMER_TEILER CK64
#define TIMER_RELOAD_VALUE 250
#endif
 
#if defined (__AVR_ATmega644__)
#define TIMER_RELOAD_VALUE 250
#endif
 
#if defined (__AVR_ATmega644P__)
#define TIMER_RELOAD_VALUE 250
#endif
 
#define GAS PPM_in[2]
 
 
extern void rc_sum_init (void);
 
extern volatile int PPM_in[26];
extern volatile int PPM_diff[26]; // das diffenzierte Stick-Signal
extern volatile unsigned char NewPpmData;
extern volatile char Channels,tmpChannels;
 
#endif //_RC_H
/branches/metro/v0.82a metro_Akku+/rc.lst
0,0 → 1,690
1 .file "rc.c"
2 .arch atmega644p
3 __SREG__ = 0x3f
4 __SP_H__ = 0x3e
5 __SP_L__ = 0x3d
6 __tmp_reg__ = 0
7 __zero_reg__ = 1
8 .global __do_copy_data
9 .global __do_clear_bss
10 .global NewPpmData
11 .data
14 NewPpmData:
15 0000 01 .byte 1
16 .global tmpChannels
17 .global tmpChannels
18 .section .bss
21 tmpChannels:
22 0000 00 .skip 1,0
23 .text
24 .global rc_sum_init
26 rc_sum_init:
27 /* prologue: frame size=0 */
28 /* prologue end (size=0) */
29 0000 89E1 ldi r24,lo8(25)
30 0002 A0E0 ldi r26,lo8(PPM_diff)
31 0004 B0E0 ldi r27,hi8(PPM_diff)
32 0006 E0E0 ldi r30,lo8(PPM_in)
33 0008 F0E0 ldi r31,hi8(PPM_in)
34 .L5:
35 000a 1182 std Z+1,__zero_reg__
36 000c 1082 st Z,__zero_reg__
37 000e 3296 adiw r30,2
38 0010 1196 adiw r26,1
39 0012 1C92 st X,__zero_reg__
40 0014 1E92 st -X,__zero_reg__
41 0016 1296 adiw r26,2
42 0018 8150 subi r24,lo8(-(-1))
43 001a 87FF sbrs r24,7
44 001c F6CF rjmp .L5
45 001e 1092 0000 sts (AdNeutralGier)+1,__zero_reg__
46 0022 1092 0000 sts AdNeutralGier,__zero_reg__
47 0026 1092 0000 sts (AdNeutralRoll)+1,__zero_reg__
48 002a 1092 0000 sts AdNeutralRoll,__zero_reg__
49 002e 1092 0000 sts (AdNeutralNick)+1,__zero_reg__
50 0032 1092 0000 sts AdNeutralNick,__zero_reg__
51 /* epilogue: frame size=0 */
52 0036 0895 ret
53 /* epilogue end (size=1) */
54 /* function rc_sum_init size 28 (27) */
56 .lcomm AltICR.0,2
57 .lcomm index.1,2
58 .lcomm AltICR.2,2
59 .lcomm ppm_in.3,26
60 .lcomm ppm_diff.4,26
61 .lcomm old_ppm_in.5,26
62 .lcomm old_ppm_diff.6,26
63 .lcomm index.7,1
64 .lcomm okay_cnt.8,1
65 .global __vector_12
67 __vector_12:
68 /* prologue: frame size=0 */
69 0038 1F92 push __zero_reg__
70 003a 0F92 push __tmp_reg__
71 003c 0FB6 in __tmp_reg__,__SREG__
72 003e 0F92 push __tmp_reg__
73 0040 1124 clr __zero_reg__
74 0042 0F93 push r16
75 0044 1F93 push r17
76 0046 2F93 push r18
77 0048 3F93 push r19
78 004a 4F93 push r20
79 004c 5F93 push r21
80 004e 6F93 push r22
81 0050 7F93 push r23
82 0052 8F93 push r24
83 0054 9F93 push r25
84 0056 AF93 push r26
85 0058 BF93 push r27
86 005a CF93 push r28
87 005c DF93 push r29
88 005e EF93 push r30
89 0060 FF93 push r31
90 /* prologue end (size=21) */
91 0062 8091 0000 lds r24,EE_Parameter+102
92 0066 82FD sbrc r24,2
93 0068 CFC0 rjmp .L9
94 006a 4091 8600 lds r20,134
95 006e 5091 8700 lds r21,(134)+1
96 0072 8091 0000 lds r24,AltICR.0
97 0076 9091 0000 lds r25,(AltICR.0)+1
98 007a 481B sub r20,r24
99 007c 590B sbc r21,r25
100 007e 8091 8600 lds r24,134
101 0082 9091 8700 lds r25,(134)+1
102 0086 9093 0000 sts (AltICR.0)+1,r25
103 008a 8093 0000 sts AltICR.0,r24
104 008e CA01 movw r24,r20
105 0090 8D54 subi r24,lo8(-(-1101))
106 0092 9440 sbci r25,hi8(-(-1101))
107 0094 A091 0000 lds r26,index.1
108 0098 B091 0000 lds r27,(index.1)+1
109 009c 835F subi r24,lo8(6899)
110 009e 9A41 sbci r25,hi8(6899)
111 00a0 78F4 brsh .L10
112 00a2 8091 0000 lds r24,index.1
113 00a6 8093 0000 sts Channels,r24
114 00aa 1497 sbiw r26,4
115 00ac 14F0 brlt .L11
116 00ae 1092 0000 sts NewPpmData,__zero_reg__
117 .L11:
118 00b2 81E0 ldi r24,lo8(1)
119 00b4 90E0 ldi r25,hi8(1)
120 00b6 9093 0000 sts (index.1)+1,r25
121 00ba 8093 0000 sts index.1,r24
122 00be 07C2 rjmp .L8
123 .L10:
124 00c0 AD30 cpi r26,13
125 00c2 B105 cpc r27,__zero_reg__
126 00c4 0CF0 brlt .+2
127 00c6 03C2 rjmp .L8
128 00c8 CA01 movw r24,r20
129 00ca 8B5F subi r24,lo8(-(-251))
130 00cc 9040 sbci r25,hi8(-(-251))
131 00ce 845B subi r24,lo8(436)
132 00d0 9140 sbci r25,hi8(436)
133 00d2 08F0 brlo .+2
134 00d4 74C0 rjmp .L14
135 00d6 425D subi r20,lo8(-(-466))
136 00d8 5140 sbci r21,hi8(-(-466))
137 00da FD01 movw r30,r26
138 00dc EA0F add r30,r26
139 00de FB1F adc r31,r27
140 00e0 E050 subi r30,lo8(-(PPM_in))
141 00e2 F040 sbci r31,hi8(-(PPM_in))
142 00e4 8081 ld r24,Z
143 00e6 9181 ldd r25,Z+1
144 00e8 FA01 movw r30,r20
145 00ea E81B sub r30,r24
146 00ec F90B sbc r31,r25
147 00ee CF01 movw r24,r30
148 00f0 F7FF sbrs r31,7
149 00f2 03C0 rjmp .L16
150 00f4 9095 com r25
151 00f6 8195 neg r24
152 00f8 9F4F sbci r25,lo8(-1)
153 .L16:
154 00fa 0697 sbiw r24,6
155 00fc 5CF4 brge .L15
156 00fe 8091 0000 lds r24,SenderOkay
157 0102 883C cpi r24,lo8(-56)
158 0104 20F4 brsh .L17
159 0106 8091 0000 lds r24,SenderOkay
160 010a 865F subi r24,lo8(-(10))
161 010c 01C0 rjmp .L87
162 .L17:
163 010e 88EC ldi r24,lo8(-56)
164 .L87:
165 0110 8093 0000 sts SenderOkay,r24
166 .L15:
167 0114 FD01 movw r30,r26
168 0116 EA0F add r30,r26
169 0118 FB1F adc r31,r27
170 011a E050 subi r30,lo8(-(PPM_in))
171 011c F040 sbci r31,hi8(-(PPM_in))
172 011e 8081 ld r24,Z
173 0120 9181 ldd r25,Z+1
174 0122 9C01 movw r18,r24
175 0124 220F lsl r18
176 0126 331F rol r19
177 0128 280F add r18,r24
178 012a 391F adc r19,r25
179 012c 240F add r18,r20
180 012e 351F adc r19,r21
181 0130 37FF sbrs r19,7
182 0132 02C0 rjmp .L19
183 0134 2D5F subi r18,lo8(-(3))
184 0136 3F4F sbci r19,hi8(-(3))
185 .L19:
186 0138 E901 movw r28,r18
187 013a D595 asr r29
188 013c C795 ror r28
189 013e D595 asr r29
190 0140 C795 ror r28
191 0142 CA01 movw r24,r20
192 0144 0196 adiw r24,1
193 0146 8C17 cp r24,r28
194 0148 9D07 cpc r25,r29
195 014a 14F4 brge .L20
196 014c 2197 sbiw r28,1
197 014e 06C0 rjmp .L21
198 .L20:
199 0150 4150 subi r20,lo8(-(-1))
200 0152 5040 sbci r21,hi8(-(-1))
201 0154 C417 cp r28,r20
202 0156 D507 cpc r29,r21
203 0158 0CF4 brge .L21
204 015a 2196 adiw r28,1
205 .L21:
206 015c 8091 0000 lds r24,SenderOkay
207 0160 833C cpi r24,lo8(-61)
208 0162 E0F0 brlo .L23
209 0164 8D01 movw r16,r26
210 0166 0A0F add r16,r26
211 0168 1B1F adc r17,r27
212 016a F801 movw r30,r16
213 016c E050 subi r30,lo8(-(PPM_in))
214 016e F040 sbci r31,hi8(-(PPM_in))
215 0170 8081 ld r24,Z
216 0172 9181 ldd r25,Z+1
217 0174 9E01 movw r18,r28
218 0176 281B sub r18,r24
219 0178 390B sbc r19,r25
220 017a C901 movw r24,r18
221 017c 63E0 ldi r22,lo8(3)
222 017e 70E0 ldi r23,hi8(3)
223 0180 0E94 0000 call __divmodhi4
224 0184 CB01 movw r24,r22
225 0186 880F lsl r24
226 0188 991F rol r25
227 018a 860F add r24,r22
228 018c 971F adc r25,r23
229 018e 0050 subi r16,lo8(-(PPM_diff))
230 0190 1040 sbci r17,hi8(-(PPM_diff))
231 0192 D801 movw r26,r16
232 0194 1196 adiw r26,1
233 0196 9C93 st X,r25
234 0198 8E93 st -X,r24
235 019a 07C0 rjmp .L24
236 .L23:
237 019c AA0F add r26,r26
238 019e BB1F adc r27,r27
239 01a0 A050 subi r26,lo8(-(PPM_diff))
240 01a2 B040 sbci r27,hi8(-(PPM_diff))
241 01a4 1196 adiw r26,1
242 01a6 1C92 st X,__zero_reg__
243 01a8 1E92 st -X,__zero_reg__
244 .L24:
245 01aa E091 0000 lds r30,index.1
246 01ae F091 0000 lds r31,(index.1)+1
247 01b2 EE0F add r30,r30
248 01b4 FF1F adc r31,r31
249 01b6 E050 subi r30,lo8(-(PPM_in))
250 01b8 F040 sbci r31,hi8(-(PPM_in))
251 01ba D183 std Z+1,r29
252 01bc C083 st Z,r28
253 .L14:
254 01be 2091 0000 lds r18,index.1
255 01c2 3091 0000 lds r19,(index.1)+1
256 01c6 2F5F subi r18,lo8(-(1))
257 01c8 3F4F sbci r19,hi8(-(1))
258 01ca 3093 0000 sts (index.1)+1,r19
259 01ce 2093 0000 sts index.1,r18
260 01d2 8091 0000 lds r24,PlatinenVersion
261 01d6 8431 cpi r24,lo8(20)
262 01d8 08F0 brlo .+2
263 01da 79C1 rjmp .L8
264 01dc 2530 cpi r18,5
265 01de 3105 cpc r19,__zero_reg__
266 01e0 11F4 brne .L26
267 01e2 5D9A sbi 43-0x20,5
268 01e4 01C0 rjmp .L27
269 .L26:
270 01e6 5D98 cbi 43-0x20,5
271 .L27:
272 01e8 8091 0000 lds r24,index.1
273 01ec 9091 0000 lds r25,(index.1)+1
274 01f0 8630 cpi r24,6
275 01f2 9105 cpc r25,__zero_reg__
276 01f4 11F4 brne .L28
277 01f6 5C9A sbi 43-0x20,4
278 01f8 01C0 rjmp .L29
279 .L28:
280 01fa 5C98 cbi 43-0x20,4
281 .L29:
282 01fc 0797 sbiw r24,7
283 01fe 11F4 brne .L30
284 0200 5B9A sbi 43-0x20,3
285 0202 65C1 rjmp .L8
286 .L30:
287 0204 5B98 cbi 43-0x20,3
288 0206 63C1 rjmp .L8
289 .L9:
290 0208 4091 8600 lds r20,134
291 020c 5091 8700 lds r21,(134)+1
292 0210 8091 0000 lds r24,AltICR.2
293 0214 9091 0000 lds r25,(AltICR.2)+1
294 0218 481B sub r20,r24
295 021a 590B sbc r21,r25
296 021c 8091 8600 lds r24,134
297 0220 9091 8700 lds r25,(134)+1
298 0224 9093 0000 sts (AltICR.2)+1,r25
299 0228 8093 0000 sts AltICR.2,r24
300 022c CA01 movw r24,r20
301 022e 8D54 subi r24,lo8(-(-1101))
302 0230 9440 sbci r25,hi8(-(-1101))
303 0232 6091 0000 lds r22,index.7
304 0236 835F subi r24,lo8(6899)
305 0238 9A41 sbci r25,hi8(6899)
306 023a 08F0 brlo .+2
307 023c 7AC0 rjmp .L33
308 023e 6093 0000 sts tmpChannels,r22
309 0242 8091 0000 lds r24,tmpChannels
310 0246 8430 cpi r24,lo8(4)
311 0248 08F4 brsh .+2
312 024a 53C0 rjmp .L34
313 024c 9091 0000 lds r25,Channels
314 0250 8091 0000 lds r24,tmpChannels
315 0254 9817 cp r25,r24
316 0256 09F0 breq .+2
317 0258 4CC0 rjmp .L34
318 025a 5091 0000 lds r21,okay_cnt.8
319 025e 5B30 cpi r21,lo8(11)
320 0260 08F4 brsh .+2
321 0262 3FC0 rjmp .L35
322 0264 1092 0000 sts NewPpmData,__zero_reg__
323 0268 1092 0000 sts index.7,__zero_reg__
324 026c 40E0 ldi r20,lo8(0)
325 .L40:
326 026e 5F31 cpi r21,lo8(31)
327 0270 C0F0 brlo .L39
328 0272 E42F mov r30,r20
329 0274 FF27 clr r31
330 0276 EE0F add r30,r30
331 0278 FF1F adc r31,r31
332 027a 9F01 movw r18,r30
333 027c 2050 subi r18,lo8(-(old_ppm_in.5))
334 027e 3040 sbci r19,hi8(-(old_ppm_in.5))
335 0280 DF01 movw r26,r30
336 0282 A050 subi r26,lo8(-(PPM_in))
337 0284 B040 sbci r27,hi8(-(PPM_in))
338 0286 8D91 ld r24,X+
339 0288 9C91 ld r25,X
340 028a D901 movw r26,r18
341 028c 8D93 st X+,r24
342 028e 9C93 st X,r25
343 0290 DF01 movw r26,r30
344 0292 A050 subi r26,lo8(-(PPM_diff))
345 0294 B040 sbci r27,hi8(-(PPM_diff))
346 0296 8D91 ld r24,X+
347 0298 9C91 ld r25,X
348 029a E050 subi r30,lo8(-(old_ppm_diff.6))
349 029c F040 sbci r31,hi8(-(old_ppm_diff.6))
350 029e 9183 std Z+1,r25
351 02a0 8083 st Z,r24
352 .L39:
353 02a2 E42F mov r30,r20
354 02a4 FF27 clr r31
355 02a6 EE0F add r30,r30
356 02a8 FF1F adc r31,r31
357 02aa 9F01 movw r18,r30
358 02ac 2050 subi r18,lo8(-(PPM_in))
359 02ae 3040 sbci r19,hi8(-(PPM_in))
360 02b0 DF01 movw r26,r30
361 02b2 A050 subi r26,lo8(-(ppm_in.3))
362 02b4 B040 sbci r27,hi8(-(ppm_in.3))
363 02b6 8D91 ld r24,X+
364 02b8 9C91 ld r25,X
365 02ba D901 movw r26,r18
366 02bc 1196 adiw r26,1
367 02be 9C93 st X,r25
368 02c0 8E93 st -X,r24
369 02c2 DF01 movw r26,r30
370 02c4 A050 subi r26,lo8(-(ppm_diff.4))
371 02c6 B040 sbci r27,hi8(-(ppm_diff.4))
372 02c8 8D91 ld r24,X+
373 02ca 9C91 ld r25,X
374 02cc E050 subi r30,lo8(-(PPM_diff))
375 02ce F040 sbci r31,hi8(-(PPM_diff))
376 02d0 9183 std Z+1,r25
377 02d2 8083 st Z,r24
378 02d4 842F mov r24,r20
379 02d6 8F5F subi r24,lo8(-(1))
380 02d8 482F mov r20,r24
381 02da 8D30 cpi r24,lo8(13)
382 02dc 40F2 brlo .L40
383 02de 8093 0000 sts index.7,r24
384 .L35:
385 02e2 8091 0000 lds r24,okay_cnt.8
386 02e6 8F3F cpi r24,lo8(-1)
387 02e8 B9F0 breq .L42
388 02ea 8F5F subi r24,lo8(-(1))
389 02ec 8093 0000 sts okay_cnt.8,r24
390 02f0 13C0 rjmp .L42
391 .L34:
392 02f2 8091 0000 lds r24,okay_cnt.8
393 02f6 8536 cpi r24,lo8(101)
394 02f8 20F0 brlo .L43
395 02fa 8AE0 ldi r24,lo8(10)
396 02fc 8093 0000 sts okay_cnt.8,r24
397 0300 02C0 rjmp .L44
398 .L43:
399 0302 1092 0000 sts okay_cnt.8,__zero_reg__
400 .L44:
401 0306 8091 0000 lds r24,PlatinenVersion
402 030a 8A30 cpi r24,lo8(10)
403 030c 11F0 breq .L46
404 030e 8431 cpi r24,lo8(20)
405 0310 10F0 brlo .L45
406 .L46:
407 0312 289A sbi 37-0x20,0
408 0314 01C0 rjmp .L42
409 .L45:
410 0316 2898 cbi 37-0x20,0
411 .L42:
412 0318 81E0 ldi r24,lo8(1)
413 031a 8093 0000 sts index.7,r24
414 031e 8091 0000 lds r24,MotorenEin
415 0322 8823 tst r24
416 0324 09F0 breq .+2
417 0326 D3C0 rjmp .L8
418 0328 8091 0000 lds r24,tmpChannels
419 032c 8093 0000 sts Channels,r24
420 0330 CEC0 rjmp .L8
421 .L33:
422 0332 6D30 cpi r22,lo8(13)
423 0334 08F0 brlo .+2
424 0336 A3C0 rjmp .L50
425 0338 CA01 movw r24,r20
426 033a 8B5F subi r24,lo8(-(-251))
427 033c 9040 sbci r25,hi8(-(-251))
428 033e 845B subi r24,lo8(436)
429 0340 9140 sbci r25,hi8(436)
430 0342 08F0 brlo .+2
431 0344 7EC0 rjmp .L51
432 0346 425D subi r20,lo8(-(-466))
433 0348 5140 sbci r21,hi8(-(-466))
434 034a E62F mov r30,r22
435 034c FF27 clr r31
436 034e EE0F add r30,r30
437 0350 FF1F adc r31,r31
438 0352 E050 subi r30,lo8(-(ppm_in.3))
439 0354 F040 sbci r31,hi8(-(ppm_in.3))
440 0356 8081 ld r24,Z
441 0358 9181 ldd r25,Z+1
442 035a FA01 movw r30,r20
443 035c E81B sub r30,r24
444 035e F90B sbc r31,r25
445 0360 CF01 movw r24,r30
446 0362 0596 adiw r24,5
447 0364 0B97 sbiw r24,11
448 0366 B0F4 brsh .L52
449 0368 8091 0000 lds r24,okay_cnt.8
450 036c 8A31 cpi r24,lo8(26)
451 036e 20F0 brlo .L53
452 0370 8091 0000 lds r24,SenderOkay
453 0374 865F subi r24,lo8(-(10))
454 0376 05C0 rjmp .L88
455 .L53:
456 0378 8B30 cpi r24,lo8(11)
457 037a 28F0 brlo .L54
458 037c 8091 0000 lds r24,SenderOkay
459 0380 8E5F subi r24,lo8(-(2))
460 .L88:
461 0382 8093 0000 sts SenderOkay,r24
462 .L54:
463 0386 8091 0000 lds r24,SenderOkay
464 038a 893C cpi r24,lo8(-55)
465 038c 18F0 brlo .L52
466 038e 88EC ldi r24,lo8(-56)
467 0390 8093 0000 sts SenderOkay,r24
468 .L52:
469 0394 E62F mov r30,r22
470 0396 FF27 clr r31
471 0398 EE0F add r30,r30
472 039a FF1F adc r31,r31
473 039c E050 subi r30,lo8(-(ppm_in.3))
474 039e F040 sbci r31,hi8(-(ppm_in.3))
475 03a0 8081 ld r24,Z
476 03a2 9181 ldd r25,Z+1
477 03a4 9C01 movw r18,r24
478 03a6 220F lsl r18
479 03a8 331F rol r19
480 03aa 280F add r18,r24
481 03ac 391F adc r19,r25
482 03ae 240F add r18,r20
483 03b0 351F adc r19,r21
484 03b2 37FF sbrs r19,7
485 03b4 02C0 rjmp .L57
486 03b6 2D5F subi r18,lo8(-(3))
487 03b8 3F4F sbci r19,hi8(-(3))
488 .L57:
489 03ba E901 movw r28,r18
490 03bc D595 asr r29
491 03be C795 ror r28
492 03c0 D595 asr r29
493 03c2 C795 ror r28
494 03c4 CA01 movw r24,r20
495 03c6 0196 adiw r24,1
496 03c8 8C17 cp r24,r28
497 03ca 9D07 cpc r25,r29
498 03cc 14F4 brge .L58
499 03ce 2197 sbiw r28,1
500 03d0 06C0 rjmp .L59
501 .L58:
502 03d2 4150 subi r20,lo8(-(-1))
503 03d4 5040 sbci r21,hi8(-(-1))
504 03d6 C417 cp r28,r20
505 03d8 D507 cpc r29,r21
506 03da 0CF4 brge .L59
507 03dc 2196 adiw r28,1
508 .L59:
509 03de 8091 0000 lds r24,SenderOkay
510 03e2 8E3B cpi r24,lo8(-66)
511 03e4 D8F0 brlo .L61
512 03e6 E62F mov r30,r22
513 03e8 FF27 clr r31
514 03ea EE0F add r30,r30
515 03ec FF1F adc r31,r31
516 03ee DF01 movw r26,r30
517 03f0 A050 subi r26,lo8(-(ppm_in.3))
518 03f2 B040 sbci r27,hi8(-(ppm_in.3))
519 03f4 8D91 ld r24,X+
520 03f6 9C91 ld r25,X
521 03f8 9E01 movw r18,r28
522 03fa 281B sub r18,r24
523 03fc 390B sbc r19,r25
524 03fe C901 movw r24,r18
525 0400 63E0 ldi r22,lo8(3)
526 0402 70E0 ldi r23,hi8(3)
527 0404 0E94 0000 call __divmodhi4
528 0408 CB01 movw r24,r22
529 040a 880F lsl r24
530 040c 991F rol r25
531 040e 860F add r24,r22
532 0410 971F adc r25,r23
533 0412 E050 subi r30,lo8(-(ppm_diff.4))
534 0414 F040 sbci r31,hi8(-(ppm_diff.4))
535 0416 9183 std Z+1,r25
536 0418 8083 st Z,r24
537 041a 08C0 rjmp .L62
538 .L61:
539 041c E62F mov r30,r22
540 041e FF27 clr r31
541 0420 EE0F add r30,r30
542 0422 FF1F adc r31,r31
543 0424 E050 subi r30,lo8(-(ppm_diff.4))
544 0426 F040 sbci r31,hi8(-(ppm_diff.4))
545 0428 1182 std Z+1,__zero_reg__
546 042a 1082 st Z,__zero_reg__
547 .L62:
548 042c 8091 0000 lds r24,index.7
549 0430 E82F mov r30,r24
550 0432 FF27 clr r31
551 0434 EE0F add r30,r30
552 0436 FF1F adc r31,r31
553 0438 E050 subi r30,lo8(-(ppm_in.3))
554 043a F040 sbci r31,hi8(-(ppm_in.3))
555 043c D183 std Z+1,r29
556 043e C083 st Z,r28
557 0440 09C0 rjmp .L63
558 .L51:
559 0442 8091 0000 lds r24,PlatinenVersion
560 0446 8A30 cpi r24,lo8(10)
561 0448 11F0 breq .L65
562 044a 8431 cpi r24,lo8(20)
563 044c 10F0 brlo .L64
564 .L65:
565 044e 289A sbi 37-0x20,0
566 0450 01C0 rjmp .L63
567 .L64:
568 0452 2898 cbi 37-0x20,0
569 .L63:
570 0454 8091 0000 lds r24,PlatinenVersion
571 0458 8431 cpi r24,lo8(20)
572 045a 88F4 brsh .L50
573 045c 8091 0000 lds r24,index.7
574 0460 8530 cpi r24,lo8(5)
575 0462 11F4 brne .L68
576 0464 5D9A sbi 43-0x20,5
577 0466 05C0 rjmp .L70
578 .L68:
579 0468 5D98 cbi 43-0x20,5
580 046a 8630 cpi r24,lo8(6)
581 046c 11F4 brne .L70
582 046e 5C9A sbi 43-0x20,4
583 0470 05C0 rjmp .L72
584 .L70:
585 0472 5C98 cbi 43-0x20,4
586 0474 8730 cpi r24,lo8(7)
587 0476 11F4 brne .L72
588 0478 5B9A sbi 43-0x20,3
589 047a 01C0 rjmp .L50
590 .L72:
591 047c 5B98 cbi 43-0x20,3
592 .L50:
593 047e 8091 0000 lds r24,index.7
594 0482 8431 cpi r24,lo8(20)
595 0484 20F4 brsh .L74
596 0486 8F5F subi r24,lo8(-(1))
597 0488 8093 0000 sts index.7,r24
598 048c 20C0 rjmp .L8
599 .L74:
600 048e 8431 cpi r24,lo8(20)
601 0490 F1F4 brne .L8
602 0492 8091 0000 lds r24,PlatinenVersion
603 0496 8A30 cpi r24,lo8(10)
604 0498 11F0 breq .L78
605 049a 8431 cpi r24,lo8(20)
606 049c 10F0 brlo .L77
607 .L78:
608 049e 289A sbi 37-0x20,0
609 04a0 01C0 rjmp .L79
610 .L77:
611 04a2 2898 cbi 37-0x20,0
612 .L79:
613 04a4 8EE1 ldi r24,lo8(30)
614 04a6 8093 0000 sts index.7,r24
615 04aa 2CE0 ldi r18,lo8(12)
616 04ac C0E0 ldi r28,lo8(PPM_diff)
617 04ae D0E0 ldi r29,hi8(PPM_diff)
618 04b0 A0E0 ldi r26,lo8(old_ppm_in.5)
619 04b2 B0E0 ldi r27,hi8(old_ppm_in.5)
620 04b4 E0E0 ldi r30,lo8(PPM_in)
621 04b6 F0E0 ldi r31,hi8(PPM_in)
622 .L83:
623 04b8 8D91 ld r24,X+
624 04ba 9D91 ld r25,X+
625 04bc 9183 std Z+1,r25
626 04be 8083 st Z,r24
627 04c0 3296 adiw r30,2
628 04c2 1982 std Y+1,__zero_reg__
629 04c4 1882 st Y,__zero_reg__
630 04c6 2296 adiw r28,2
631 04c8 2150 subi r18,lo8(-(-1))
632 04ca 27FF sbrs r18,7
633 04cc F5CF rjmp .L83
634 .L8:
635 /* epilogue: frame size=0 */
636 04ce FF91 pop r31
637 04d0 EF91 pop r30
638 04d2 DF91 pop r29
639 04d4 CF91 pop r28
640 04d6 BF91 pop r27
641 04d8 AF91 pop r26
642 04da 9F91 pop r25
643 04dc 8F91 pop r24
644 04de 7F91 pop r23
645 04e0 6F91 pop r22
646 04e2 5F91 pop r21
647 04e4 4F91 pop r20
648 04e6 3F91 pop r19
649 04e8 2F91 pop r18
650 04ea 1F91 pop r17
651 04ec 0F91 pop r16
652 04ee 0F90 pop __tmp_reg__
653 04f0 0FBE out __SREG__,__tmp_reg__
654 04f2 0F90 pop __tmp_reg__
655 04f4 1F90 pop __zero_reg__
656 04f6 1895 reti
657 /* epilogue end (size=21) */
658 /* function __vector_12 size 615 (573) */
660 .comm PPM_in,52,1
661 .comm PPM_diff,52,1
662 .comm Channels,1,1
663 /* File "rc.c": code 643 = 0x0283 ( 600), prologues 21, epilogues 22 */
DEFINED SYMBOLS
*ABS*:00000000 rc.c
C:\Users\Thomas\AppData\Local\Temp/ccMFbaaa.s:3 *ABS*:0000003f __SREG__
C:\Users\Thomas\AppData\Local\Temp/ccMFbaaa.s:4 *ABS*:0000003e __SP_H__
C:\Users\Thomas\AppData\Local\Temp/ccMFbaaa.s:5 *ABS*:0000003d __SP_L__
C:\Users\Thomas\AppData\Local\Temp/ccMFbaaa.s:6 *ABS*:00000000 __tmp_reg__
C:\Users\Thomas\AppData\Local\Temp/ccMFbaaa.s:7 *ABS*:00000001 __zero_reg__
C:\Users\Thomas\AppData\Local\Temp/ccMFbaaa.s:14 .data:00000000 NewPpmData
C:\Users\Thomas\AppData\Local\Temp/ccMFbaaa.s:21 .bss:00000000 tmpChannels
C:\Users\Thomas\AppData\Local\Temp/ccMFbaaa.s:26 .text:00000000 rc_sum_init
*COM*:00000034 PPM_diff
*COM*:00000034 PPM_in
.bss:00000001 AltICR.0
C:\Users\Thomas\AppData\Local\Temp/ccMFbaaa.s:56 .bss:00000003 index.1
C:\Users\Thomas\AppData\Local\Temp/ccMFbaaa.s:57 .bss:00000005 AltICR.2
C:\Users\Thomas\AppData\Local\Temp/ccMFbaaa.s:58 .bss:00000007 ppm_in.3
C:\Users\Thomas\AppData\Local\Temp/ccMFbaaa.s:59 .bss:00000021 ppm_diff.4
C:\Users\Thomas\AppData\Local\Temp/ccMFbaaa.s:60 .bss:0000003b old_ppm_in.5
C:\Users\Thomas\AppData\Local\Temp/ccMFbaaa.s:61 .bss:00000055 old_ppm_diff.6
C:\Users\Thomas\AppData\Local\Temp/ccMFbaaa.s:62 .bss:0000006f index.7
C:\Users\Thomas\AppData\Local\Temp/ccMFbaaa.s:63 .bss:00000070 okay_cnt.8
C:\Users\Thomas\AppData\Local\Temp/ccMFbaaa.s:67 .text:00000038 __vector_12
*COM*:00000001 Channels
 
UNDEFINED SYMBOLS
__do_copy_data
__do_clear_bss
AdNeutralGier
AdNeutralRoll
AdNeutralNick
EE_Parameter
SenderOkay
__divmodhi4
PlatinenVersion
MotorenEin
/branches/metro/v0.82a metro_Akku+/spi.c
0,0 → 1,333
// ######################## SPI - FlightCtrl ###################
#include "main.h"
#include "eeprom.h"
 
 
//struct str_ToNaviCtrl_Version ToNaviCtrl_Version;
//struct str_FromNaviCtrl_Version FromNaviCtrl_Version;
struct str_ToNaviCtrl ToNaviCtrl;
struct str_FromNaviCtrl FromNaviCtrl;
struct str_FromNaviCtrl_Value FromNaviCtrl_Value;
struct str_SPI_VersionInfo NC_Version;
struct str_GPSInfo GPSInfo;
 
unsigned char SPI_BufferIndex;
unsigned char SPI_RxBufferIndex;
signed char FromNC_Rotate_C = 32, FromNC_Rotate_S = 0;
 
volatile unsigned char SPI_Buffer[sizeof(FromNaviCtrl)];
unsigned char *SPI_TX_Buffer;
 
unsigned char SPITransferCompleted, SPI_ChkSum;
unsigned char SPI_RxDataValid,NaviDataOkay = 250;
 
unsigned char SPI_CommandSequence[] = {SPI_FCCMD_STICK, SPI_FCCMD_USER, SPI_FCCMD_PARAMETER1, SPI_FCCMD_STICK, SPI_FCCMD_MISC, SPI_FCCMD_VERSION, SPI_FCCMD_STICK, SPI_FCCMD_SERVOS, SPI_FCCMD_ACCU};
unsigned char SPI_CommandCounter = 0;
unsigned char NC_ErrorCode = 0;
 
#ifdef USE_SPI_COMMUNICATION
 
//------------------------------------------------------
void SPI_MasterInit(void)
{
DDR_SPI |= (1<<DD_MOSI)|(1<<DD_SCK); // Set MOSI and SCK output, all others input
SLAVE_SELECT_DDR_PORT |= (1 << SPI_SLAVE_SELECT);
 
SPCR = (1<<SPE)|(1<<MSTR)|(1<<SPR1)|(0<<SPR0)|(0<<SPIE); // Enable SPI, Master, set clock rate fck/64
SPSR = 0;//(1<<SPI2X);
 
SLAVE_SELECT_PORT |= (1 << SPI_SLAVE_SELECT);
SPITransferCompleted = 1;
 
//SPDR = 0x00; // dummy write
 
ToNaviCtrl.Sync1 = 0xAA;
ToNaviCtrl.Sync2 = 0x83;
 
ToNaviCtrl.Command = SPI_FCCMD_USER;
ToNaviCtrl.IntegralNick = 0;
ToNaviCtrl.IntegralRoll = 0;
FromNaviCtrl_Value.SerialDataOkay = 0;
SPI_RxDataValid = 0;
 
}
 
//------------------------------------------------------
void SPI_StartTransmitPacket(void)
{
//if ((SLAVE_SELECT_PORT & (1 << SPI_SLAVE_SELECT)) == 0) return; // transfer of prev. packet not completed
if (!SPITransferCompleted) return;
// _delay_us(30);
 
SLAVE_SELECT_PORT &= ~(1 << SPI_SLAVE_SELECT); // SelectSlave
SPI_TX_Buffer = (unsigned char *) &ToNaviCtrl;
 
ToNaviCtrl.Command = SPI_CommandSequence[SPI_CommandCounter++];
if (SPI_CommandCounter >= sizeof(SPI_CommandSequence)) SPI_CommandCounter = 0;
 
SPITransferCompleted = 0;
UpdateSPI_Buffer(); // update buffer
 
SPI_BufferIndex = 1;
//ebugOut.Analog[16]++;
// -- Debug-Output ---
//----
asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop");
asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop");
asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop");
ToNaviCtrl.Chksum = ToNaviCtrl.Sync1;
SPDR = ToNaviCtrl.Sync1; // Start transmission
// SLAVE_SELECT_PORT |= (1 << SPI_SLAVE_SELECT); // DeselectSlave
 
}
 
//------------------------------------------------------
//SIGNAL(SIG_SPI)
void SPI_TransmitByte(void)
{
static unsigned char SPI_RXState = 0;
unsigned char rxdata;
static unsigned char rxchksum;
 
if (SPITransferCompleted) return;
if (!(SPSR & (1 << SPIF))) return;
SendSPI = 4;
 
// _delay_us(30);
SLAVE_SELECT_PORT |= (1 << SPI_SLAVE_SELECT); // DeselectSlave
 
rxdata = SPDR;
switch ( SPI_RXState)
{
case 0:
 
SPI_RxBufferIndex = 0;
rxchksum = rxdata;
if (rxdata == 0x81 ) { SPI_RXState = 1; } // 1. Syncbyte ok
 
break;
 
case 1:
if (rxdata == 0x55) { rxchksum += rxdata; SPI_RXState = 2; } // 2. Syncbyte ok
else SPI_RXState = 0;
break;
 
case 2:
SPI_Buffer[SPI_RxBufferIndex++]= rxdata; // get data
//DebugOut.Analog[19]++;
if (SPI_RxBufferIndex >= sizeof(FromNaviCtrl))
{
 
if (rxdata == rxchksum)
{
unsigned char *ptr = (unsigned char *)&FromNaviCtrl;
 
memcpy(ptr, (unsigned char *) SPI_Buffer, sizeof(SPI_Buffer));
 
SPI_RxDataValid = 1;
}
else SPI_RxDataValid = 0;
 
SPI_RXState = 0;
}
else rxchksum += rxdata;
break;
 
}
 
if (SPI_BufferIndex < sizeof(ToNaviCtrl))
{
SLAVE_SELECT_PORT &= ~(1 << SPI_SLAVE_SELECT); // SelectSlave
asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop");
asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop");
asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop");
 
SPDR = SPI_TX_Buffer[SPI_BufferIndex];
ToNaviCtrl.Chksum += SPI_TX_Buffer[SPI_BufferIndex];
// SLAVE_SELECT_PORT |= (1 << SPI_SLAVE_SELECT); // DeselectSlave
 
}
else SPITransferCompleted = 1;
 
SPI_BufferIndex++;
}
 
 
//------------------------------------------------------
void UpdateSPI_Buffer(void)
{
signed int tmp;
ToNaviCtrl.IntegralNick = (int) (IntegralNick / (long)(EE_Parameter.GyroAccFaktor * 4));
ToNaviCtrl.IntegralRoll = (int) (IntegralRoll / (long)(EE_Parameter.GyroAccFaktor * 4));
ToNaviCtrl.GyroCompass = (10 * ErsatzKompass) / GIER_GRAD_FAKTOR;
ToNaviCtrl.GyroGier = (signed int) AdNeutralGier - AdWertGier;
ToNaviCtrl.AccNick = ((int) ACC_AMPLIFY * (NaviAccNick / NaviCntAcc))/4;
ToNaviCtrl.AccRoll = ((int) ACC_AMPLIFY * (NaviAccRoll / NaviCntAcc))/4;
NaviCntAcc = 0; NaviAccNick = 0; NaviAccRoll = 0;
// ToNaviCtrl.User8 = Parameter_UserParam8;
// ToNaviCtrl.CalState = WinkelOut.CalcState;
switch(ToNaviCtrl.Command) //
{
case SPI_FCCMD_USER:
ToNaviCtrl.Param.Byte[0] = Parameter_UserParam1;
ToNaviCtrl.Param.Byte[1] = Parameter_UserParam2;
ToNaviCtrl.Param.Byte[2] = Parameter_UserParam3;
ToNaviCtrl.Param.Byte[3] = Parameter_UserParam4;
ToNaviCtrl.Param.Byte[4] = Parameter_UserParam5;
ToNaviCtrl.Param.Byte[5] = Parameter_UserParam6;
ToNaviCtrl.Param.Byte[6] = Parameter_UserParam7;
ToNaviCtrl.Param.Byte[7] = Parameter_UserParam8;
ToNaviCtrl.Param.Byte[8] = FC_StatusFlags;
FC_StatusFlags &= ~(FC_STATUS_CALIBRATE | FC_STATUS_START);
ToNaviCtrl.Param.Byte[9] = GetActiveParamSet();
ToNaviCtrl.Param.Byte[10] = ControlHeading;
break;
 
case SPI_FCCMD_ACCU:
ToNaviCtrl.Param.Int[0] = Capacity.ActualCurrent; // 0.1A
ToNaviCtrl.Param.Int[1] = Capacity.UsedCapacity; // mAh
ToNaviCtrl.Param.Byte[4] = (unsigned char) UBat; // 0.1V
ToNaviCtrl.Param.Byte[5] = (unsigned char) BattLowVoltageWarning; //0.1V
break;
 
case SPI_FCCMD_PARAMETER1:
ToNaviCtrl.Param.Byte[0] = EE_Parameter.NaviGpsModeControl; // Parameters for the Naviboard
ToNaviCtrl.Param.Byte[1] = EE_Parameter.NaviGpsGain;
ToNaviCtrl.Param.Byte[2] = EE_Parameter.NaviGpsP;
ToNaviCtrl.Param.Byte[3] = EE_Parameter.NaviGpsI;
ToNaviCtrl.Param.Byte[4] = EE_Parameter.NaviGpsD;
ToNaviCtrl.Param.Byte[5] = EE_Parameter.NaviGpsACC;
ToNaviCtrl.Param.Byte[6] = EE_Parameter.NaviGpsMinSat;
ToNaviCtrl.Param.Byte[7] = EE_Parameter.NaviStickThreshold;
ToNaviCtrl.Param.Byte[8] = EE_Parameter.NaviOperatingRadius;
ToNaviCtrl.Param.Byte[9] = EE_Parameter.NaviWindCorrection;
ToNaviCtrl.Param.Byte[10] = EE_Parameter.NaviSpeedCompensation;
ToNaviCtrl.Param.Byte[11] = EE_Parameter.NaviAngleLimitation;
break;
 
case SPI_FCCMD_STICK:
cli();
tmp = PPM_in[EE_Parameter.Kanalbelegung[K_GAS]]; if(tmp > 127) tmp = 127; else if(tmp < -127) tmp = -127;
ToNaviCtrl.Param.Byte[0] = (char) tmp;
tmp = PPM_in[EE_Parameter.Kanalbelegung[K_GIER]]; if(tmp > 127) tmp = 127; else if(tmp < -127) tmp = -127;
ToNaviCtrl.Param.Byte[1] = (char) tmp;
tmp = PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]]; if(tmp > 127) tmp = 127; else if(tmp < -127) tmp = -127;
ToNaviCtrl.Param.Byte[2] = (char) tmp;
tmp = PPM_in[EE_Parameter.Kanalbelegung[K_NICK]]; if(tmp > 127) tmp = 127; else if(tmp < -127) tmp = -127;
sei();
ToNaviCtrl.Param.Byte[3] = (char) tmp;
ToNaviCtrl.Param.Byte[4] = (unsigned char) Poti[0];
ToNaviCtrl.Param.Byte[5] = (unsigned char) Poti[1];
ToNaviCtrl.Param.Byte[6] = (unsigned char) Poti[2];
ToNaviCtrl.Param.Byte[7] = (unsigned char) Poti[3];
ToNaviCtrl.Param.Byte[8] = (unsigned char) Poti[4];
ToNaviCtrl.Param.Byte[9] = (unsigned char) Poti[5];
ToNaviCtrl.Param.Byte[10] = (unsigned char) Poti[6];
ToNaviCtrl.Param.Byte[11] = (unsigned char) Poti[7];
break;
case SPI_FCCMD_MISC:
if(WinkelOut.CalcState > 5)
{
WinkelOut.CalcState = 0;
ToNaviCtrl.Param.Byte[0] = 5;
}
else ToNaviCtrl.Param.Byte[0] = WinkelOut.CalcState;
ToNaviCtrl.Param.Byte[1] = EE_Parameter.NaviPH_LoginTime;
ToNaviCtrl.Param.Int[1] = (int)(HoehenWert/5);
ToNaviCtrl.Param.Int[2] = (int)(SollHoehe/5);
ToNaviCtrl.Param.Byte[6] = EE_Parameter.NaviGpsPLimit;
ToNaviCtrl.Param.Byte[7] = EE_Parameter.NaviGpsILimit;
ToNaviCtrl.Param.Byte[8] = EE_Parameter.NaviGpsDLimit;
ToNaviCtrl.Param.Byte[9] = (unsigned char) SenderOkay;
ToNaviCtrl.Param.Byte[10] = (unsigned char) PPM_in[0];
ToNaviCtrl.Param.Byte[11] = DebugOut.Analog[7] / 4; //GasMischanteil
break;
case SPI_FCCMD_VERSION:
ToNaviCtrl.Param.Byte[0] = VERSION_MAJOR;
ToNaviCtrl.Param.Byte[1] = VERSION_MINOR;
ToNaviCtrl.Param.Byte[2] = VERSION_PATCH;
ToNaviCtrl.Param.Byte[3] = NC_SPI_COMPATIBLE;
ToNaviCtrl.Param.Byte[4] = PlatinenVersion;
ToNaviCtrl.Param.Byte[5] = VersionInfo.HardwareError[0];
ToNaviCtrl.Param.Byte[6] = VersionInfo.HardwareError[1];
ToNaviCtrl.Param.Byte[7] = VersionInfo.HardwareError[2];
ToNaviCtrl.Param.Byte[8] = VersionInfo.HardwareError[3];
ToNaviCtrl.Param.Byte[9] = VersionInfo.HardwareError[4];
break;
case SPI_FCCMD_SERVOS:
ToNaviCtrl.Param.Byte[0] = EE_Parameter.ServoNickRefresh; // Parameters for the Servo Control
ToNaviCtrl.Param.Byte[1] = EE_Parameter.ServoCompInvert;
ToNaviCtrl.Param.Byte[2] = Parameter_ServoNickControl;
ToNaviCtrl.Param.Byte[3] = EE_Parameter.ServoNickComp;
ToNaviCtrl.Param.Byte[4] = EE_Parameter.ServoNickMin;
ToNaviCtrl.Param.Byte[5] = EE_Parameter.ServoNickMax;
ToNaviCtrl.Param.Byte[6] = Parameter_ServoRollControl;
ToNaviCtrl.Param.Byte[7] = EE_Parameter.ServoRollComp;
ToNaviCtrl.Param.Byte[8] = EE_Parameter.ServoRollMin;
ToNaviCtrl.Param.Byte[9] = EE_Parameter.ServoRollMax;
break;
}
 
if(SPI_RxDataValid)
{
NaviDataOkay = 250;
if(abs(FromNaviCtrl.GPS_Nick) < 512 && abs(FromNaviCtrl.GPS_Roll) < 512 && (EE_Parameter.GlobalConfig & CFG_GPS_AKTIV))
{
GPS_Nick = FromNaviCtrl.GPS_Nick;
GPS_Roll = FromNaviCtrl.GPS_Roll;
}
 
if(FromNaviCtrl.CompassValue <= 360) KompassValue = FromNaviCtrl.CompassValue;
KompassRichtung = ((540 + KompassValue - KompassStartwert) % 360) - 180;
 
if(FromNaviCtrl.BeepTime > beeptime && !WinkelOut.CalcState) beeptime = FromNaviCtrl.BeepTime;
 
switch (FromNaviCtrl.Command)
{
case SPI_NCCMD_KALMAN:
FromNaviCtrl_Value.Kalman_K = FromNaviCtrl.Param.sByte[0];
FromNaviCtrl_Value.Kalman_MaxFusion = FromNaviCtrl.Param.sByte[1];
FromNaviCtrl_Value.Kalman_MaxDrift = FromNaviCtrl.Param.sByte[2];
FromNaviCtrl_Value.SerialDataOkay = FromNaviCtrl.Param.Byte[3];
FromNaviCtrl_Value.GpsZ = FromNaviCtrl.Param.Byte[4];
FromNC_Rotate_C = FromNaviCtrl.Param.Byte[5];
FromNC_Rotate_S = FromNaviCtrl.Param.Byte[6];
break;
 
case SPI_NCCMD_VERSION:
NC_Version.Major = FromNaviCtrl.Param.Byte[0];
NC_Version.Minor = FromNaviCtrl.Param.Byte[1];
NC_Version.Patch = FromNaviCtrl.Param.Byte[2];
NC_Version.Compatible = FromNaviCtrl.Param.Byte[3];
NC_Version.Hardware = FromNaviCtrl.Param.Byte[4];
DebugOut.Status[0] |= FromNaviCtrl.Param.Byte[5];
NC_ErrorCode = FromNaviCtrl.Param.Byte[6];
DebugOut.Status[1] = (DebugOut.Status[1] & (0x01|0x02)) | (FromNaviCtrl.Param.Byte[6] & (0x04 | 0x08));
break;
 
case SPI_NCCMD_GPSINFO:
GPSInfo.Flags = FromNaviCtrl.Param.Byte[0];
GPSInfo.NumOfSats = FromNaviCtrl.Param.Byte[1];
GPSInfo.SatFix = FromNaviCtrl.Param.Byte[2];
GPSInfo.Speed = FromNaviCtrl.Param.Byte[3];
GPSInfo.HomeDistance = FromNaviCtrl.Param.Int[2];
GPSInfo.HomeBearing = FromNaviCtrl.Param.sInt[3];
PPM_in[25] = (signed char) FromNaviCtrl.Param.Byte[8]; // WP_EVENT-Channel-Value
break;
 
default:
break;
}
}
else
{
// KompassValue = 0;
// KompassRichtung = 0;
GPS_Nick = 0;
GPS_Roll = 0;
}
}
 
#endif
 
 
/branches/metro/v0.82a metro_Akku+/spi.d
0,0 → 1,3
spi.o spi.d : spi.c main.h old_macros.h printf_P.h timer0.h uart.h analog.h \
twimaster.h menu.h rc.h fc.h gps.h spi.h led.h spektrum.h capacity.h \
eeprom.h libfc.h debug.h
/branches/metro/v0.82a metro_Akku+/spi.h
0,0 → 1,183
// ######################## SPI - FlightCtrl ###################
#ifndef _SPI_H
#define _SPI_H
 
#include <util/delay.h>
 
#define USE_SPI_COMMUNICATION
 
//-----------------------------------------
#define DDR_SPI DDRB
#define SLAVE_SELECT_DDR_PORT DDRC
#define SLAVE_SELECT_PORT PORTC
 
#if defined(__AVR_ATmega1284P__)
#define DD_SS PORTB4
#define DD_SCK PORTB7
#define DD_MOSI PORTB5
#define DD_MISO PORTB6
#define SPI_SLAVE_SELECT PORTC5
#else
#define DD_SS PB4
#define DD_SCK PB7
#define DD_MOSI PB5
#define DD_MISO PB6
#define SPI_SLAVE_SELECT PC5
#endif
 
// for compatibility reasons gcc3.x <-> gcc4.x
#ifndef SPCR
#define SPCR SPCR0
#endif
#ifndef SPE
#define SPE SPE0
#endif
#ifndef MSTR
#define MSTR MSTR0
#endif
#ifndef SPR1
#define SPR1 SPR01
#endif
#ifndef SPR0
#define SPR0 SPR00
#endif
#ifndef SPIE
#define SPIE SPIE0
#endif
#ifndef SPDR
#define SPDR SPDR0
#endif
#ifndef SPIF
#define SPIF SPIF0
#endif
#ifndef SPSR
#define SPSR SPSR0
#endif
// -------------------------
 
#define SPI_FCCMD_USER 10
#define SPI_FCCMD_STICK 11
#define SPI_FCCMD_MISC 12
#define SPI_FCCMD_PARAMETER1 13
#define SPI_FCCMD_VERSION 14
#define SPI_FCCMD_SERVOS 15
#define SPI_FCCMD_ACCU 16
 
struct str_ToNaviCtrl
{
unsigned char Sync1, Sync2;
unsigned char Command;
signed int IntegralNick;
signed int IntegralRoll;
signed int AccNick;
signed int AccRoll;
signed int GyroCompass;
signed int GyroNick;
signed int GyroRoll;
signed int GyroGier;
union
{
unsigned char Byte[12];
char sByte[12];
unsigned int Int[6];
int sInt[6];
unsigned long Long[3];
long sLong[3];
float Float[3];
} Param;
unsigned char Chksum;
};
 
#define SPI_NCCMD_KALMAN 103
#define SPI_NCCMD_VERSION 104
#define SPI_NCCMD_GPSINFO 105
 
struct str_FromNaviCtrl
{
unsigned char Command;
signed int GPS_Nick;
signed int GPS_Roll;
signed int GPS_Gier;
signed int CompassValue;
signed int Status;
unsigned int BeepTime;
union
{
unsigned char Byte[12];
char sByte[12];
unsigned int Int[6];
int sInt[6];
unsigned long Long[3];
long sLong[3];
float Float[3];
} Param;
unsigned char Chksum;
};
 
struct str_FromNaviCtrl_Value
{
signed char Kalman_K;
signed char Kalman_MaxDrift;
signed char Kalman_MaxFusion;
unsigned char SerialDataOkay;
signed char GpsZ;
};
 
struct str_SPI_VersionInfo
{
unsigned char Major;
unsigned char Minor;
unsigned char Patch;
unsigned char Compatible;
unsigned char Hardware;
};
 
// Satfix types for GPSData.SatFix
#define SATFIX_NONE 0x00
#define SATFIX_DEADRECKOING 0x01
#define SATFIX_2D 0x02
#define SATFIX_3D 0x03
#define SATFIX_GPS_DEADRECKOING 0x04
#define SATFIX_TIMEONLY 0x05
// Flags for interpretation of the GPSData.Flags
#define FLAG_GPSFIXOK 0x01 // (i.e. within DOP & ACC Masks)
#define FLAG_DIFFSOLN 0x02 // (is DGPS used)
#define FLAG_WKNSET 0x04 // (is Week Number valid)
#define FLAG_TOWSET 0x08 // (is Time of Week valid)
 
struct str_GPSInfo
{
unsigned char Flags; // Status Flags
unsigned char NumOfSats; // number of satelites
unsigned char SatFix; // type of satfix
unsigned char Speed; // m/sek
unsigned int HomeDistance; // distance to Home in dm
int HomeBearing; // bearing to home in deg
};
 
 
#ifdef USE_SPI_COMMUNICATION
extern struct str_GPSInfo GPSInfo;
extern struct str_SPI_VersionInfo NC_Version;
extern struct str_FromNaviCtrl_Value FromNaviCtrl_Value;
extern struct str_ToNaviCtrl ToNaviCtrl;
extern struct str_FromNaviCtrl FromNaviCtrl;
extern unsigned char SPI_CommandCounter,NaviDataOkay;
extern signed char FromNC_Rotate_C, FromNC_Rotate_S;
extern unsigned char NC_ErrorCode;
extern void SPI_MasterInit(void);
extern void SPI_StartTransmitPacket(void);
extern void UpdateSPI_Buffer(void);
extern void SPI_TransmitByte(void);
#else
 
 
// -------------------------------- Dummy -----------------------------------------
#define SPI_MasterInit() ;
#define SPI_StartTransmitPacket() ;
#define UpdateSPI_Buffer() ;
#define SPI_TransmitByte() ;
#endif
 
 
#endif
/branches/metro/v0.82a metro_Akku+/spi.lst
0,0 → 1,992
1 .file "spi.c"
2 .arch atmega644p
3 __SREG__ = 0x3f
4 __SP_H__ = 0x3e
5 __SP_L__ = 0x3d
6 __tmp_reg__ = 0
7 __zero_reg__ = 1
8 .global __do_copy_data
9 .global __do_clear_bss
10 .global NC_ErrorCode
11 .global NC_ErrorCode
12 .section .bss
15 NC_ErrorCode:
16 0000 00 .skip 1,0
17 .global SPI_CommandCounter
18 .global SPI_CommandCounter
21 SPI_CommandCounter:
22 0001 00 .skip 1,0
23 .global SPI_CommandSequence
24 .data
27 SPI_CommandSequence:
28 0000 0B .byte 11
29 0001 0A .byte 10
30 0002 0D .byte 13
31 0003 0B .byte 11
32 0004 0C .byte 12
33 0005 0E .byte 14
34 0006 0B .byte 11
35 0007 0F .byte 15
36 0008 10 .byte 16
37 .global NaviDataOkay
40 NaviDataOkay:
41 0009 FA .byte -6
42 .global FromNC_Rotate_S
43 .global FromNC_Rotate_S
44 .section .bss
47 FromNC_Rotate_S:
48 0002 00 .skip 1,0
49 .global FromNC_Rotate_C
50 .data
53 FromNC_Rotate_C:
54 000a 20 .byte 32
55 .text
56 .global SPI_MasterInit
58 SPI_MasterInit:
59 /* prologue: frame size=0 */
60 /* prologue end (size=0) */
61 0000 84B1 in r24,36-0x20
62 0002 806A ori r24,lo8(-96)
63 0004 84B9 out 36-0x20,r24
64 0006 3D9A sbi 39-0x20,5
65 0008 82E5 ldi r24,lo8(82)
66 000a 8CBD out 76-0x20,r24
67 000c 1DBC out 77-0x20,__zero_reg__
68 000e 459A sbi 40-0x20,5
69 0010 81E0 ldi r24,lo8(1)
70 0012 8093 0000 sts SPITransferCompleted,r24
71 0016 8AEA ldi r24,lo8(-86)
72 0018 8093 0000 sts ToNaviCtrl,r24
73 001c 83E8 ldi r24,lo8(-125)
74 001e 8093 0000 sts ToNaviCtrl+1,r24
75 0022 8AE0 ldi r24,lo8(10)
76 0024 8093 0000 sts ToNaviCtrl+2,r24
77 0028 1092 0000 sts (ToNaviCtrl+3)+1,__zero_reg__
78 002c 1092 0000 sts ToNaviCtrl+3,__zero_reg__
79 0030 1092 0000 sts (ToNaviCtrl+5)+1,__zero_reg__
80 0034 1092 0000 sts ToNaviCtrl+5,__zero_reg__
81 0038 1092 0000 sts FromNaviCtrl_Value+3,__zero_reg__
82 003c 1092 0000 sts SPI_RxDataValid,__zero_reg__
83 /* epilogue: frame size=0 */
84 0040 0895 ret
85 /* epilogue end (size=1) */
86 /* function SPI_MasterInit size 33 (32) */
88 .lcomm SPI_RXState.0,1
89 .lcomm rxchksum.1,1
90 .global SPI_TransmitByte
92 SPI_TransmitByte:
93 /* prologue: frame size=0 */
94 /* prologue end (size=0) */
95 0042 3091 0000 lds r19,SPITransferCompleted
96 0046 3323 tst r19
97 0048 09F0 breq .+2
98 004a 85C0 rjmp .L2
99 004c 0DB4 in __tmp_reg__,77-0x20
100 004e 07FE sbrs __tmp_reg__,7
101 0050 82C0 rjmp .L2
102 0052 84E0 ldi r24,lo8(4)
103 0054 8093 0000 sts SendSPI,r24
104 0058 459A sbi 40-0x20,5
105 005a 2EB5 in r18,78-0x20
106 005c 8091 0000 lds r24,SPI_RXState.0
107 0060 9927 clr r25
108 0062 8130 cpi r24,1
109 0064 9105 cpc r25,__zero_reg__
110 0066 89F0 breq .L8
111 0068 8230 cpi r24,2
112 006a 9105 cpc r25,__zero_reg__
113 006c 1CF4 brge .L16
114 006e 892B or r24,r25
115 0070 21F0 breq .L6
116 0072 3EC0 rjmp .L5
117 .L16:
118 0074 0297 sbiw r24,2
119 0076 B9F0 breq .L11
120 0078 3BC0 rjmp .L5
121 .L6:
122 007a 3093 0000 sts SPI_RxBufferIndex,r19
123 007e 2093 0000 sts rxchksum.1,r18
124 0082 2138 cpi r18,lo8(-127)
125 0084 A9F5 brne .L5
126 0086 81E0 ldi r24,lo8(1)
127 0088 08C0 rjmp .L19
128 .L8:
129 008a 2535 cpi r18,lo8(85)
130 008c 49F4 brne .L9
131 008e 8091 0000 lds r24,rxchksum.1
132 0092 820F add r24,r18
133 0094 8093 0000 sts rxchksum.1,r24
134 0098 82E0 ldi r24,lo8(2)
135 .L19:
136 009a 8093 0000 sts SPI_RXState.0,r24
137 009e 28C0 rjmp .L5
138 .L9:
139 00a0 3093 0000 sts SPI_RXState.0,r19
140 00a4 25C0 rjmp .L5
141 .L11:
142 00a6 8091 0000 lds r24,SPI_RxBufferIndex
143 00aa E82F mov r30,r24
144 00ac FF27 clr r31
145 00ae E050 subi r30,lo8(-(SPI_Buffer))
146 00b0 F040 sbci r31,hi8(-(SPI_Buffer))
147 00b2 2083 st Z,r18
148 00b4 8F5F subi r24,lo8(-(1))
149 00b6 8093 0000 sts SPI_RxBufferIndex,r24
150 00ba 9091 0000 lds r25,rxchksum.1
151 00be 8A31 cpi r24,lo8(26)
152 00c0 A0F0 brlo .L12
153 00c2 2917 cp r18,r25
154 00c4 69F4 brne .L13
155 00c6 8AE1 ldi r24,lo8(26)
156 00c8 A0E0 ldi r26,lo8(SPI_Buffer)
157 00ca B0E0 ldi r27,hi8(SPI_Buffer)
158 00cc E0E0 ldi r30,lo8(FromNaviCtrl)
159 00ce F0E0 ldi r31,hi8(FromNaviCtrl)
160 00d0 0D90 ld __tmp_reg__,X+
161 00d2 0192 st Z+,__tmp_reg__
162 00d4 8A95 dec r24
163 00d6 E1F7 brne .-8
164 00d8 81E0 ldi r24,lo8(1)
165 00da 8093 0000 sts SPI_RxDataValid,r24
166 00de 02C0 rjmp .L14
167 .L13:
168 00e0 3093 0000 sts SPI_RxDataValid,r19
169 .L14:
170 00e4 1092 0000 sts SPI_RXState.0,__zero_reg__
171 00e8 03C0 rjmp .L5
172 .L12:
173 00ea 920F add r25,r18
174 00ec 9093 0000 sts rxchksum.1,r25
175 .L5:
176 00f0 2091 0000 lds r18,SPI_BufferIndex
177 00f4 2032 cpi r18,lo8(32)
178 00f6 08F0 brlo .+2
179 00f8 28C0 rjmp .L17
180 00fa 4598 cbi 40-0x20,5
181 /* #APP */
182 00fc 0000 nop
183 00fe 0000 nop
184 0100 0000 nop
185 0102 0000 nop
186 0104 0000 nop
187 0106 0000 nop
188 0108 0000 nop
189 010a 0000 nop
190 010c 0000 nop
191 010e 0000 nop
192 0110 0000 nop
193 0112 0000 nop
194 0114 0000 nop
195 0116 0000 nop
196 0118 0000 nop
197 011a 0000 nop
198 011c 0000 nop
199 011e 0000 nop
200 0120 0000 nop
201 0122 0000 nop
202 0124 0000 nop
203 0126 0000 nop
204 0128 0000 nop
205 012a 0000 nop
206 /* #NOAPP */
207 012c E091 0000 lds r30,SPI_TX_Buffer
208 0130 F091 0000 lds r31,(SPI_TX_Buffer)+1
209 0134 E20F add r30,r18
210 0136 F11D adc r31,__zero_reg__
211 0138 8081 ld r24,Z
212 013a 8EBD out 78-0x20,r24
213 013c 8091 0000 lds r24,ToNaviCtrl+31
214 0140 9081 ld r25,Z
215 0142 890F add r24,r25
216 0144 8093 0000 sts ToNaviCtrl+31,r24
217 0148 03C0 rjmp .L18
218 .L17:
219 014a 81E0 ldi r24,lo8(1)
220 014c 8093 0000 sts SPITransferCompleted,r24
221 .L18:
222 0150 2F5F subi r18,lo8(-(1))
223 0152 2093 0000 sts SPI_BufferIndex,r18
224 .L2:
225 0156 0895 ret
226 /* epilogue: frame size=0 */
227 /* epilogue: noreturn */
228 /* epilogue end (size=0) */
229 /* function SPI_TransmitByte size 164 (164) */
231 .global UpdateSPI_Buffer
233 UpdateSPI_Buffer:
234 /* prologue: frame size=0 */
235 0158 EF92 push r14
236 015a FF92 push r15
237 015c 0F93 push r16
238 015e 1F93 push r17
239 /* prologue end (size=4) */
240 0160 8091 0000 lds r24,EE_Parameter+28
241 0164 9927 clr r25
242 0166 880F lsl r24
243 0168 991F rol r25
244 016a 880F lsl r24
245 016c 991F rol r25
246 016e 7C01 movw r14,r24
247 0170 0027 clr r16
248 0172 F7FC sbrc r15,7
249 0174 0095 com r16
250 0176 102F mov r17,r16
251 0178 8091 0000 lds r24,IntegralNick
252 017c 9091 0000 lds r25,(IntegralNick)+1
253 0180 A091 0000 lds r26,(IntegralNick)+2
254 0184 B091 0000 lds r27,(IntegralNick)+3
255 0188 BC01 movw r22,r24
256 018a CD01 movw r24,r26
257 018c A801 movw r20,r16
258 018e 9701 movw r18,r14
259 0190 0E94 0000 call __divmodsi4
260 0194 3093 0000 sts (ToNaviCtrl+3)+1,r19
261 0198 2093 0000 sts ToNaviCtrl+3,r18
262 019c 8091 0000 lds r24,IntegralRoll
263 01a0 9091 0000 lds r25,(IntegralRoll)+1
264 01a4 A091 0000 lds r26,(IntegralRoll)+2
265 01a8 B091 0000 lds r27,(IntegralRoll)+3
266 01ac BC01 movw r22,r24
267 01ae CD01 movw r24,r26
268 01b0 A801 movw r20,r16
269 01b2 9701 movw r18,r14
270 01b4 0E94 0000 call __divmodsi4
271 01b8 3093 0000 sts (ToNaviCtrl+5)+1,r19
272 01bc 2093 0000 sts ToNaviCtrl+5,r18
273 01c0 2091 0000 lds r18,ErsatzKompass
274 01c4 3091 0000 lds r19,(ErsatzKompass)+1
275 01c8 4091 0000 lds r20,(ErsatzKompass)+2
276 01cc 5091 0000 lds r21,(ErsatzKompass)+3
277 01d0 DA01 movw r26,r20
278 01d2 C901 movw r24,r18
279 01d4 E3E0 ldi r30,3
280 01d6 880F 1: lsl r24
281 01d8 991F rol r25
282 01da AA1F rol r26
283 01dc BB1F rol r27
284 01de EA95 dec r30
285 01e0 D1F7 brne 1b
286 01e2 820F add r24,r18
287 01e4 931F adc r25,r19
288 01e6 A41F adc r26,r20
289 01e8 B51F adc r27,r21
290 01ea 820F add r24,r18
291 01ec 931F adc r25,r19
292 01ee A41F adc r26,r20
293 01f0 B51F adc r27,r21
294 01f2 2091 0000 lds r18,GIER_GRAD_FAKTOR
295 01f6 3091 0000 lds r19,(GIER_GRAD_FAKTOR)+1
296 01fa 4091 0000 lds r20,(GIER_GRAD_FAKTOR)+2
297 01fe 5091 0000 lds r21,(GIER_GRAD_FAKTOR)+3
298 0202 BC01 movw r22,r24
299 0204 CD01 movw r24,r26
300 0206 0E94 0000 call __divmodsi4
301 020a 3093 0000 sts (ToNaviCtrl+11)+1,r19
302 020e 2093 0000 sts ToNaviCtrl+11,r18
303 0212 8091 0000 lds r24,AdNeutralGier
304 0216 9091 0000 lds r25,(AdNeutralGier)+1
305 021a 2091 0000 lds r18,AdWertGier
306 021e 3091 0000 lds r19,(AdWertGier)+1
307 0222 821B sub r24,r18
308 0224 930B sbc r25,r19
309 0226 9093 0000 sts (ToNaviCtrl+17)+1,r25
310 022a 8093 0000 sts ToNaviCtrl+17,r24
311 022e E091 0000 lds r30,NaviCntAcc
312 0232 F091 0000 lds r31,(NaviCntAcc)+1
313 0236 8091 0000 lds r24,NaviAccNick
314 023a 9091 0000 lds r25,(NaviAccNick)+1
315 023e BF01 movw r22,r30
316 0240 0E94 0000 call __divmodhi4
317 0244 CB01 movw r24,r22
318 0246 9B01 movw r18,r22
319 0248 220F lsl r18
320 024a 331F rol r19
321 024c 220F lsl r18
322 024e 331F rol r19
323 0250 280F add r18,r24
324 0252 391F adc r19,r25
325 0254 280F add r18,r24
326 0256 391F adc r19,r25
327 0258 37FF sbrs r19,7
328 025a 02C0 rjmp .L21
329 025c 2D5F subi r18,lo8(-(3))
330 025e 3F4F sbci r19,hi8(-(3))
331 .L21:
332 0260 3595 asr r19
333 0262 2795 ror r18
334 0264 3595 asr r19
335 0266 2795 ror r18
336 0268 3093 0000 sts (ToNaviCtrl+7)+1,r19
337 026c 2093 0000 sts ToNaviCtrl+7,r18
338 0270 8091 0000 lds r24,NaviAccRoll
339 0274 9091 0000 lds r25,(NaviAccRoll)+1
340 0278 BF01 movw r22,r30
341 027a 0E94 0000 call __divmodhi4
342 027e 9B01 movw r18,r22
343 0280 220F lsl r18
344 0282 331F rol r19
345 0284 220F lsl r18
346 0286 331F rol r19
347 0288 260F add r18,r22
348 028a 371F adc r19,r23
349 028c 260F add r18,r22
350 028e 371F adc r19,r23
351 0290 37FF sbrs r19,7
352 0292 02C0 rjmp .L22
353 0294 2D5F subi r18,lo8(-(3))
354 0296 3F4F sbci r19,hi8(-(3))
355 .L22:
356 0298 3595 asr r19
357 029a 2795 ror r18
358 029c 3595 asr r19
359 029e 2795 ror r18
360 02a0 3093 0000 sts (ToNaviCtrl+9)+1,r19
361 02a4 2093 0000 sts ToNaviCtrl+9,r18
362 02a8 1092 0000 sts (NaviCntAcc)+1,__zero_reg__
363 02ac 1092 0000 sts NaviCntAcc,__zero_reg__
364 02b0 1092 0000 sts (NaviAccNick)+1,__zero_reg__
365 02b4 1092 0000 sts NaviAccNick,__zero_reg__
366 02b8 1092 0000 sts (NaviAccRoll)+1,__zero_reg__
367 02bc 1092 0000 sts NaviAccRoll,__zero_reg__
368 02c0 8091 0000 lds r24,ToNaviCtrl+2
369 02c4 9927 clr r25
370 02c6 8D30 cpi r24,13
371 02c8 9105 cpc r25,__zero_reg__
372 02ca 09F4 brne .+2
373 02cc 66C0 rjmp .L26
374 02ce 8E30 cpi r24,14
375 02d0 9105 cpc r25,__zero_reg__
376 02d2 5CF4 brge .L46
377 02d4 8B30 cpi r24,11
378 02d6 9105 cpc r25,__zero_reg__
379 02d8 09F4 brne .+2
380 02da 8EC0 rjmp .L27
381 02dc 8C30 cpi r24,12
382 02de 9105 cpc r25,__zero_reg__
383 02e0 0CF0 brlt .+2
384 02e2 0FC1 rjmp .L40
385 02e4 0A97 sbiw r24,10
386 02e6 61F0 breq .L24
387 02e8 ADC1 rjmp .L23
388 .L46:
389 02ea 8F30 cpi r24,15
390 02ec 9105 cpc r25,__zero_reg__
391 02ee 09F4 brne .+2
392 02f0 81C1 rjmp .L45
393 02f2 8F30 cpi r24,15
394 02f4 9105 cpc r25,__zero_reg__
395 02f6 0CF4 brge .+2
396 02f8 5CC1 rjmp .L44
397 02fa 4097 sbiw r24,16
398 02fc 99F1 breq .L25
399 02fe A2C1 rjmp .L23
400 .L24:
401 0300 8091 0000 lds r24,Parameter_UserParam1
402 0304 8093 0000 sts ToNaviCtrl+19,r24
403 0308 8091 0000 lds r24,Parameter_UserParam2
404 030c 8093 0000 sts ToNaviCtrl+20,r24
405 0310 8091 0000 lds r24,Parameter_UserParam3
406 0314 8093 0000 sts ToNaviCtrl+21,r24
407 0318 8091 0000 lds r24,Parameter_UserParam4
408 031c 8093 0000 sts ToNaviCtrl+22,r24
409 0320 8091 0000 lds r24,Parameter_UserParam5
410 0324 8093 0000 sts ToNaviCtrl+23,r24
411 0328 8091 0000 lds r24,Parameter_UserParam6
412 032c 8093 0000 sts ToNaviCtrl+24,r24
413 0330 8091 0000 lds r24,Parameter_UserParam7
414 0334 8093 0000 sts ToNaviCtrl+25,r24
415 0338 8091 0000 lds r24,Parameter_UserParam8
416 033c 8093 0000 sts ToNaviCtrl+26,r24
417 0340 8091 0000 lds r24,FC_StatusFlags
418 0344 8093 0000 sts ToNaviCtrl+27,r24
419 0348 8091 0000 lds r24,FC_StatusFlags
420 034c 837F andi r24,lo8(-13)
421 034e 8093 0000 sts FC_StatusFlags,r24
422 0352 0E94 0000 call GetActiveParamSet
423 0356 8093 0000 sts ToNaviCtrl+28,r24
424 035a 8091 0000 lds r24,ControlHeading
425 035e 8093 0000 sts ToNaviCtrl+29,r24
426 0362 70C1 rjmp .L23
427 .L25:
428 0364 8091 0000 lds r24,Capacity
429 0368 9091 0000 lds r25,(Capacity)+1
430 036c 9093 0000 sts (ToNaviCtrl+19)+1,r25
431 0370 8093 0000 sts ToNaviCtrl+19,r24
432 0374 8091 0000 lds r24,Capacity+4
433 0378 9091 0000 lds r25,(Capacity+4)+1
434 037c 9093 0000 sts (ToNaviCtrl+21)+1,r25
435 0380 8093 0000 sts ToNaviCtrl+21,r24
436 0384 8091 0000 lds r24,UBat
437 0388 9091 0000 lds r25,(UBat)+1
438 038c 8093 0000 sts ToNaviCtrl+23,r24
439 0390 8091 0000 lds r24,BattLowVoltageWarning
440 0394 8093 0000 sts ToNaviCtrl+24,r24
441 0398 55C1 rjmp .L23
442 .L26:
443 039a 8091 0000 lds r24,EE_Parameter+80
444 039e 8093 0000 sts ToNaviCtrl+19,r24
445 03a2 8091 0000 lds r24,EE_Parameter+81
446 03a6 8093 0000 sts ToNaviCtrl+20,r24
447 03aa 8091 0000 lds r24,EE_Parameter+82
448 03ae 8093 0000 sts ToNaviCtrl+21,r24
449 03b2 8091 0000 lds r24,EE_Parameter+83
450 03b6 8093 0000 sts ToNaviCtrl+22,r24
451 03ba 8091 0000 lds r24,EE_Parameter+84
452 03be 8093 0000 sts ToNaviCtrl+23,r24
453 03c2 8091 0000 lds r24,EE_Parameter+88
454 03c6 8093 0000 sts ToNaviCtrl+24,r24
455 03ca 8091 0000 lds r24,EE_Parameter+89
456 03ce 8093 0000 sts ToNaviCtrl+25,r24
457 03d2 8091 0000 lds r24,EE_Parameter+90
458 03d6 8093 0000 sts ToNaviCtrl+26,r24
459 03da 8091 0000 lds r24,EE_Parameter+93
460 03de 8093 0000 sts ToNaviCtrl+27,r24
461 03e2 8091 0000 lds r24,EE_Parameter+91
462 03e6 8093 0000 sts ToNaviCtrl+28,r24
463 03ea 8091 0000 lds r24,EE_Parameter+92
464 03ee 8093 0000 sts ToNaviCtrl+29,r24
465 03f2 8091 0000 lds r24,EE_Parameter+94
466 03f6 DAC0 rjmp .L59
467 .L27:
468 /* #APP */
469 03f8 F894 cli
470 /* #NOAPP */
471 03fa 8091 0000 lds r24,EE_Parameter+3
472 03fe E82F mov r30,r24
473 0400 FF27 clr r31
474 0402 EE0F add r30,r30
475 0404 FF1F adc r31,r31
476 0406 E050 subi r30,lo8(-(PPM_in))
477 0408 F040 sbci r31,hi8(-(PPM_in))
478 040a 0190 ld __tmp_reg__,Z+
479 040c F081 ld r31,Z
480 040e E02D mov r30,__tmp_reg__
481 0410 E038 cpi r30,128
482 0412 F105 cpc r31,__zero_reg__
483 0414 1CF0 brlt .L28
484 0416 EFE7 ldi r30,lo8(127)
485 0418 F0E0 ldi r31,hi8(127)
486 041a 06C0 rjmp .L29
487 .L28:
488 041c 2FEF ldi r18,hi8(-127)
489 041e E138 cpi r30,lo8(-127)
490 0420 F207 cpc r31,r18
491 0422 14F4 brge .L29
492 0424 E1E8 ldi r30,lo8(-127)
493 0426 FFEF ldi r31,hi8(-127)
494 .L29:
495 0428 E093 0000 sts ToNaviCtrl+19,r30
496 042c 8091 0000 lds r24,EE_Parameter+4
497 0430 E82F mov r30,r24
498 0432 FF27 clr r31
499 0434 EE0F add r30,r30
500 0436 FF1F adc r31,r31
501 0438 E050 subi r30,lo8(-(PPM_in))
502 043a F040 sbci r31,hi8(-(PPM_in))
503 043c 0190 ld __tmp_reg__,Z+
504 043e F081 ld r31,Z
505 0440 E02D mov r30,__tmp_reg__
506 0442 E038 cpi r30,128
507 0444 F105 cpc r31,__zero_reg__
508 0446 1CF0 brlt .L31
509 0448 EFE7 ldi r30,lo8(127)
510 044a F0E0 ldi r31,hi8(127)
511 044c 06C0 rjmp .L32
512 .L31:
513 044e 6FEF ldi r22,hi8(-127)
514 0450 E138 cpi r30,lo8(-127)
515 0452 F607 cpc r31,r22
516 0454 14F4 brge .L32
517 0456 E1E8 ldi r30,lo8(-127)
518 0458 FFEF ldi r31,hi8(-127)
519 .L32:
520 045a E093 0000 sts ToNaviCtrl+20,r30
521 045e 8091 0000 lds r24,EE_Parameter+2
522 0462 E82F mov r30,r24
523 0464 FF27 clr r31
524 0466 EE0F add r30,r30
525 0468 FF1F adc r31,r31
526 046a E050 subi r30,lo8(-(PPM_in))
527 046c F040 sbci r31,hi8(-(PPM_in))
528 046e 0190 ld __tmp_reg__,Z+
529 0470 F081 ld r31,Z
530 0472 E02D mov r30,__tmp_reg__
531 0474 E038 cpi r30,128
532 0476 F105 cpc r31,__zero_reg__
533 0478 1CF0 brlt .L34
534 047a EFE7 ldi r30,lo8(127)
535 047c F0E0 ldi r31,hi8(127)
536 047e 06C0 rjmp .L35
537 .L34:
538 0480 8FEF ldi r24,hi8(-127)
539 0482 E138 cpi r30,lo8(-127)
540 0484 F807 cpc r31,r24
541 0486 14F4 brge .L35
542 0488 E1E8 ldi r30,lo8(-127)
543 048a FFEF ldi r31,hi8(-127)
544 .L35:
545 048c E093 0000 sts ToNaviCtrl+21,r30
546 0490 8091 0000 lds r24,EE_Parameter+1
547 0494 E82F mov r30,r24
548 0496 FF27 clr r31
549 0498 EE0F add r30,r30
550 049a FF1F adc r31,r31
551 049c E050 subi r30,lo8(-(PPM_in))
552 049e F040 sbci r31,hi8(-(PPM_in))
553 04a0 0190 ld __tmp_reg__,Z+
554 04a2 F081 ld r31,Z
555 04a4 E02D mov r30,__tmp_reg__
556 04a6 E038 cpi r30,128
557 04a8 F105 cpc r31,__zero_reg__
558 04aa 1CF0 brlt .L37
559 04ac EFE7 ldi r30,lo8(127)
560 04ae F0E0 ldi r31,hi8(127)
561 04b0 06C0 rjmp .L38
562 .L37:
563 04b2 2FEF ldi r18,hi8(-127)
564 04b4 E138 cpi r30,lo8(-127)
565 04b6 F207 cpc r31,r18
566 04b8 14F4 brge .L38
567 04ba E1E8 ldi r30,lo8(-127)
568 04bc FFEF ldi r31,hi8(-127)
569 .L38:
570 /* #APP */
571 04be 7894 sei
572 /* #NOAPP */
573 04c0 E093 0000 sts ToNaviCtrl+22,r30
574 04c4 8091 0000 lds r24,Poti
575 04c8 8093 0000 sts ToNaviCtrl+23,r24
576 04cc 8091 0000 lds r24,Poti+1
577 04d0 8093 0000 sts ToNaviCtrl+24,r24
578 04d4 8091 0000 lds r24,Poti+2
579 04d8 8093 0000 sts ToNaviCtrl+25,r24
580 04dc 8091 0000 lds r24,Poti+3
581 04e0 8093 0000 sts ToNaviCtrl+26,r24
582 04e4 8091 0000 lds r24,Poti+4
583 04e8 8093 0000 sts ToNaviCtrl+27,r24
584 04ec 8091 0000 lds r24,Poti+5
585 04f0 8093 0000 sts ToNaviCtrl+28,r24
586 04f4 8091 0000 lds r24,Poti+6
587 04f8 8093 0000 sts ToNaviCtrl+29,r24
588 04fc 8091 0000 lds r24,Poti+7
589 0500 55C0 rjmp .L59
590 .L40:
591 0502 8091 0000 lds r24,WinkelOut+6
592 0506 8630 cpi r24,lo8(6)
593 0508 18F0 brlo .L41
594 050a 1092 0000 sts WinkelOut+6,__zero_reg__
595 050e 85E0 ldi r24,lo8(5)
596 .L41:
597 0510 8093 0000 sts ToNaviCtrl+19,r24
598 0514 8091 0000 lds r24,EE_Parameter+95
599 0518 8093 0000 sts ToNaviCtrl+20,r24
600 051c 8091 0000 lds r24,HoehenWert
601 0520 9091 0000 lds r25,(HoehenWert)+1
602 0524 A091 0000 lds r26,(HoehenWert)+2
603 0528 B091 0000 lds r27,(HoehenWert)+3
604 052c BC01 movw r22,r24
605 052e CD01 movw r24,r26
606 0530 25E0 ldi r18,lo8(5)
607 0532 30E0 ldi r19,hi8(5)
608 0534 40E0 ldi r20,hlo8(5)
609 0536 50E0 ldi r21,hhi8(5)
610 0538 0E94 0000 call __divmodsi4
611 053c 3093 0000 sts (ToNaviCtrl+21)+1,r19
612 0540 2093 0000 sts ToNaviCtrl+21,r18
613 0544 8091 0000 lds r24,SollHoehe
614 0548 9091 0000 lds r25,(SollHoehe)+1
615 054c A091 0000 lds r26,(SollHoehe)+2
616 0550 B091 0000 lds r27,(SollHoehe)+3
617 0554 BC01 movw r22,r24
618 0556 CD01 movw r24,r26
619 0558 25E0 ldi r18,lo8(5)
620 055a 30E0 ldi r19,hi8(5)
621 055c 40E0 ldi r20,hlo8(5)
622 055e 50E0 ldi r21,hhi8(5)
623 0560 0E94 0000 call __divmodsi4
624 0564 3093 0000 sts (ToNaviCtrl+23)+1,r19
625 0568 2093 0000 sts ToNaviCtrl+23,r18
626 056c 8091 0000 lds r24,EE_Parameter+85
627 0570 8093 0000 sts ToNaviCtrl+25,r24
628 0574 8091 0000 lds r24,EE_Parameter+86
629 0578 8093 0000 sts ToNaviCtrl+26,r24
630 057c 8091 0000 lds r24,EE_Parameter+87
631 0580 8093 0000 sts ToNaviCtrl+27,r24
632 0584 8091 0000 lds r24,SenderOkay
633 0588 8093 0000 sts ToNaviCtrl+28,r24
634 058c 8091 0000 lds r24,PPM_in
635 0590 9091 0000 lds r25,(PPM_in)+1
636 0594 8093 0000 sts ToNaviCtrl+29,r24
637 0598 8091 0000 lds r24,DebugOut+16
638 059c 9091 0000 lds r25,(DebugOut+16)+1
639 05a0 97FD sbrc r25,7
640 05a2 0396 adiw r24,3
641 .L43:
642 05a4 9595 asr r25
643 05a6 8795 ror r24
644 05a8 9595 asr r25
645 05aa 8795 ror r24
646 .L59:
647 05ac 8093 0000 sts ToNaviCtrl+30,r24
648 05b0 49C0 rjmp .L23
649 .L44:
650 05b2 1092 0000 sts ToNaviCtrl+19,__zero_reg__
651 05b6 82E5 ldi r24,lo8(82)
652 05b8 8093 0000 sts ToNaviCtrl+20,r24
653 05bc 1092 0000 sts ToNaviCtrl+21,__zero_reg__
654 05c0 80E1 ldi r24,lo8(16)
655 05c2 8093 0000 sts ToNaviCtrl+22,r24
656 05c6 8091 0000 lds r24,PlatinenVersion
657 05ca 8093 0000 sts ToNaviCtrl+23,r24
658 05ce 8091 0000 lds r24,VersionInfo+5
659 05d2 8093 0000 sts ToNaviCtrl+24,r24
660 05d6 8091 0000 lds r24,VersionInfo+6
661 05da 8093 0000 sts ToNaviCtrl+25,r24
662 05de 8091 0000 lds r24,VersionInfo+7
663 05e2 8093 0000 sts ToNaviCtrl+26,r24
664 05e6 8091 0000 lds r24,VersionInfo+8
665 05ea 8093 0000 sts ToNaviCtrl+27,r24
666 05ee 8091 0000 lds r24,VersionInfo+9
667 05f2 26C0 rjmp .L58
668 .L45:
669 05f4 8091 0000 lds r24,EE_Parameter+53
670 05f8 8093 0000 sts ToNaviCtrl+19,r24
671 05fc 8091 0000 lds r24,EE_Parameter+101
672 0600 8093 0000 sts ToNaviCtrl+20,r24
673 0604 8091 0000 lds r24,Parameter_ServoNickControl
674 0608 8093 0000 sts ToNaviCtrl+21,r24
675 060c 8091 0000 lds r24,EE_Parameter+46
676 0610 8093 0000 sts ToNaviCtrl+22,r24
677 0614 8091 0000 lds r24,EE_Parameter+47
678 0618 8093 0000 sts ToNaviCtrl+23,r24
679 061c 8091 0000 lds r24,EE_Parameter+48
680 0620 8093 0000 sts ToNaviCtrl+24,r24
681 0624 8091 0000 lds r24,Parameter_ServoRollControl
682 0628 8093 0000 sts ToNaviCtrl+25,r24
683 062c 8091 0000 lds r24,EE_Parameter+50
684 0630 8093 0000 sts ToNaviCtrl+26,r24
685 0634 8091 0000 lds r24,EE_Parameter+51
686 0638 8093 0000 sts ToNaviCtrl+27,r24
687 063c 8091 0000 lds r24,EE_Parameter+52
688 .L58:
689 0640 8093 0000 sts ToNaviCtrl+28,r24
690 .L23:
691 0644 8091 0000 lds r24,SPI_RxDataValid
692 0648 8823 tst r24
693 064a 09F4 brne .+2
694 064c D8C0 rjmp .L47
695 064e 8AEF ldi r24,lo8(-6)
696 0650 8093 0000 sts NaviDataOkay,r24
697 0654 4091 0000 lds r20,FromNaviCtrl+1
698 0658 5091 0000 lds r21,(FromNaviCtrl+1)+1
699 065c CA01 movw r24,r20
700 065e 8150 subi r24,lo8(-(511))
701 0660 9E4F sbci r25,hi8(-(511))
702 0662 8F5F subi r24,lo8(1023)
703 0664 9340 sbci r25,hi8(1023)
704 0666 B0F4 brsh .L48
705 0668 2091 0000 lds r18,FromNaviCtrl+3
706 066c 3091 0000 lds r19,(FromNaviCtrl+3)+1
707 0670 C901 movw r24,r18
708 0672 8150 subi r24,lo8(-(511))
709 0674 9E4F sbci r25,hi8(-(511))
710 0676 8F5F subi r24,lo8(1023)
711 0678 9340 sbci r25,hi8(1023)
712 067a 60F4 brsh .L48
713 067c 8091 0000 lds r24,EE_Parameter+13
714 0680 85FF sbrs r24,5
715 0682 08C0 rjmp .L48
716 0684 5093 0000 sts (GPS_Nick)+1,r21
717 0688 4093 0000 sts GPS_Nick,r20
718 068c 3093 0000 sts (GPS_Roll)+1,r19
719 0690 2093 0000 sts GPS_Roll,r18
720 .L48:
721 0694 8091 0000 lds r24,FromNaviCtrl+7
722 0698 9091 0000 lds r25,(FromNaviCtrl+7)+1
723 069c 21E0 ldi r18,hi8(361)
724 069e 8936 cpi r24,lo8(361)
725 06a0 9207 cpc r25,r18
726 06a2 24F4 brge .L49
727 06a4 9093 0000 sts (KompassValue)+1,r25
728 06a8 8093 0000 sts KompassValue,r24
729 .L49:
730 06ac 8091 0000 lds r24,KompassValue
731 06b0 9091 0000 lds r25,(KompassValue)+1
732 06b4 2091 0000 lds r18,KompassStartwert
733 06b8 3091 0000 lds r19,(KompassStartwert)+1
734 06bc 821B sub r24,r18
735 06be 930B sbc r25,r19
736 06c0 845E subi r24,lo8(-(540))
737 06c2 9D4F sbci r25,hi8(-(540))
738 06c4 68E6 ldi r22,lo8(360)
739 06c6 71E0 ldi r23,hi8(360)
740 06c8 0E94 0000 call __divmodhi4
741 06cc 845B subi r24,lo8(-(-180))
742 06ce 9040 sbci r25,hi8(-(-180))
743 06d0 9093 0000 sts (KompassRichtung)+1,r25
744 06d4 8093 0000 sts KompassRichtung,r24
745 06d8 2091 0000 lds r18,FromNaviCtrl+11
746 06dc 3091 0000 lds r19,(FromNaviCtrl+11)+1
747 06e0 8091 0000 lds r24,beeptime
748 06e4 9091 0000 lds r25,(beeptime)+1
749 06e8 8217 cp r24,r18
750 06ea 9307 cpc r25,r19
751 06ec 40F4 brsh .L50
752 06ee 8091 0000 lds r24,WinkelOut+6
753 06f2 8823 tst r24
754 06f4 21F4 brne .L50
755 06f6 3093 0000 sts (beeptime)+1,r19
756 06fa 2093 0000 sts beeptime,r18
757 .L50:
758 06fe 8091 0000 lds r24,FromNaviCtrl
759 0702 9927 clr r25
760 0704 8836 cpi r24,104
761 0706 9105 cpc r25,__zero_reg__
762 0708 49F1 breq .L53
763 070a 8936 cpi r24,105
764 070c 9105 cpc r25,__zero_reg__
765 070e 24F4 brge .L56
766 0710 8736 cpi r24,103
767 0712 9105 cpc r25,__zero_reg__
768 0714 31F0 breq .L52
769 0716 7BC0 rjmp .L20
770 .L56:
771 0718 8936 cpi r24,105
772 071a 9105 cpc r25,__zero_reg__
773 071c 09F4 brne .+2
774 071e 45C0 rjmp .L54
775 0720 76C0 rjmp .L20
776 .L52:
777 0722 8091 0000 lds r24,FromNaviCtrl+13
778 0726 8093 0000 sts FromNaviCtrl_Value,r24
779 072a 8091 0000 lds r24,FromNaviCtrl+14
780 072e 8093 0000 sts FromNaviCtrl_Value+2,r24
781 0732 8091 0000 lds r24,FromNaviCtrl+15
782 0736 8093 0000 sts FromNaviCtrl_Value+1,r24
783 073a 8091 0000 lds r24,FromNaviCtrl+16
784 073e 8093 0000 sts FromNaviCtrl_Value+3,r24
785 0742 8091 0000 lds r24,FromNaviCtrl+17
786 0746 8093 0000 sts FromNaviCtrl_Value+4,r24
787 074a 8091 0000 lds r24,FromNaviCtrl+18
788 074e 8093 0000 sts FromNC_Rotate_C,r24
789 0752 8091 0000 lds r24,FromNaviCtrl+19
790 0756 8093 0000 sts FromNC_Rotate_S,r24
791 075a 59C0 rjmp .L20
792 .L53:
793 075c 8091 0000 lds r24,FromNaviCtrl+13
794 0760 8093 0000 sts NC_Version,r24
795 0764 8091 0000 lds r24,FromNaviCtrl+14
796 0768 8093 0000 sts NC_Version+1,r24
797 076c 8091 0000 lds r24,FromNaviCtrl+15
798 0770 8093 0000 sts NC_Version+2,r24
799 0774 8091 0000 lds r24,FromNaviCtrl+16
800 0778 8093 0000 sts NC_Version+3,r24
801 077c 8091 0000 lds r24,FromNaviCtrl+17
802 0780 8093 0000 sts NC_Version+4,r24
803 0784 8091 0000 lds r24,DebugOut
804 0788 9091 0000 lds r25,FromNaviCtrl+18
805 078c 892B or r24,r25
806 078e 8093 0000 sts DebugOut,r24
807 0792 9091 0000 lds r25,FromNaviCtrl+19
808 0796 9093 0000 sts NC_ErrorCode,r25
809 079a 8091 0000 lds r24,DebugOut+1
810 079e 8370 andi r24,lo8(3)
811 07a0 9C70 andi r25,lo8(12)
812 07a2 892B or r24,r25
813 07a4 8093 0000 sts DebugOut+1,r24
814 07a8 32C0 rjmp .L20
815 .L54:
816 07aa 8091 0000 lds r24,FromNaviCtrl+13
817 07ae 8093 0000 sts GPSInfo,r24
818 07b2 8091 0000 lds r24,FromNaviCtrl+14
819 07b6 8093 0000 sts GPSInfo+1,r24
820 07ba 8091 0000 lds r24,FromNaviCtrl+15
821 07be 8093 0000 sts GPSInfo+2,r24
822 07c2 8091 0000 lds r24,FromNaviCtrl+16
823 07c6 8093 0000 sts GPSInfo+3,r24
824 07ca 8091 0000 lds r24,FromNaviCtrl+17
825 07ce 9091 0000 lds r25,(FromNaviCtrl+17)+1
826 07d2 9093 0000 sts (GPSInfo+4)+1,r25
827 07d6 8093 0000 sts GPSInfo+4,r24
828 07da 8091 0000 lds r24,FromNaviCtrl+19
829 07de 9091 0000 lds r25,(FromNaviCtrl+19)+1
830 07e2 9093 0000 sts (GPSInfo+6)+1,r25
831 07e6 8093 0000 sts GPSInfo+6,r24
832 07ea 8091 0000 lds r24,FromNaviCtrl+21
833 07ee 9927 clr r25
834 07f0 87FD sbrc r24,7
835 07f2 9095 com r25
836 07f4 9093 0000 sts (PPM_in+50)+1,r25
837 07f8 8093 0000 sts PPM_in+50,r24
838 07fc 08C0 rjmp .L20
839 .L47:
840 07fe 1092 0000 sts (GPS_Nick)+1,__zero_reg__
841 0802 1092 0000 sts GPS_Nick,__zero_reg__
842 0806 1092 0000 sts (GPS_Roll)+1,__zero_reg__
843 080a 1092 0000 sts GPS_Roll,__zero_reg__
844 .L20:
845 /* epilogue: frame size=0 */
846 080e 1F91 pop r17
847 0810 0F91 pop r16
848 0812 FF90 pop r15
849 0814 EF90 pop r14
850 0816 0895 ret
851 /* epilogue end (size=5) */
852 /* function UpdateSPI_Buffer size 871 (862) */
854 .global SPI_StartTransmitPacket
856 SPI_StartTransmitPacket:
857 /* prologue: frame size=0 */
858 /* prologue end (size=0) */
859 0818 8091 0000 lds r24,SPITransferCompleted
860 081c 8823 tst r24
861 081e 09F4 brne .+2
862 0820 3BC0 rjmp .L60
863 0822 4598 cbi 40-0x20,5
864 0824 80E0 ldi r24,lo8(ToNaviCtrl)
865 0826 90E0 ldi r25,hi8(ToNaviCtrl)
866 0828 9093 0000 sts (SPI_TX_Buffer)+1,r25
867 082c 8093 0000 sts SPI_TX_Buffer,r24
868 0830 9091 0000 lds r25,SPI_CommandCounter
869 0834 E92F mov r30,r25
870 0836 FF27 clr r31
871 0838 E050 subi r30,lo8(-(SPI_CommandSequence))
872 083a F040 sbci r31,hi8(-(SPI_CommandSequence))
873 083c 9F5F subi r25,lo8(-(1))
874 083e 9093 0000 sts SPI_CommandCounter,r25
875 0842 8081 ld r24,Z
876 0844 8093 0000 sts ToNaviCtrl+2,r24
877 0848 9930 cpi r25,lo8(9)
878 084a 10F0 brlo .L62
879 084c 1092 0000 sts SPI_CommandCounter,__zero_reg__
880 .L62:
881 0850 1092 0000 sts SPITransferCompleted,__zero_reg__
882 0854 0E94 0000 call UpdateSPI_Buffer
883 0858 81E0 ldi r24,lo8(1)
884 085a 8093 0000 sts SPI_BufferIndex,r24
885 /* #APP */
886 085e 0000 nop
887 0860 0000 nop
888 0862 0000 nop
889 0864 0000 nop
890 0866 0000 nop
891 0868 0000 nop
892 086a 0000 nop
893 086c 0000 nop
894 086e 0000 nop
895 0870 0000 nop
896 0872 0000 nop
897 0874 0000 nop
898 0876 0000 nop
899 0878 0000 nop
900 087a 0000 nop
901 087c 0000 nop
902 087e 0000 nop
903 0880 0000 nop
904 0882 0000 nop
905 0884 0000 nop
906 0886 0000 nop
907 0888 0000 nop
908 088a 0000 nop
909 088c 0000 nop
910 /* #NOAPP */
911 088e 8091 0000 lds r24,ToNaviCtrl
912 0892 8093 0000 sts ToNaviCtrl+31,r24
913 0896 8EBD out 78-0x20,r24
914 .L60:
915 0898 0895 ret
916 /* epilogue: frame size=0 */
917 /* epilogue: noreturn */
918 /* epilogue end (size=0) */
919 /* function SPI_StartTransmitPacket size 89 (89) */
921 .comm GPSInfo,8,1
922 .comm NC_Version,5,1
923 .comm FromNaviCtrl_Value,5,1
924 .comm ToNaviCtrl,32,1
925 .comm FromNaviCtrl,26,1
926 .comm SPI_BufferIndex,1,1
927 .comm SPI_RxBufferIndex,1,1
928 .comm SPI_Buffer,26,1
929 .comm SPI_TX_Buffer,2,1
930 .comm SPITransferCompleted,1,1
931 .comm SPI_ChkSum,1,1
932 .comm SPI_RxDataValid,1,1
933 /* File "spi.c": code 1157 = 0x0485 (1147), prologues 4, epilogues 6 */
DEFINED SYMBOLS
*ABS*:00000000 spi.c
C:\Users\Thomas\AppData\Local\Temp/cceKbaaa.s:3 *ABS*:0000003f __SREG__
C:\Users\Thomas\AppData\Local\Temp/cceKbaaa.s:4 *ABS*:0000003e __SP_H__
C:\Users\Thomas\AppData\Local\Temp/cceKbaaa.s:5 *ABS*:0000003d __SP_L__
C:\Users\Thomas\AppData\Local\Temp/cceKbaaa.s:6 *ABS*:00000000 __tmp_reg__
C:\Users\Thomas\AppData\Local\Temp/cceKbaaa.s:7 *ABS*:00000001 __zero_reg__
C:\Users\Thomas\AppData\Local\Temp/cceKbaaa.s:15 .bss:00000000 NC_ErrorCode
C:\Users\Thomas\AppData\Local\Temp/cceKbaaa.s:21 .bss:00000001 SPI_CommandCounter
C:\Users\Thomas\AppData\Local\Temp/cceKbaaa.s:27 .data:00000000 SPI_CommandSequence
C:\Users\Thomas\AppData\Local\Temp/cceKbaaa.s:40 .data:00000009 NaviDataOkay
C:\Users\Thomas\AppData\Local\Temp/cceKbaaa.s:47 .bss:00000002 FromNC_Rotate_S
C:\Users\Thomas\AppData\Local\Temp/cceKbaaa.s:53 .data:0000000a FromNC_Rotate_C
C:\Users\Thomas\AppData\Local\Temp/cceKbaaa.s:58 .text:00000000 SPI_MasterInit
*COM*:00000001 SPITransferCompleted
*COM*:00000020 ToNaviCtrl
*COM*:00000005 FromNaviCtrl_Value
*COM*:00000001 SPI_RxDataValid
.bss:00000003 SPI_RXState.0
C:\Users\Thomas\AppData\Local\Temp/cceKbaaa.s:88 .bss:00000004 rxchksum.1
C:\Users\Thomas\AppData\Local\Temp/cceKbaaa.s:92 .text:00000042 SPI_TransmitByte
*COM*:00000001 SPI_RxBufferIndex
*COM*:0000001a SPI_Buffer
*COM*:0000001a FromNaviCtrl
*COM*:00000001 SPI_BufferIndex
*COM*:00000002 SPI_TX_Buffer
C:\Users\Thomas\AppData\Local\Temp/cceKbaaa.s:233 .text:00000158 UpdateSPI_Buffer
*COM*:00000005 NC_Version
*COM*:00000008 GPSInfo
C:\Users\Thomas\AppData\Local\Temp/cceKbaaa.s:856 .text:00000818 SPI_StartTransmitPacket
*COM*:00000001 SPI_ChkSum
 
UNDEFINED SYMBOLS
__do_copy_data
__do_clear_bss
SendSPI
EE_Parameter
IntegralNick
__divmodsi4
IntegralRoll
ErsatzKompass
GIER_GRAD_FAKTOR
AdNeutralGier
AdWertGier
NaviCntAcc
NaviAccNick
__divmodhi4
NaviAccRoll
Parameter_UserParam1
Parameter_UserParam2
Parameter_UserParam3
Parameter_UserParam4
Parameter_UserParam5
Parameter_UserParam6
Parameter_UserParam7
Parameter_UserParam8
FC_StatusFlags
GetActiveParamSet
ControlHeading
Capacity
UBat
BattLowVoltageWarning
PPM_in
Poti
WinkelOut
HoehenWert
SollHoehe
SenderOkay
DebugOut
PlatinenVersion
VersionInfo
Parameter_ServoNickControl
Parameter_ServoRollControl
GPS_Nick
GPS_Roll
KompassValue
KompassStartwert
KompassRichtung
beeptime
/branches/metro/v0.82a metro_Akku+/timer0.c
0,0 → 1,402
#include "main.h"
#define MULTIPLYER 4
 
volatile unsigned int CountMilliseconds = 0;
volatile static unsigned int tim_main;
volatile unsigned char UpdateMotor = 0;
volatile unsigned int cntKompass = 0;
volatile unsigned int beeptime = 0;
volatile unsigned char SendSPI = 0, ServoActive = 0, CalculateServoSignals = 1;
uint16_t RemainingPulse = 0;
volatile int16_t ServoNickOffset = (255 / 2) * MULTIPLYER * 16; // initial value near center positon
volatile int16_t ServoRollOffset = (255 / 2) * MULTIPLYER * 16; // initial value near center positon
 
unsigned int BeepMuster = 0xffff;
 
volatile int16_t ServoNickValue = 0;
volatile int16_t ServoRollValue = 0;
 
 
enum {
STOP = 0,
CK = 1,
CK8 = 2,
CK64 = 3,
CK256 = 4,
CK1024 = 5,
T0_FALLING_EDGE = 6,
T0_RISING_EDGE = 7
};
 
 
ISR(TIMER0_OVF_vect) // 9,7kHz
{
static unsigned char cnt_1ms = 1,cnt = 0, compass_active = 0;
unsigned char pieper_ein = 0;
if(SendSPI) SendSPI--;
if(SpektrumTimer) SpektrumTimer--;
if(!cnt--)
{
cnt = 9;
CountMilliseconds++;
cnt_1ms++;
cnt_1ms %= 2;
 
if(!cnt_1ms) UpdateMotor = 1;
if(!(PINC & 0x10)) compass_active = 1;
 
if(beeptime)
{
if(beeptime > 10) beeptime -= 10; else beeptime = 0;
if(beeptime & BeepMuster)
{
pieper_ein = 1;
}
else pieper_ein = 0;
}
else
{
pieper_ein = 0;
BeepMuster = 0xffff;
}
if(pieper_ein)
{
if(PlatinenVersion == 10) PORTD |= (1<<2); // Speaker an PORTD.2
else PORTC |= (1<<7); // Speaker an PORTC.7
}
else
{
if(PlatinenVersion == 10) PORTD &= ~(1<<2);
else PORTC &= ~(1<<7);
}
}
if(compass_active && !NaviDataOkay && EE_Parameter.GlobalConfig & CFG_KOMPASS_AKTIV)
{
if(PINC & 0x10)
{
if(++cntKompass > 1000) compass_active = 0;
}
else
{
if((cntKompass) && (cntKompass < 362))
{
cntKompass += cntKompass / 41;
if(cntKompass > 10) KompassValue = cntKompass - 10; else KompassValue = 0;
KompassRichtung = ((540 + KompassValue - KompassStartwert) % 360) - 180;
}
cntKompass = 0;
}
}
}
 
 
// -----------------------------------------------------------------------
unsigned int SetDelay (unsigned int t)
{
// TIMSK0 &= ~_BV(TOIE0);
return(CountMilliseconds + t + 1);
// TIMSK0 |= _BV(TOIE0);
}
 
// -----------------------------------------------------------------------
char CheckDelay(unsigned int t)
{
// TIMSK0 &= ~_BV(TOIE0);
return(((t - CountMilliseconds) & 0x8000) >> 9);
// TIMSK0 |= _BV(TOIE0);
}
 
// -----------------------------------------------------------------------
void Delay_ms(unsigned int w)
{
unsigned int akt;
akt = SetDelay(w);
while (!CheckDelay(akt));
}
 
void Delay_ms_Mess(unsigned int w)
{
unsigned int akt;
akt = SetDelay(w);
while (!CheckDelay(akt)) if(AdReady) {AdReady = 0; ANALOG_ON;}
}
 
/*****************************************************/
/* Initialize Timer 2 */
/*****************************************************/
// The timer 2 is used to generate the PWM at PD7 (J7)
// to control a camera servo for nick compensation.
void TIMER2_Init(void)
{
uint8_t sreg = SREG;
 
// disable all interrupts before reconfiguration
cli();
 
PORTD &= ~(1<<PORTD7); // set PD7 to low
 
DDRC |= (1<<DDC6); // set PC6 as output (Reset for HEF4017)
HEF4017R_ON;
// Timer/Counter 2 Control Register A
 
// Timer Mode is FastPWM with timer reload at OCR2A (Bits: WGM22 = 1, WGM21 = 1, WGM20 = 1)
// PD7: Normal port operation, OC2A disconnected, (Bits: COM2A1 = 0, COM2A0 = 0)
// PD6: Normal port operation, OC2B disconnected, (Bits: COM2B1 = 0, COM2B0 = 0)
TCCR2A &= ~((1<<COM2A1)|(1<<COM2A0)|(1<<COM2B1)|(1<<COM2B0));
TCCR2A |= (1<<WGM21)|(1<<WGM20);
 
// Timer/Counter 2 Control Register B
 
// Set clock divider for timer 2 to SYSKLOCK/32 = 20MHz / 32 = 625 kHz
// The timer increments from 0x00 to 0xFF with an update rate of 625 kHz or 1.6 us
// hence the timer overflow interrupt frequency is 625 kHz / 256 = 2.44 kHz or 0.4096 ms
 
// divider 32 (Bits: CS022 = 0, CS21 = 1, CS20 = 1)
TCCR2B &= ~((1<<FOC2A)|(1<<FOC2B)|(1<<CS22));
TCCR2B |= (1<<CS21)|(1<<CS20)|(1<<WGM22);
 
// Initialize the Timer/Counter 2 Register
TCNT2 = 0;
 
// Initialize the Output Compare Register A used for PWM generation on port PD7.
OCR2A = 255;
TCCR2A |= (1<<COM2A1); // set or clear at compare match depends on value of COM2A0
 
// Timer/Counter 2 Interrupt Mask Register
// Enable timer output compare match A Interrupt only
TIMSK2 &= ~((1<<OCIE2B)|(1<<TOIE2));
TIMSK2 |= (1<<OCIE2A);
 
SREG = sreg;
}
 
//----------------------------
void Timer_Init(void)
{
tim_main = SetDelay(10);
TCCR0B = CK8;
TCCR0A = (1<<COM0A1)|(1<<COM0B1)|3;//fast PWM
OCR0A = 0;
OCR0B = 180;
TCNT0 = (unsigned char)-TIMER_RELOAD_VALUE; // reload
//OCR1 = 0x00;
TIMSK0 |= _BV(TOIE0);
}
 
 
/*****************************************************/
/* Control Servo Position */
/*****************************************************/
 
 
void CalculateServo(void)
{
signed char cosinus, sinus;
signed long nick, roll;
 
cosinus = sintab[EE_Parameter.CamOrientation + 6];
sinus = sintab[EE_Parameter.CamOrientation];
 
if(CalculateServoSignals == 1)
{
nick = (cosinus * IntegralNick) / 128L - (sinus * IntegralRoll) / 128L;
nick = ((long)EE_Parameter.ServoNickComp * nick) / 512L;
ServoNickOffset += ((int16_t)Parameter_ServoNickControl * (MULTIPLYER*16) - ServoNickOffset) / EE_Parameter.ServoManualControlSpeed;
ServoNickValue = ServoNickOffset / 16; // offset (Range from 0 to 255 * 3 = 765)
if(EE_Parameter.ServoCompInvert & 0x01)
{ // inverting movement of servo
ServoNickValue += nick;//(int16_t)( ( (int32_t)EE_Parameter.ServoNickComp * nick) / (256L) );
}
else
{ // non inverting movement of servo
ServoNickValue -= nick;
}
// limit servo value to its parameter range definition
if(ServoNickValue < ((int16_t)EE_Parameter.ServoNickMin * MULTIPLYER) )
{
ServoNickValue = (int16_t)EE_Parameter.ServoNickMin * MULTIPLYER;
}
else
if(ServoNickValue > ((int16_t)EE_Parameter.ServoNickMax * MULTIPLYER) )
{
ServoNickValue = (int16_t)EE_Parameter.ServoNickMax * MULTIPLYER;
}
if(PlatinenVersion < 20) CalculateServoSignals = 0; else CalculateServoSignals++;
}
else
{
roll = (cosinus * IntegralRoll) / 128L + (sinus * IntegralNick) / 128L;
roll = ((long)EE_Parameter.ServoRollComp * roll) / 512L;
ServoRollOffset += ((int16_t)Parameter_ServoRollControl * (MULTIPLYER*16) - ServoRollOffset) / EE_Parameter.ServoManualControlSpeed;
ServoRollValue = ServoRollOffset/16; // offset (Range from 0 to 255 * 3 = 765)
if(EE_Parameter.ServoCompInvert & 0x02)
{ // inverting movement of servo
ServoRollValue += roll;
}
else
{ // non inverting movement of servo
ServoRollValue -= roll;
}
// limit servo value to its parameter range definition
if(ServoRollValue < ((int16_t)EE_Parameter.ServoRollMin * MULTIPLYER) )
{
ServoRollValue = (int16_t)EE_Parameter.ServoRollMin * MULTIPLYER;
}
else
if(ServoRollValue > ((int16_t)EE_Parameter.ServoRollMax * MULTIPLYER) )
{
ServoRollValue = (int16_t)EE_Parameter.ServoRollMax * MULTIPLYER;
}
CalculateServoSignals = 0;
}
}
 
ISR(TIMER2_COMPA_vect)
{
// frame len 22.5 ms = 14063 * 1.6 us
// stop pulse: 0.3 ms = 188 * 1.6 us
// min servo pulse: 0.6 ms = 375 * 1.6 us
// max servo pulse: 2.4 ms = 1500 * 1.6 us
// resolution: 1500 - 375 = 1125 steps
 
#define IRS_RUNTIME 127
#define PPM_STOPPULSE 188
#define PPM_FRAMELEN (1757 * EE_Parameter.ServoNickRefresh)
#define MINSERVOPULSE 375
#define MAXSERVOPULSE 1500
#define SERVORANGE (MAXSERVOPULSE - MINSERVOPULSE)
 
static uint8_t PulseOutput = 0;
static uint16_t ServoFrameTime = 0;
static uint8_t ServoIndex = 0;
 
 
if(PlatinenVersion < 20)
{
//---------------------------
// Nick servo state machine
//---------------------------
if(!PulseOutput) // pulse output complete
{
if(TCCR2A & (1<<COM2A0)) // we had a low pulse
{
TCCR2A &= ~(1<<COM2A0);// make a high pulse
RemainingPulse = MINSERVOPULSE + SERVORANGE/2; // center position ~ 1.5ms
RemainingPulse += ServoNickValue - (256 / 2) * MULTIPLYER; // shift ServoNickValue to center position
// range servo pulse width
if(RemainingPulse > MAXSERVOPULSE ) RemainingPulse = MAXSERVOPULSE; // upper servo pulse limit
else if(RemainingPulse < MINSERVOPULSE ) RemainingPulse = MINSERVOPULSE; // lower servo pulse limit
// accumulate time for correct update rate
ServoFrameTime = RemainingPulse;
}
else // we had a high pulse
{
TCCR2A |= (1<<COM2A0); // make a low pulse
RemainingPulse = PPM_FRAMELEN - ServoFrameTime;
CalculateServoSignals = 1;
}
// set pulse output active
PulseOutput = 1;
}
} // EOF Nick servo state machine
else
{
//-----------------------------------------------------
// PPM state machine, onboard demultiplexed by HEF4017
//-----------------------------------------------------
if(!PulseOutput) // pulse output complete
{
if(TCCR2A & (1<<COM2A0)) // we had a low pulse
{
TCCR2A &= ~(1<<COM2A0);// make a high pulse
 
if(ServoIndex == 0) // if we are at the sync gap
{
RemainingPulse = PPM_FRAMELEN - ServoFrameTime; // generate sync gap by filling time to full frame time
ServoFrameTime = 0; // reset servo frame time
HEF4017R_ON; // enable HEF4017 reset
}
else // servo channels
{
RemainingPulse = MINSERVOPULSE + SERVORANGE/2; // center position ~ 1.5ms
switch(ServoIndex) // map servo channels
{
case 1: // Nick Compensation Servo
RemainingPulse += ServoNickValue - (256 / 2) * MULTIPLYER; // shift ServoNickValue to center position
break;
case 2: // Roll Compensation Servo
RemainingPulse += ServoRollValue - (256 / 2) * MULTIPLYER; // shift ServoNickValue to center position
break;
case 3:
RemainingPulse += ((int16_t)Parameter_Servo3 * MULTIPLYER) - (256 / 2) * MULTIPLYER;
break;
case 4:
RemainingPulse += ((int16_t)Parameter_Servo4 * MULTIPLYER) - (256 / 2) * MULTIPLYER;
break;
case 5:
RemainingPulse += ((int16_t)Parameter_Servo5 * MULTIPLYER) - (256 / 2) * MULTIPLYER;
break;
default: // other servo channels
RemainingPulse += 2 * PPM_in[ServoIndex]; // add channel value, factor of 2 because timer 1 increments 3.2µs
break;
}
// range servo pulse width
if(RemainingPulse > MAXSERVOPULSE ) RemainingPulse = MAXSERVOPULSE; // upper servo pulse limit
else if(RemainingPulse < MINSERVOPULSE ) RemainingPulse = MINSERVOPULSE; // lower servo pulse limit
// substract stop pulse width
RemainingPulse -= PPM_STOPPULSE;
// accumulate time for correct sync gap
ServoFrameTime += RemainingPulse;
}
}
else // we had a high pulse
{
TCCR2A |= (1<<COM2A0); // make a low pulse
// set pulsewidth to stop pulse width
RemainingPulse = PPM_STOPPULSE;
// accumulate time for correct sync gap
ServoFrameTime += RemainingPulse;
if((ServoActive && SenderOkay > 50) || ServoActive == 2) HEF4017R_OFF; // disable HEF4017 reset
else HEF4017R_ON;
ServoIndex++; // change to next servo channel
if(ServoIndex > EE_Parameter.ServoNickRefresh)
{
CalculateServoSignals = 1;
ServoIndex = 0; // reset to the sync gap
}
}
// set pulse output active
PulseOutput = 1;
}
} // EOF PPM state machine
 
// General pulse output generator
if(RemainingPulse > (255 + IRS_RUNTIME))
{
OCR2A = 255;
RemainingPulse -= 255;
}
else
{
if(RemainingPulse > 255) // this is the 2nd last part
{
if((RemainingPulse - 255) < IRS_RUNTIME)
{
OCR2A = 255 - IRS_RUNTIME;
RemainingPulse -= 255 - IRS_RUNTIME;
 
}
else // last part > ISR_RUNTIME
{
OCR2A = 255;
RemainingPulse -= 255;
}
}
else // this is the last part
{
OCR2A = RemainingPulse;
RemainingPulse = 0;
PulseOutput = 0; // trigger to stop pulse
}
} // EOF general pulse output generator
}
/branches/metro/v0.82a metro_Akku+/timer0.d
0,0 → 1,3
timer0.o timer0.d : timer0.c main.h old_macros.h printf_P.h timer0.h uart.h \
analog.h twimaster.h menu.h rc.h fc.h gps.h spi.h led.h spektrum.h \
capacity.h eeprom.h libfc.h debug.h
/branches/metro/v0.82a metro_Akku+/timer0.h
0,0 → 1,22
 
#define TIMER_TEILER CK8
#define TIMER_RELOAD_VALUE 250
#define HEF4017R_ON PORTC |= (1<<PORTC6)
#define HEF4017R_OFF PORTC &= ~(1<<PORTC6)
 
void Timer_Init(void);
void TIMER2_Init(void);
void Delay_ms(unsigned int);
void Delay_ms_Mess(unsigned int);
unsigned int SetDelay (unsigned int t);
char CheckDelay (unsigned int t);
void CalculateServo(void);
 
extern volatile unsigned int CountMilliseconds;
extern volatile unsigned char UpdateMotor;
extern volatile unsigned int beeptime;
extern volatile unsigned int cntKompass;
extern unsigned int BeepMuster;
extern volatile unsigned char SendSPI, ServoActive, CalculateServoSignals;
extern volatile int16_t ServoNickValue;
extern volatile int16_t ServoRollValue;
/branches/metro/v0.82a metro_Akku+/timer0.lst
0,0 → 1,1182
1 .file "timer0.c"
2 .arch atmega644p
3 __SREG__ = 0x3f
4 __SP_H__ = 0x3e
5 __SP_L__ = 0x3d
6 __tmp_reg__ = 0
7 __zero_reg__ = 1
8 .global __do_copy_data
9 .global __do_clear_bss
10 .global ServoRollValue
11 .global ServoRollValue
12 .section .bss
15 ServoRollValue:
16 0000 0000 .skip 2,0
17 .global ServoNickValue
18 .global ServoNickValue
21 ServoNickValue:
22 0002 0000 .skip 2,0
23 .global BeepMuster
24 .data
27 BeepMuster:
28 0000 FFFF .word -1
29 .global ServoRollOffset
32 ServoRollOffset:
33 0002 C01F .word 8128
34 .global ServoNickOffset
37 ServoNickOffset:
38 0004 C01F .word 8128
39 .global RemainingPulse
40 .global RemainingPulse
41 .section .bss
44 RemainingPulse:
45 0004 0000 .skip 2,0
46 .global CalculateServoSignals
47 .data
50 CalculateServoSignals:
51 0006 01 .byte 1
52 .global ServoActive
53 .global ServoActive
54 .section .bss
57 ServoActive:
58 0006 00 .skip 1,0
59 .global SendSPI
60 .global SendSPI
63 SendSPI:
64 0007 00 .skip 1,0
65 .global beeptime
66 .global beeptime
69 beeptime:
70 0008 0000 .skip 2,0
71 .global cntKompass
72 .global cntKompass
75 cntKompass:
76 000a 0000 .skip 2,0
77 .global UpdateMotor
78 .global UpdateMotor
81 UpdateMotor:
82 000c 00 .skip 1,0
83 .global CountMilliseconds
84 .global CountMilliseconds
87 CountMilliseconds:
88 000d 0000 .skip 2,0
89 .data
92 cnt_1ms.3:
93 0007 01 .byte 1
94 .lcomm cnt.4,1
95 .lcomm compass_active.5,1
96 .text
97 .global __vector_18
99 __vector_18:
100 /* prologue: frame size=0 */
101 0000 1F92 push __zero_reg__
102 0002 0F92 push __tmp_reg__
103 0004 0FB6 in __tmp_reg__,__SREG__
104 0006 0F92 push __tmp_reg__
105 0008 1124 clr __zero_reg__
106 000a 2F93 push r18
107 000c 3F93 push r19
108 000e 5F93 push r21
109 0010 6F93 push r22
110 0012 7F93 push r23
111 0014 8F93 push r24
112 0016 9F93 push r25
113 0018 AF93 push r26
114 001a BF93 push r27
115 001c EF93 push r30
116 001e FF93 push r31
117 /* prologue end (size=16) */
118 0020 20E0 ldi r18,lo8(0)
119 0022 8091 0000 lds r24,SendSPI
120 0026 8823 tst r24
121 0028 29F0 breq .L2
122 002a 8091 0000 lds r24,SendSPI
123 002e 8150 subi r24,lo8(-(-1))
124 0030 8093 0000 sts SendSPI,r24
125 .L2:
126 0034 8091 0000 lds r24,SpektrumTimer
127 0038 8823 tst r24
128 003a 19F0 breq .L3
129 003c 8150 subi r24,lo8(-(-1))
130 003e 8093 0000 sts SpektrumTimer,r24
131 .L3:
132 0042 8091 0000 lds r24,cnt.4
133 0046 8150 subi r24,lo8(-(-1))
134 0048 8093 0000 sts cnt.4,r24
135 004c 8F3F cpi r24,lo8(-1)
136 004e 09F0 breq .+2
137 0050 5BC0 rjmp .L4
138 0052 89E0 ldi r24,lo8(9)
139 0054 8093 0000 sts cnt.4,r24
140 0058 8091 0000 lds r24,CountMilliseconds
141 005c 9091 0000 lds r25,(CountMilliseconds)+1
142 0060 0196 adiw r24,1
143 0062 9093 0000 sts (CountMilliseconds)+1,r25
144 0066 8093 0000 sts CountMilliseconds,r24
145 006a 8091 0000 lds r24,cnt_1ms.3
146 006e 8F5F subi r24,lo8(-(1))
147 0070 8170 andi r24,lo8(1)
148 0072 8093 0000 sts cnt_1ms.3,r24
149 0076 8823 tst r24
150 0078 19F4 brne .L5
151 007a 81E0 ldi r24,lo8(1)
152 007c 8093 0000 sts UpdateMotor,r24
153 .L5:
154 0080 3499 sbic 38-0x20,4
155 0082 03C0 rjmp .L6
156 0084 81E0 ldi r24,lo8(1)
157 0086 8093 0000 sts compass_active.5,r24
158 .L6:
159 008a 8091 0000 lds r24,beeptime
160 008e 9091 0000 lds r25,(beeptime)+1
161 0092 892B or r24,r25
162 0094 21F1 breq .L7
163 0096 8091 0000 lds r24,beeptime
164 009a 9091 0000 lds r25,(beeptime)+1
165 009e 0B97 sbiw r24,11
166 00a0 50F0 brlo .L8
167 00a2 8091 0000 lds r24,beeptime
168 00a6 9091 0000 lds r25,(beeptime)+1
169 00aa 0A97 sbiw r24,10
170 00ac 9093 0000 sts (beeptime)+1,r25
171 00b0 8093 0000 sts beeptime,r24
172 00b4 04C0 rjmp .L9
173 .L8:
174 00b6 1092 0000 sts (beeptime)+1,__zero_reg__
175 00ba 1092 0000 sts beeptime,__zero_reg__
176 .L9:
177 00be 8091 0000 lds r24,beeptime
178 00c2 9091 0000 lds r25,(beeptime)+1
179 00c6 2091 0000 lds r18,BeepMuster
180 00ca 3091 0000 lds r19,(BeepMuster)+1
181 00ce 8223 and r24,r18
182 00d0 9323 and r25,r19
183 00d2 892B or r24,r25
184 00d4 11F0 breq .L10
185 00d6 21E0 ldi r18,lo8(1)
186 00d8 08C0 rjmp .L12
187 .L10:
188 00da 20E0 ldi r18,lo8(0)
189 00dc 06C0 rjmp .L12
190 .L7:
191 00de 8FEF ldi r24,lo8(-1)
192 00e0 9FEF ldi r25,hi8(-1)
193 00e2 9093 0000 sts (BeepMuster)+1,r25
194 00e6 8093 0000 sts BeepMuster,r24
195 .L12:
196 00ea 8091 0000 lds r24,PlatinenVersion
197 00ee 2223 tst r18
198 00f0 31F0 breq .L13
199 00f2 8A30 cpi r24,lo8(10)
200 00f4 11F4 brne .L14
201 00f6 5A9A sbi 43-0x20,2
202 00f8 07C0 rjmp .L4
203 .L14:
204 00fa 479A sbi 40-0x20,7
205 00fc 05C0 rjmp .L4
206 .L13:
207 00fe 8A30 cpi r24,lo8(10)
208 0100 11F4 brne .L17
209 0102 5A98 cbi 43-0x20,2
210 0104 01C0 rjmp .L4
211 .L17:
212 0106 4798 cbi 40-0x20,7
213 .L4:
214 0108 8091 0000 lds r24,compass_active.5
215 010c 8823 tst r24
216 010e 09F4 brne .+2
217 0110 72C0 rjmp .L1
218 0112 2091 0000 lds r18,NaviDataOkay
219 0116 2223 tst r18
220 0118 09F0 breq .+2
221 011a 6DC0 rjmp .L1
222 011c 8091 0000 lds r24,EE_Parameter+13
223 0120 83FF sbrs r24,3
224 0122 69C0 rjmp .L1
225 0124 86B1 in r24,38-0x20
226 0126 9927 clr r25
227 0128 FC01 movw r30,r24
228 012a E071 andi r30,lo8(16)
229 012c F070 andi r31,hi8(16)
230 012e 84FF sbrs r24,4
231 0130 14C0 rjmp .L20
232 0132 8091 0000 lds r24,cntKompass
233 0136 9091 0000 lds r25,(cntKompass)+1
234 013a 0196 adiw r24,1
235 013c 9093 0000 sts (cntKompass)+1,r25
236 0140 8093 0000 sts cntKompass,r24
237 0144 8091 0000 lds r24,cntKompass
238 0148 9091 0000 lds r25,(cntKompass)+1
239 014c 895E subi r24,lo8(1001)
240 014e 9340 sbci r25,hi8(1001)
241 0150 08F4 brsh .+2
242 0152 51C0 rjmp .L1
243 0154 2093 0000 sts compass_active.5,r18
244 0158 4EC0 rjmp .L1
245 .L20:
246 015a 8091 0000 lds r24,cntKompass
247 015e 9091 0000 lds r25,(cntKompass)+1
248 0162 892B or r24,r25
249 0164 09F4 brne .+2
250 0166 43C0 rjmp .L23
251 0168 8091 0000 lds r24,cntKompass
252 016c 9091 0000 lds r25,(cntKompass)+1
253 0170 8A56 subi r24,lo8(362)
254 0172 9140 sbci r25,hi8(362)
255 0174 E0F5 brsh .L23
256 0176 8091 0000 lds r24,cntKompass
257 017a 9091 0000 lds r25,(cntKompass)+1
258 017e 69E2 ldi r22,lo8(41)
259 0180 70E0 ldi r23,hi8(41)
260 0182 0E94 0000 call __udivmodhi4
261 0186 8091 0000 lds r24,cntKompass
262 018a 9091 0000 lds r25,(cntKompass)+1
263 018e 860F add r24,r22
264 0190 971F adc r25,r23
265 0192 9093 0000 sts (cntKompass)+1,r25
266 0196 8093 0000 sts cntKompass,r24
267 019a 8091 0000 lds r24,cntKompass
268 019e 9091 0000 lds r25,(cntKompass)+1
269 01a2 0B97 sbiw r24,11
270 01a4 50F0 brlo .L24
271 01a6 8091 0000 lds r24,cntKompass
272 01aa 9091 0000 lds r25,(cntKompass)+1
273 01ae 0A97 sbiw r24,10
274 01b0 9093 0000 sts (KompassValue)+1,r25
275 01b4 8093 0000 sts KompassValue,r24
276 01b8 04C0 rjmp .L25
277 .L24:
278 01ba F093 0000 sts (KompassValue)+1,r31
279 01be E093 0000 sts KompassValue,r30
280 .L25:
281 01c2 8091 0000 lds r24,KompassValue
282 01c6 9091 0000 lds r25,(KompassValue)+1
283 01ca 2091 0000 lds r18,KompassStartwert
284 01ce 3091 0000 lds r19,(KompassStartwert)+1
285 01d2 821B sub r24,r18
286 01d4 930B sbc r25,r19
287 01d6 845E subi r24,lo8(-(540))
288 01d8 9D4F sbci r25,hi8(-(540))
289 01da 68E6 ldi r22,lo8(360)
290 01dc 71E0 ldi r23,hi8(360)
291 01de 0E94 0000 call __divmodhi4
292 01e2 845B subi r24,lo8(-(-180))
293 01e4 9040 sbci r25,hi8(-(-180))
294 01e6 9093 0000 sts (KompassRichtung)+1,r25
295 01ea 8093 0000 sts KompassRichtung,r24
296 .L23:
297 01ee 1092 0000 sts (cntKompass)+1,__zero_reg__
298 01f2 1092 0000 sts cntKompass,__zero_reg__
299 .L1:
300 /* epilogue: frame size=0 */
301 01f6 FF91 pop r31
302 01f8 EF91 pop r30
303 01fa BF91 pop r27
304 01fc AF91 pop r26
305 01fe 9F91 pop r25
306 0200 8F91 pop r24
307 0202 7F91 pop r23
308 0204 6F91 pop r22
309 0206 5F91 pop r21
310 0208 3F91 pop r19
311 020a 2F91 pop r18
312 020c 0F90 pop __tmp_reg__
313 020e 0FBE out __SREG__,__tmp_reg__
314 0210 0F90 pop __tmp_reg__
315 0212 1F90 pop __zero_reg__
316 0214 1895 reti
317 /* epilogue end (size=16) */
318 /* function __vector_18 size 271 (239) */
320 .global SetDelay
322 SetDelay:
323 /* prologue: frame size=0 */
324 /* prologue end (size=0) */
325 0216 2091 0000 lds r18,CountMilliseconds
326 021a 3091 0000 lds r19,(CountMilliseconds)+1
327 021e 280F add r18,r24
328 0220 391F adc r19,r25
329 0222 C901 movw r24,r18
330 0224 0196 adiw r24,1
331 /* epilogue: frame size=0 */
332 0226 0895 ret
333 /* epilogue end (size=1) */
334 /* function SetDelay size 9 (8) */
336 .global CheckDelay
338 CheckDelay:
339 /* prologue: frame size=0 */
340 /* prologue end (size=0) */
341 0228 2091 0000 lds r18,CountMilliseconds
342 022c 3091 0000 lds r19,(CountMilliseconds)+1
343 0230 821B sub r24,r18
344 0232 930B sbc r25,r19
345 0234 892F mov r24,r25
346 0236 9927 clr r25
347 0238 8695 lsr r24
348 023a 8074 andi r24,lo8(64)
349 023c 9070 andi r25,hi8(64)
350 /* epilogue: frame size=0 */
351 023e 0895 ret
352 /* epilogue end (size=1) */
353 /* function CheckDelay size 12 (11) */
355 .global Delay_ms
357 Delay_ms:
358 /* prologue: frame size=0 */
359 0240 CF93 push r28
360 0242 DF93 push r29
361 /* prologue end (size=2) */
362 0244 0E94 0000 call SetDelay
363 0248 EC01 movw r28,r24
364 .L29:
365 024a CE01 movw r24,r28
366 024c 0E94 0000 call CheckDelay
367 0250 8823 tst r24
368 0252 D9F3 breq .L29
369 /* epilogue: frame size=0 */
370 0254 DF91 pop r29
371 0256 CF91 pop r28
372 0258 0895 ret
373 /* epilogue end (size=3) */
374 /* function Delay_ms size 13 (8) */
376 .global Delay_ms_Mess
378 Delay_ms_Mess:
379 /* prologue: frame size=0 */
380 025a CF93 push r28
381 025c DF93 push r29
382 /* prologue end (size=2) */
383 025e 0E94 0000 call SetDelay
384 0262 EC01 movw r28,r24
385 0264 09C0 rjmp .L40
386 .L36:
387 0266 8091 0000 lds r24,AdReady
388 026a 8823 tst r24
389 026c 29F0 breq .L40
390 026e 9093 0000 sts AdReady,r25
391 0272 8FEC ldi r24,lo8(-49)
392 0274 8093 7A00 sts 122,r24
393 .L40:
394 0278 CE01 movw r24,r28
395 027a 0E94 0000 call CheckDelay
396 027e 982F mov r25,r24
397 0280 8823 tst r24
398 0282 89F3 breq .L36
399 /* epilogue: frame size=0 */
400 0284 DF91 pop r29
401 0286 CF91 pop r28
402 0288 0895 ret
403 /* epilogue end (size=3) */
404 /* function Delay_ms_Mess size 24 (19) */
406 .global TIMER2_Init
408 TIMER2_Init:
409 /* prologue: frame size=0 */
410 /* prologue end (size=0) */
411 028a 9FB7 in r25,95-0x20
412 /* #APP */
413 028c F894 cli
414 /* #NOAPP */
415 028e 5F98 cbi 43-0x20,7
416 0290 3E9A sbi 39-0x20,6
417 0292 469A sbi 40-0x20,6
418 0294 8091 B000 lds r24,176
419 0298 8F70 andi r24,lo8(15)
420 029a 8093 B000 sts 176,r24
421 029e 8091 B000 lds r24,176
422 02a2 8360 ori r24,lo8(3)
423 02a4 8093 B000 sts 176,r24
424 02a8 8091 B100 lds r24,177
425 02ac 8B73 andi r24,lo8(59)
426 02ae 8093 B100 sts 177,r24
427 02b2 8091 B100 lds r24,177
428 02b6 8B60 ori r24,lo8(11)
429 02b8 8093 B100 sts 177,r24
430 02bc 1092 B200 sts 178,__zero_reg__
431 02c0 8FEF ldi r24,lo8(-1)
432 02c2 8093 B300 sts 179,r24
433 02c6 8091 B000 lds r24,176
434 02ca 8068 ori r24,lo8(-128)
435 02cc 8093 B000 sts 176,r24
436 02d0 8091 7000 lds r24,112
437 02d4 8A7F andi r24,lo8(-6)
438 02d6 8093 7000 sts 112,r24
439 02da 8091 7000 lds r24,112
440 02de 8260 ori r24,lo8(2)
441 02e0 8093 7000 sts 112,r24
442 02e4 9FBF out 95-0x20,r25
443 /* epilogue: frame size=0 */
444 02e6 0895 ret
445 /* epilogue end (size=1) */
446 /* function TIMER2_Init size 48 (47) */
448 .global Timer_Init
450 Timer_Init:
451 /* prologue: frame size=0 */
452 /* prologue end (size=0) */
453 02e8 8AE0 ldi r24,lo8(10)
454 02ea 90E0 ldi r25,hi8(10)
455 02ec 0E94 0000 call SetDelay
456 02f0 9093 0000 sts (tim_main)+1,r25
457 02f4 8093 0000 sts tim_main,r24
458 02f8 82E0 ldi r24,lo8(2)
459 02fa 85BD out 69-0x20,r24
460 02fc 83EA ldi r24,lo8(-93)
461 02fe 84BD out 68-0x20,r24
462 0300 17BC out 71-0x20,__zero_reg__
463 0302 84EB ldi r24,lo8(-76)
464 0304 88BD out 72-0x20,r24
465 0306 86E0 ldi r24,lo8(6)
466 0308 86BD out 70-0x20,r24
467 030a 8091 6E00 lds r24,110
468 030e 8160 ori r24,lo8(1)
469 0310 8093 6E00 sts 110,r24
470 /* epilogue: frame size=0 */
471 0314 0895 ret
472 /* epilogue end (size=1) */
473 /* function Timer_Init size 23 (22) */
475 .global CalculateServo
477 CalculateServo:
478 /* prologue: frame size=0 */
479 0316 A0E0 ldi r26,lo8(0)
480 0318 B0E0 ldi r27,hi8(0)
481 031a E0E0 ldi r30,pm_lo8(1f)
482 031c F0E0 ldi r31,pm_hi8(1f)
483 031e 0C94 0000 jmp __prologue_saves__+22
484 1:
485 /* prologue end (size=6) */
486 0322 8091 0000 lds r24,EE_Parameter+55
487 0326 E82F mov r30,r24
488 0328 FF27 clr r31
489 032a E050 subi r30,lo8(-(sintab))
490 032c F040 sbci r31,hi8(-(sintab))
491 032e 9681 ldd r25,Z+6
492 0330 D080 ld r13,Z
493 0332 8091 0000 lds r24,CalculateServoSignals
494 0336 A92F mov r26,r25
495 0338 BB27 clr r27
496 033a A7FD sbrc r26,7
497 033c B095 com r27
498 033e CB2F mov r28,r27
499 0340 DB2F mov r29,r27
500 0342 8130 cpi r24,lo8(1)
501 0344 09F0 breq .+2
502 0346 C9C0 rjmp .L44
503 0348 2091 0000 lds r18,IntegralNick
504 034c 3091 0000 lds r19,(IntegralNick)+1
505 0350 4091 0000 lds r20,(IntegralNick)+2
506 0354 5091 0000 lds r21,(IntegralNick)+3
507 0358 BD01 movw r22,r26
508 035a CE01 movw r24,r28
509 035c 0E94 0000 call __mulsi3
510 0360 97FF sbrs r25,7
511 0362 04C0 rjmp .L45
512 0364 6158 subi r22,lo8(-(127))
513 0366 7F4F sbci r23,hi8(-(127))
514 0368 8F4F sbci r24,hlo8(-(127))
515 036a 9F4F sbci r25,hhi8(-(127))
516 .L45:
517 036c 7B01 movw r14,r22
518 036e 8C01 movw r16,r24
519 0370 67E0 ldi r22,7
520 0372 1595 1: asr r17
521 0374 0795 ror r16
522 0376 F794 ror r15
523 0378 E794 ror r14
524 037a 6A95 dec r22
525 037c D1F7 brne 1b
526 037e 8D2D mov r24,r13
527 0380 9927 clr r25
528 0382 87FD sbrc r24,7
529 0384 9095 com r25
530 0386 A92F mov r26,r25
531 0388 B92F mov r27,r25
532 038a 2091 0000 lds r18,IntegralRoll
533 038e 3091 0000 lds r19,(IntegralRoll)+1
534 0392 4091 0000 lds r20,(IntegralRoll)+2
535 0396 5091 0000 lds r21,(IntegralRoll)+3
536 039a BC01 movw r22,r24
537 039c CD01 movw r24,r26
538 039e 0E94 0000 call __mulsi3
539 03a2 97FF sbrs r25,7
540 03a4 04C0 rjmp .L46
541 03a6 6158 subi r22,lo8(-(127))
542 03a8 7F4F sbci r23,hi8(-(127))
543 03aa 8F4F sbci r24,hlo8(-(127))
544 03ac 9F4F sbci r25,hhi8(-(127))
545 .L46:
546 03ae 57E0 ldi r21,7
547 03b0 9595 1: asr r25
548 03b2 8795 ror r24
549 03b4 7795 ror r23
550 03b6 6795 ror r22
551 03b8 5A95 dec r21
552 03ba D1F7 brne 1b
553 03bc F801 movw r30,r16
554 03be E701 movw r28,r14
555 03c0 C61B sub r28,r22
556 03c2 D70B sbc r29,r23
557 03c4 E80B sbc r30,r24
558 03c6 F90B sbc r31,r25
559 03c8 8091 0000 lds r24,EE_Parameter+46
560 03cc 9927 clr r25
561 03ce AA27 clr r26
562 03d0 BB27 clr r27
563 03d2 BC01 movw r22,r24
564 03d4 CD01 movw r24,r26
565 03d6 9E01 movw r18,r28
566 03d8 AF01 movw r20,r30
567 03da 0E94 0000 call __mulsi3
568 03de 97FF sbrs r25,7
569 03e0 04C0 rjmp .L47
570 03e2 6150 subi r22,lo8(-(511))
571 03e4 7E4F sbci r23,hi8(-(511))
572 03e6 8F4F sbci r24,hlo8(-(511))
573 03e8 9F4F sbci r25,hhi8(-(511))
574 .L47:
575 03ea FC01 movw r30,r24
576 03ec EB01 movw r28,r22
577 03ee 49E0 ldi r20,9
578 03f0 F595 1: asr r31
579 03f2 E795 ror r30
580 03f4 D795 ror r29
581 03f6 C795 ror r28
582 03f8 4A95 dec r20
583 03fa D1F7 brne 1b
584 03fc 8091 0000 lds r24,Parameter_ServoNickControl
585 0400 9927 clr r25
586 0402 36E0 ldi r19,6
587 0404 880F 1: lsl r24
588 0406 991F rol r25
589 0408 3A95 dec r19
590 040a E1F7 brne 1b
591 040c 4091 0000 lds r20,ServoNickOffset
592 0410 5091 0000 lds r21,(ServoNickOffset)+1
593 0414 2091 0000 lds r18,EE_Parameter+54
594 0418 3327 clr r19
595 041a 841B sub r24,r20
596 041c 950B sbc r25,r21
597 041e B901 movw r22,r18
598 0420 0E94 0000 call __divmodhi4
599 0424 8091 0000 lds r24,ServoNickOffset
600 0428 9091 0000 lds r25,(ServoNickOffset)+1
601 042c 860F add r24,r22
602 042e 971F adc r25,r23
603 0430 9093 0000 sts (ServoNickOffset)+1,r25
604 0434 8093 0000 sts ServoNickOffset,r24
605 0438 8091 0000 lds r24,ServoNickOffset
606 043c 9091 0000 lds r25,(ServoNickOffset)+1
607 0440 97FD sbrc r25,7
608 0442 0F96 adiw r24,15
609 .L48:
610 0444 24E0 ldi r18,4
611 0446 9595 1: asr r25
612 0448 8795 ror r24
613 044a 2A95 dec r18
614 044c E1F7 brne 1b
615 044e 9093 0000 sts (ServoNickValue)+1,r25
616 0452 8093 0000 sts ServoNickValue,r24
617 0456 8091 0000 lds r24,EE_Parameter+101
618 045a 80FF sbrs r24,0
619 045c 07C0 rjmp .L49
620 045e 8091 0000 lds r24,ServoNickValue
621 0462 9091 0000 lds r25,(ServoNickValue)+1
622 0466 8C0F add r24,r28
623 0468 9D1F adc r25,r29
624 046a 06C0 rjmp .L66
625 .L49:
626 046c 8091 0000 lds r24,ServoNickValue
627 0470 9091 0000 lds r25,(ServoNickValue)+1
628 0474 8C1B sub r24,r28
629 0476 9D0B sbc r25,r29
630 .L66:
631 0478 9093 0000 sts (ServoNickValue)+1,r25
632 047c 8093 0000 sts ServoNickValue,r24
633 0480 8091 0000 lds r24,EE_Parameter+47
634 0484 282F mov r18,r24
635 0486 3327 clr r19
636 0488 220F lsl r18
637 048a 331F rol r19
638 048c 220F lsl r18
639 048e 331F rol r19
640 0490 8091 0000 lds r24,ServoNickValue
641 0494 9091 0000 lds r25,(ServoNickValue)+1
642 0498 8217 cp r24,r18
643 049a 9307 cpc r25,r19
644 049c 7CF0 brlt .L67
645 049e 8091 0000 lds r24,EE_Parameter+48
646 04a2 282F mov r18,r24
647 04a4 3327 clr r19
648 04a6 220F lsl r18
649 04a8 331F rol r19
650 04aa 220F lsl r18
651 04ac 331F rol r19
652 04ae 8091 0000 lds r24,ServoNickValue
653 04b2 9091 0000 lds r25,(ServoNickValue)+1
654 04b6 2817 cp r18,r24
655 04b8 3907 cpc r19,r25
656 04ba 24F4 brge .L52
657 .L67:
658 04bc 3093 0000 sts (ServoNickValue)+1,r19
659 04c0 2093 0000 sts ServoNickValue,r18
660 .L52:
661 04c4 8091 0000 lds r24,PlatinenVersion
662 04c8 8431 cpi r24,lo8(20)
663 04ca 08F4 brsh .+2
664 04cc C2C0 rjmp .L64
665 04ce 8091 0000 lds r24,CalculateServoSignals
666 04d2 8F5F subi r24,lo8(-(1))
667 04d4 8093 0000 sts CalculateServoSignals,r24
668 04d8 BEC0 rjmp .L43
669 .L44:
670 04da 2091 0000 lds r18,IntegralRoll
671 04de 3091 0000 lds r19,(IntegralRoll)+1
672 04e2 4091 0000 lds r20,(IntegralRoll)+2
673 04e6 5091 0000 lds r21,(IntegralRoll)+3
674 04ea BD01 movw r22,r26
675 04ec CE01 movw r24,r28
676 04ee 0E94 0000 call __mulsi3
677 04f2 97FF sbrs r25,7
678 04f4 04C0 rjmp .L57
679 04f6 6158 subi r22,lo8(-(127))
680 04f8 7F4F sbci r23,hi8(-(127))
681 04fa 8F4F sbci r24,hlo8(-(127))
682 04fc 9F4F sbci r25,hhi8(-(127))
683 .L57:
684 04fe 7B01 movw r14,r22
685 0500 8C01 movw r16,r24
686 0502 C7E0 ldi r28,7
687 0504 1595 1: asr r17
688 0506 0795 ror r16
689 0508 F794 ror r15
690 050a E794 ror r14
691 050c CA95 dec r28
692 050e D1F7 brne 1b
693 0510 8D2D mov r24,r13
694 0512 9927 clr r25
695 0514 87FD sbrc r24,7
696 0516 9095 com r25
697 0518 A92F mov r26,r25
698 051a B92F mov r27,r25
699 051c 2091 0000 lds r18,IntegralNick
700 0520 3091 0000 lds r19,(IntegralNick)+1
701 0524 4091 0000 lds r20,(IntegralNick)+2
702 0528 5091 0000 lds r21,(IntegralNick)+3
703 052c BC01 movw r22,r24
704 052e CD01 movw r24,r26
705 0530 0E94 0000 call __mulsi3
706 0534 9B01 movw r18,r22
707 0536 AC01 movw r20,r24
708 0538 97FF sbrs r25,7
709 053a 04C0 rjmp .L58
710 053c 2158 subi r18,lo8(-(127))
711 053e 3F4F sbci r19,hi8(-(127))
712 0540 4F4F sbci r20,hlo8(-(127))
713 0542 5F4F sbci r21,hhi8(-(127))
714 .L58:
715 0544 B7E0 ldi r27,7
716 0546 5595 1: asr r21
717 0548 4795 ror r20
718 054a 3795 ror r19
719 054c 2795 ror r18
720 054e BA95 dec r27
721 0550 D1F7 brne 1b
722 0552 2E0D add r18,r14
723 0554 3F1D adc r19,r15
724 0556 401F adc r20,r16
725 0558 511F adc r21,r17
726 055a 8091 0000 lds r24,EE_Parameter+50
727 055e 9927 clr r25
728 0560 AA27 clr r26
729 0562 BB27 clr r27
730 0564 BC01 movw r22,r24
731 0566 CD01 movw r24,r26
732 0568 0E94 0000 call __mulsi3
733 056c 97FF sbrs r25,7
734 056e 04C0 rjmp .L59
735 0570 6150 subi r22,lo8(-(511))
736 0572 7E4F sbci r23,hi8(-(511))
737 0574 8F4F sbci r24,hlo8(-(511))
738 0576 9F4F sbci r25,hhi8(-(511))
739 .L59:
740 0578 FC01 movw r30,r24
741 057a EB01 movw r28,r22
742 057c A9E0 ldi r26,9
743 057e F595 1: asr r31
744 0580 E795 ror r30
745 0582 D795 ror r29
746 0584 C795 ror r28
747 0586 AA95 dec r26
748 0588 D1F7 brne 1b
749 058a 8091 0000 lds r24,Parameter_ServoRollControl
750 058e 9927 clr r25
751 0590 76E0 ldi r23,6
752 0592 880F 1: lsl r24
753 0594 991F rol r25
754 0596 7A95 dec r23
755 0598 E1F7 brne 1b
756 059a 4091 0000 lds r20,ServoRollOffset
757 059e 5091 0000 lds r21,(ServoRollOffset)+1
758 05a2 2091 0000 lds r18,EE_Parameter+54
759 05a6 3327 clr r19
760 05a8 841B sub r24,r20
761 05aa 950B sbc r25,r21
762 05ac B901 movw r22,r18
763 05ae 0E94 0000 call __divmodhi4
764 05b2 8091 0000 lds r24,ServoRollOffset
765 05b6 9091 0000 lds r25,(ServoRollOffset)+1
766 05ba 860F add r24,r22
767 05bc 971F adc r25,r23
768 05be 9093 0000 sts (ServoRollOffset)+1,r25
769 05c2 8093 0000 sts ServoRollOffset,r24
770 05c6 8091 0000 lds r24,ServoRollOffset
771 05ca 9091 0000 lds r25,(ServoRollOffset)+1
772 05ce 97FD sbrc r25,7
773 05d0 0F96 adiw r24,15
774 .L60:
775 05d2 64E0 ldi r22,4
776 05d4 9595 1: asr r25
777 05d6 8795 ror r24
778 05d8 6A95 dec r22
779 05da E1F7 brne 1b
780 05dc 9093 0000 sts (ServoRollValue)+1,r25
781 05e0 8093 0000 sts ServoRollValue,r24
782 05e4 8091 0000 lds r24,EE_Parameter+101
783 05e8 81FF sbrs r24,1
784 05ea 07C0 rjmp .L61
785 05ec 8091 0000 lds r24,ServoRollValue
786 05f0 9091 0000 lds r25,(ServoRollValue)+1
787 05f4 8C0F add r24,r28
788 05f6 9D1F adc r25,r29
789 05f8 06C0 rjmp .L68
790 .L61:
791 05fa 8091 0000 lds r24,ServoRollValue
792 05fe 9091 0000 lds r25,(ServoRollValue)+1
793 0602 8C1B sub r24,r28
794 0604 9D0B sbc r25,r29
795 .L68:
796 0606 9093 0000 sts (ServoRollValue)+1,r25
797 060a 8093 0000 sts ServoRollValue,r24
798 060e 8091 0000 lds r24,EE_Parameter+51
799 0612 282F mov r18,r24
800 0614 3327 clr r19
801 0616 220F lsl r18
802 0618 331F rol r19
803 061a 220F lsl r18
804 061c 331F rol r19
805 061e 8091 0000 lds r24,ServoRollValue
806 0622 9091 0000 lds r25,(ServoRollValue)+1
807 0626 8217 cp r24,r18
808 0628 9307 cpc r25,r19
809 062a 7CF0 brlt .L69
810 062c 8091 0000 lds r24,EE_Parameter+52
811 0630 282F mov r18,r24
812 0632 3327 clr r19
813 0634 220F lsl r18
814 0636 331F rol r19
815 0638 220F lsl r18
816 063a 331F rol r19
817 063c 8091 0000 lds r24,ServoRollValue
818 0640 9091 0000 lds r25,(ServoRollValue)+1
819 0644 2817 cp r18,r24
820 0646 3907 cpc r19,r25
821 0648 24F4 brge .L64
822 .L69:
823 064a 3093 0000 sts (ServoRollValue)+1,r19
824 064e 2093 0000 sts ServoRollValue,r18
825 .L64:
826 0652 1092 0000 sts CalculateServoSignals,__zero_reg__
827 .L43:
828 /* epilogue: frame size=0 */
829 0656 E7E0 ldi r30,7
830 0658 CDB7 in r28,__SP_L__
831 065a DEB7 in r29,__SP_H__
832 065c 0C94 0000 jmp __epilogue_restores__+22
833 /* epilogue end (size=5) */
834 /* function CalculateServo size 423 (412) */
836 .lcomm PulseOutput.0,1
837 .lcomm ServoFrameTime.1,2
838 .lcomm ServoIndex.2,1
839 .global __vector_9
841 __vector_9:
842 /* prologue: frame size=0 */
843 0660 1F92 push __zero_reg__
844 0662 0F92 push __tmp_reg__
845 0664 0FB6 in __tmp_reg__,__SREG__
846 0666 0F92 push __tmp_reg__
847 0668 1124 clr __zero_reg__
848 066a 2F93 push r18
849 066c 3F93 push r19
850 066e 4F93 push r20
851 0670 5F93 push r21
852 0672 8F93 push r24
853 0674 9F93 push r25
854 0676 EF93 push r30
855 0678 FF93 push r31
856 /* prologue end (size=13) */
857 067a 8091 0000 lds r24,PlatinenVersion
858 067e 9091 0000 lds r25,PulseOutput.0
859 0682 8431 cpi r24,lo8(20)
860 0684 08F0 brlo .+2
861 0686 4CC0 rjmp .L71
862 0688 9923 tst r25
863 068a 09F0 breq .+2
864 068c 1CC1 rjmp .L78
865 068e 8091 B000 lds r24,176
866 0692 86FF sbrs r24,6
867 0694 24C0 rjmp .L73
868 0696 8091 B000 lds r24,176
869 069a 8F7B andi r24,lo8(-65)
870 069c 8093 B000 sts 176,r24
871 06a0 8091 0000 lds r24,ServoNickValue
872 06a4 9091 0000 lds r25,(ServoNickValue)+1
873 06a8 8755 subi r24,lo8(-(425))
874 06aa 9E4F sbci r25,hi8(-(425))
875 06ac 9093 0000 sts (RemainingPulse)+1,r25
876 06b0 8093 0000 sts RemainingPulse,r24
877 06b4 25E0 ldi r18,hi8(1501)
878 06b6 8D3D cpi r24,lo8(1501)
879 06b8 9207 cpc r25,r18
880 06ba 18F0 brlo .L74
881 06bc 8CED ldi r24,lo8(1500)
882 06be 95E0 ldi r25,hi8(1500)
883 06c0 05C0 rjmp .L106
884 .L74:
885 06c2 8757 subi r24,lo8(375)
886 06c4 9140 sbci r25,hi8(375)
887 06c6 30F4 brsh .L75
888 06c8 87E7 ldi r24,lo8(375)
889 06ca 91E0 ldi r25,hi8(375)
890 .L106:
891 06cc 9093 0000 sts (RemainingPulse)+1,r25
892 06d0 8093 0000 sts RemainingPulse,r24
893 .L75:
894 06d4 8091 0000 lds r24,RemainingPulse
895 06d8 9091 0000 lds r25,(RemainingPulse)+1
896 06dc BAC0 rjmp .L111
897 .L73:
898 06de 8091 B000 lds r24,176
899 06e2 8064 ori r24,lo8(64)
900 06e4 8093 B000 sts 176,r24
901 06e8 8091 0000 lds r24,EE_Parameter+53
902 06ec 282F mov r18,r24
903 06ee 3327 clr r19
904 06f0 8DED ldi r24,lo8(1757)
905 06f2 96E0 ldi r25,hi8(1757)
906 06f4 289F mul r18,r24
907 06f6 A001 movw r20,r0
908 06f8 299F mul r18,r25
909 06fa 500D add r21,r0
910 06fc 389F mul r19,r24
911 06fe 500D add r21,r0
912 0700 1124 clr r1
913 0702 CA01 movw r24,r20
914 0704 2091 0000 lds r18,ServoFrameTime.1
915 0708 3091 0000 lds r19,(ServoFrameTime.1)+1
916 070c 821B sub r24,r18
917 070e 930B sbc r25,r19
918 0710 9093 0000 sts (RemainingPulse)+1,r25
919 0714 8093 0000 sts RemainingPulse,r24
920 0718 81E0 ldi r24,lo8(1)
921 071a 8093 0000 sts CalculateServoSignals,r24
922 071e D0C0 rjmp .L94
923 .L71:
924 0720 9923 tst r25
925 0722 09F0 breq .+2
926 0724 D0C0 rjmp .L78
927 0726 8091 B000 lds r24,176
928 072a 86FF sbrs r24,6
929 072c 97C0 rjmp .L80
930 072e 8091 B000 lds r24,176
931 0732 8F7B andi r24,lo8(-65)
932 0734 8093 B000 sts 176,r24
933 0738 E091 0000 lds r30,ServoIndex.2
934 073c EE23 tst r30
935 073e F1F4 brne .L81
936 0740 8091 0000 lds r24,EE_Parameter+53
937 0744 282F mov r18,r24
938 0746 3327 clr r19
939 0748 8DED ldi r24,lo8(1757)
940 074a 96E0 ldi r25,hi8(1757)
941 074c 289F mul r18,r24
942 074e A001 movw r20,r0
943 0750 299F mul r18,r25
944 0752 500D add r21,r0
945 0754 389F mul r19,r24
946 0756 500D add r21,r0
947 0758 1124 clr r1
948 075a CA01 movw r24,r20
949 075c 2091 0000 lds r18,ServoFrameTime.1
950 0760 3091 0000 lds r19,(ServoFrameTime.1)+1
951 0764 821B sub r24,r18
952 0766 930B sbc r25,r19
953 0768 9093 0000 sts (RemainingPulse)+1,r25
954 076c 8093 0000 sts RemainingPulse,r24
955 0770 1092 0000 sts (ServoFrameTime.1)+1,__zero_reg__
956 0774 1092 0000 sts ServoFrameTime.1,__zero_reg__
957 0778 469A sbi 40-0x20,6
958 077a A2C0 rjmp .L94
959 .L81:
960 077c 89EA ldi r24,lo8(937)
961 077e 93E0 ldi r25,hi8(937)
962 0780 9093 0000 sts (RemainingPulse)+1,r25
963 0784 8093 0000 sts RemainingPulse,r24
964 0788 8E2F mov r24,r30
965 078a 9927 clr r25
966 078c 8330 cpi r24,3
967 078e 9105 cpc r25,__zero_reg__
968 0790 D9F0 breq .L86
969 0792 8430 cpi r24,4
970 0794 9105 cpc r25,__zero_reg__
971 0796 34F4 brge .L90
972 0798 8130 cpi r24,1
973 079a 9105 cpc r25,__zero_reg__
974 079c 49F0 breq .L84
975 079e 0297 sbiw r24,2
976 07a0 61F0 breq .L85
977 07a2 20C0 rjmp .L89
978 .L90:
979 07a4 8430 cpi r24,4
980 07a6 9105 cpc r25,__zero_reg__
981 07a8 91F0 breq .L87
982 07aa 0597 sbiw r24,5
983 07ac 99F0 breq .L88
984 07ae 1AC0 rjmp .L89
985 .L84:
986 07b0 8091 0000 lds r24,ServoNickValue
987 07b4 9091 0000 lds r25,(ServoNickValue)+1
988 07b8 04C0 rjmp .L110
989 .L85:
990 07ba 8091 0000 lds r24,ServoRollValue
991 07be 9091 0000 lds r25,(ServoRollValue)+1
992 .L110:
993 07c2 8755 subi r24,lo8(-(425))
994 07c4 9E4F sbci r25,hi8(-(425))
995 07c6 1DC0 rjmp .L107
996 .L86:
997 07c8 8091 0000 lds r24,Parameter_Servo3
998 07cc 05C0 rjmp .L112
999 .L87:
1000 07ce 8091 0000 lds r24,Parameter_Servo4
1001 07d2 02C0 rjmp .L112
1002 .L88:
1003 07d4 8091 0000 lds r24,Parameter_Servo5
1004 .L112:
1005 07d8 9927 clr r25
1006 07da 880F lsl r24
1007 07dc 991F rol r25
1008 07de 880F lsl r24
1009 07e0 991F rol r25
1010 07e2 EFCF rjmp .L110
1011 .L89:
1012 07e4 FF27 clr r31
1013 07e6 EE0F add r30,r30
1014 07e8 FF1F adc r31,r31
1015 07ea E050 subi r30,lo8(-(PPM_in))
1016 07ec F040 sbci r31,hi8(-(PPM_in))
1017 07ee 2081 ld r18,Z
1018 07f0 3181 ldd r19,Z+1
1019 07f2 220F add r18,r18
1020 07f4 331F adc r19,r19
1021 07f6 8091 0000 lds r24,RemainingPulse
1022 07fa 9091 0000 lds r25,(RemainingPulse)+1
1023 07fe 820F add r24,r18
1024 0800 931F adc r25,r19
1025 .L107:
1026 0802 9093 0000 sts (RemainingPulse)+1,r25
1027 0806 8093 0000 sts RemainingPulse,r24
1028 080a 8091 0000 lds r24,RemainingPulse
1029 080e 9091 0000 lds r25,(RemainingPulse)+1
1030 0812 55E0 ldi r21,hi8(1501)
1031 0814 8D3D cpi r24,lo8(1501)
1032 0816 9507 cpc r25,r21
1033 0818 18F0 brlo .L91
1034 081a 8CED ldi r24,lo8(1500)
1035 081c 95E0 ldi r25,hi8(1500)
1036 081e 05C0 rjmp .L108
1037 .L91:
1038 0820 8757 subi r24,lo8(375)
1039 0822 9140 sbci r25,hi8(375)
1040 0824 30F4 brsh .L92
1041 0826 87E7 ldi r24,lo8(375)
1042 0828 91E0 ldi r25,hi8(375)
1043 .L108:
1044 082a 9093 0000 sts (RemainingPulse)+1,r25
1045 082e 8093 0000 sts RemainingPulse,r24
1046 .L92:
1047 0832 2091 0000 lds r18,RemainingPulse
1048 0836 3091 0000 lds r19,(RemainingPulse)+1
1049 083a 2C5B subi r18,lo8(-(-188))
1050 083c 3040 sbci r19,hi8(-(-188))
1051 083e 3093 0000 sts (RemainingPulse)+1,r19
1052 0842 2093 0000 sts RemainingPulse,r18
1053 0846 8091 0000 lds r24,ServoFrameTime.1
1054 084a 9091 0000 lds r25,(ServoFrameTime.1)+1
1055 084e 820F add r24,r18
1056 0850 931F adc r25,r19
1057 .L111:
1058 0852 9093 0000 sts (ServoFrameTime.1)+1,r25
1059 0856 8093 0000 sts ServoFrameTime.1,r24
1060 085a 32C0 rjmp .L94
1061 .L80:
1062 085c 8091 B000 lds r24,176
1063 0860 8064 ori r24,lo8(64)
1064 0862 8093 B000 sts 176,r24
1065 0866 8CEB ldi r24,lo8(188)
1066 0868 90E0 ldi r25,hi8(188)
1067 086a 9093 0000 sts (RemainingPulse)+1,r25
1068 086e 8093 0000 sts RemainingPulse,r24
1069 0872 8091 0000 lds r24,ServoFrameTime.1
1070 0876 9091 0000 lds r25,(ServoFrameTime.1)+1
1071 087a 8454 subi r24,lo8(-(188))
1072 087c 9F4F sbci r25,hi8(-(188))
1073 087e 9093 0000 sts (ServoFrameTime.1)+1,r25
1074 0882 8093 0000 sts ServoFrameTime.1,r24
1075 0886 8091 0000 lds r24,ServoActive
1076 088a 8823 tst r24
1077 088c 21F0 breq .L97
1078 088e 8091 0000 lds r24,SenderOkay
1079 0892 8333 cpi r24,lo8(51)
1080 0894 20F4 brsh .L96
1081 .L97:
1082 0896 8091 0000 lds r24,ServoActive
1083 089a 8230 cpi r24,lo8(2)
1084 089c 11F4 brne .L95
1085 .L96:
1086 089e 4698 cbi 40-0x20,6
1087 08a0 01C0 rjmp .L98
1088 .L95:
1089 08a2 469A sbi 40-0x20,6
1090 .L98:
1091 08a4 8091 0000 lds r24,ServoIndex.2
1092 08a8 8F5F subi r24,lo8(-(1))
1093 08aa 8093 0000 sts ServoIndex.2,r24
1094 08ae 9091 0000 lds r25,EE_Parameter+53
1095 08b2 9817 cp r25,r24
1096 08b4 28F4 brsh .L94
1097 08b6 81E0 ldi r24,lo8(1)
1098 08b8 8093 0000 sts CalculateServoSignals,r24
1099 08bc 1092 0000 sts ServoIndex.2,__zero_reg__
1100 .L94:
1101 08c0 81E0 ldi r24,lo8(1)
1102 08c2 8093 0000 sts PulseOutput.0,r24
1103 .L78:
1104 08c6 2091 0000 lds r18,RemainingPulse
1105 08ca 3091 0000 lds r19,(RemainingPulse)+1
1106 08ce 41E0 ldi r20,hi8(383)
1107 08d0 2F37 cpi r18,lo8(383)
1108 08d2 3407 cpc r19,r20
1109 08d4 30F0 brlo .L100
1110 08d6 8FEF ldi r24,lo8(-1)
1111 08d8 8093 B300 sts 179,r24
1112 08dc 2F5F subi r18,lo8(-(-255))
1113 08de 3040 sbci r19,hi8(-(-255))
1114 08e0 0FC0 rjmp .L109
1115 .L100:
1116 08e2 2F3F cpi r18,255
1117 08e4 3105 cpc r19,__zero_reg__
1118 08e6 C9F0 breq .L102
1119 08e8 C0F0 brlo .L102
1120 08ea A901 movw r20,r18
1121 08ec 4F5F subi r20,lo8(-(-255))
1122 08ee 5040 sbci r21,hi8(-(-255))
1123 08f0 4F37 cpi r20,127
1124 08f2 5105 cpc r21,__zero_reg__
1125 08f4 50F4 brsh .L103
1126 08f6 80E8 ldi r24,lo8(-128)
1127 08f8 8093 B300 sts 179,r24
1128 08fc 2058 subi r18,lo8(-(-128))
1129 08fe 3040 sbci r19,hi8(-(-128))
1130 .L109:
1131 0900 3093 0000 sts (RemainingPulse)+1,r19
1132 0904 2093 0000 sts RemainingPulse,r18
1133 0908 12C0 rjmp .L70
1134 .L103:
1135 090a 8FEF ldi r24,lo8(-1)
1136 090c 8093 B300 sts 179,r24
1137 0910 5093 0000 sts (RemainingPulse)+1,r21
1138 0914 4093 0000 sts RemainingPulse,r20
1139 0918 0AC0 rjmp .L70
1140 .L102:
1141 091a 8091 0000 lds r24,RemainingPulse
1142 091e 8093 B300 sts 179,r24
1143 0922 1092 0000 sts (RemainingPulse)+1,__zero_reg__
1144 0926 1092 0000 sts RemainingPulse,__zero_reg__
1145 092a 1092 0000 sts PulseOutput.0,__zero_reg__
1146 .L70:
1147 /* epilogue: frame size=0 */
1148 092e FF91 pop r31
1149 0930 EF91 pop r30
1150 0932 9F91 pop r25
1151 0934 8F91 pop r24
1152 0936 5F91 pop r21
1153 0938 4F91 pop r20
1154 093a 3F91 pop r19
1155 093c 2F91 pop r18
1156 093e 0F90 pop __tmp_reg__
1157 0940 0FBE out __SREG__,__tmp_reg__
1158 0942 0F90 pop __tmp_reg__
1159 0944 1F90 pop __zero_reg__
1160 0946 1895 reti
1161 /* epilogue end (size=13) */
1162 /* function __vector_9 size 376 (350) */
1164 .lcomm tim_main,2
1165 /* File "timer0.c": code 1199 = 0x04af (1116), prologues 39, epilogues 44 */
DEFINED SYMBOLS
*ABS*:00000000 timer0.c
C:\Users\Thomas\AppData\Local\Temp/ccmAbaaa.s:3 *ABS*:0000003f __SREG__
C:\Users\Thomas\AppData\Local\Temp/ccmAbaaa.s:4 *ABS*:0000003e __SP_H__
C:\Users\Thomas\AppData\Local\Temp/ccmAbaaa.s:5 *ABS*:0000003d __SP_L__
C:\Users\Thomas\AppData\Local\Temp/ccmAbaaa.s:6 *ABS*:00000000 __tmp_reg__
C:\Users\Thomas\AppData\Local\Temp/ccmAbaaa.s:7 *ABS*:00000001 __zero_reg__
C:\Users\Thomas\AppData\Local\Temp/ccmAbaaa.s:15 .bss:00000000 ServoRollValue
C:\Users\Thomas\AppData\Local\Temp/ccmAbaaa.s:21 .bss:00000002 ServoNickValue
C:\Users\Thomas\AppData\Local\Temp/ccmAbaaa.s:27 .data:00000000 BeepMuster
C:\Users\Thomas\AppData\Local\Temp/ccmAbaaa.s:32 .data:00000002 ServoRollOffset
C:\Users\Thomas\AppData\Local\Temp/ccmAbaaa.s:37 .data:00000004 ServoNickOffset
C:\Users\Thomas\AppData\Local\Temp/ccmAbaaa.s:44 .bss:00000004 RemainingPulse
C:\Users\Thomas\AppData\Local\Temp/ccmAbaaa.s:50 .data:00000006 CalculateServoSignals
C:\Users\Thomas\AppData\Local\Temp/ccmAbaaa.s:57 .bss:00000006 ServoActive
C:\Users\Thomas\AppData\Local\Temp/ccmAbaaa.s:63 .bss:00000007 SendSPI
C:\Users\Thomas\AppData\Local\Temp/ccmAbaaa.s:69 .bss:00000008 beeptime
C:\Users\Thomas\AppData\Local\Temp/ccmAbaaa.s:75 .bss:0000000a cntKompass
C:\Users\Thomas\AppData\Local\Temp/ccmAbaaa.s:81 .bss:0000000c UpdateMotor
C:\Users\Thomas\AppData\Local\Temp/ccmAbaaa.s:87 .bss:0000000d CountMilliseconds
C:\Users\Thomas\AppData\Local\Temp/ccmAbaaa.s:92 .data:00000007 cnt_1ms.3
.bss:0000000f cnt.4
C:\Users\Thomas\AppData\Local\Temp/ccmAbaaa.s:94 .bss:00000010 compass_active.5
C:\Users\Thomas\AppData\Local\Temp/ccmAbaaa.s:99 .text:00000000 __vector_18
C:\Users\Thomas\AppData\Local\Temp/ccmAbaaa.s:322 .text:00000216 SetDelay
C:\Users\Thomas\AppData\Local\Temp/ccmAbaaa.s:338 .text:00000228 CheckDelay
C:\Users\Thomas\AppData\Local\Temp/ccmAbaaa.s:357 .text:00000240 Delay_ms
C:\Users\Thomas\AppData\Local\Temp/ccmAbaaa.s:378 .text:0000025a Delay_ms_Mess
C:\Users\Thomas\AppData\Local\Temp/ccmAbaaa.s:408 .text:0000028a TIMER2_Init
C:\Users\Thomas\AppData\Local\Temp/ccmAbaaa.s:450 .text:000002e8 Timer_Init
C:\Users\Thomas\AppData\Local\Temp/ccmAbaaa.s:838 .bss:00000015 tim_main
C:\Users\Thomas\AppData\Local\Temp/ccmAbaaa.s:477 .text:00000316 CalculateServo
C:\Users\Thomas\AppData\Local\Temp/ccmAbaaa.s:95 .bss:00000011 PulseOutput.0
C:\Users\Thomas\AppData\Local\Temp/ccmAbaaa.s:836 .bss:00000012 ServoFrameTime.1
C:\Users\Thomas\AppData\Local\Temp/ccmAbaaa.s:837 .bss:00000014 ServoIndex.2
C:\Users\Thomas\AppData\Local\Temp/ccmAbaaa.s:841 .text:00000660 __vector_9
 
UNDEFINED SYMBOLS
__do_copy_data
__do_clear_bss
SpektrumTimer
PlatinenVersion
NaviDataOkay
EE_Parameter
__udivmodhi4
KompassValue
KompassStartwert
__divmodhi4
KompassRichtung
AdReady
__prologue_saves__
sintab
IntegralNick
__mulsi3
IntegralRoll
Parameter_ServoNickControl
Parameter_ServoRollControl
__epilogue_restores__
Parameter_Servo3
Parameter_Servo4
Parameter_Servo5
PPM_in
SenderOkay
/branches/metro/v0.82a metro_Akku+/twimaster.c
0,0 → 1,468
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// + Copyright (c) Holger Buss, Ingo Busker
// + Nur für den privaten Gebrauch
// + www.MikroKopter.com
// + porting the sources to other systems or using the software on other systems (except hardware from www.mikrokopter.de) is not allowed
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// + Es gilt für das gesamte Projekt (Hardware, Software, Binärfiles, Sourcecode und Dokumentation),
// + dass eine Nutzung (auch auszugsweise) nur für den privaten (nicht-kommerziellen) Gebrauch zulässig ist.
// + Sollten direkte oder indirekte kommerzielle Absichten verfolgt werden, ist mit uns (info@mikrokopter.de) Kontakt
// + bzgl. der Nutzungsbedingungen aufzunehmen.
// + Eine kommerzielle Nutzung ist z.B.Verkauf von MikroKoptern, Bestückung und Verkauf von Platinen oder Bausätzen,
// + Verkauf von Luftbildaufnahmen, usw.
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// + Werden Teile des Quellcodes (mit oder ohne Modifikation) weiterverwendet oder veröffentlicht,
// + unterliegen sie auch diesen Nutzungsbedingungen und diese Nutzungsbedingungen incl. Copyright müssen dann beiliegen
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// + Sollte die Software (auch auszugesweise) oder sonstige Informationen des MikroKopter-Projekts
// + auf anderen Webseiten oder sonstigen Medien veröffentlicht werden, muss unsere Webseite "http://www.mikrokopter.de"
// + eindeutig als Ursprung verlinkt werden
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// + Keine Gewähr auf Fehlerfreiheit, Vollständigkeit oder Funktion
// + Benutzung auf eigene Gefahr
// + Wir übernehmen keinerlei Haftung für direkte oder indirekte Personen- oder Sachschäden
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// + Die Portierung der Software (oder Teile davon) auf andere Systeme (ausser der Hardware von www.mikrokopter.de) ist nur
// + mit unserer Zustimmung zulässig
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// + Die Funktion printf_P() unterliegt ihrer eigenen Lizenz und ist hiervon nicht betroffen
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// + Redistributions of source code (with or without modifications) must retain the above copyright notice,
// + this list of conditions and the following disclaimer.
// + * Neither the name of the copyright holders nor the names of contributors may be used to endorse or promote products derived
// + from this software without specific prior written permission.
// + * The use of this project (hardware, software, binary files, sources and documentation) is only permittet
// + for non-commercial use (directly or indirectly)
// + Commercial use (for excample: selling of MikroKopters, selling of PCBs, assembly, ...) is only permitted
// + with our written permission
// + * If sources or documentations are redistributet on other webpages, out webpage (http://www.MikroKopter.de) must be
// + clearly linked as origin
// + * porting to systems other than hardware from www.mikrokopter.de is not allowed
// + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
// + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
// + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
// + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
// + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
// + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
// + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
// + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN// + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
// + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
// + POSSIBILITY OF SUCH DAMAGE.
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 
#include <avr/io.h>
#include <avr/interrupt.h>
#include <util/twi.h>
#include "eeprom.h"
#include "twimaster.h"
#include "fc.h"
#include "analog.h"
#include "uart.h"
#include "timer0.h"
 
volatile uint8_t twi_state = TWI_STATE_MOTOR_TX;
volatile uint8_t dac_channel = 0;
volatile uint8_t motor_write = 0;
volatile uint8_t motor_read = 0;
volatile uint8_t I2C_TransferActive = 0;
 
volatile uint16_t I2CTimeout = 100;
 
uint8_t MissingMotor = 0;
 
volatile uint8_t BLFlags = 0;
 
MotorData_t Motor[MAX_MOTORS];
 
// bit mask for witch BL the configuration should be sent
volatile uint16_t BLConfig_WriteMask = 0;
// bit mask for witch BL the configuration should be read
volatile uint16_t BLConfig_ReadMask = 0;
// buffer for BL Configuration
BLConfig_t BLConfig;
 
#define I2C_WriteByte(byte) {TWDR = byte; TWCR = (1<<TWINT) | (1<<TWEN) | (1<<TWIE);}
#define I2C_ReceiveByte() {TWCR = (1<<TWINT) | (1<<TWEN) | (1<<TWIE) | (1<<TWEA);}
#define I2C_ReceiveLastByte() {TWCR = (1<<TWINT) | (1<<TWEN) | (1<<TWIE);}
 
#define SCL_CLOCK 200000L
#define I2C_TIMEOUT 30000
#define TWI_BASE_ADDRESS 0x52
 
/**************************************************/
/* Initialize I2C (TWI) */
/**************************************************/
 
void I2C_Init(char clear)
{
uint8_t i;
uint8_t sreg = SREG;
cli();
 
// SDA is INPUT
DDRC &= ~(1<<DDC1);
// SCL is output
DDRC |= (1<<DDC0);
// pull up SDA
PORTC |= (1<<PORTC0)|(1<<PORTC1);
 
// TWI Status Register
// prescaler 1 (TWPS1 = 0, TWPS0 = 0)
TWSR &= ~((1<<TWPS1)|(1<<TWPS0));
 
// set TWI Bit Rate Register
TWBR = ((F_CPU/SCL_CLOCK)-16)/2;
 
twi_state = TWI_STATE_MOTOR_TX;
motor_write = 0;
motor_read = 0;
 
if(clear) for(i=0; i < MAX_MOTORS; i++)
{
Motor[i].Version = 0;
Motor[i].SetPoint = 0;
Motor[i].SetPointLowerBits = 0;
Motor[i].State = 0;
Motor[i].ReadMode = BL_READMODE_STATUS;
Motor[i].Current = 0;
Motor[i].MaxPWM = 0;
Motor[i].Temperature = 0;
}
sei();
SREG = sreg;
}
 
void I2C_Reset(void)
{
// stop i2c bus
I2C_Stop(TWI_STATE_MOTOR_TX);
TWCR = (1<<TWINT); // reset to original state incl. interrupt flag reset
TWAMR = 0;
TWAR = 0;
TWDR = 0;
TWSR = 0;
TWBR = 0;
I2C_TransferActive = 0;
I2C_Init(0);
I2C_WriteByte(0);
BLFlags |= BLFLAG_READ_VERSION;
}
 
/****************************************/
/* I2C ISR */
/****************************************/
ISR (TWI_vect)
{
static uint8_t missing_motor = 0, motor_read_temperature = 0;
static uint8_t *pBuff = 0;
static uint8_t BuffLen = 0;
 
switch (twi_state++)
{
// Master Transmit
case 0: // TWI_STATE_MOTOR_TX
I2C_TransferActive = 1;
// skip motor if not used in mixer
while((Mixer.Motor[motor_write][MIX_GAS] <= 0) && (motor_write < MAX_MOTORS)) motor_write++;
if(motor_write >= MAX_MOTORS) // writing finished, read now
{
BLConfig_WriteMask = 0; // reset configuration bitmask
motor_write = 0; // reset motor write counter for next cycle
twi_state = TWI_STATE_MOTOR_RX;
I2C_WriteByte(TWI_BASE_ADDRESS + TW_READ + (motor_read<<1) ); // select slave address in rx mode
}
else I2C_WriteByte(TWI_BASE_ADDRESS + TW_WRITE + (motor_write<<1) ); // select slave address in tx mode
break;
case 1: // Send Data to Slave
I2C_WriteByte(Motor[motor_write].SetPoint); // transmit setpoint
// if old version has been detected
if(!(Motor[motor_write].Version & MOTOR_STATE_NEW_PROTOCOL_MASK))
{
twi_state = 4; //jump over sending more data
}
// the new version has been detected
else if(!( (Motor[motor_write].SetPointLowerBits && (RequiredMotors < 7)) || BLConfig_WriteMask || BLConfig_ReadMask ) )
{ // or LowerBits are zero and no BlConfig should be sent (saves round trip time)
twi_state = 4; //jump over sending more data
}
break;
case 2: // lower bits of setpoint (higher resolution)
if ((0x0001<<motor_write) & BLConfig_ReadMask)
{
Motor[motor_write].ReadMode = BL_READMODE_CONFIG; // configuration request
}
else
{
Motor[motor_write].ReadMode = BL_READMODE_STATUS; // normal status request
}
// send read mode and the lower bits of setpoint
I2C_WriteByte((Motor[motor_write].ReadMode<<3)|(Motor[motor_write].SetPointLowerBits & 0x07));
// configuration tranmission request?
if((0x0001<<motor_write) & BLConfig_WriteMask)
{ // redirect tx pointer to configuration data
pBuff = (uint8_t*)&BLConfig; // select config for motor
BuffLen = sizeof(BLConfig_t);
}
else
{ // jump to end of transmission for that motor
twi_state = 4;
}
break;
case 3: // send configuration
I2C_WriteByte(*pBuff);
pBuff++;
if(--BuffLen > 0) twi_state = 3; // if there are some bytes left
break;
case 4: // repeat case 0-4 for all motors
if(TWSR == TW_MT_DATA_NACK) // Data transmitted, NACK received
{
if(!missing_motor) missing_motor = motor_write + 1;
if((Motor[motor_write].State & MOTOR_STATE_ERROR_MASK) < MOTOR_STATE_ERROR_MASK) Motor[motor_write].State++; // increment error counter and handle overflow
}
I2C_Stop(TWI_STATE_MOTOR_TX);
I2CTimeout = 10;
motor_write++; // next motor
I2C_Start(TWI_STATE_MOTOR_TX); // Repeated start -> switch slave or switch Master Transmit -> Master Receive
break;
// Master Receive Data
case 5: // TWI_STATE_MOTOR_RX
if(TWSR != TW_MR_SLA_ACK) // SLA+R transmitted but no ACK received
{ // no response from the addressed slave received
Motor[motor_read].State &= ~MOTOR_STATE_PRESENT_MASK; // clear present bit
if(++motor_read >= MAX_MOTORS)
{ // all motors read
motor_read = 0; // restart from beginning
BLConfig_ReadMask = 0; // reset read configuration bitmask
if(++motor_read_temperature >= MAX_MOTORS)
{
motor_read_temperature = 0;
BLFlags &= ~BLFLAG_READ_VERSION;
}
}
BLFlags |= BLFLAG_TX_COMPLETE;
I2C_Stop(TWI_STATE_MOTOR_TX);
I2C_TransferActive = 0;
}
else
{ // motor successfully addressed
Motor[motor_read].State |= MOTOR_STATE_PRESENT_MASK; // set present bit
if(Motor[motor_read].Version & MOTOR_STATE_NEW_PROTOCOL_MASK)
{
// new BL found
switch(Motor[motor_read].ReadMode)
{
case BL_READMODE_CONFIG:
pBuff = (uint8_t*)&BLConfig;
BuffLen = sizeof(BLConfig_t);
break;
 
case BL_READMODE_STATUS:
pBuff = (uint8_t*)&(Motor[motor_read].Current);
if(motor_read == motor_read_temperature) BuffLen = 3; // read Current, MaxPwm & Temp
else BuffLen = 1;// read Current only
break;
}
}
else // old BL version
{
pBuff = (uint8_t*)&(Motor[motor_read].Current);
if((BLFlags & BLFLAG_READ_VERSION) || (motor_read == motor_read_temperature)) BuffLen = 2; // Current & MaxPwm
else BuffLen = 1; // read Current only
}
if(BuffLen == 1)
{
I2C_ReceiveLastByte(); // read last byte
}
else
{
I2C_ReceiveByte(); // read next byte
}
}
MissingMotor = missing_motor;
missing_motor = 0;
break;
case 6: // receive bytes
*pBuff = TWDR;
pBuff++;
BuffLen--;
if(BuffLen>1)
{
I2C_ReceiveByte(); // read next byte
}
else if (BuffLen == 1)
{
I2C_ReceiveLastByte(); // read last byte
}
else // nothing left
{
if(BLFlags & BLFLAG_READ_VERSION)
{
if(!(FC_StatusFlags & FC_STATUS_MOTOR_RUN) && (Motor[motor_read].MaxPWM == 250) ) Motor[motor_read].Version |= MOTOR_STATE_NEW_PROTOCOL_MASK;
else Motor[motor_read].Version = 0;
}
if(++motor_read >= MAX_MOTORS)
{
motor_read = 0; // restart from beginning
BLConfig_ReadMask = 0; // reset read configuration bitmask
if(++motor_read_temperature >= MAX_MOTORS)
{
motor_read_temperature = 0;
BLFlags &= ~BLFLAG_READ_VERSION;
}
}
I2C_Stop(TWI_STATE_MOTOR_TX);
BLFlags |= BLFLAG_TX_COMPLETE;
I2C_TransferActive = 0;
return;
}
twi_state = 6; // if there are some bytes left
break;
 
// writing Gyro-Offsets
case 18:
I2C_WriteByte(0x98); // Address the DAC
break;
 
case 19:
I2C_WriteByte(0x10 + (dac_channel * 2)); // Select DAC Channel (0x10 = A, 0x12 = B, 0x14 = C)
break;
 
case 20:
switch(dac_channel)
{
case 0:
I2C_WriteByte(AnalogOffsetNick); // 1st byte for Channel A
break;
case 1:
I2C_WriteByte(AnalogOffsetRoll); // 1st byte for Channel B
break;
case 2:
I2C_WriteByte(AnalogOffsetGier); // 1st byte for Channel C
break;
}
break;
 
case 21:
I2C_WriteByte(0x80); // 2nd byte for all channels is 0x80
break;
 
case 22:
I2C_Stop(TWI_STATE_MOTOR_TX);
I2C_TransferActive = 0;
I2CTimeout = 10;
// repeat case 18...22 until all DAC Channels are updated
if(dac_channel < 2)
{
dac_channel ++; // jump to next channel
I2C_Start(TWI_STATE_GYRO_OFFSET_TX); // start transmission for next channel
}
else
{
dac_channel = 0; // reset dac channel counter
BLFlags |= BLFLAG_TX_COMPLETE;
}
break;
default:
I2C_Stop(TWI_STATE_MOTOR_TX);
BLFlags |= BLFLAG_TX_COMPLETE;
I2CTimeout = 10;
motor_write = 0;
motor_read = 0;
I2C_TransferActive = 0;
break;
}
 
}
 
 
uint8_t I2C_WriteBLConfig(uint8_t motor)
{
uint8_t i;
uint16_t timer;
 
if(MotorenEin || PC_MotortestActive) return(BLCONFIG_ERR_MOTOR_RUNNING); // not when motors are running!
if(motor > MAX_MOTORS) return (BLCONFIG_ERR_MOTOR_NOT_EXIST); // motor does not exist!
if(motor)
{
if(!(Motor[motor-1].State & MOTOR_STATE_PRESENT_MASK)) return(BLCONFIG_ERR_MOTOR_NOT_EXIST); // motor does not exist!
if(!(Motor[motor-1].Version & MOTOR_STATE_NEW_PROTOCOL_MASK)) return(BLCONFIG_ERR_HW_NOT_COMPATIBLE); // not a new BL!
}
// check BL configuration to send
if(BLConfig.Revision != BLCONFIG_REVISION) return (BLCONFIG_ERR_SW_NOT_COMPATIBLE); // bad revison
i = RAM_Checksum((uint8_t*)&BLConfig, sizeof(BLConfig_t) - 1);
if(i != BLConfig.crc) return(BLCONFIG_ERR_CHECKSUM); // bad checksum
 
timer = SetDelay(2000);
while(!(BLFlags & BLFLAG_TX_COMPLETE) && !CheckDelay(timer)); //wait for complete transfer
 
// prepare the bitmask
if(!motor) // 0 means all
{
BLConfig_WriteMask = 0xFF; // all motors at once with the same configuration
}
else //only one specific motor
{
BLConfig_WriteMask = 0x0001<<(motor-1);
}
for(i = 0; i < MAX_MOTORS; i++)
{
if((0x0001<<i) & BLConfig_WriteMask)
{
Motor[i].SetPoint = 0;
Motor[i].SetPointLowerBits = 0;
}
}
 
motor_write = 0;
// needs at least MAX_MOTORS loops of 2 ms (12*2ms = 24ms)
do
{
I2C_Start(TWI_STATE_MOTOR_TX); // start an i2c transmission
while(!(BLFlags & BLFLAG_TX_COMPLETE) && !CheckDelay(timer)); //wait for complete transfer
}while(BLConfig_WriteMask && !CheckDelay(timer)); // repeat until the BL config has been sent
if(BLConfig_WriteMask) return(BLCONFIG_ERR_MOTOR_NOT_EXIST);
return(BLCONFIG_SUCCESS);
}
 
uint8_t I2C_ReadBLConfig(uint8_t motor)
{
uint8_t i;
uint16_t timer;
 
if(MotorenEin || PC_MotortestActive) return(BLCONFIG_ERR_MOTOR_RUNNING); // not when motors are running!
if(motor > MAX_MOTORS) return (BLCONFIG_ERR_MOTOR_NOT_EXIST); // motor does not exist!
if(motor == 0) return (BLCONFIG_ERR_READ_NOT_POSSIBLE);
if(!(Motor[motor-1].State & MOTOR_STATE_PRESENT_MASK)) return(BLCONFIG_ERR_MOTOR_NOT_EXIST); // motor does not exist!
if(!(Motor[motor-1].Version & MOTOR_STATE_NEW_PROTOCOL_MASK)) return(BLCONFIG_ERR_HW_NOT_COMPATIBLE); // not a new BL!
 
timer = SetDelay(2000);
while(!(BLFlags & BLFLAG_TX_COMPLETE) && !CheckDelay(timer)); //wait for complete transfer
 
// prepare the bitmask
BLConfig_ReadMask = 0x0001<<(motor-1);
 
for(i = 0; i < MAX_MOTORS; i++)
{
if((0x0001<<i) & BLConfig_ReadMask)
{
Motor[i].SetPoint = 0;
Motor[i].SetPointLowerBits = 0;
}
}
 
motor_read = 0;
BLConfig.Revision = 0; // bad revision
BLConfig.crc = 0; // bad checksum
// needs at least MAX_MOTORS loops of 2 ms (12*2ms = 24ms)
do
{
I2C_Start(TWI_STATE_MOTOR_TX); // start an i2c transmission
while(!(BLFlags & BLFLAG_TX_COMPLETE) && !CheckDelay(timer)); //wait for complete transfer
}while(BLConfig_ReadMask && !CheckDelay(timer)); // repeat until the BL config has been received from all motors
// validate result
if(BLConfig.Revision != BLCONFIG_REVISION) return (BLCONFIG_ERR_SW_NOT_COMPATIBLE); // bad revison
i = RAM_Checksum((uint8_t*)&BLConfig, sizeof(BLConfig_t) - 1);
if(i != BLConfig.crc) return(BLCONFIG_ERR_CHECKSUM); // bad checksum
return(BLCONFIG_SUCCESS);
}
 
/branches/metro/v0.82a metro_Akku+/twimaster.d
0,0 → 1,2
twimaster.o twimaster.d : twimaster.c eeprom.h twimaster.h fc.h analog.h uart.h \
timer0.h
/branches/metro/v0.82a metro_Akku+/twimaster.h
0,0 → 1,100
#ifndef _I2C_MASTER_H
#define _I2C_MASTER_H
+
+#include <inttypes.h>
+
+#define TWI_STATE_MOTOR_TX 0
+#define TWI_STATE_MOTOR_RX 5
+#define TWI_STATE_GYRO_OFFSET_TX 18
+
+extern volatile uint8_t twi_state;
+extern volatile uint8_t motor_write;
+extern volatile uint8_t motor_read;
+extern volatile uint8_t I2C_TransferActive;
+
+extern uint8_t MissingMotor;
+
+#define MAX_MOTORS 12
+#define MOTOR_STATE_PRESENT_MASK 0x80
+#define MOTOR_STATE_ERROR_MASK 0x7F
+
+#define MOTOR_STATE_NEW_PROTOCOL_MASK 0x01
+
+#define BLFLAG_TX_COMPLETE 0x01
+#define BLFLAG_READ_VERSION 0x02
+
+extern volatile uint8_t BLFlags;
+
+
+#define BL_READMODE_STATUS 0
+#define BL_READMODE_CONFIG 16
+
+typedef struct
+{
+ uint8_t Version; // the version of the BL (0 = old)
+ uint8_t SetPoint; // written by attitude controller
+ uint8_t SetPointLowerBits; // for higher Resolution of new BLs
+ uint8_t State; // 7 bit for I2C error counter, highest bit indicates if motor is present
+ uint8_t ReadMode; // select data to read
+ // the following bytes must be exactly in that order!
+ uint8_t Current; // in 0.1 A steps, read back from BL
+ uint8_t MaxPWM; // read back from BL is less than 255 if BL is in current limit
+ int8_t Temperature; // old BL-Ctrl will return a 255 here, the new version the temp. in °C
+} __attribute__((packed)) MotorData_t;
+
+extern MotorData_t Motor[MAX_MOTORS];
+
+#define BLCONFIG_REVISION 2
+
+#define MASK_SET_PWM_SCALING 0x01
+#define MASK_SET_CURRENT_LIMIT 0x02
+#define MASK_SET_TEMP_LIMIT 0x04
+#define MASK_SET_CURRENT_SCALING 0x08
+#define MASK_SET_BITCONFIG 0x10
+#define MASK_RESET_CAPCOUNTER 0x20
+#define MASK_SET_DEFAULT_PARAMS 0x40
+#define MASK_SET_SAVE_EEPROM 0x80
+
+#define BITCONF_REVERSE_ROTATION 0x01
+#define BITCONF_RES1 0x02
+#define BITCONF_RES2 0x04
+#define BITCONF_RES3 0x08
+#define BITCONF_RES4 0x10
+#define BITCONF_RES5 0x20
+#define BITCONF_RES6 0x40
+#define BITCONF_RES7 0x80
+
+typedef struct
+{
+ uint8_t Revision; // must be BL_REVISION
+ uint8_t SetMask; // settings mask
+ uint8_t PwmScaling; // maximum value of control pwm, acts like a thrust limit
+ uint8_t CurrentLimit; // current limit in A
+ uint8_t TempLimit; // in °C
+ uint8_t CurrentScaling; // scaling factor for current measurement
+ uint8_t BitConfig; // see defines above
+ uint8_t crc; // checksum
+} __attribute__((packed)) BLConfig_t;
+
+extern BLConfig_t BLConfig;
+
+extern volatile uint16_t I2CTimeout;
+
+void I2C_Init(char); // Initialize I2C
+#define I2C_Start(start_state) {twi_state = start_state; BLFlags &= ~BLFLAG_TX_COMPLETE; TWCR = (1<<TWSTA) | (1<<TWEN) | (1<<TWINT) | (1<<TWIE);}
+#define I2C_Stop(start_state) {twi_state = start_state; TWCR = (1<<TWEN) | (1<<TWSTO) | (1<<TWINT);}
+void I2C_Reset(void); // Reset I2C
+
+#define BLCONFIG_SUCCESS 0
+#define BLCONFIG_ERR_MOTOR_RUNNING 1
+#define BLCONFIG_ERR_MOTOR_NOT_EXIST 2
+#define BLCONFIG_ERR_HW_NOT_COMPATIBLE 3
+#define BLCONFIG_ERR_SW_NOT_COMPATIBLE 4
+#define BLCONFIG_ERR_CHECKSUM 5
+#define BLCONFIG_ERR_READ_NOT_POSSIBLE 6
+
+uint8_t I2C_WriteBLConfig(uint8_t motor);
+uint8_t I2C_ReadBLConfig(uint8_t motor);
+
+#endif
/branches/metro/v0.82a metro_Akku+/twimaster.lst
0,0 → 1,1208
1 .file "twimaster.c"
2 .arch atmega644p
3 __SREG__ = 0x3f
4 __SP_H__ = 0x3e
5 __SP_L__ = 0x3d
6 __tmp_reg__ = 0
7 __zero_reg__ = 1
8 .global __do_copy_data
9 .global __do_clear_bss
10 .global BLConfig_ReadMask
11 .global BLConfig_ReadMask
12 .section .bss
15 BLConfig_ReadMask:
16 0000 0000 .skip 2,0
17 .global BLConfig_WriteMask
18 .global BLConfig_WriteMask
21 BLConfig_WriteMask:
22 0002 0000 .skip 2,0
23 .global BLFlags
24 .global BLFlags
27 BLFlags:
28 0004 00 .skip 1,0
29 .global MissingMotor
30 .global MissingMotor
33 MissingMotor:
34 0005 00 .skip 1,0
35 .global I2CTimeout
36 .data
39 I2CTimeout:
40 0000 6400 .word 100
41 .global I2C_TransferActive
42 .global I2C_TransferActive
43 .section .bss
46 I2C_TransferActive:
47 0006 00 .skip 1,0
48 .global motor_read
49 .global motor_read
52 motor_read:
53 0007 00 .skip 1,0
54 .global motor_write
55 .global motor_write
58 motor_write:
59 0008 00 .skip 1,0
60 .global dac_channel
61 .global dac_channel
64 dac_channel:
65 0009 00 .skip 1,0
66 .global twi_state
67 .global twi_state
70 twi_state:
71 000a 00 .skip 1,0
72 .text
73 .global I2C_Init
75 I2C_Init:
76 /* prologue: frame size=0 */
77 /* prologue end (size=0) */
78 0000 982F mov r25,r24
79 0002 2FB7 in r18,95-0x20
80 /* #APP */
81 0004 F894 cli
82 /* #NOAPP */
83 0006 3998 cbi 39-0x20,1
84 0008 389A sbi 39-0x20,0
85 000a 88B1 in r24,40-0x20
86 000c 8360 ori r24,lo8(3)
87 000e 88B9 out 40-0x20,r24
88 0010 8091 B900 lds r24,185
89 0014 8C7F andi r24,lo8(-4)
90 0016 8093 B900 sts 185,r24
91 001a 8AE2 ldi r24,lo8(42)
92 001c 8093 B800 sts 184,r24
93 0020 1092 0000 sts twi_state,__zero_reg__
94 0024 1092 0000 sts motor_write,__zero_reg__
95 0028 1092 0000 sts motor_read,__zero_reg__
96 002c 9923 tst r25
97 002e 79F0 breq .L2
98 0030 E0E0 ldi r30,lo8(Motor)
99 0032 F0E0 ldi r31,hi8(Motor)
100 0034 8BE0 ldi r24,lo8(11)
101 .L6:
102 0036 1082 st Z,__zero_reg__
103 0038 1182 std Z+1,__zero_reg__
104 003a 1282 std Z+2,__zero_reg__
105 003c 1382 std Z+3,__zero_reg__
106 003e 1482 std Z+4,__zero_reg__
107 0040 1582 std Z+5,__zero_reg__
108 0042 1682 std Z+6,__zero_reg__
109 0044 1782 std Z+7,__zero_reg__
110 0046 8150 subi r24,lo8(-(-1))
111 0048 3896 adiw r30,8
112 004a 87FF sbrs r24,7
113 004c F4CF rjmp .L6
114 .L2:
115 /* #APP */
116 004e 7894 sei
117 /* #NOAPP */
118 0050 2FBF out 95-0x20,r18
119 /* epilogue: frame size=0 */
120 0052 0895 ret
121 /* epilogue end (size=1) */
122 /* function I2C_Init size 44 (43) */
124 .global I2C_Reset
126 I2C_Reset:
127 /* prologue: frame size=0 */
128 /* prologue end (size=0) */
129 0054 1092 0000 sts twi_state,__zero_reg__
130 0058 84E9 ldi r24,lo8(-108)
131 005a 8093 BC00 sts 188,r24
132 005e 80E8 ldi r24,lo8(-128)
133 0060 8093 BC00 sts 188,r24
134 0064 1092 BD00 sts 189,__zero_reg__
135 0068 1092 BA00 sts 186,__zero_reg__
136 006c 1092 BB00 sts 187,__zero_reg__
137 0070 1092 B900 sts 185,__zero_reg__
138 0074 1092 B800 sts 184,__zero_reg__
139 0078 1092 0000 sts I2C_TransferActive,__zero_reg__
140 007c 80E0 ldi r24,lo8(0)
141 007e 0E94 0000 call I2C_Init
142 0082 1092 BB00 sts 187,__zero_reg__
143 0086 85E8 ldi r24,lo8(-123)
144 0088 8093 BC00 sts 188,r24
145 008c 8091 0000 lds r24,BLFlags
146 0090 8260 ori r24,lo8(2)
147 0092 8093 0000 sts BLFlags,r24
148 /* epilogue: frame size=0 */
149 0096 0895 ret
150 /* epilogue end (size=1) */
151 /* function I2C_Reset size 34 (33) */
153 .lcomm missing_motor.0,1
154 .lcomm motor_read_temperature.1,1
155 .lcomm pBuff.2,2
156 .lcomm BuffLen.3,1
157 .global __vector_26
159 __vector_26:
160 /* prologue: frame size=0 */
161 0098 1F92 push __zero_reg__
162 009a 0F92 push __tmp_reg__
163 009c 0FB6 in __tmp_reg__,__SREG__
164 009e 0F92 push __tmp_reg__
165 00a0 1124 clr __zero_reg__
166 00a2 2F93 push r18
167 00a4 3F93 push r19
168 00a6 4F93 push r20
169 00a8 5F93 push r21
170 00aa 8F93 push r24
171 00ac 9F93 push r25
172 00ae EF93 push r30
173 00b0 FF93 push r31
174 /* prologue end (size=13) */
175 00b2 8091 0000 lds r24,twi_state
176 00b6 282F mov r18,r24
177 00b8 3327 clr r19
178 00ba 4427 clr r20
179 00bc 5527 clr r21
180 00be 8F5F subi r24,lo8(-(1))
181 00c0 8093 0000 sts twi_state,r24
182 00c4 F901 movw r30,r18
183 00c6 2731 cpi r18,23
184 00c8 3105 cpc r19,__zero_reg__
185 00ca 08F0 brlo .+2
186 00cc C2C2 rjmp .L72
187 00ce E050 subi r30,lo8(-(pm(.L73)))
188 00d0 F040 sbci r31,hi8(-(pm(.L73)))
189 00d2 0C94 0000 jmp __tablejump2__
190 .data
191 .section .progmem.gcc_sw_table, "a", @progbits
192 .p2align 1
193 .L73:
194 0000 0000 .word pm(.L11)
195 0002 0000 .word pm(.L17)
196 0004 0000 .word pm(.L22)
197 0006 0000 .word pm(.L27)
198 0008 0000 .word pm(.L29)
199 000a 0000 .word pm(.L33)
200 000c 0000 .word pm(.L50)
201 000e 0000 .word pm(.L72)
202 0010 0000 .word pm(.L72)
203 0012 0000 .word pm(.L72)
204 0014 0000 .word pm(.L72)
205 0016 0000 .word pm(.L72)
206 0018 0000 .word pm(.L72)
207 001a 0000 .word pm(.L72)
208 001c 0000 .word pm(.L72)
209 001e 0000 .word pm(.L72)
210 0020 0000 .word pm(.L72)
211 0022 0000 .word pm(.L72)
212 0024 0000 .word pm(.L60)
213 0026 0000 .word pm(.L61)
214 0028 0000 .word pm(.L62)
215 002a 0000 .word pm(.L68)
216 002c 0000 .word pm(.L69)
217 .text
218 .L11:
219 00d6 81E0 ldi r24,lo8(1)
220 00d8 8093 0000 sts I2C_TransferActive,r24
221 00dc 09C0 rjmp .L76
222 .L75:
223 00de 8091 0000 lds r24,motor_write
224 00e2 8C30 cpi r24,lo8(12)
225 00e4 90F4 brsh .L13
226 00e6 8091 0000 lds r24,motor_write
227 00ea 8F5F subi r24,lo8(-(1))
228 00ec 8093 0000 sts motor_write,r24
229 .L76:
230 00f0 8091 0000 lds r24,motor_write
231 00f4 E82F mov r30,r24
232 00f6 FF27 clr r31
233 00f8 EE0F lsl r30
234 00fa FF1F rol r31
235 00fc EE0F lsl r30
236 00fe FF1F rol r31
237 0100 E050 subi r30,lo8(-(Mixer))
238 0102 F040 sbci r31,hi8(-(Mixer))
239 0104 8585 ldd r24,Z+13
240 0106 1816 cp __zero_reg__,r24
241 0108 54F7 brge .L75
242 .L13:
243 010a 8091 0000 lds r24,motor_write
244 010e 8C30 cpi r24,lo8(12)
245 0110 70F0 brlo .L15
246 0112 1092 0000 sts (BLConfig_WriteMask)+1,__zero_reg__
247 0116 1092 0000 sts BLConfig_WriteMask,__zero_reg__
248 011a 1092 0000 sts motor_write,__zero_reg__
249 011e 85E0 ldi r24,lo8(5)
250 0120 8093 0000 sts twi_state,r24
251 0124 8091 0000 lds r24,motor_read
252 0128 880F lsl r24
253 012a 8D5A subi r24,lo8(-(83))
254 012c 04C0 rjmp .L84
255 .L15:
256 012e 8091 0000 lds r24,motor_write
257 0132 880F lsl r24
258 0134 8E5A subi r24,lo8(-(82))
259 .L84:
260 0136 8093 BB00 sts 187,r24
261 013a 85E8 ldi r24,lo8(-123)
262 013c 7FC2 rjmp .L80
263 .L17:
264 013e 8091 0000 lds r24,motor_write
265 0142 E82F mov r30,r24
266 0144 FF27 clr r31
267 0146 83E0 ldi r24,3
268 0148 EE0F 1: lsl r30
269 014a FF1F rol r31
270 014c 8A95 dec r24
271 014e E1F7 brne 1b
272 0150 E050 subi r30,lo8(-(Motor))
273 0152 F040 sbci r31,hi8(-(Motor))
274 0154 8181 ldd r24,Z+1
275 0156 8093 BB00 sts 187,r24
276 015a 85E8 ldi r24,lo8(-123)
277 015c 8093 BC00 sts 188,r24
278 0160 8091 0000 lds r24,motor_write
279 0164 E82F mov r30,r24
280 0166 FF27 clr r31
281 0168 EE0F lsl r30
282 016a FF1F rol r31
283 016c EE0F lsl r30
284 016e FF1F rol r31
285 0170 EE0F lsl r30
286 0172 FF1F rol r31
287 0174 E050 subi r30,lo8(-(Motor))
288 0176 F040 sbci r31,hi8(-(Motor))
289 0178 8081 ld r24,Z
290 017a 80FF sbrs r24,0
291 017c 91C0 rjmp .L25
292 017e 8091 0000 lds r24,motor_write
293 0182 E82F mov r30,r24
294 0184 FF27 clr r31
295 0186 EE0F lsl r30
296 0188 FF1F rol r31
297 018a EE0F lsl r30
298 018c FF1F rol r31
299 018e EE0F lsl r30
300 0190 FF1F rol r31
301 0192 E050 subi r30,lo8(-(Motor))
302 0194 F040 sbci r31,hi8(-(Motor))
303 0196 8281 ldd r24,Z+2
304 0198 8823 tst r24
305 019a 29F0 breq .L21
306 019c 8091 0000 lds r24,RequiredMotors
307 01a0 8730 cpi r24,lo8(7)
308 01a2 08F4 brsh .+2
309 01a4 6CC2 rjmp .L9
310 .L21:
311 01a6 8091 0000 lds r24,BLConfig_WriteMask
312 01aa 9091 0000 lds r25,(BLConfig_WriteMask)+1
313 01ae 892B or r24,r25
314 01b0 09F0 breq .+2
315 01b2 65C2 rjmp .L9
316 01b4 8091 0000 lds r24,BLConfig_ReadMask
317 01b8 9091 0000 lds r25,(BLConfig_ReadMask)+1
318 01bc 892B or r24,r25
319 01be 09F0 breq .+2
320 01c0 5EC2 rjmp .L9
321 01c2 6EC0 rjmp .L25
322 .L22:
323 01c4 8091 0000 lds r24,motor_write
324 01c8 21E0 ldi r18,lo8(1)
325 01ca 30E0 ldi r19,hi8(1)
326 01cc 02C0 rjmp 2f
327 01ce 220F 1: lsl r18
328 01d0 331F rol r19
329 01d2 8A95 2: dec r24
330 01d4 E2F7 brpl 1b
331 01d6 8091 0000 lds r24,BLConfig_ReadMask
332 01da 9091 0000 lds r25,(BLConfig_ReadMask)+1
333 01de 2823 and r18,r24
334 01e0 3923 and r19,r25
335 01e2 232B or r18,r19
336 01e4 79F0 breq .L23
337 01e6 8091 0000 lds r24,motor_write
338 01ea E82F mov r30,r24
339 01ec FF27 clr r31
340 01ee EE0F lsl r30
341 01f0 FF1F rol r31
342 01f2 EE0F lsl r30
343 01f4 FF1F rol r31
344 01f6 EE0F lsl r30
345 01f8 FF1F rol r31
346 01fa E050 subi r30,lo8(-(Motor))
347 01fc F040 sbci r31,hi8(-(Motor))
348 01fe 80E1 ldi r24,lo8(16)
349 0200 8483 std Z+4,r24
350 0202 0DC0 rjmp .L24
351 .L23:
352 0204 8091 0000 lds r24,motor_write
353 0208 E82F mov r30,r24
354 020a FF27 clr r31
355 020c EE0F lsl r30
356 020e FF1F rol r31
357 0210 EE0F lsl r30
358 0212 FF1F rol r31
359 0214 EE0F lsl r30
360 0216 FF1F rol r31
361 0218 E050 subi r30,lo8(-(Motor))
362 021a F040 sbci r31,hi8(-(Motor))
363 021c 1482 std Z+4,__zero_reg__
364 .L24:
365 021e 8091 0000 lds r24,motor_write
366 0222 E82F mov r30,r24
367 0224 FF27 clr r31
368 0226 53E0 ldi r21,3
369 0228 EE0F 1: lsl r30
370 022a FF1F rol r31
371 022c 5A95 dec r21
372 022e E1F7 brne 1b
373 0230 E050 subi r30,lo8(-(Motor))
374 0232 F040 sbci r31,hi8(-(Motor))
375 0234 8481 ldd r24,Z+4
376 0236 282F mov r18,r24
377 0238 3327 clr r19
378 023a 43E0 ldi r20,3
379 023c 220F 1: lsl r18
380 023e 331F rol r19
381 0240 4A95 dec r20
382 0242 E1F7 brne 1b
383 0244 8091 0000 lds r24,motor_write
384 0248 E82F mov r30,r24
385 024a FF27 clr r31
386 024c 93E0 ldi r25,3
387 024e EE0F 1: lsl r30
388 0250 FF1F rol r31
389 0252 9A95 dec r25
390 0254 E1F7 brne 1b
391 0256 E050 subi r30,lo8(-(Motor))
392 0258 F040 sbci r31,hi8(-(Motor))
393 025a 8281 ldd r24,Z+2
394 025c 8770 andi r24,lo8(7)
395 025e 822B or r24,r18
396 0260 8093 BB00 sts 187,r24
397 0264 85E8 ldi r24,lo8(-123)
398 0266 8093 BC00 sts 188,r24
399 026a 2091 0000 lds r18,motor_write
400 026e 81E0 ldi r24,lo8(1)
401 0270 90E0 ldi r25,hi8(1)
402 0272 02C0 rjmp 2f
403 0274 880F 1: lsl r24
404 0276 991F rol r25
405 0278 2A95 2: dec r18
406 027a E2F7 brpl 1b
407 027c 2091 0000 lds r18,BLConfig_WriteMask
408 0280 3091 0000 lds r19,(BLConfig_WriteMask)+1
409 0284 8223 and r24,r18
410 0286 9323 and r25,r19
411 0288 892B or r24,r25
412 028a 51F0 breq .L25
413 028c 80E0 ldi r24,lo8(BLConfig)
414 028e 90E0 ldi r25,hi8(BLConfig)
415 0290 9093 0000 sts (pBuff.2)+1,r25
416 0294 8093 0000 sts pBuff.2,r24
417 0298 88E0 ldi r24,lo8(8)
418 029a 8093 0000 sts BuffLen.3,r24
419 029e EFC1 rjmp .L9
420 .L25:
421 02a0 84E0 ldi r24,lo8(4)
422 02a2 89C1 rjmp .L82
423 .L27:
424 02a4 E091 0000 lds r30,pBuff.2
425 02a8 F091 0000 lds r31,(pBuff.2)+1
426 02ac 8191 ld r24,Z+
427 02ae 8093 BB00 sts 187,r24
428 02b2 85E8 ldi r24,lo8(-123)
429 02b4 8093 BC00 sts 188,r24
430 02b8 F093 0000 sts (pBuff.2)+1,r31
431 02bc E093 0000 sts pBuff.2,r30
432 02c0 8091 0000 lds r24,BuffLen.3
433 02c4 8150 subi r24,lo8(-(-1))
434 02c6 8093 0000 sts BuffLen.3,r24
435 02ca 8823 tst r24
436 02cc 09F4 brne .+2
437 02ce D7C1 rjmp .L9
438 02d0 83E0 ldi r24,lo8(3)
439 02d2 71C1 rjmp .L82
440 .L29:
441 02d4 8091 B900 lds r24,185
442 02d8 8033 cpi r24,lo8(48)
443 02da 51F5 brne .L30
444 02dc 8091 0000 lds r24,missing_motor.0
445 02e0 8823 tst r24
446 02e2 29F4 brne .L31
447 02e4 8091 0000 lds r24,motor_write
448 02e8 8F5F subi r24,lo8(-(1))
449 02ea 8093 0000 sts missing_motor.0,r24
450 .L31:
451 02ee 8091 0000 lds r24,motor_write
452 02f2 E82F mov r30,r24
453 02f4 FF27 clr r31
454 02f6 83E0 ldi r24,3
455 02f8 EE0F 1: lsl r30
456 02fa FF1F rol r31
457 02fc 8A95 dec r24
458 02fe E1F7 brne 1b
459 0300 E050 subi r30,lo8(-(Motor))
460 0302 F040 sbci r31,hi8(-(Motor))
461 0304 8381 ldd r24,Z+3
462 0306 9927 clr r25
463 0308 8F77 andi r24,lo8(127)
464 030a 9070 andi r25,hi8(127)
465 030c 8F37 cpi r24,127
466 030e 9105 cpc r25,__zero_reg__
467 0310 7CF4 brge .L30
468 0312 8091 0000 lds r24,motor_write
469 0316 E82F mov r30,r24
470 0318 FF27 clr r31
471 031a EE0F lsl r30
472 031c FF1F rol r31
473 031e EE0F lsl r30
474 0320 FF1F rol r31
475 0322 EE0F lsl r30
476 0324 FF1F rol r31
477 0326 E050 subi r30,lo8(-(Motor))
478 0328 F040 sbci r31,hi8(-(Motor))
479 032a 8381 ldd r24,Z+3
480 032c 8F5F subi r24,lo8(-(1))
481 032e 8383 std Z+3,r24
482 .L30:
483 0330 1092 0000 sts twi_state,__zero_reg__
484 0334 84E9 ldi r24,lo8(-108)
485 0336 8093 BC00 sts 188,r24
486 033a 8AE0 ldi r24,lo8(10)
487 033c 90E0 ldi r25,hi8(10)
488 033e 9093 0000 sts (I2CTimeout)+1,r25
489 0342 8093 0000 sts I2CTimeout,r24
490 0346 8091 0000 lds r24,motor_write
491 034a 8F5F subi r24,lo8(-(1))
492 034c 8093 0000 sts motor_write,r24
493 0350 1092 0000 sts twi_state,__zero_reg__
494 0354 6DC1 rjmp .L85
495 .L33:
496 0356 8091 B900 lds r24,185
497 035a 8034 cpi r24,lo8(64)
498 035c C9F1 breq .L34
499 035e 8091 0000 lds r24,motor_read
500 0362 E82F mov r30,r24
501 0364 FF27 clr r31
502 0366 EE0F lsl r30
503 0368 FF1F rol r31
504 036a EE0F lsl r30
505 036c FF1F rol r31
506 036e EE0F lsl r30
507 0370 FF1F rol r31
508 0372 E050 subi r30,lo8(-(Motor))
509 0374 F040 sbci r31,hi8(-(Motor))
510 0376 8381 ldd r24,Z+3
511 0378 8F77 andi r24,lo8(127)
512 037a 8383 std Z+3,r24
513 037c 8091 0000 lds r24,motor_read
514 0380 8F5F subi r24,lo8(-(1))
515 0382 8093 0000 sts motor_read,r24
516 0386 8091 0000 lds r24,motor_read
517 038a 8C30 cpi r24,lo8(12)
518 038c A0F0 brlo .L35
519 038e 1092 0000 sts motor_read,__zero_reg__
520 0392 1092 0000 sts (BLConfig_ReadMask)+1,__zero_reg__
521 0396 1092 0000 sts BLConfig_ReadMask,__zero_reg__
522 039a 8091 0000 lds r24,motor_read_temperature.1
523 039e 8F5F subi r24,lo8(-(1))
524 03a0 8093 0000 sts motor_read_temperature.1,r24
525 03a4 8C30 cpi r24,lo8(12)
526 03a6 38F0 brlo .L35
527 03a8 1092 0000 sts motor_read_temperature.1,__zero_reg__
528 03ac 8091 0000 lds r24,BLFlags
529 03b0 8D7F andi r24,lo8(-3)
530 03b2 8093 0000 sts BLFlags,r24
531 .L35:
532 03b6 8091 0000 lds r24,BLFlags
533 03ba 8160 ori r24,lo8(1)
534 03bc 8093 0000 sts BLFlags,r24
535 03c0 1092 0000 sts twi_state,__zero_reg__
536 03c4 84E9 ldi r24,lo8(-108)
537 03c6 8093 BC00 sts 188,r24
538 03ca 1092 0000 sts I2C_TransferActive,__zero_reg__
539 03ce 73C0 rjmp .L37
540 .L34:
541 03d0 8091 0000 lds r24,motor_read
542 03d4 E82F mov r30,r24
543 03d6 FF27 clr r31
544 03d8 EE0F lsl r30
545 03da FF1F rol r31
546 03dc EE0F lsl r30
547 03de FF1F rol r31
548 03e0 EE0F lsl r30
549 03e2 FF1F rol r31
550 03e4 E050 subi r30,lo8(-(Motor))
551 03e6 F040 sbci r31,hi8(-(Motor))
552 03e8 8381 ldd r24,Z+3
553 03ea 8068 ori r24,lo8(-128)
554 03ec 8383 std Z+3,r24
555 03ee 8091 0000 lds r24,motor_read
556 03f2 E82F mov r30,r24
557 03f4 FF27 clr r31
558 03f6 EE0F lsl r30
559 03f8 FF1F rol r31
560 03fa EE0F lsl r30
561 03fc FF1F rol r31
562 03fe EE0F lsl r30
563 0400 FF1F rol r31
564 0402 E050 subi r30,lo8(-(Motor))
565 0404 F040 sbci r31,hi8(-(Motor))
566 0406 8081 ld r24,Z
567 0408 80FF sbrs r24,0
568 040a 2FC0 rjmp .L38
569 040c 8091 0000 lds r24,motor_read
570 0410 E82F mov r30,r24
571 0412 FF27 clr r31
572 0414 53E0 ldi r21,3
573 0416 EE0F 1: lsl r30
574 0418 FF1F rol r31
575 041a 5A95 dec r21
576 041c E1F7 brne 1b
577 041e E050 subi r30,lo8(-(Motor))
578 0420 F040 sbci r31,hi8(-(Motor))
579 0422 8481 ldd r24,Z+4
580 0424 9927 clr r25
581 0426 0097 sbiw r24,0
582 0428 51F0 breq .L41
583 042a 4097 sbiw r24,16
584 042c D9F5 brne .L44
585 042e 80E0 ldi r24,lo8(BLConfig)
586 0430 90E0 ldi r25,hi8(BLConfig)
587 0432 9093 0000 sts (pBuff.2)+1,r25
588 0436 8093 0000 sts pBuff.2,r24
589 043a 88E0 ldi r24,lo8(8)
590 043c 31C0 rjmp .L77
591 .L41:
592 043e 8091 0000 lds r24,motor_read
593 0442 9927 clr r25
594 0444 43E0 ldi r20,3
595 0446 880F 1: lsl r24
596 0448 991F rol r25
597 044a 4A95 dec r20
598 044c E1F7 brne 1b
599 044e 8050 subi r24,lo8(-(Motor+5))
600 0450 9040 sbci r25,hi8(-(Motor+5))
601 0452 9093 0000 sts (pBuff.2)+1,r25
602 0456 8093 0000 sts pBuff.2,r24
603 045a 9091 0000 lds r25,motor_read
604 045e 8091 0000 lds r24,motor_read_temperature.1
605 0462 9817 cp r25,r24
606 0464 E1F4 brne .L45
607 0466 83E0 ldi r24,lo8(3)
608 0468 1BC0 rjmp .L77
609 .L38:
610 046a 8091 0000 lds r24,motor_read
611 046e 9927 clr r25
612 0470 33E0 ldi r19,3
613 0472 880F 1: lsl r24
614 0474 991F rol r25
615 0476 3A95 dec r19
616 0478 E1F7 brne 1b
617 047a 8050 subi r24,lo8(-(Motor+5))
618 047c 9040 sbci r25,hi8(-(Motor+5))
619 047e 9093 0000 sts (pBuff.2)+1,r25
620 0482 8093 0000 sts pBuff.2,r24
621 0486 8091 0000 lds r24,BLFlags
622 048a 81FD sbrc r24,1
623 048c 06C0 rjmp .L46
624 048e 9091 0000 lds r25,motor_read
625 0492 8091 0000 lds r24,motor_read_temperature.1
626 0496 9817 cp r25,r24
627 0498 11F4 brne .L45
628 .L46:
629 049a 82E0 ldi r24,lo8(2)
630 049c 01C0 rjmp .L77
631 .L45:
632 049e 81E0 ldi r24,lo8(1)
633 .L77:
634 04a0 8093 0000 sts BuffLen.3,r24
635 .L44:
636 04a4 8091 0000 lds r24,BuffLen.3
637 04a8 8130 cpi r24,lo8(1)
638 04aa 11F4 brne .L48
639 04ac 85E8 ldi r24,lo8(-123)
640 04ae 01C0 rjmp .L78
641 .L48:
642 04b0 85EC ldi r24,lo8(-59)
643 .L78:
644 04b2 8093 BC00 sts 188,r24
645 .L37:
646 04b6 8091 0000 lds r24,missing_motor.0
647 04ba 8093 0000 sts MissingMotor,r24
648 04be 1092 0000 sts missing_motor.0,__zero_reg__
649 04c2 DDC0 rjmp .L9
650 .L50:
651 04c4 E091 0000 lds r30,pBuff.2
652 04c8 F091 0000 lds r31,(pBuff.2)+1
653 04cc 8091 BB00 lds r24,187
654 04d0 8083 st Z,r24
655 04d2 8091 0000 lds r24,pBuff.2
656 04d6 9091 0000 lds r25,(pBuff.2)+1
657 04da 0196 adiw r24,1
658 04dc 9093 0000 sts (pBuff.2)+1,r25
659 04e0 8093 0000 sts pBuff.2,r24
660 04e4 8091 0000 lds r24,BuffLen.3
661 04e8 8150 subi r24,lo8(-(-1))
662 04ea 8093 0000 sts BuffLen.3,r24
663 04ee 8230 cpi r24,lo8(2)
664 04f0 10F0 brlo .L51
665 04f2 85EC ldi r24,lo8(-59)
666 04f4 5DC0 rjmp .L79
667 .L51:
668 04f6 8130 cpi r24,lo8(1)
669 04f8 11F4 brne .L53
670 04fa 85E8 ldi r24,lo8(-123)
671 04fc 59C0 rjmp .L79
672 .L53:
673 04fe 8091 0000 lds r24,BLFlags
674 0502 81FF sbrs r24,1
675 0504 2DC0 rjmp .L55
676 0506 8091 0000 lds r24,FC_StatusFlags
677 050a 80FD sbrc r24,0
678 050c 1DC0 rjmp .L56
679 050e 8091 0000 lds r24,motor_read
680 0512 E82F mov r30,r24
681 0514 FF27 clr r31
682 0516 23E0 ldi r18,3
683 0518 EE0F 1: lsl r30
684 051a FF1F rol r31
685 051c 2A95 dec r18
686 051e E1F7 brne 1b
687 0520 E050 subi r30,lo8(-(Motor))
688 0522 F040 sbci r31,hi8(-(Motor))
689 0524 8681 ldd r24,Z+6
690 0526 8A3F cpi r24,lo8(-6)
691 0528 79F4 brne .L56
692 052a 8091 0000 lds r24,motor_read
693 052e E82F mov r30,r24
694 0530 FF27 clr r31
695 0532 93E0 ldi r25,3
696 0534 EE0F 1: lsl r30
697 0536 FF1F rol r31
698 0538 9A95 dec r25
699 053a E1F7 brne 1b
700 053c E050 subi r30,lo8(-(Motor))
701 053e F040 sbci r31,hi8(-(Motor))
702 0540 8081 ld r24,Z
703 0542 8160 ori r24,lo8(1)
704 0544 8083 st Z,r24
705 0546 0CC0 rjmp .L55
706 .L56:
707 0548 8091 0000 lds r24,motor_read
708 054c E82F mov r30,r24
709 054e FF27 clr r31
710 0550 83E0 ldi r24,3
711 0552 EE0F 1: lsl r30
712 0554 FF1F rol r31
713 0556 8A95 dec r24
714 0558 E1F7 brne 1b
715 055a E050 subi r30,lo8(-(Motor))
716 055c F040 sbci r31,hi8(-(Motor))
717 055e 1082 st Z,__zero_reg__
718 .L55:
719 0560 8091 0000 lds r24,motor_read
720 0564 8F5F subi r24,lo8(-(1))
721 0566 8093 0000 sts motor_read,r24
722 056a 8091 0000 lds r24,motor_read
723 056e 8C30 cpi r24,lo8(12)
724 0570 A0F0 brlo .L58
725 0572 1092 0000 sts motor_read,__zero_reg__
726 0576 1092 0000 sts (BLConfig_ReadMask)+1,__zero_reg__
727 057a 1092 0000 sts BLConfig_ReadMask,__zero_reg__
728 057e 8091 0000 lds r24,motor_read_temperature.1
729 0582 8F5F subi r24,lo8(-(1))
730 0584 8093 0000 sts motor_read_temperature.1,r24
731 0588 8C30 cpi r24,lo8(12)
732 058a 38F0 brlo .L58
733 058c 1092 0000 sts motor_read_temperature.1,__zero_reg__
734 0590 8091 0000 lds r24,BLFlags
735 0594 8D7F andi r24,lo8(-3)
736 0596 8093 0000 sts BLFlags,r24
737 .L58:
738 059a 1092 0000 sts twi_state,__zero_reg__
739 059e 84E9 ldi r24,lo8(-108)
740 05a0 8093 BC00 sts 188,r24
741 05a4 8091 0000 lds r24,BLFlags
742 05a8 8160 ori r24,lo8(1)
743 05aa 8093 0000 sts BLFlags,r24
744 05ae 65C0 rjmp .L81
745 .L79:
746 05b0 8093 BC00 sts 188,r24
747 05b4 86E0 ldi r24,lo8(6)
748 .L82:
749 05b6 8093 0000 sts twi_state,r24
750 05ba 61C0 rjmp .L9
751 .L60:
752 05bc 88E9 ldi r24,lo8(-104)
753 05be BBCD rjmp .L84
754 .L61:
755 05c0 8091 0000 lds r24,dac_channel
756 05c4 880F lsl r24
757 05c6 805F subi r24,lo8(-(16))
758 05c8 B6CD rjmp .L84
759 .L62:
760 05ca 8091 0000 lds r24,dac_channel
761 05ce 9927 clr r25
762 05d0 8130 cpi r24,1
763 05d2 9105 cpc r25,__zero_reg__
764 05d4 61F0 breq .L65
765 05d6 8230 cpi r24,2
766 05d8 9105 cpc r25,__zero_reg__
767 05da 1CF4 brge .L67
768 05dc 892B or r24,r25
769 05de 21F0 breq .L64
770 05e0 4EC0 rjmp .L9
771 .L67:
772 05e2 0297 sbiw r24,2
773 05e4 39F0 breq .L66
774 05e6 4BC0 rjmp .L9
775 .L64:
776 05e8 8091 0000 lds r24,AnalogOffsetNick
777 05ec A4CD rjmp .L84
778 .L65:
779 05ee 8091 0000 lds r24,AnalogOffsetRoll
780 05f2 A1CD rjmp .L84
781 .L66:
782 05f4 8091 0000 lds r24,AnalogOffsetGier
783 05f8 9ECD rjmp .L84
784 .L68:
785 05fa 80E8 ldi r24,lo8(-128)
786 05fc 9CCD rjmp .L84
787 .L69:
788 05fe 1092 0000 sts twi_state,__zero_reg__
789 0602 84E9 ldi r24,lo8(-108)
790 0604 8093 BC00 sts 188,r24
791 0608 1092 0000 sts I2C_TransferActive,__zero_reg__
792 060c 8AE0 ldi r24,lo8(10)
793 060e 90E0 ldi r25,hi8(10)
794 0610 9093 0000 sts (I2CTimeout)+1,r25
795 0614 8093 0000 sts I2CTimeout,r24
796 0618 8091 0000 lds r24,dac_channel
797 061c 8230 cpi r24,lo8(2)
798 061e 88F4 brsh .L70
799 0620 8091 0000 lds r24,dac_channel
800 0624 8F5F subi r24,lo8(-(1))
801 0626 8093 0000 sts dac_channel,r24
802 062a 82E1 ldi r24,lo8(18)
803 062c 8093 0000 sts twi_state,r24
804 .L85:
805 0630 8091 0000 lds r24,BLFlags
806 0634 8E7F andi r24,lo8(-2)
807 0636 8093 0000 sts BLFlags,r24
808 063a 85EA ldi r24,lo8(-91)
809 .L80:
810 063c 8093 BC00 sts 188,r24
811 0640 1EC0 rjmp .L9
812 .L70:
813 0642 1092 0000 sts dac_channel,__zero_reg__
814 0646 8091 0000 lds r24,BLFlags
815 064a 8160 ori r24,lo8(1)
816 064c 8093 0000 sts BLFlags,r24
817 0650 16C0 rjmp .L9
818 .L72:
819 0652 1092 0000 sts twi_state,__zero_reg__
820 0656 84E9 ldi r24,lo8(-108)
821 0658 8093 BC00 sts 188,r24
822 065c 8091 0000 lds r24,BLFlags
823 0660 8160 ori r24,lo8(1)
824 0662 8093 0000 sts BLFlags,r24
825 0666 8AE0 ldi r24,lo8(10)
826 0668 90E0 ldi r25,hi8(10)
827 066a 9093 0000 sts (I2CTimeout)+1,r25
828 066e 8093 0000 sts I2CTimeout,r24
829 0672 1092 0000 sts motor_write,__zero_reg__
830 0676 1092 0000 sts motor_read,__zero_reg__
831 .L81:
832 067a 1092 0000 sts I2C_TransferActive,__zero_reg__
833 .L9:
834 /* epilogue: frame size=0 */
835 067e FF91 pop r31
836 0680 EF91 pop r30
837 0682 9F91 pop r25
838 0684 8F91 pop r24
839 0686 5F91 pop r21
840 0688 4F91 pop r20
841 068a 3F91 pop r19
842 068c 2F91 pop r18
843 068e 0F90 pop __tmp_reg__
844 0690 0FBE out __SREG__,__tmp_reg__
845 0692 0F90 pop __tmp_reg__
846 0694 1F90 pop __zero_reg__
847 0696 1895 reti
848 /* epilogue end (size=13) */
849 /* function __vector_26 size 796 (770) */
851 .global I2C_WriteBLConfig
853 I2C_WriteBLConfig:
854 /* prologue: frame size=0 */
855 0698 1F93 push r17
856 069a CF93 push r28
857 069c DF93 push r29
858 /* prologue end (size=3) */
859 069e 182F mov r17,r24
860 06a0 8091 0000 lds r24,MotorenEin
861 06a4 8823 tst r24
862 06a6 21F4 brne .L88
863 06a8 8091 0000 lds r24,PC_MotortestActive
864 06ac 8823 tst r24
865 06ae 19F0 breq .L87
866 .L88:
867 06b0 81E0 ldi r24,lo8(1)
868 06b2 90E0 ldi r25,hi8(1)
869 06b4 97C0 rjmp .L86
870 .L87:
871 06b6 1D30 cpi r17,lo8(13)
872 06b8 08F0 brlo .+2
873 06ba 92C0 rjmp .L115
874 06bc 1123 tst r17
875 06be B1F0 breq .L90
876 06c0 E12F mov r30,r17
877 06c2 FF27 clr r31
878 06c4 23E0 ldi r18,3
879 06c6 EE0F 1: lsl r30
880 06c8 FF1F rol r31
881 06ca 2A95 dec r18
882 06cc E1F7 brne 1b
883 06ce E050 subi r30,lo8(-(Motor))
884 06d0 F040 sbci r31,hi8(-(Motor))
885 06d2 3597 sbiw r30,5
886 06d4 8081 ld r24,Z
887 06d6 3596 adiw r30,5
888 06d8 8823 tst r24
889 06da 0CF0 brlt .+2
890 06dc 81C0 rjmp .L115
891 06de 3897 sbiw r30,8
892 06e0 8081 ld r24,Z
893 06e2 80FD sbrc r24,0
894 06e4 03C0 rjmp .L90
895 06e6 83E0 ldi r24,lo8(3)
896 06e8 90E0 ldi r25,hi8(3)
897 06ea 7CC0 rjmp .L86
898 .L90:
899 06ec 8091 0000 lds r24,BLConfig
900 06f0 8230 cpi r24,lo8(2)
901 06f2 19F0 breq .L93
902 06f4 84E0 ldi r24,lo8(4)
903 06f6 90E0 ldi r25,hi8(4)
904 06f8 75C0 rjmp .L86
905 .L93:
906 06fa 67E0 ldi r22,lo8(7)
907 06fc 70E0 ldi r23,hi8(7)
908 06fe 80E0 ldi r24,lo8(BLConfig)
909 0700 90E0 ldi r25,hi8(BLConfig)
910 0702 0E94 0000 call RAM_Checksum
911 0706 9091 0000 lds r25,BLConfig+7
912 070a 8917 cp r24,r25
913 070c 19F0 breq .L94
914 070e 85E0 ldi r24,lo8(5)
915 0710 90E0 ldi r25,hi8(5)
916 0712 68C0 rjmp .L86
917 .L94:
918 0714 80ED ldi r24,lo8(2000)
919 0716 97E0 ldi r25,hi8(2000)
920 0718 0E94 0000 call SetDelay
921 071c EC01 movw r28,r24
922 .L95:
923 071e 8091 0000 lds r24,BLFlags
924 0722 80FD sbrc r24,0
925 0724 05C0 rjmp .L96
926 0726 CE01 movw r24,r28
927 0728 0E94 0000 call CheckDelay
928 072c 8823 tst r24
929 072e B9F3 breq .L95
930 .L96:
931 0730 1123 tst r17
932 0732 19F4 brne .L98
933 0734 8FEF ldi r24,lo8(255)
934 0736 90E0 ldi r25,hi8(255)
935 0738 0BC0 rjmp .L114
936 .L98:
937 073a 212F mov r18,r17
938 073c 3327 clr r19
939 073e 2150 subi r18,lo8(-(-1))
940 0740 3040 sbci r19,hi8(-(-1))
941 0742 81E0 ldi r24,lo8(1)
942 0744 90E0 ldi r25,hi8(1)
943 0746 02C0 rjmp 2f
944 0748 880F 1: lsl r24
945 074a 991F rol r25
946 074c 2A95 2: dec r18
947 074e E2F7 brpl 1b
948 .L114:
949 0750 9093 0000 sts (BLConfig_WriteMask)+1,r25
950 0754 8093 0000 sts BLConfig_WriteMask,r24
951 0758 A1E0 ldi r26,lo8(1)
952 075a B0E0 ldi r27,hi8(1)
953 075c E0E0 ldi r30,lo8(Motor)
954 075e F0E0 ldi r31,hi8(Motor)
955 0760 40E0 ldi r20,lo8(0)
956 0762 50E0 ldi r21,hi8(0)
957 0764 6BE0 ldi r22,lo8(11)
958 .L104:
959 0766 CD01 movw r24,r26
960 0768 042E mov r0,r20
961 076a 02C0 rjmp 2f
962 076c 880F 1: lsl r24
963 076e 991F rol r25
964 0770 0A94 2: dec r0
965 0772 E2F7 brpl 1b
966 0774 2091 0000 lds r18,BLConfig_WriteMask
967 0778 3091 0000 lds r19,(BLConfig_WriteMask)+1
968 077c 8223 and r24,r18
969 077e 9323 and r25,r19
970 0780 892B or r24,r25
971 0782 11F0 breq .L102
972 0784 1182 std Z+1,__zero_reg__
973 0786 1282 std Z+2,__zero_reg__
974 .L102:
975 0788 6150 subi r22,lo8(-(-1))
976 078a 4F5F subi r20,lo8(-(1))
977 078c 5F4F sbci r21,hi8(-(1))
978 078e 3896 adiw r30,8
979 0790 67FF sbrs r22,7
980 0792 E9CF rjmp .L104
981 0794 1092 0000 sts motor_write,__zero_reg__
982 .L105:
983 0798 1092 0000 sts twi_state,__zero_reg__
984 079c 8091 0000 lds r24,BLFlags
985 07a0 8E7F andi r24,lo8(-2)
986 07a2 8093 0000 sts BLFlags,r24
987 07a6 85EA ldi r24,lo8(-91)
988 07a8 8093 BC00 sts 188,r24
989 .L108:
990 07ac 8091 0000 lds r24,BLFlags
991 07b0 80FD sbrc r24,0
992 07b2 05C0 rjmp .L109
993 07b4 CE01 movw r24,r28
994 07b6 0E94 0000 call CheckDelay
995 07ba 8823 tst r24
996 07bc B9F3 breq .L108
997 .L109:
998 07be 8091 0000 lds r24,BLConfig_WriteMask
999 07c2 9091 0000 lds r25,(BLConfig_WriteMask)+1
1000 07c6 892B or r24,r25
1001 07c8 29F0 breq .L106
1002 07ca CE01 movw r24,r28
1003 07cc 0E94 0000 call CheckDelay
1004 07d0 8823 tst r24
1005 07d2 11F3 breq .L105
1006 .L106:
1007 07d4 8091 0000 lds r24,BLConfig_WriteMask
1008 07d8 9091 0000 lds r25,(BLConfig_WriteMask)+1
1009 07dc 0097 sbiw r24,0
1010 07de 11F0 breq .L86
1011 .L115:
1012 07e0 82E0 ldi r24,lo8(2)
1013 07e2 90E0 ldi r25,hi8(2)
1014 .L86:
1015 /* epilogue: frame size=0 */
1016 07e4 DF91 pop r29
1017 07e6 CF91 pop r28
1018 07e8 1F91 pop r17
1019 07ea 0895 ret
1020 /* epilogue end (size=4) */
1021 /* function I2C_WriteBLConfig size 172 (165) */
1023 .global I2C_ReadBLConfig
1025 I2C_ReadBLConfig:
1026 /* prologue: frame size=0 */
1027 07ec 0F93 push r16
1028 07ee 1F93 push r17
1029 07f0 CF93 push r28
1030 07f2 DF93 push r29
1031 /* prologue end (size=4) */
1032 07f4 982F mov r25,r24
1033 07f6 8091 0000 lds r24,MotorenEin
1034 07fa 8823 tst r24
1035 07fc 21F4 brne .L118
1036 07fe 8091 0000 lds r24,PC_MotortestActive
1037 0802 8823 tst r24
1038 0804 19F0 breq .L117
1039 .L118:
1040 0806 81E0 ldi r24,lo8(1)
1041 0808 90E0 ldi r25,hi8(1)
1042 080a 92C0 rjmp .L116
1043 .L117:
1044 080c 9D30 cpi r25,lo8(13)
1045 080e A0F4 brsh .L141
1046 0810 9923 tst r25
1047 0812 19F4 brne .L120
1048 0814 86E0 ldi r24,lo8(6)
1049 0816 90E0 ldi r25,hi8(6)
1050 0818 8BC0 rjmp .L116
1051 .L120:
1052 081a C92F mov r28,r25
1053 081c DD27 clr r29
1054 081e FE01 movw r30,r28
1055 0820 33E0 ldi r19,3
1056 0822 EE0F 1: lsl r30
1057 0824 FF1F rol r31
1058 0826 3A95 dec r19
1059 0828 E1F7 brne 1b
1060 082a E050 subi r30,lo8(-(Motor))
1061 082c F040 sbci r31,hi8(-(Motor))
1062 082e 3597 sbiw r30,5
1063 0830 8081 ld r24,Z
1064 0832 3596 adiw r30,5
1065 0834 87FD sbrc r24,7
1066 0836 03C0 rjmp .L121
1067 .L141:
1068 0838 82E0 ldi r24,lo8(2)
1069 083a 90E0 ldi r25,hi8(2)
1070 083c 79C0 rjmp .L116
1071 .L121:
1072 083e 3897 sbiw r30,8
1073 0840 8081 ld r24,Z
1074 0842 80FD sbrc r24,0
1075 0844 03C0 rjmp .L122
1076 0846 83E0 ldi r24,lo8(3)
1077 0848 90E0 ldi r25,hi8(3)
1078 084a 72C0 rjmp .L116
1079 .L122:
1080 084c 80ED ldi r24,lo8(2000)
1081 084e 97E0 ldi r25,hi8(2000)
1082 0850 0E94 0000 call SetDelay
1083 0854 8C01 movw r16,r24
1084 .L123:
1085 0856 8091 0000 lds r24,BLFlags
1086 085a 80FD sbrc r24,0
1087 085c 05C0 rjmp .L124
1088 085e C801 movw r24,r16
1089 0860 0E94 0000 call CheckDelay
1090 0864 8823 tst r24
1091 0866 B9F3 breq .L123
1092 .L124:
1093 0868 2197 sbiw r28,1
1094 086a 21E0 ldi r18,lo8(1)
1095 086c 30E0 ldi r19,hi8(1)
1096 086e C901 movw r24,r18
1097 0870 02C0 rjmp 2f
1098 0872 880F 1: lsl r24
1099 0874 991F rol r25
1100 0876 CA95 2: dec r28
1101 0878 E2F7 brpl 1b
1102 087a 9093 0000 sts (BLConfig_ReadMask)+1,r25
1103 087e 8093 0000 sts BLConfig_ReadMask,r24
1104 0882 D901 movw r26,r18
1105 0884 E0E0 ldi r30,lo8(Motor)
1106 0886 F0E0 ldi r31,hi8(Motor)
1107 0888 40E0 ldi r20,lo8(0)
1108 088a 50E0 ldi r21,hi8(0)
1109 088c 6BE0 ldi r22,lo8(11)
1110 .L130:
1111 088e CD01 movw r24,r26
1112 0890 042E mov r0,r20
1113 0892 02C0 rjmp 2f
1114 0894 880F 1: lsl r24
1115 0896 991F rol r25
1116 0898 0A94 2: dec r0
1117 089a E2F7 brpl 1b
1118 089c 2091 0000 lds r18,BLConfig_ReadMask
1119 08a0 3091 0000 lds r19,(BLConfig_ReadMask)+1
1120 08a4 8223 and r24,r18
1121 08a6 9323 and r25,r19
1122 08a8 892B or r24,r25
1123 08aa 11F0 breq .L128
1124 08ac 1182 std Z+1,__zero_reg__
1125 08ae 1282 std Z+2,__zero_reg__
1126 .L128:
1127 08b0 6150 subi r22,lo8(-(-1))
1128 08b2 4F5F subi r20,lo8(-(1))
1129 08b4 5F4F sbci r21,hi8(-(1))
1130 08b6 3896 adiw r30,8
1131 08b8 67FF sbrs r22,7
1132 08ba E9CF rjmp .L130
1133 08bc 1092 0000 sts motor_read,__zero_reg__
1134 08c0 1092 0000 sts BLConfig,__zero_reg__
1135 08c4 1092 0000 sts BLConfig+7,__zero_reg__
1136 .L131:
1137 08c8 1092 0000 sts twi_state,__zero_reg__
1138 08cc 8091 0000 lds r24,BLFlags
1139 08d0 8E7F andi r24,lo8(-2)
1140 08d2 8093 0000 sts BLFlags,r24
1141 08d6 85EA ldi r24,lo8(-91)
1142 08d8 8093 BC00 sts 188,r24
1143 .L134:
1144 08dc 8091 0000 lds r24,BLFlags
1145 08e0 80FD sbrc r24,0
1146 08e2 05C0 rjmp .L135
1147 08e4 C801 movw r24,r16
1148 08e6 0E94 0000 call CheckDelay
1149 08ea 8823 tst r24
1150 08ec B9F3 breq .L134
1151 .L135:
1152 08ee 8091 0000 lds r24,BLConfig_ReadMask
1153 08f2 9091 0000 lds r25,(BLConfig_ReadMask)+1
1154 08f6 892B or r24,r25
1155 08f8 29F0 breq .L132
1156 08fa C801 movw r24,r16
1157 08fc 0E94 0000 call CheckDelay
1158 0900 8823 tst r24
1159 0902 11F3 breq .L131
1160 .L132:
1161 0904 8091 0000 lds r24,BLConfig
1162 0908 8230 cpi r24,lo8(2)
1163 090a 19F0 breq .L137
1164 090c 84E0 ldi r24,lo8(4)
1165 090e 90E0 ldi r25,hi8(4)
1166 0910 0FC0 rjmp .L116
1167 .L137:
1168 0912 67E0 ldi r22,lo8(7)
1169 0914 70E0 ldi r23,hi8(7)
1170 0916 80E0 ldi r24,lo8(BLConfig)
1171 0918 90E0 ldi r25,hi8(BLConfig)
1172 091a 0E94 0000 call RAM_Checksum
1173 091e 9091 0000 lds r25,BLConfig+7
1174 0922 8917 cp r24,r25
1175 0924 19F0 breq .L138
1176 0926 85E0 ldi r24,lo8(5)
1177 0928 90E0 ldi r25,hi8(5)
1178 092a 02C0 rjmp .L116
1179 .L138:
1180 092c 80E0 ldi r24,lo8(0)
1181 092e 90E0 ldi r25,hi8(0)
1182 .L116:
1183 /* epilogue: frame size=0 */
1184 0930 DF91 pop r29
1185 0932 CF91 pop r28
1186 0934 1F91 pop r17
1187 0936 0F91 pop r16
1188 0938 0895 ret
1189 /* epilogue end (size=5) */
1190 /* function I2C_ReadBLConfig size 168 (159) */
1192 .comm Motor,96,1
1193 .comm BLConfig,8,1
1194 /* File "twimaster.c": code 1214 = 0x04be (1170), prologues 20, epilogues 24 */
DEFINED SYMBOLS
*ABS*:00000000 twimaster.c
C:\Users\Thomas\AppData\Local\Temp/ccMRaaaa.s:3 *ABS*:0000003f __SREG__
C:\Users\Thomas\AppData\Local\Temp/ccMRaaaa.s:4 *ABS*:0000003e __SP_H__
C:\Users\Thomas\AppData\Local\Temp/ccMRaaaa.s:5 *ABS*:0000003d __SP_L__
C:\Users\Thomas\AppData\Local\Temp/ccMRaaaa.s:6 *ABS*:00000000 __tmp_reg__
C:\Users\Thomas\AppData\Local\Temp/ccMRaaaa.s:7 *ABS*:00000001 __zero_reg__
C:\Users\Thomas\AppData\Local\Temp/ccMRaaaa.s:15 .bss:00000000 BLConfig_ReadMask
C:\Users\Thomas\AppData\Local\Temp/ccMRaaaa.s:21 .bss:00000002 BLConfig_WriteMask
C:\Users\Thomas\AppData\Local\Temp/ccMRaaaa.s:27 .bss:00000004 BLFlags
C:\Users\Thomas\AppData\Local\Temp/ccMRaaaa.s:33 .bss:00000005 MissingMotor
C:\Users\Thomas\AppData\Local\Temp/ccMRaaaa.s:39 .data:00000000 I2CTimeout
C:\Users\Thomas\AppData\Local\Temp/ccMRaaaa.s:46 .bss:00000006 I2C_TransferActive
C:\Users\Thomas\AppData\Local\Temp/ccMRaaaa.s:52 .bss:00000007 motor_read
C:\Users\Thomas\AppData\Local\Temp/ccMRaaaa.s:58 .bss:00000008 motor_write
C:\Users\Thomas\AppData\Local\Temp/ccMRaaaa.s:64 .bss:00000009 dac_channel
C:\Users\Thomas\AppData\Local\Temp/ccMRaaaa.s:70 .bss:0000000a twi_state
C:\Users\Thomas\AppData\Local\Temp/ccMRaaaa.s:75 .text:00000000 I2C_Init
*COM*:00000060 Motor
C:\Users\Thomas\AppData\Local\Temp/ccMRaaaa.s:126 .text:00000054 I2C_Reset
.bss:0000000b missing_motor.0
C:\Users\Thomas\AppData\Local\Temp/ccMRaaaa.s:153 .bss:0000000c motor_read_temperature.1
C:\Users\Thomas\AppData\Local\Temp/ccMRaaaa.s:154 .bss:0000000d pBuff.2
C:\Users\Thomas\AppData\Local\Temp/ccMRaaaa.s:155 .bss:0000000f BuffLen.3
C:\Users\Thomas\AppData\Local\Temp/ccMRaaaa.s:159 .text:00000098 __vector_26
*COM*:00000008 BLConfig
C:\Users\Thomas\AppData\Local\Temp/ccMRaaaa.s:853 .text:00000698 I2C_WriteBLConfig
C:\Users\Thomas\AppData\Local\Temp/ccMRaaaa.s:1025 .text:000007ec I2C_ReadBLConfig
 
UNDEFINED SYMBOLS
__do_copy_data
__do_clear_bss
__tablejump2__
Mixer
RequiredMotors
FC_StatusFlags
AnalogOffsetNick
AnalogOffsetRoll
AnalogOffsetGier
MotorenEin
PC_MotortestActive
RAM_Checksum
SetDelay
CheckDelay
/branches/metro/v0.82a metro_Akku+/uart.c
0,0 → 1,761
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// + Copyright (c) Holger Buss, Ingo Busker
// + only for non-profit use
// + www.MikroKopter.com
// + see the File "License.txt" for further Informations
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#include <stdarg.h>
#include <string.h>
#include <avr/pgmspace.h>
#include "main.h"
#include "uart.h"
#include "libfc.h"
#include "eeprom.h"
 
#define FC_ADDRESS 1
#define NC_ADDRESS 2
#define MK3MAG_ADDRESS 3
#define BL_CTRL_ADDRESS 5
 
#define ABO_TIMEOUT 4000 // disable abo after 4 seconds
#define MAX_SENDE_BUFF 170
#define MAX_EMPFANGS_BUFF 170
 
#define BLPARAM_REVISION 1
#define MASK_SET_PWM_SCALING 0x01
#define MASK_SET_CURRENT_LIMIT 0x02
#define MASK_SET_TEMP_LIMIT 0x04
#define MASK_SET_CURRENT_SCALING 0x08
#define MASK_SET_BITCONFIG 0x10
#define MASK_RESET_CAPCOUNTER 0x20
#define MASK_SET_DEFAULT_PARAMS 0x40
#define MASK_SET_SAVE_EEPROM 0x80
 
typedef struct
{
unsigned char Revision; // revision of parameter structure
unsigned char Address; // target address
unsigned char PwmScaling; // maximum value of pwm setpoint
unsigned char CurrentLimit; // current limit in 1A steps
unsigned char TemperatureLimit; // in °C
unsigned char CurrentScaling; // scaling factor for current measurement
unsigned char BitConfig; // see defines above
unsigned char SetMask; // filter for active paramters
unsigned char Checksum; // checksum for parameter sturcture
} __attribute__((packed)) BLParameter_t;
 
 
unsigned char GetExternalControl = 0,DebugDisplayAnforderung1 = 0, DebugDisplayAnforderung = 0,DebugDataAnforderung = 0,GetVersionAnforderung = 0, GetPPMChannelAnforderung = 0;
unsigned char DisplayLine = 0;
unsigned volatile char SioTmp = 0;
unsigned volatile char NeuerDatensatzEmpfangen = 0;
unsigned volatile char NeueKoordinateEmpfangen = 0;
unsigned volatile char UebertragungAbgeschlossen = 1;
unsigned volatile char CntCrcError = 0;
unsigned volatile char AnzahlEmpfangsBytes = 0;
unsigned volatile char TxdBuffer[MAX_SENDE_BUFF];
unsigned volatile char RxdBuffer[MAX_EMPFANGS_BUFF];
 
unsigned char *pRxData = 0;
unsigned char RxDataLen = 0;
unsigned volatile char PC_DebugTimeout = 0;
unsigned volatile char PC_MotortestActive = 0;
unsigned char DebugTextAnforderung = 255;
 
unsigned char PcZugriff = 100;
unsigned char MotorTest[16];
unsigned char MeineSlaveAdresse = 1; // Flight-Ctrl
unsigned char ConfirmFrame;
struct str_DebugOut DebugOut;
struct str_ExternControl ExternControl;
struct str_VersionInfo VersionInfo;
struct str_WinkelOut WinkelOut;
struct str_Data3D Data3D;
 
int Display_Timer, Debug_Timer,Kompass_Timer,Timer3D;
unsigned int DebugDataIntervall = 0, Intervall3D = 0, Display_Interval = 0;
unsigned int AboTimeOut = 0;
unsigned volatile char JetiUpdateModeActive = 0;
 
const unsigned char ANALOG_TEXT[32][16] PROGMEM =
{
//1234567890123456
"AngleNick ", //0
"AngleRoll ",
"AccNick ",
"AccRoll ",
"YawGyro ",
"Height Value ", //5
"AccZ ",
"Gas ",
"Compass Value ",
"Voltage [0.1V] ",
"Receiver Level ", //10
"Gyro Compass ",
"Motor 1 ",
"Motor 2 ",
"Motor 3 ",
"Motor 4 ", //15
"16 ",
"17 ",
"18 ",
"19 ",
"Servo ", //20
"Hovergas ",
"Current [0.1A] ",
"Capacity [mAh] ",
"24 ",
"25 ", //25
"26 ",
"27 ",
"I2C-Error ",
"BL Limit ",
"GPS_Nick ", //30
"GPS_Roll "
};
 
 
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//++ Sende-Part der Datenübertragung
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
ISR(USART0_TX_vect)
{
static unsigned int ptr = 0;
unsigned char tmp_tx;
 
if(!UebertragungAbgeschlossen)
{
ptr++; // die [0] wurde schon gesendet
tmp_tx = TxdBuffer[ptr];
if((tmp_tx == '\r') || (ptr == MAX_SENDE_BUFF))
{
ptr = 0;
UebertragungAbgeschlossen = 1;
}
UDR0 = tmp_tx;
}
else ptr = 0;
}
 
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//++ Empfangs-Part der Datenübertragung, incl. CRC-Auswertung
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
ISR(USART0_RX_vect)
{
static unsigned int crc;
static unsigned char crc1,crc2,buf_ptr;
static unsigned char UartState = 0;
unsigned char CrcOkay = 0;
 
if (JetiUpdateModeActive == 1) { UDR1 = UDR0; return; }
if (JetiUpdateModeActive == 2) { RxdBuffer[0] = UDR0; return; }
 
SioTmp = UDR0;
 
if(buf_ptr >= MAX_SENDE_BUFF) UartState = 0;
if(SioTmp == '\r' && UartState == 2)
{
UartState = 0;
crc -= RxdBuffer[buf_ptr-2];
crc -= RxdBuffer[buf_ptr-1];
crc %= 4096;
crc1 = '=' + crc / 64;
crc2 = '=' + crc % 64;
CrcOkay = 0;
if((crc1 == RxdBuffer[buf_ptr-2]) && (crc2 == RxdBuffer[buf_ptr-1])) CrcOkay = 1; else { CrcOkay = 0; CntCrcError++;};
if(!NeuerDatensatzEmpfangen && CrcOkay) // Datensatz schon verarbeitet
{
NeuerDatensatzEmpfangen = 1;
AnzahlEmpfangsBytes = buf_ptr + 1;
RxdBuffer[buf_ptr] = '\r';
if(RxdBuffer[2] == 'R')
{
LcdClear();
wdt_enable(WDTO_250MS); // Reset-Commando
ServoActive = 0;
}
 
}
}
else
switch(UartState)
{
case 0:
if(SioTmp == '#' && !NeuerDatensatzEmpfangen) UartState = 1; // Startzeichen und Daten schon verarbeitet
buf_ptr = 0;
RxdBuffer[buf_ptr++] = SioTmp;
crc = SioTmp;
break;
case 1: // Adresse auswerten
UartState++;
RxdBuffer[buf_ptr++] = SioTmp;
crc += SioTmp;
break;
case 2: // Eingangsdaten sammeln
RxdBuffer[buf_ptr] = SioTmp;
if(buf_ptr < MAX_EMPFANGS_BUFF) buf_ptr++;
else UartState = 0;
crc += SioTmp;
break;
default:
UartState = 0;
break;
}
}
 
 
// --------------------------------------------------------------------------
void AddCRC(unsigned int wieviele)
{
unsigned int tmpCRC = 0,i;
for(i = 0; i < wieviele;i++)
{
tmpCRC += TxdBuffer[i];
}
tmpCRC %= 4096;
TxdBuffer[i++] = '=' + tmpCRC / 64;
TxdBuffer[i++] = '=' + tmpCRC % 64;
TxdBuffer[i++] = '\r';
UebertragungAbgeschlossen = 0;
UDR0 = TxdBuffer[0];
}
 
 
 
// --------------------------------------------------------------------------
void SendOutData(unsigned char cmd,unsigned char address, unsigned char BufferAnzahl, ...) //unsigned char *snd, unsigned char len)
{
va_list ap;
unsigned int pt = 0;
unsigned char a,b,c;
unsigned char ptr = 0;
 
unsigned char *snd = 0;
int len = 0;
 
TxdBuffer[pt++] = '#'; // Startzeichen
TxdBuffer[pt++] = 'a' + address; // Adresse (a=0; b=1,...)
TxdBuffer[pt++] = cmd; // Commando
 
va_start(ap, BufferAnzahl);
if(BufferAnzahl)
{
snd = va_arg(ap, unsigned char*);
len = va_arg(ap, int);
ptr = 0;
BufferAnzahl--;
}
while(len)
{
if(len)
{
a = snd[ptr++];
len--;
if((!len) && BufferAnzahl)
{
snd = va_arg(ap, unsigned char*);
len = va_arg(ap, int);
ptr = 0;
BufferAnzahl--;
}
}
else a = 0;
if(len)
{
b = snd[ptr++];
len--;
if((!len) && BufferAnzahl)
{
snd = va_arg(ap, unsigned char*);
len = va_arg(ap, int);
ptr = 0;
BufferAnzahl--;
}
}
else b = 0;
if(len)
{
c = snd[ptr++];
len--;
if((!len) && BufferAnzahl)
{
snd = va_arg(ap, unsigned char*);
len = va_arg(ap, int);
ptr = 0;
BufferAnzahl--;
}
}
else c = 0;
TxdBuffer[pt++] = '=' + (a >> 2);
TxdBuffer[pt++] = '=' + (((a & 0x03) << 4) | ((b & 0xf0) >> 4));
TxdBuffer[pt++] = '=' + (((b & 0x0f) << 2) | ((c & 0xc0) >> 6));
TxdBuffer[pt++] = '=' + ( c & 0x3f);
}
va_end(ap);
AddCRC(pt);
}
 
// --------------------------------------------------------------------------
void Decode64(void) // die daten werden im rx buffer dekodiert, das geht nur, weil aus 4 byte immer 3 gemacht werden.
{
unsigned char a,b,c,d;
unsigned char x,y,z;
unsigned char ptrIn = 3; // start at begin of data block
unsigned char ptrOut = 3;
unsigned char len = AnzahlEmpfangsBytes - 6; // von der Gesamtbytezahl eines Frames gehen 3 Bytes des Headers ('#',Addr, Cmd) und 3 Bytes des Footers (CRC1, CRC2, '\r') ab.
 
while(len)
{
a = RxdBuffer[ptrIn++] - '=';
b = RxdBuffer[ptrIn++] - '=';
c = RxdBuffer[ptrIn++] - '=';
d = RxdBuffer[ptrIn++] - '=';
 
x = (a << 2) | (b >> 4);
y = ((b & 0x0f) << 4) | (c >> 2);
z = ((c & 0x03) << 6) | d;
 
if(len--) RxdBuffer[ptrOut++] = x; else break;
if(len--) RxdBuffer[ptrOut++] = y; else break;
if(len--) RxdBuffer[ptrOut++] = z; else break;
}
pRxData = (unsigned char*)&RxdBuffer[3]; // decodierte Daten beginnen beim 4. Byte
RxDataLen = ptrOut - 3; // wie viele Bytes wurden dekodiert?
 
}
 
// --------------------------------------------------------------------------
void BearbeiteRxDaten(void)
{
if(!NeuerDatensatzEmpfangen) return;
 
unsigned char tempchar1, tempchar2;
Decode64(); // dekodiere datenblock im Empfangsbuffer
switch(RxdBuffer[1]-'a') // check for Slave Address
{
case FC_ADDRESS: // FC special commands
switch(RxdBuffer[2])
{
case 'K':// Kompasswert
memcpy((unsigned char *)&KompassValue , (unsigned char *)pRxData, sizeof(KompassValue));
KompassRichtung = ((540 + KompassValue - KompassStartwert) % 360) - 180;
break;
case 't':// Motortest
if(AnzahlEmpfangsBytes > 20) memcpy(&MotorTest[0], (unsigned char *)pRxData, sizeof(MotorTest));
else memcpy(&MotorTest[0], (unsigned char *)pRxData, 4);
PC_MotortestActive = 240;
//while(!UebertragungAbgeschlossen);
//SendOutData('T', MeineSlaveAdresse, 0);
PcZugriff = 255;
break;
 
case 'n':// "Get Mixer
while(!UebertragungAbgeschlossen);
SendOutData('N', FC_ADDRESS, 1, (unsigned char *) &Mixer, sizeof(Mixer) - 1);
Debug("Mixer lesen");
break;
 
case 'm':// "Write Mixer
if(pRxData[0] == EEMIXER_REVISION)
{
memcpy(&Mixer, (unsigned char *)pRxData, sizeof(Mixer) - 1);
MixerTable_WriteToEEProm();
tempchar1 = 1;
VersionInfo.HardwareError[1] &= ~FC_ERROR1_MIXER;
}
else
{
tempchar1 = 0;
}
while(!UebertragungAbgeschlossen);
SendOutData('M', FC_ADDRESS, 1, &tempchar1, sizeof(tempchar1));
break;
 
case 'p': // get PPM Channels
GetPPMChannelAnforderung = 1;
PcZugriff = 255;
break;
 
case 'q':// "Get"-Anforderung für Settings
// Bei Get werden die vom PC einstellbaren Werte vom PC zurückgelesen
if((10 <= pRxData[0]) && (pRxData[0] < 20))
{
tempchar1 = pRxData[0] - 10;
if(tempchar1< 1) tempchar1 = 1; // limit to 1
else if(tempchar1 > 5) tempchar1 = 5; // limit to 5
SetDefaultParameter(tempchar1, 1);
}
else if((20 <= pRxData[0]) && (pRxData[0] < 30))
{
tempchar1 = pRxData[0] - 20;
if(tempchar1< 1) tempchar1 = 1; // limit to 1
else if(tempchar1 > 5) tempchar1 = 5; // limit to 5
SetDefaultParameter(tempchar1, 0);
}
else
{
tempchar1 = pRxData[0];
if(tempchar1 == 0xFF)
{
tempchar1 = GetActiveParamSet();
}
if(tempchar1< 1) tempchar1 = 1; // limit to 1
else if(tempchar1 > 5) tempchar1 = 5; // limit to 5
// load requested parameter set
ParamSet_ReadFromEEProm(tempchar1);
}
while(!UebertragungAbgeschlossen);
SendOutData('Q', FC_ADDRESS, 2, &tempchar1, sizeof(tempchar1), (unsigned char *) &EE_Parameter, sizeof(EE_Parameter) - 1);
Debug("Lese Setting %d", tempchar1);
 
break;
 
case 's': // Parametersatz speichern
if((1 <= pRxData[0]) && (pRxData[0] <= 5) && (pRxData[1] == EEPARAM_REVISION)) // check for setting to be in range
{
memcpy(&EE_Parameter, (uint8_t*)&pRxData[1], sizeof(EE_Parameter) - 1);
ParamSet_WriteToEEProm(pRxData[0]);
Umschlag180Nick = (long) EE_Parameter.WinkelUmschlagNick * 2500L;
Umschlag180Roll = (long) EE_Parameter.WinkelUmschlagRoll * 2500L;
tempchar1 = GetActiveParamSet();
}
else
{
tempchar1 = 0; // mark in response an invlid setting
}
while(!UebertragungAbgeschlossen);
SendOutData('S', FC_ADDRESS, 1, &tempchar1, sizeof(tempchar1));
if(!MotorenEin) Piep(tempchar1,110);
LipoDetection(0);
LIBFC_ReceiverInit(EE_Parameter.Receiver);
break;
case 'f': // auf anderen Parametersatz umschalten
if((1 <= pRxData[0]) && (pRxData[0] <= 5)) ParamSet_ReadFromEEProm(pRxData[0]);
tempchar1 = GetActiveParamSet();
while(!UebertragungAbgeschlossen);
SendOutData('F', FC_ADDRESS, 1, &tempchar1, sizeof(tempchar1));
if(!MotorenEin) Piep(tempchar1,110);
LipoDetection(0);
LIBFC_ReceiverInit(EE_Parameter.Receiver);
break;
case 'y':// serial Potis
PPM_in[13] = (signed char) pRxData[0]; PPM_in[14] = (signed char) pRxData[1]; PPM_in[15] = (signed char) pRxData[2]; PPM_in[16] = (signed char) pRxData[3];
PPM_in[17] = (signed char) pRxData[4]; PPM_in[18] = (signed char) pRxData[5]; PPM_in[19] = (signed char) pRxData[6]; PPM_in[20] = (signed char) pRxData[7];
PPM_in[21] = (signed char) pRxData[8]; PPM_in[22] = (signed char) pRxData[9]; PPM_in[23] = (signed char) pRxData[10]; PPM_in[24] = (signed char) pRxData[11];
break;
 
case 'u': // request BL parameter
Debug("Reading BL %d", pRxData[0]);
// try to read BL configuration
tempchar2 = I2C_ReadBLConfig(pRxData[0]);
if(tempchar2 == BLCONFIG_SUCCESS) tempchar1 = 1;
else tempchar1 = 0;
while(!UebertragungAbgeschlossen); // wait for previous frame to be sent
SendOutData('U', FC_ADDRESS, 4, &tempchar1, sizeof(tempchar1), &tempchar2, sizeof(tempchar2), &pRxData[0], 1, &BLConfig, sizeof(BLConfig_t));
break;
 
case 'w': // write BL parameter
Debug("Writing BL %d", pRxData[0]);
if(RxDataLen >= 1+sizeof(BLConfig_t))
{
memcpy(&BLConfig, (uint8_t*)(&pRxData[1]), sizeof(BLConfig_t));
tempchar2 = I2C_WriteBLConfig(pRxData[0]);
if(tempchar2 == BLCONFIG_SUCCESS) tempchar1 = 1;
else tempchar1 = 0; // indicate error
while(!UebertragungAbgeschlossen); // wait for previous frame to be sent
SendOutData('W', FC_ADDRESS,2, &tempchar1, sizeof(tempchar1), &tempchar2, sizeof(tempchar2));
}
break;
case 'j':
tempchar1 = LIBFC_GetCPUType();
if((tempchar1 == CPU_ATMEGA644P) || (tempchar1 == CPU_ATMEGA1284P))
{
uint16_t ubrr = (uint16_t) ((uint32_t) F_CPU/ (8 * 38400L) - 1);
 
cli();
 
// UART0 & UART1 disable RX and TX-Interrupt
UCSR0B &= ~((1 << RXCIE0)|(1 << TXCIE0));
UCSR1B &= ~((1 << RXCIE1)|(1 << TXCIE1));
 
// UART0 & UART1 disable receiver and transmitter
UCSR0B &= ~((1 << TXEN0) | (1 << RXEN0));
UCSR1B &= ~((1 << TXEN1) | (1 << RXEN1));
 
// UART0 & UART1 flush receive buffer explicit
while ( UCSR1A & (1<<RXC1) ) UDR1;
while ( UCSR0A & (1<<RXC0) ) UDR0;
 
 
if (pRxData[0] == 0)
{
JetiUpdateModeActive = 1;
 
// UART0 & UART1 set baudrate
UBRR1H = (uint8_t)(ubrr>>8);
UBRR1L = (uint8_t)ubrr;
UBRR0H = UBRR1H;
UBRR0L = UBRR1L;
// UART1 no parity
UCSR1C &= ~(1 << UPM11);
UCSR1C &= ~(1 << UPM10);
// UART1 8-bit
UCSR1B &= ~(1 << UCSZ12);
UCSR1C |= (1 << UCSZ11);
UCSR1C |= (1 << UCSZ10);
}
else JetiUpdateModeActive = 2;
 
// UART0 & UART1 1 stop bit
UCSR1C &= ~(1 << USBS1);
UCSR0C &= ~(1 << USBS0);
// UART1 clear 9th bit
UCSR1B &= ~(1<<TXB81);
// enable receiver and transmitter for UART0 and UART1
UCSR0B |= (1 << TXEN0) | (1 << RXEN0);
UCSR1B |= (1 << TXEN1) | (1 << RXEN1);
// enable RX-Interrupt for UART0 and UART1
UCSR0B |= (1 << RXCIE0);
UCSR1B |= (1 << RXCIE1);
// disable other Interrupts
TIMSK0 = 0;
TIMSK1 = 0;
TIMSK2 = 0;
 
sei();
}
break;
 
} // case FC_ADDRESS:
 
default: // any Slave Address
 
switch(RxdBuffer[2])
{
// 't' comand placed here only for compatibility to BL
case 't':// Motortest
if(AnzahlEmpfangsBytes >= sizeof(MotorTest)) memcpy(&MotorTest[0], (unsigned char *)pRxData, sizeof(MotorTest));
else memcpy(&MotorTest[0], (unsigned char *)pRxData, 4);
while(!UebertragungAbgeschlossen);
SendOutData('T', MeineSlaveAdresse, 0);
PC_MotortestActive = 250;
PcZugriff = 255;
AboTimeOut = SetDelay(ABO_TIMEOUT);
break;
// 'K' comand placed here only for compatibility to old MK3MAG software, that does not send the right Slave Address
case 'K':// Kompasswert
memcpy((unsigned char *)&KompassValue , (unsigned char *)pRxData, sizeof(KompassValue));
KompassRichtung = ((540 + KompassValue - KompassStartwert) % 360) - 180;
break;
case 'a':// Texte der Analogwerte
DebugTextAnforderung = pRxData[0];
if (DebugTextAnforderung > 31) DebugTextAnforderung = 31;
PcZugriff = 255;
break;
case 'b':
memcpy((unsigned char *)&ExternControl, (unsigned char *)pRxData, sizeof(ExternControl));
ConfirmFrame = ExternControl.Frame;
PcZugriff = 255;
break;
case 'c': // Poll the 3D-Data
if(!Intervall3D) { if(pRxData[0]) Timer3D = SetDelay(pRxData[0] * 10);}
Intervall3D = pRxData[0] * 10;
AboTimeOut = SetDelay(ABO_TIMEOUT);
break;
case 'd': // Poll the debug data
PcZugriff = 255;
DebugDataIntervall = (unsigned int)pRxData[0] * 10;
if(DebugDataIntervall > 0) DebugDataAnforderung = 1;
AboTimeOut = SetDelay(ABO_TIMEOUT);
break;
 
case 'h':// x-1 Displayzeilen
PcZugriff = 255;
if((pRxData[0] & 0x80) == 0x00) // old format
{
DisplayLine = 2;
Display_Interval = 0;
}
else // new format
{
RemoteKeys |= ~pRxData[0];
Display_Interval = (unsigned int)pRxData[1] * 10;
DisplayLine = 4;
AboTimeOut = SetDelay(ABO_TIMEOUT);
}
DebugDisplayAnforderung = 1;
break;
 
case 'l':// x-1 Displayzeilen
PcZugriff = 255;
MenuePunkt = pRxData[0];
DebugDisplayAnforderung1 = 1;
break;
case 'v': // Version-Anforderung und Ausbaustufe
GetVersionAnforderung = 1;
break;
 
case 'g'://
GetExternalControl = 1;
break;
 
default:
//unsupported command received
break;
}
break; // default:
}
NeuerDatensatzEmpfangen = 0;
pRxData = 0;
RxDataLen = 0;
}
 
//############################################################################
//Routine für die Serielle Ausgabe
void uart_putchar (char c)
//############################################################################
{
//Warten solange bis Zeichen gesendet wurde
loop_until_bit_is_set(UCSR0A, UDRE0);
//Ausgabe des Zeichens
UDR0 = c;
}
 
 
//############################################################################
//INstallation der Seriellen Schnittstelle
void UART_Init (void)
//############################################################################
{
unsigned int ubrr = (unsigned int) ((unsigned long) F_CPU/(8 * USART0_BAUD) - 1);
 
//Enable TXEN im Register UCR TX-Data Enable & RX Enable
UCSR0B = (1 << TXEN0) | (1 << RXEN0);
// UART Double Speed (U2X)
UCSR0A |= (1 << U2X0);
// RX-Interrupt Freigabe
UCSR0B |= (1 << RXCIE0);
// TX-Interrupt Freigabe
UCSR0B |= (1 << TXCIE0);
// USART0 Baud Rate Register
// set clock divider
UBRR0H = (uint8_t)(ubrr >> 8);
UBRR0L = (uint8_t)ubrr;
 
Debug_Timer = SetDelay(DebugDataIntervall);
Kompass_Timer = SetDelay(220);
 
VersionInfo.SWMajor = VERSION_MAJOR;
VersionInfo.SWMinor = VERSION_MINOR;
VersionInfo.SWPatch = VERSION_PATCH;
VersionInfo.ProtoMajor = VERSION_SERIAL_MAJOR;
VersionInfo.ProtoMinor = VERSION_SERIAL_MINOR;
 
pRxData = 0;
RxDataLen = 0;
}
 
//---------------------------------------------------------------------------------------------
void DatenUebertragung(void)
{
if(!UebertragungAbgeschlossen) return;
 
if(CheckDelay(AboTimeOut))
{
Display_Interval = 0;
DebugDataIntervall = 0;
Intervall3D = 0;
}
 
if(((Display_Interval>0 && CheckDelay(Display_Timer)) || DebugDisplayAnforderung) && UebertragungAbgeschlossen)
{
if(DisplayLine > 3)// new format
{
Menu();
SendOutData('H', FC_ADDRESS, 1, (uint8_t *)DisplayBuff, 80);
}
else // old format
{
LCD_printfxy(0,0,"!!! INCOMPATIBLE !!!");
SendOutData('H', FC_ADDRESS, 2, &DisplayLine, sizeof(DisplayLine), (uint8_t *)DisplayBuff, 20);
if(DisplayLine++ > 3) DisplayLine = 0;
}
Display_Timer = SetDelay(Display_Interval);
DebugDisplayAnforderung = 0;
}
if(DebugDisplayAnforderung1 && UebertragungAbgeschlossen)
{
Menu();
SendOutData('L', FC_ADDRESS, 3, &MenuePunkt, sizeof(MenuePunkt), &MaxMenue, sizeof(MaxMenue), DisplayBuff, sizeof(DisplayBuff));
DebugDisplayAnforderung1 = 0;
}
if(GetVersionAnforderung && UebertragungAbgeschlossen)
{
SendOutData('V', FC_ADDRESS, 1, (unsigned char *) &VersionInfo, sizeof(VersionInfo));
GetVersionAnforderung = 0;
Debug_OK("Version gesendet");
}
 
if(GetExternalControl && UebertragungAbgeschlossen) // Bei Get werden die vom PC einstellbaren Werte vom PC zurückgelesen
{
SendOutData('G',MeineSlaveAdresse, 1, (unsigned char *) &ExternControl, sizeof(ExternControl));
GetExternalControl = 0;
}
if((CheckDelay(Kompass_Timer)) && UebertragungAbgeschlossen)
{
WinkelOut.Winkel[0] = (int) (IntegralNick / (EE_Parameter.GyroAccFaktor * 4)); // etwa in 0.1 Grad
WinkelOut.Winkel[1] = (int) (IntegralRoll / (EE_Parameter.GyroAccFaktor * 4)); // etwa in 0.1 Grad
WinkelOut.UserParameter[0] = Parameter_UserParam1;
WinkelOut.UserParameter[1] = Parameter_UserParam2;
SendOutData('k', MK3MAG_ADDRESS, 1, (unsigned char *) &WinkelOut,sizeof(WinkelOut));
if(WinkelOut.CalcState > 4) WinkelOut.CalcState = 6; // wird dann in SPI auf Null gesetzt
Kompass_Timer = SetDelay(99);
}
if(((DebugDataIntervall>0 && CheckDelay(Debug_Timer)) || DebugDataAnforderung) && UebertragungAbgeschlossen)
{
CopyDebugValues();
SendOutData('D', FC_ADDRESS, 1, (unsigned char *) &DebugOut,sizeof(DebugOut));
DebugDataAnforderung = 0;
if(DebugDataIntervall>0) Debug_Timer = SetDelay(DebugDataIntervall);
}
if(Intervall3D > 0 && CheckDelay(Timer3D) && UebertragungAbgeschlossen)
{
Data3D.Winkel[0] = (int) (IntegralNick / (EE_Parameter.GyroAccFaktor * 4)); // etwa in 0.1 Grad
Data3D.Winkel[1] = (int) (IntegralRoll / (EE_Parameter.GyroAccFaktor * 4)); // etwa in 0.1 Grad
Data3D.Winkel[2] = (int) ((10 * ErsatzKompass) / GIER_GRAD_FAKTOR);
Data3D.Centroid[0] = SummeNick >> 9;
Data3D.Centroid[1] = SummeRoll >> 9;
Data3D.Centroid[2] = Mess_Integral_Gier >> 9;
SendOutData('C', FC_ADDRESS, 1, (unsigned char *) &Data3D,sizeof(Data3D));
Timer3D = SetDelay(Intervall3D);
}
if(DebugTextAnforderung != 255) // Texte für die Analogdaten
{
unsigned char label[16]; // local sram buffer
memcpy_P(label, ANALOG_TEXT[DebugTextAnforderung], 16); // read lable from flash to sra
SendOutData('A', FC_ADDRESS, 2, (unsigned char *)&DebugTextAnforderung, sizeof(DebugTextAnforderung),label, 16);
DebugTextAnforderung = 255;
}
if(ConfirmFrame && UebertragungAbgeschlossen) // Datensatz bestätigen
{
SendOutData('B', FC_ADDRESS, 1, (uint8_t*)&ConfirmFrame, sizeof(ConfirmFrame));
ConfirmFrame = 0;
}
 
if(GetPPMChannelAnforderung && UebertragungAbgeschlossen)
{
SendOutData('P', FC_ADDRESS, 1, (unsigned char *) &PPM_in, sizeof(PPM_in));
GetPPMChannelAnforderung = 0;
}
 
#ifdef DEBUG // only include functions if DEBUG is defined
if(SendDebugOutput && UebertragungAbgeschlossen)
{
SendOutData('0', FC_ADDRESS, 1, (unsigned char *) &tDebug, sizeof(tDebug));
SendDebugOutput = 0;
}
#endif
 
}
 
 
/branches/metro/v0.82a metro_Akku+/uart.d
0,0 → 1,3
uart.o uart.d : uart.c main.h old_macros.h printf_P.h timer0.h uart.h analog.h \
twimaster.h menu.h rc.h fc.h gps.h spi.h led.h spektrum.h capacity.h \
eeprom.h libfc.h debug.h
/branches/metro/v0.82a metro_Akku+/uart.h
0,0 → 1,107
#ifndef _UART_H
#define _UART_H
 
#define printf_P(format, args...) _printf_P(&uart_putchar, format , ## args)
#define printf(format, args...) _printf_P(&uart_putchar, PSTR(format) , ## args)
 
void BearbeiteRxDaten(void);
 
extern unsigned char DebugGetAnforderung;
extern unsigned volatile char JetiUpdateModeActive;
extern unsigned volatile char UebertragungAbgeschlossen;
extern unsigned volatile char PC_DebugTimeout;
extern unsigned volatile char NeueKoordinateEmpfangen;
extern unsigned volatile char PC_MotortestActive;
extern unsigned char MeineSlaveAdresse;
extern unsigned char PcZugriff;
extern unsigned char RemotePollDisplayLine;
extern unsigned volatile char RxdBuffer[];
extern int Debug_Timer,Kompass_Timer;
extern void UART_Init (void);
extern void uart_putchar (char c);
extern void boot_program_page (uint32_t page, uint8_t *buf);
extern void DatenUebertragung(void);
extern void Uart1Init(void);
extern void BearbeiteRxDaten(void);
extern unsigned char MotorTest[16];
struct str_DebugOut
{
unsigned char Status[2];
signed int Analog[32]; // Debugwerte
};
 
extern struct str_DebugOut DebugOut;
 
struct str_WinkelOut
{
signed int Winkel[2];
unsigned char UserParameter[2];
unsigned char CalcState;
unsigned char Orientation;
};
extern struct str_WinkelOut WinkelOut;
 
struct str_Data3D
{
signed int Winkel[3]; // nick, roll, compass in 0,1°
signed char Centroid[3];
signed char reserve[5];
};
extern struct str_Data3D Data3D;
 
struct str_ExternControl
{
unsigned char Digital[2];
unsigned char RemoteTasten;
signed char Nick;
signed char Roll;
signed char Gier;
unsigned char Gas;
signed char Hight;
unsigned char free;
unsigned char Frame;
unsigned char Config;
};
extern struct str_ExternControl ExternControl;
 
// FC hardware errors
 
// bitmask for UART_VersionInfo_t.HardwareError[0]
#define FC_ERROR0_GYRO_NICK 0x01
#define FC_ERROR0_GYRO_ROLL 0x02
#define FC_ERROR0_GYRO_YAW 0x04
#define FC_ERROR0_ACC_NICK 0x08
#define FC_ERROR0_ACC_ROLL 0x10
#define FC_ERROR0_ACC_TOP 0x20
#define FC_ERROR0_PRESSURE 0x40
#define FC_ERROR0_CAREFREE 0x80
// bitmask for UART_VersionInfo_t.HardwareError[1]
#define FC_ERROR1_I2C 0x01
#define FC_ERROR1_BL_MISSING 0x02
#define FC_ERROR1_SPI_RX 0x04
#define FC_ERROR1_PPM 0x08
#define FC_ERROR1_MIXER 0x10
#define FC_ERROR1_RES1 0x20
#define FC_ERROR1_RES2 0x40
#define FC_ERROR1_RES3 0x80
 
struct str_VersionInfo
{
unsigned char SWMajor;
unsigned char SWMinor;
unsigned char ProtoMajor;
unsigned char ProtoMinor;
unsigned char SWPatch;
unsigned char HardwareError[5];
};
 
extern struct str_VersionInfo VersionInfo;
 
//#define USART0_BAUD 9600
//#define USART0_BAUD 14400
//#define USART0_BAUD 28800
//#define USART0_BAUD 38400
#define USART0_BAUD 57600
 
 
#endif //_UART_H
/branches/metro/v0.82a metro_Akku+/uart.lst
0,0 → 1,2677
1 .file "uart.c"
2 .arch atmega644p
3 __SREG__ = 0x3f
4 __SP_H__ = 0x3e
5 __SP_L__ = 0x3d
6 __tmp_reg__ = 0
7 __zero_reg__ = 1
8 .global __do_copy_data
9 .global __do_clear_bss
10 .global ANALOG_TEXT
11 .section .progmem.data,"a",@progbits
14 ANALOG_TEXT:
15 0000 416E 676C .ascii "AngleNick "
15 654E 6963
15 6B20 2020
15 2020 2020
16 0010 416E 676C .ascii "AngleRoll "
16 6552 6F6C
16 6C20 2020
16 2020 2020
17 0020 4163 634E .ascii "AccNick "
17 6963 6B20
17 2020 2020
17 2020 2020
18 0030 4163 6352 .ascii "AccRoll "
18 6F6C 6C20
18 2020 2020
18 2020 2020
19 0040 5961 7747 .ascii "YawGyro "
19 7972 6F20
19 2020 2020
19 2020 2020
20 0050 4865 6967 .ascii "Height Value "
20 6874 2056
20 616C 7565
20 2020 2020
21 0060 4163 635A .ascii "AccZ "
21 2020 2020
21 2020 2020
21 2020 2020
22 0070 4761 7320 .ascii "Gas "
22 2020 2020
22 2020 2020
22 2020 2020
23 0080 436F 6D70 .ascii "Compass Value "
23 6173 7320
23 5661 6C75
23 6520 2020
24 0090 566F 6C74 .ascii "Voltage [0.1V] "
24 6167 6520
24 5B30 2E31
24 565D 2020
25 00a0 5265 6365 .ascii "Receiver Level "
25 6976 6572
25 204C 6576
25 656C 2020
26 00b0 4779 726F .ascii "Gyro Compass "
26 2043 6F6D
26 7061 7373
26 2020 2020
27 00c0 4D6F 746F .ascii "Motor 1 "
27 7220 3120
27 2020 2020
27 2020 2020
28 00d0 4D6F 746F .ascii "Motor 2 "
28 7220 3220
28 2020 2020
28 2020 2020
29 00e0 4D6F 746F .ascii "Motor 3 "
29 7220 3320
29 2020 2020
29 2020 2020
30 00f0 4D6F 746F .ascii "Motor 4 "
30 7220 3420
30 2020 2020
30 2020 2020
31 0100 3136 2020 .ascii "16 "
31 2020 2020
31 2020 2020
31 2020 2020
32 0110 3137 2020 .ascii "17 "
32 2020 2020
32 2020 2020
32 2020 2020
33 0120 3138 2020 .ascii "18 "
33 2020 2020
33 2020 2020
33 2020 2020
34 0130 3139 2020 .ascii "19 "
34 2020 2020
34 2020 2020
34 2020 2020
35 0140 5365 7276 .ascii "Servo "
35 6F20 2020
35 2020 2020
35 2020 2020
36 0150 486F 7665 .ascii "Hovergas "
36 7267 6173
36 2020 2020
36 2020 2020
37 0160 4375 7272 .ascii "Current [0.1A] "
37 656E 7420
37 5B30 2E31
37 415D 2020
38 0170 4361 7061 .ascii "Capacity [mAh] "
38 6369 7479
38 205B 6D41
38 685D 2020
39 0180 3234 2020 .ascii "24 "
39 2020 2020
39 2020 2020
39 2020 2020
40 0190 3235 2020 .ascii "25 "
40 2020 2020
40 2020 2020
40 2020 2020
41 01a0 3236 2020 .ascii "26 "
41 2020 2020
41 2020 2020
41 2020 2020
42 01b0 3237 2020 .ascii "27 "
42 2020 2020
42 2020 2020
42 2020 2020
43 01c0 4932 432D .ascii "I2C-Error "
43 4572 726F
43 7220 2020
43 2020 2020
44 01d0 424C 204C .ascii "BL Limit "
44 696D 6974
44 2020 2020
44 2020 2020
45 01e0 4750 535F .ascii "GPS_Nick "
45 4E69 636B
45 2020 2020
45 2020 2020
46 01f0 4750 535F .ascii "GPS_Roll "
46 526F 6C6C
46 2020 2020
46 2020 2020
47 .global JetiUpdateModeActive
48 .global JetiUpdateModeActive
49 .section .bss
52 JetiUpdateModeActive:
53 0000 00 .skip 1,0
54 .global AboTimeOut
55 .global AboTimeOut
58 AboTimeOut:
59 0001 0000 .skip 2,0
60 .global Display_Interval
61 .global Display_Interval
64 Display_Interval:
65 0003 0000 .skip 2,0
66 .global Intervall3D
67 .global Intervall3D
70 Intervall3D:
71 0005 0000 .skip 2,0
72 .global DebugDataIntervall
73 .global DebugDataIntervall
76 DebugDataIntervall:
77 0007 0000 .skip 2,0
78 .global MeineSlaveAdresse
79 .data
82 MeineSlaveAdresse:
83 0000 01 .byte 1
84 .global PcZugriff
87 PcZugriff:
88 0001 64 .byte 100
89 .global DebugTextAnforderung
92 DebugTextAnforderung:
93 0002 FF .byte -1
94 .global PC_MotortestActive
95 .global PC_MotortestActive
96 .section .bss
99 PC_MotortestActive:
100 0009 00 .skip 1,0
101 .global PC_DebugTimeout
102 .global PC_DebugTimeout
105 PC_DebugTimeout:
106 000a 00 .skip 1,0
107 .global RxDataLen
108 .global RxDataLen
111 RxDataLen:
112 000b 00 .skip 1,0
113 .global pRxData
114 .global pRxData
117 pRxData:
118 000c 0000 .skip 2,0
119 .global AnzahlEmpfangsBytes
120 .global AnzahlEmpfangsBytes
123 AnzahlEmpfangsBytes:
124 000e 00 .skip 1,0
125 .global CntCrcError
126 .global CntCrcError
129 CntCrcError:
130 000f 00 .skip 1,0
131 .global UebertragungAbgeschlossen
132 .data
135 UebertragungAbgeschlossen:
136 0003 01 .byte 1
137 .global NeueKoordinateEmpfangen
138 .global NeueKoordinateEmpfangen
139 .section .bss
142 NeueKoordinateEmpfangen:
143 0010 00 .skip 1,0
144 .global NeuerDatensatzEmpfangen
145 .global NeuerDatensatzEmpfangen
148 NeuerDatensatzEmpfangen:
149 0011 00 .skip 1,0
150 .global SioTmp
151 .global SioTmp
154 SioTmp:
155 0012 00 .skip 1,0
156 .global DisplayLine
157 .global DisplayLine
160 DisplayLine:
161 0013 00 .skip 1,0
162 .global GetPPMChannelAnforderung
163 .global GetPPMChannelAnforderung
166 GetPPMChannelAnforderung:
167 0014 00 .skip 1,0
168 .global GetVersionAnforderung
169 .global GetVersionAnforderung
172 GetVersionAnforderung:
173 0015 00 .skip 1,0
174 .global DebugDataAnforderung
175 .global DebugDataAnforderung
178 DebugDataAnforderung:
179 0016 00 .skip 1,0
180 .global DebugDisplayAnforderung
181 .global DebugDisplayAnforderung
184 DebugDisplayAnforderung:
185 0017 00 .skip 1,0
186 .global DebugDisplayAnforderung1
187 .global DebugDisplayAnforderung1
190 DebugDisplayAnforderung1:
191 0018 00 .skip 1,0
192 .global GetExternalControl
193 .global GetExternalControl
196 GetExternalControl:
197 0019 00 .skip 1,0
198 .lcomm ptr.6,2
199 .text
200 .global __vector_22
202 __vector_22:
203 /* prologue: frame size=0 */
204 0000 1F92 push __zero_reg__
205 0002 0F92 push __tmp_reg__
206 0004 0FB6 in __tmp_reg__,__SREG__
207 0006 0F92 push __tmp_reg__
208 0008 1124 clr __zero_reg__
209 000a 8F93 push r24
210 000c 9F93 push r25
211 000e EF93 push r30
212 0010 FF93 push r31
213 /* prologue end (size=9) */
214 0012 8091 0000 lds r24,UebertragungAbgeschlossen
215 0016 8823 tst r24
216 0018 E1F4 brne .L2
217 001a 8091 0000 lds r24,ptr.6
218 001e 9091 0000 lds r25,(ptr.6)+1
219 0022 0196 adiw r24,1
220 0024 9093 0000 sts (ptr.6)+1,r25
221 0028 8093 0000 sts ptr.6,r24
222 002c FC01 movw r30,r24
223 002e E050 subi r30,lo8(-(TxdBuffer))
224 0030 F040 sbci r31,hi8(-(TxdBuffer))
225 0032 E081 ld r30,Z
226 0034 ED30 cpi r30,lo8(13)
227 0036 19F0 breq .L4
228 0038 8A3A cpi r24,170
229 003a 9105 cpc r25,__zero_reg__
230 003c 39F4 brne .L3
231 .L4:
232 003e 1092 0000 sts (ptr.6)+1,__zero_reg__
233 0042 1092 0000 sts ptr.6,__zero_reg__
234 0046 81E0 ldi r24,lo8(1)
235 0048 8093 0000 sts UebertragungAbgeschlossen,r24
236 .L3:
237 004c E093 C600 sts 198,r30
238 0050 04C0 rjmp .L1
239 .L2:
240 0052 1092 0000 sts (ptr.6)+1,__zero_reg__
241 0056 1092 0000 sts ptr.6,__zero_reg__
242 .L1:
243 /* epilogue: frame size=0 */
244 005a FF91 pop r31
245 005c EF91 pop r30
246 005e 9F91 pop r25
247 0060 8F91 pop r24
248 0062 0F90 pop __tmp_reg__
249 0064 0FBE out __SREG__,__tmp_reg__
250 0066 0F90 pop __tmp_reg__
251 0068 1F90 pop __zero_reg__
252 006a 1895 reti
253 /* epilogue end (size=9) */
254 /* function __vector_22 size 54 (36) */
256 .lcomm crc.1,2
257 .lcomm crc1.2,1
258 .lcomm crc2.3,1
259 .lcomm buf_ptr.4,1
260 .lcomm UartState.5,1
261 .global __vector_20
263 __vector_20:
264 /* prologue: frame size=0 */
265 006c 1F92 push __zero_reg__
266 006e 0F92 push __tmp_reg__
267 0070 0FB6 in __tmp_reg__,__SREG__
268 0072 0F92 push __tmp_reg__
269 0074 1124 clr __zero_reg__
270 0076 2F93 push r18
271 0078 3F93 push r19
272 007a 4F93 push r20
273 007c 5F93 push r21
274 007e 6F93 push r22
275 0080 7F93 push r23
276 0082 8F93 push r24
277 0084 9F93 push r25
278 0086 AF93 push r26
279 0088 BF93 push r27
280 008a CF93 push r28
281 008c EF93 push r30
282 008e FF93 push r31
283 /* prologue end (size=18) */
284 0090 90E0 ldi r25,lo8(0)
285 0092 8091 0000 lds r24,JetiUpdateModeActive
286 0096 8130 cpi r24,lo8(1)
287 0098 29F4 brne .L7
288 009a 8091 C600 lds r24,198
289 009e 8093 CE00 sts 206,r24
290 00a2 CCC0 rjmp .L6
291 .L7:
292 00a4 8091 0000 lds r24,JetiUpdateModeActive
293 00a8 8230 cpi r24,lo8(2)
294 00aa 29F4 brne .L8
295 00ac 8091 C600 lds r24,198
296 00b0 8093 0000 sts RxdBuffer,r24
297 00b4 C3C0 rjmp .L6
298 .L8:
299 00b6 8091 C600 lds r24,198
300 00ba 8093 0000 sts SioTmp,r24
301 00be 5091 0000 lds r21,buf_ptr.4
302 00c2 5A3A cpi r21,lo8(-86)
303 00c4 10F0 brlo .L9
304 00c6 9093 0000 sts UartState.5,r25
305 .L9:
306 00ca 8091 0000 lds r24,SioTmp
307 00ce 8D30 cpi r24,lo8(13)
308 00d0 09F0 breq .+2
309 00d2 65C0 rjmp .L10
310 00d4 8091 0000 lds r24,UartState.5
311 00d8 8230 cpi r24,lo8(2)
312 00da 09F0 breq .+2
313 00dc 60C0 rjmp .L10
314 00de 9093 0000 sts UartState.5,r25
315 00e2 852F mov r24,r21
316 00e4 9927 clr r25
317 00e6 8050 subi r24,lo8(-(RxdBuffer))
318 00e8 9040 sbci r25,hi8(-(RxdBuffer))
319 00ea FC01 movw r30,r24
320 00ec 3297 sbiw r30,2
321 00ee 4081 ld r20,Z
322 00f0 2091 0000 lds r18,crc.1
323 00f4 3091 0000 lds r19,(crc.1)+1
324 00f8 241B sub r18,r20
325 00fa 3109 sbc r19,__zero_reg__
326 00fc DC01 movw r26,r24
327 00fe 1197 sbiw r26,1
328 0100 8C91 ld r24,X
329 0102 281B sub r18,r24
330 0104 3109 sbc r19,__zero_reg__
331 0106 C901 movw r24,r18
332 0108 9F70 andi r25,hi8(4095)
333 010a 9093 0000 sts (crc.1)+1,r25
334 010e 8093 0000 sts crc.1,r24
335 0112 46E0 ldi r20,6
336 0114 9695 1: lsr r25
337 0116 8795 ror r24
338 0118 4A95 dec r20
339 011a E1F7 brne 1b
340 011c 982F mov r25,r24
341 011e 935C subi r25,lo8(-(61))
342 0120 9093 0000 sts crc1.2,r25
343 0124 2F73 andi r18,lo8(63)
344 0126 3070 andi r19,hi8(63)
345 0128 235C subi r18,lo8(-(61))
346 012a 2093 0000 sts crc2.3,r18
347 012e 8081 ld r24,Z
348 0130 9817 cp r25,r24
349 0132 29F4 brne .L11
350 0134 8C91 ld r24,X
351 0136 2817 cp r18,r24
352 0138 11F4 brne .L11
353 013a 91E0 ldi r25,lo8(1)
354 013c 06C0 rjmp .L12
355 .L11:
356 013e 90E0 ldi r25,lo8(0)
357 0140 8091 0000 lds r24,CntCrcError
358 0144 8F5F subi r24,lo8(-(1))
359 0146 8093 0000 sts CntCrcError,r24
360 .L12:
361 014a C091 0000 lds r28,NeuerDatensatzEmpfangen
362 014e CC23 tst r28
363 0150 09F0 breq .+2
364 0152 74C0 rjmp .L6
365 0154 9923 tst r25
366 0156 09F4 brne .+2
367 0158 71C0 rjmp .L6
368 015a 81E0 ldi r24,lo8(1)
369 015c 8093 0000 sts NeuerDatensatzEmpfangen,r24
370 0160 580F add r21,r24
371 0162 5093 0000 sts AnzahlEmpfangsBytes,r21
372 0166 5150 subi r21,lo8(-(-1))
373 0168 E52F mov r30,r21
374 016a FF27 clr r31
375 016c E050 subi r30,lo8(-(RxdBuffer))
376 016e F040 sbci r31,hi8(-(RxdBuffer))
377 0170 8DE0 ldi r24,lo8(13)
378 0172 8083 st Z,r24
379 0174 8091 0000 lds r24,RxdBuffer+2
380 0178 8235 cpi r24,lo8(82)
381 017a 09F0 breq .+2
382 017c 5FC0 rjmp .L6
383 017e 0E94 0000 call LcdClear
384 0182 88E1 ldi r24,lo8(24)
385 0184 90E0 ldi r25,hi8(24)
386 0186 2CE0 ldi r18,lo8(12)
387 /* #APP */
388 0188 0FB6 in __tmp_reg__,__SREG__
389 018a F894 cli
390 018c A895 wdr
391 018e 8093 6000 sts 96,r24
392 0192 0FBE out __SREG__,__tmp_reg__
393 0194 2093 6000 sts 96,r18
394 /* #NOAPP */
395 0198 C093 0000 sts ServoActive,r28
396 019c 4FC0 rjmp .L6
397 .L10:
398 019e 2091 0000 lds r18,UartState.5
399 01a2 822F mov r24,r18
400 01a4 9927 clr r25
401 01a6 8130 cpi r24,1
402 01a8 9105 cpc r25,__zero_reg__
403 01aa F9F0 breq .L19
404 01ac 8230 cpi r24,2
405 01ae 9105 cpc r25,__zero_reg__
406 01b0 1CF4 brge .L24
407 01b2 892B or r24,r25
408 01b4 21F0 breq .L17
409 01b6 40C0 rjmp .L23
410 .L24:
411 01b8 0297 sbiw r24,2
412 01ba 11F1 breq .L20
413 01bc 3DC0 rjmp .L23
414 .L17:
415 01be 8091 0000 lds r24,SioTmp
416 01c2 8332 cpi r24,lo8(35)
417 01c4 39F4 brne .L18
418 01c6 8091 0000 lds r24,NeuerDatensatzEmpfangen
419 01ca 8823 tst r24
420 01cc 19F4 brne .L18
421 01ce 81E0 ldi r24,lo8(1)
422 01d0 8093 0000 sts UartState.5,r24
423 .L18:
424 01d4 8091 0000 lds r24,SioTmp
425 01d8 8093 0000 sts RxdBuffer,r24
426 01dc 81E0 ldi r24,lo8(1)
427 01de 8093 0000 sts buf_ptr.4,r24
428 01e2 8091 0000 lds r24,SioTmp
429 01e6 9927 clr r25
430 01e8 22C0 rjmp .L25
431 .L19:
432 01ea 2F5F subi r18,lo8(-(1))
433 01ec 2093 0000 sts UartState.5,r18
434 01f0 E52F mov r30,r21
435 01f2 FF27 clr r31
436 01f4 E050 subi r30,lo8(-(RxdBuffer))
437 01f6 F040 sbci r31,hi8(-(RxdBuffer))
438 01f8 8091 0000 lds r24,SioTmp
439 01fc 8083 st Z,r24
440 01fe 09C0 rjmp .L26
441 .L20:
442 0200 E52F mov r30,r21
443 0202 FF27 clr r31
444 0204 E050 subi r30,lo8(-(RxdBuffer))
445 0206 F040 sbci r31,hi8(-(RxdBuffer))
446 0208 8091 0000 lds r24,SioTmp
447 020c 8083 st Z,r24
448 020e 5A3A cpi r21,lo8(-86)
449 0210 20F4 brsh .L21
450 .L26:
451 0212 5F5F subi r21,lo8(-(1))
452 0214 5093 0000 sts buf_ptr.4,r21
453 0218 02C0 rjmp .L22
454 .L21:
455 021a 1092 0000 sts UartState.5,__zero_reg__
456 .L22:
457 021e 2091 0000 lds r18,SioTmp
458 0222 8091 0000 lds r24,crc.1
459 0226 9091 0000 lds r25,(crc.1)+1
460 022a 820F add r24,r18
461 022c 911D adc r25,__zero_reg__
462 .L25:
463 022e 9093 0000 sts (crc.1)+1,r25
464 0232 8093 0000 sts crc.1,r24
465 0236 02C0 rjmp .L6
466 .L23:
467 0238 1092 0000 sts UartState.5,__zero_reg__
468 .L6:
469 /* epilogue: frame size=0 */
470 023c FF91 pop r31
471 023e EF91 pop r30
472 0240 CF91 pop r28
473 0242 BF91 pop r27
474 0244 AF91 pop r26
475 0246 9F91 pop r25
476 0248 8F91 pop r24
477 024a 7F91 pop r23
478 024c 6F91 pop r22
479 024e 5F91 pop r21
480 0250 4F91 pop r20
481 0252 3F91 pop r19
482 0254 2F91 pop r18
483 0256 0F90 pop __tmp_reg__
484 0258 0FBE out __SREG__,__tmp_reg__
485 025a 0F90 pop __tmp_reg__
486 025c 1F90 pop __zero_reg__
487 025e 1895 reti
488 /* epilogue end (size=18) */
489 /* function __vector_20 size 256 (220) */
491 .global AddCRC
493 AddCRC:
494 /* prologue: frame size=0 */
495 /* prologue end (size=0) */
496 0260 AC01 movw r20,r24
497 0262 A0E0 ldi r26,lo8(0)
498 0264 B0E0 ldi r27,hi8(0)
499 0266 9D01 movw r18,r26
500 0268 A817 cp r26,r24
501 026a B907 cpc r27,r25
502 026c 48F4 brsh .L33
503 026e E0E0 ldi r30,lo8(TxdBuffer)
504 0270 F0E0 ldi r31,hi8(TxdBuffer)
505 .L31:
506 0272 8191 ld r24,Z+
507 0274 280F add r18,r24
508 0276 311D adc r19,__zero_reg__
509 0278 1196 adiw r26,1
510 027a A417 cp r26,r20
511 027c B507 cpc r27,r21
512 027e C8F3 brlo .L31
513 .L33:
514 0280 3F70 andi r19,hi8(4095)
515 0282 FD01 movw r30,r26
516 0284 E050 subi r30,lo8(-(TxdBuffer))
517 0286 F040 sbci r31,hi8(-(TxdBuffer))
518 0288 C901 movw r24,r18
519 028a 56E0 ldi r21,6
520 028c 9695 1: lsr r25
521 028e 8795 ror r24
522 0290 5A95 dec r21
523 0292 E1F7 brne 1b
524 0294 835C subi r24,lo8(-(61))
525 0296 8083 st Z,r24
526 0298 1196 adiw r26,1
527 029a FD01 movw r30,r26
528 029c E050 subi r30,lo8(-(TxdBuffer))
529 029e F040 sbci r31,hi8(-(TxdBuffer))
530 02a0 2F73 andi r18,lo8(63)
531 02a2 3070 andi r19,hi8(63)
532 02a4 822F mov r24,r18
533 02a6 835C subi r24,lo8(-(61))
534 02a8 8083 st Z,r24
535 02aa A050 subi r26,lo8(-(TxdBuffer+1))
536 02ac B040 sbci r27,hi8(-(TxdBuffer+1))
537 02ae 8DE0 ldi r24,lo8(13)
538 02b0 8C93 st X,r24
539 02b2 1092 0000 sts UebertragungAbgeschlossen,__zero_reg__
540 02b6 8091 0000 lds r24,TxdBuffer
541 02ba 8093 C600 sts 198,r24
542 /* epilogue: frame size=0 */
543 02be 0895 ret
544 /* epilogue end (size=1) */
545 /* function AddCRC size 49 (48) */
547 .global SendOutData
549 SendOutData:
550 /* prologue: frame size=0 */
551 02c0 A0E0 ldi r26,lo8(0)
552 02c2 B0E0 ldi r27,hi8(0)
553 02c4 E0E0 ldi r30,pm_lo8(1f)
554 02c6 F0E0 ldi r31,pm_hi8(1f)
555 02c8 0C94 0000 jmp __prologue_saves__+18
556 1:
557 /* prologue end (size=6) */
558 02cc 2C85 ldd r18,Y+12
559 02ce 9D85 ldd r25,Y+13
560 02d0 0E85 ldd r16,Y+14
561 02d2 BB24 clr r11
562 02d4 83E2 ldi r24,lo8(35)
563 02d6 8093 0000 sts TxdBuffer,r24
564 02da 9F59 subi r25,lo8(-(97))
565 02dc 9093 0000 sts TxdBuffer+1,r25
566 02e0 2093 0000 sts TxdBuffer+2,r18
567 02e4 33E0 ldi r19,lo8(3)
568 02e6 E32E mov r14,r19
569 02e8 F12C mov r15,__zero_reg__
570 02ea 0023 tst r16
571 02ec 09F4 brne .+2
572 02ee 9EC0 rjmp .L49
573 02f0 CF84 ldd r12,Y+15
574 02f2 D888 ldd r13,Y+16
575 02f4 BE01 movw r22,r28
576 02f6 6D5E subi r22,lo8(-(19))
577 02f8 7F4F sbci r23,hi8(-(19))
578 02fa A989 ldd r26,Y+17
579 02fc BA89 ldd r27,Y+18
580 02fe 0150 subi r16,lo8(-(-1))
581 .L50:
582 0300 1097 sbiw r26,0
583 0302 09F4 brne .+2
584 0304 93C0 rjmp .L49
585 0306 1097 sbiw r26,0
586 0308 B9F0 breq .L38
587 030a F601 movw r30,r12
588 030c EB0D add r30,r11
589 030e F11D adc r31,__zero_reg__
590 0310 B394 inc r11
591 0312 9081 ld r25,Z
592 0314 1197 sbiw r26,1
593 0316 91F4 brne .L40
594 0318 0023 tst r16
595 031a 49F1 breq .L41
596 031c FB01 movw r30,r22
597 031e 6E5F subi r22,lo8(-(2))
598 0320 7F4F sbci r23,hi8(-(2))
599 0322 DB01 movw r26,r22
600 0324 C080 ld r12,Z
601 0326 D180 ldd r13,Z+1
602 0328 6E5F subi r22,lo8(-(2))
603 032a 7F4F sbci r23,hi8(-(2))
604 032c 0D90 ld __tmp_reg__,X+
605 032e BC91 ld r27,X
606 0330 A02D mov r26,__tmp_reg__
607 0332 BB24 clr r11
608 0334 0150 subi r16,lo8(-(-1))
609 0336 02C0 rjmp .L40
610 .L38:
611 0338 90E0 ldi r25,lo8(0)
612 033a 19C0 rjmp .L41
613 .L40:
614 033c 1097 sbiw r26,0
615 033e B9F0 breq .L41
616 0340 F601 movw r30,r12
617 0342 EB0D add r30,r11
618 0344 F11D adc r31,__zero_reg__
619 0346 B394 inc r11
620 0348 4081 ld r20,Z
621 034a 1197 sbiw r26,1
622 034c 91F4 brne .L43
623 034e 0023 tst r16
624 0350 41F1 breq .L44
625 0352 FB01 movw r30,r22
626 0354 6E5F subi r22,lo8(-(2))
627 0356 7F4F sbci r23,hi8(-(2))
628 0358 DB01 movw r26,r22
629 035a C080 ld r12,Z
630 035c D180 ldd r13,Z+1
631 035e 6E5F subi r22,lo8(-(2))
632 0360 7F4F sbci r23,hi8(-(2))
633 0362 0D90 ld __tmp_reg__,X+
634 0364 BC91 ld r27,X
635 0366 A02D mov r26,__tmp_reg__
636 0368 BB24 clr r11
637 036a 0150 subi r16,lo8(-(-1))
638 036c 02C0 rjmp .L43
639 .L41:
640 036e 40E0 ldi r20,lo8(0)
641 0370 18C0 rjmp .L44
642 .L43:
643 0372 1097 sbiw r26,0
644 0374 B1F0 breq .L44
645 0376 F601 movw r30,r12
646 0378 EB0D add r30,r11
647 037a F11D adc r31,__zero_reg__
648 037c B394 inc r11
649 037e 1081 ld r17,Z
650 0380 1197 sbiw r26,1
651 0382 81F4 brne .L46
652 0384 0023 tst r16
653 0386 71F0 breq .L46
654 0388 FB01 movw r30,r22
655 038a 3296 adiw r30,2
656 038c DB01 movw r26,r22
657 038e CD90 ld r12,X+
658 0390 DC90 ld r13,X
659 0392 BF01 movw r22,r30
660 0394 6E5F subi r22,lo8(-(2))
661 0396 7F4F sbci r23,hi8(-(2))
662 0398 A081 ld r26,Z
663 039a B181 ldd r27,Z+1
664 039c BB24 clr r11
665 039e 0150 subi r16,lo8(-(-1))
666 03a0 01C0 rjmp .L46
667 .L44:
668 03a2 10E0 ldi r17,lo8(0)
669 .L46:
670 03a4 F701 movw r30,r14
671 03a6 E050 subi r30,lo8(-(TxdBuffer))
672 03a8 F040 sbci r31,hi8(-(TxdBuffer))
673 03aa 892F mov r24,r25
674 03ac 8695 lsr r24
675 03ae 8695 lsr r24
676 03b0 835C subi r24,lo8(-(61))
677 03b2 8083 st Z,r24
678 03b4 0894 sec
679 03b6 E11C adc r14,__zero_reg__
680 03b8 F11C adc r15,__zero_reg__
681 03ba F701 movw r30,r14
682 03bc E050 subi r30,lo8(-(TxdBuffer))
683 03be F040 sbci r31,hi8(-(TxdBuffer))
684 03c0 892F mov r24,r25
685 03c2 9927 clr r25
686 03c4 8370 andi r24,lo8(3)
687 03c6 9070 andi r25,hi8(3)
688 03c8 24E0 ldi r18,4
689 03ca 880F 1: lsl r24
690 03cc 991F rol r25
691 03ce 2A95 dec r18
692 03d0 E1F7 brne 1b
693 03d2 5527 clr r21
694 03d4 9A01 movw r18,r20
695 03d6 94E0 ldi r25,4
696 03d8 3695 1: lsr r19
697 03da 2795 ror r18
698 03dc 9A95 dec r25
699 03de E1F7 brne 1b
700 03e0 822B or r24,r18
701 03e2 835C subi r24,lo8(-(61))
702 03e4 8083 st Z,r24
703 03e6 0894 sec
704 03e8 E11C adc r14,__zero_reg__
705 03ea F11C adc r15,__zero_reg__
706 03ec F701 movw r30,r14
707 03ee E050 subi r30,lo8(-(TxdBuffer))
708 03f0 F040 sbci r31,hi8(-(TxdBuffer))
709 03f2 4F70 andi r20,lo8(15)
710 03f4 5070 andi r21,hi8(15)
711 03f6 440F lsl r20
712 03f8 551F rol r21
713 03fa 440F lsl r20
714 03fc 551F rol r21
715 03fe 812F mov r24,r17
716 0400 9927 clr r25
717 0402 26E0 ldi r18,6
718 0404 9695 1: lsr r25
719 0406 8795 ror r24
720 0408 2A95 dec r18
721 040a E1F7 brne 1b
722 040c 842B or r24,r20
723 040e 835C subi r24,lo8(-(61))
724 0410 8083 st Z,r24
725 0412 0894 sec
726 0414 E11C adc r14,__zero_reg__
727 0416 F11C adc r15,__zero_reg__
728 0418 F701 movw r30,r14
729 041a E050 subi r30,lo8(-(TxdBuffer))
730 041c F040 sbci r31,hi8(-(TxdBuffer))
731 041e 1F73 andi r17,lo8(63)
732 0420 135C subi r17,lo8(-(61))
733 0422 1083 st Z,r17
734 0424 0894 sec
735 0426 E11C adc r14,__zero_reg__
736 0428 F11C adc r15,__zero_reg__
737 042a 6ACF rjmp .L50
738 .L49:
739 042c C701 movw r24,r14
740 042e 0E94 0000 call AddCRC
741 /* epilogue: frame size=0 */
742 0432 E9E0 ldi r30,9
743 0434 0C94 0000 jmp __epilogue_restores__+18
744 /* epilogue end (size=3) */
745 /* function SendOutData size 191 (182) */
747 .global Decode64
749 Decode64:
750 /* prologue: frame size=0 */
751 /* prologue end (size=0) */
752 0438 A3E0 ldi r26,lo8(3)
753 043a 7A2F mov r23,r26
754 043c 4091 0000 lds r20,AnzahlEmpfangsBytes
755 0440 4650 subi r20,lo8(-(-6))
756 .L62:
757 0442 4423 tst r20
758 0444 09F4 brne .+2
759 0446 58C0 rjmp .L53
760 0448 E72F mov r30,r23
761 044a FF27 clr r31
762 044c E050 subi r30,lo8(-(RxdBuffer))
763 044e F040 sbci r31,hi8(-(RxdBuffer))
764 0450 8081 ld r24,Z
765 0452 8D53 subi r24,lo8(-(-61))
766 0454 7F5F subi r23,lo8(-(1))
767 0456 E72F mov r30,r23
768 0458 FF27 clr r31
769 045a E050 subi r30,lo8(-(RxdBuffer))
770 045c F040 sbci r31,hi8(-(RxdBuffer))
771 045e 2081 ld r18,Z
772 0460 2D53 subi r18,lo8(-(-61))
773 0462 7F5F subi r23,lo8(-(1))
774 0464 E72F mov r30,r23
775 0466 FF27 clr r31
776 0468 E050 subi r30,lo8(-(RxdBuffer))
777 046a F040 sbci r31,hi8(-(RxdBuffer))
778 046c 3081 ld r19,Z
779 046e 3D53 subi r19,lo8(-(-61))
780 0470 7F5F subi r23,lo8(-(1))
781 0472 E72F mov r30,r23
782 0474 FF27 clr r31
783 0476 E050 subi r30,lo8(-(RxdBuffer))
784 0478 F040 sbci r31,hi8(-(RxdBuffer))
785 047a 6081 ld r22,Z
786 047c 6D53 subi r22,lo8(-(-61))
787 047e 7F5F subi r23,lo8(-(1))
788 0480 9927 clr r25
789 0482 880F lsl r24
790 0484 991F rol r25
791 0486 880F lsl r24
792 0488 991F rol r25
793 048a 522F mov r21,r18
794 048c 5295 swap r21
795 048e 5F70 andi r21,0x0f
796 0490 582B or r21,r24
797 0492 822F mov r24,r18
798 0494 9927 clr r25
799 0496 8F70 andi r24,lo8(15)
800 0498 9070 andi r25,hi8(15)
801 049a F4E0 ldi r31,4
802 049c 880F 1: lsl r24
803 049e 991F rol r25
804 04a0 FA95 dec r31
805 04a2 E1F7 brne 1b
806 04a4 232F mov r18,r19
807 04a6 2695 lsr r18
808 04a8 2695 lsr r18
809 04aa 282B or r18,r24
810 04ac 832F mov r24,r19
811 04ae 9927 clr r25
812 04b0 8370 andi r24,lo8(3)
813 04b2 9070 andi r25,hi8(3)
814 04b4 E6E0 ldi r30,6
815 04b6 880F 1: lsl r24
816 04b8 991F rol r25
817 04ba EA95 dec r30
818 04bc E1F7 brne 1b
819 04be 682B or r22,r24
820 04c0 4150 subi r20,lo8(-(-1))
821 04c2 4F3F cpi r20,lo8(-1)
822 04c4 C9F0 breq .L53
823 04c6 EA2F mov r30,r26
824 04c8 FF27 clr r31
825 04ca E050 subi r30,lo8(-(RxdBuffer))
826 04cc F040 sbci r31,hi8(-(RxdBuffer))
827 04ce 5083 st Z,r21
828 04d0 AF5F subi r26,lo8(-(1))
829 04d2 4150 subi r20,lo8(-(-1))
830 04d4 4F3F cpi r20,lo8(-1)
831 04d6 81F0 breq .L53
832 04d8 EA2F mov r30,r26
833 04da FF27 clr r31
834 04dc E050 subi r30,lo8(-(RxdBuffer))
835 04de F040 sbci r31,hi8(-(RxdBuffer))
836 04e0 2083 st Z,r18
837 04e2 AF5F subi r26,lo8(-(1))
838 04e4 4150 subi r20,lo8(-(-1))
839 04e6 4F3F cpi r20,lo8(-1)
840 04e8 39F0 breq .L53
841 04ea EA2F mov r30,r26
842 04ec FF27 clr r31
843 04ee E050 subi r30,lo8(-(RxdBuffer))
844 04f0 F040 sbci r31,hi8(-(RxdBuffer))
845 04f2 6083 st Z,r22
846 04f4 AF5F subi r26,lo8(-(1))
847 04f6 A5CF rjmp .L62
848 .L53:
849 04f8 80E0 ldi r24,lo8(RxdBuffer+3)
850 04fa 90E0 ldi r25,hi8(RxdBuffer+3)
851 04fc 9093 0000 sts (pRxData)+1,r25
852 0500 8093 0000 sts pRxData,r24
853 0504 A350 subi r26,lo8(-(-3))
854 0506 A093 0000 sts RxDataLen,r26
855 /* epilogue: frame size=0 */
856 050a 0895 ret
857 /* epilogue end (size=1) */
858 /* function Decode64 size 106 (105) */
860 .global BearbeiteRxDaten
862 BearbeiteRxDaten:
863 /* prologue: frame size=2 */
864 050c A2E0 ldi r26,lo8(2)
865 050e B0E0 ldi r27,hi8(2)
866 0510 E0E0 ldi r30,pm_lo8(1f)
867 0512 F0E0 ldi r31,pm_hi8(1f)
868 0514 0C94 0000 jmp __prologue_saves__+30
869 1:
870 /* prologue end (size=6) */
871 0518 8091 0000 lds r24,NeuerDatensatzEmpfangen
872 051c 8823 tst r24
873 051e 09F4 brne .+2
874 0520 6BC4 rjmp .L63
875 0522 0E94 0000 call Decode64
876 0526 8091 0000 lds r24,RxdBuffer+1
877 052a 8236 cpi r24,lo8(98)
878 052c 09F0 breq .+2
879 052e 25C3 rjmp .L143
880 0530 8091 0000 lds r24,RxdBuffer+2
881 0534 9927 clr r25
882 0536 8037 cpi r24,112
883 0538 9105 cpc r25,__zero_reg__
884 053a 09F4 brne .+2
885 053c C1C0 rjmp .L82
886 053e 8137 cpi r24,113
887 0540 9105 cpc r25,__zero_reg__
888 0542 C4F4 brge .L139
889 0544 8A36 cpi r24,106
890 0546 9105 cpc r25,__zero_reg__
891 0548 09F4 brne .+2
892 054a 8DC2 rjmp .L128
893 054c 8B36 cpi r24,107
894 054e 9105 cpc r25,__zero_reg__
895 0550 44F4 brge .L140
896 0552 8B34 cpi r24,75
897 0554 9105 cpc r25,__zero_reg__
898 0556 71F1 breq .L68
899 0558 8636 cpi r24,102
900 055a 9105 cpc r25,__zero_reg__
901 055c 09F4 brne .+2
902 055e 6CC1 rjmp .L108
903 0560 0CC3 rjmp .L143
904 .L140:
905 0562 8D36 cpi r24,109
906 0564 9105 cpc r25,__zero_reg__
907 0566 09F4 brne .+2
908 0568 7BC0 rjmp .L76
909 056a 8E36 cpi r24,110
910 056c 9105 cpc r25,__zero_reg__
911 056e 09F4 brne .+2
912 0570 5FC0 rjmp .L73
913 0572 03C3 rjmp .L143
914 .L139:
915 0574 8437 cpi r24,116
916 0576 9105 cpc r25,__zero_reg__
917 0578 D1F1 breq .L69
918 057a 8537 cpi r24,117
919 057c 9105 cpc r25,__zero_reg__
920 057e 4CF4 brge .L141
921 0580 8137 cpi r24,113
922 0582 9105 cpc r25,__zero_reg__
923 0584 09F4 brne .+2
924 0586 A3C0 rjmp .L83
925 0588 8337 cpi r24,115
926 058a 9105 cpc r25,__zero_reg__
927 058c 09F4 brne .+2
928 058e F1C0 rjmp .L101
929 0590 F4C2 rjmp .L143
930 .L141:
931 0592 8737 cpi r24,119
932 0594 9105 cpc r25,__zero_reg__
933 0596 09F4 brne .+2
934 0598 28C2 rjmp .L121
935 059a 8837 cpi r24,120
936 059c 9105 cpc r25,__zero_reg__
937 059e 2CF4 brge .L142
938 05a0 8537 cpi r24,117
939 05a2 9105 cpc r25,__zero_reg__
940 05a4 09F4 brne .+2
941 05a6 E4C1 rjmp .L115
942 05a8 E8C2 rjmp .L143
943 .L142:
944 05aa 8937 cpi r24,121
945 05ac 9105 cpc r25,__zero_reg__
946 05ae 09F4 brne .+2
947 05b0 7AC1 rjmp .L114
948 05b2 E3C2 rjmp .L143
949 .L68:
950 05b4 E091 0000 lds r30,pRxData
951 05b8 F091 0000 lds r31,(pRxData)+1
952 05bc 8081 ld r24,Z
953 05be 9181 ldd r25,Z+1
954 05c0 9093 0000 sts (KompassValue)+1,r25
955 05c4 8093 0000 sts KompassValue,r24
956 05c8 2091 0000 lds r18,KompassStartwert
957 05cc 3091 0000 lds r19,(KompassStartwert)+1
958 05d0 821B sub r24,r18
959 05d2 930B sbc r25,r19
960 05d4 845E subi r24,lo8(-(540))
961 05d6 9D4F sbci r25,hi8(-(540))
962 05d8 68E6 ldi r22,lo8(360)
963 05da 71E0 ldi r23,hi8(360)
964 05dc 0E94 0000 call __divmodhi4
965 05e0 845B subi r24,lo8(-(-180))
966 05e2 9040 sbci r25,hi8(-(-180))
967 05e4 9093 0000 sts (KompassRichtung)+1,r25
968 05e8 8093 0000 sts KompassRichtung,r24
969 05ec C6C2 rjmp .L143
970 .L69:
971 05ee 8091 0000 lds r24,AnzahlEmpfangsBytes
972 05f2 A091 0000 lds r26,pRxData
973 05f6 B091 0000 lds r27,(pRxData)+1
974 05fa 8531 cpi r24,lo8(21)
975 05fc 40F0 brlo .L70
976 05fe 80E1 ldi r24,lo8(16)
977 0600 E0E0 ldi r30,lo8(MotorTest)
978 0602 F0E0 ldi r31,hi8(MotorTest)
979 0604 0D90 ld __tmp_reg__,X+
980 0606 0192 st Z+,__tmp_reg__
981 0608 8A95 dec r24
982 060a E1F7 brne .-8
983 060c 0DC0 rjmp .L71
984 .L70:
985 060e 8D91 ld r24,X+
986 0610 9D91 ld r25,X+
987 0612 0D90 ld __tmp_reg__,X+
988 0614 BC91 ld r27,X
989 0616 A02D mov r26,__tmp_reg__
990 0618 8093 0000 sts MotorTest,r24
991 061c 9093 0000 sts (MotorTest)+1,r25
992 0620 A093 0000 sts (MotorTest)+2,r26
993 0624 B093 0000 sts (MotorTest)+3,r27
994 .L71:
995 0628 80EF ldi r24,lo8(-16)
996 062a 8093 0000 sts PC_MotortestActive,r24
997 062e 4BC0 rjmp .L180
998 .L73:
999 0630 8091 0000 lds r24,UebertragungAbgeschlossen
1000 0634 8823 tst r24
1001 0636 E1F3 breq .L73
1002 0638 8DE4 ldi r24,lo8(77)
1003 063a 90E0 ldi r25,hi8(77)
1004 063c 9F93 push r25
1005 063e 8F93 push r24
1006 0640 80E0 ldi r24,lo8(Mixer)
1007 0642 90E0 ldi r25,hi8(Mixer)
1008 0644 9F93 push r25
1009 0646 8F93 push r24
1010 0648 81E0 ldi r24,lo8(1)
1011 064a 8F93 push r24
1012 064c 8F93 push r24
1013 064e 8EE4 ldi r24,lo8(78)
1014 0650 8F93 push r24
1015 0652 0E94 0000 call SendOutData
1016 0656 8DB7 in r24,__SP_L__
1017 0658 9EB7 in r25,__SP_H__
1018 065a 0796 adiw r24,7
1019 065c 8DBF out __SP_L__,r24
1020 065e 8DC2 rjmp .L143
1021 .L76:
1022 0660 A091 0000 lds r26,pRxData
1023 0664 B091 0000 lds r27,(pRxData)+1
1024 0668 1C91 ld r17,X
1025 066a 1130 cpi r17,lo8(1)
1026 066c 81F4 brne .L77
1027 066e 8DE4 ldi r24,lo8(77)
1028 0670 E0E0 ldi r30,lo8(Mixer)
1029 0672 F0E0 ldi r31,hi8(Mixer)
1030 0674 0D90 ld __tmp_reg__,X+
1031 0676 0192 st Z+,__tmp_reg__
1032 0678 8A95 dec r24
1033 067a E1F7 brne .-8
1034 067c 0E94 0000 call MixerTable_WriteToEEProm
1035 0680 1983 std Y+1,r17
1036 0682 8091 0000 lds r24,VersionInfo+6
1037 0686 8F7E andi r24,lo8(-17)
1038 0688 8093 0000 sts VersionInfo+6,r24
1039 068c 01C0 rjmp .L79
1040 .L77:
1041 068e 1982 std Y+1,__zero_reg__
1042 .L79:
1043 0690 8091 0000 lds r24,UebertragungAbgeschlossen
1044 0694 8823 tst r24
1045 0696 E1F3 breq .L79
1046 0698 81E0 ldi r24,lo8(1)
1047 069a 90E0 ldi r25,hi8(1)
1048 069c 9F93 push r25
1049 069e 8F93 push r24
1050 06a0 CE01 movw r24,r28
1051 06a2 0196 adiw r24,1
1052 06a4 9F93 push r25
1053 06a6 8F93 push r24
1054 06a8 81E0 ldi r24,lo8(1)
1055 06aa 8F93 push r24
1056 06ac 8F93 push r24
1057 06ae 8DE4 ldi r24,lo8(77)
1058 06b0 8F93 push r24
1059 06b2 0E94 0000 call SendOutData
1060 06b6 ADB7 in r26,__SP_L__
1061 06b8 BEB7 in r27,__SP_H__
1062 06ba 1796 adiw r26,7
1063 06bc ADBF out __SP_L__,r26
1064 06be 5DC2 rjmp .L143
1065 .L82:
1066 06c0 81E0 ldi r24,lo8(1)
1067 06c2 8093 0000 sts GetPPMChannelAnforderung,r24
1068 .L180:
1069 06c6 8FEF ldi r24,lo8(-1)
1070 06c8 8093 0000 sts PcZugriff,r24
1071 06cc 56C2 rjmp .L143
1072 .L83:
1073 06ce E091 0000 lds r30,pRxData
1074 06d2 F091 0000 lds r31,(pRxData)+1
1075 06d6 E081 ld r30,Z
1076 06d8 8E2F mov r24,r30
1077 06da 8A50 subi r24,lo8(-(-10))
1078 06dc 8A30 cpi r24,lo8(10)
1079 06de 58F4 brsh .L84
1080 06e0 8983 std Y+1,r24
1081 06e2 8823 tst r24
1082 06e4 11F4 brne .L85
1083 06e6 81E0 ldi r24,lo8(1)
1084 06e8 03C0 rjmp .L174
1085 .L85:
1086 06ea 8630 cpi r24,lo8(6)
1087 06ec 10F0 brlo .L86
1088 06ee 85E0 ldi r24,lo8(5)
1089 .L174:
1090 06f0 8983 std Y+1,r24
1091 .L86:
1092 06f2 61E0 ldi r22,lo8(1)
1093 06f4 0EC0 rjmp .L177
1094 .L84:
1095 06f6 8E2F mov r24,r30
1096 06f8 8451 subi r24,lo8(-(-20))
1097 06fa 8A30 cpi r24,lo8(10)
1098 06fc 70F4 brsh .L89
1099 06fe 8983 std Y+1,r24
1100 0700 8823 tst r24
1101 0702 11F4 brne .L90
1102 0704 81E0 ldi r24,lo8(1)
1103 0706 03C0 rjmp .L175
1104 .L90:
1105 0708 8630 cpi r24,lo8(6)
1106 070a 10F0 brlo .L91
1107 070c 85E0 ldi r24,lo8(5)
1108 .L175:
1109 070e 8983 std Y+1,r24
1110 .L91:
1111 0710 60E0 ldi r22,lo8(0)
1112 .L177:
1113 0712 8981 ldd r24,Y+1
1114 0714 0E94 0000 call SetDefaultParameter
1115 0718 12C0 rjmp .L98
1116 .L89:
1117 071a E983 std Y+1,r30
1118 071c EF3F cpi r30,lo8(-1)
1119 071e 19F4 brne .L94
1120 0720 0E94 0000 call GetActiveParamSet
1121 0724 8983 std Y+1,r24
1122 .L94:
1123 0726 8981 ldd r24,Y+1
1124 0728 8823 tst r24
1125 072a 11F4 brne .L95
1126 072c 81E0 ldi r24,lo8(1)
1127 072e 03C0 rjmp .L176
1128 .L95:
1129 0730 8630 cpi r24,lo8(6)
1130 0732 10F0 brlo .L96
1131 0734 85E0 ldi r24,lo8(5)
1132 .L176:
1133 0736 8983 std Y+1,r24
1134 .L96:
1135 0738 8981 ldd r24,Y+1
1136 073a 0E94 0000 call ParamSet_ReadFromEEProm
1137 .L98:
1138 073e 8091 0000 lds r24,UebertragungAbgeschlossen
1139 0742 8823 tst r24
1140 0744 E1F3 breq .L98
1141 0746 83E7 ldi r24,lo8(115)
1142 0748 90E0 ldi r25,hi8(115)
1143 074a 9F93 push r25
1144 074c 8F93 push r24
1145 074e 80E0 ldi r24,lo8(EE_Parameter)
1146 0750 90E0 ldi r25,hi8(EE_Parameter)
1147 0752 9F93 push r25
1148 0754 8F93 push r24
1149 0756 81E0 ldi r24,lo8(1)
1150 0758 90E0 ldi r25,hi8(1)
1151 075a 9F93 push r25
1152 075c 8F93 push r24
1153 075e CE01 movw r24,r28
1154 0760 0196 adiw r24,1
1155 0762 9F93 push r25
1156 0764 8F93 push r24
1157 0766 82E0 ldi r24,lo8(2)
1158 0768 8F93 push r24
1159 076a 81E0 ldi r24,lo8(1)
1160 076c 8F93 push r24
1161 076e 81E5 ldi r24,lo8(81)
1162 0770 72C1 rjmp .L183
1163 .L101:
1164 0772 2091 0000 lds r18,pRxData
1165 0776 3091 0000 lds r19,(pRxData)+1
1166 077a D901 movw r26,r18
1167 077c 8C91 ld r24,X
1168 077e 8150 subi r24,lo8(-(-1))
1169 0780 8530 cpi r24,lo8(5)
1170 0782 08F0 brlo .+2
1171 0784 40C0 rjmp .L102
1172 0786 F901 movw r30,r18
1173 0788 8181 ldd r24,Z+1
1174 078a 8535 cpi r24,lo8(85)
1175 078c E1F5 brne .L102
1176 078e 2F5F subi r18,lo8(-(1))
1177 0790 3F4F sbci r19,hi8(-(1))
1178 0792 83E7 ldi r24,lo8(115)
1179 0794 E0E0 ldi r30,lo8(EE_Parameter)
1180 0796 F0E0 ldi r31,hi8(EE_Parameter)
1181 0798 D901 movw r26,r18
1182 079a 0D90 ld __tmp_reg__,X+
1183 079c 0192 st Z+,__tmp_reg__
1184 079e 8A95 dec r24
1185 07a0 E1F7 brne .-8
1186 07a2 F901 movw r30,r18
1187 07a4 8291 ld r24,-Z
1188 07a6 0E94 0000 call ParamSet_WriteToEEProm
1189 07aa 8091 0000 lds r24,EE_Parameter+65
1190 07ae 9927 clr r25
1191 07b0 AA27 clr r26
1192 07b2 BB27 clr r27
1193 07b4 BC01 movw r22,r24
1194 07b6 CD01 movw r24,r26
1195 07b8 24EC ldi r18,lo8(2500)
1196 07ba 39E0 ldi r19,hi8(2500)
1197 07bc 40E0 ldi r20,hlo8(2500)
1198 07be 50E0 ldi r21,hhi8(2500)
1199 07c0 0E94 0000 call __mulsi3
1200 07c4 DC01 movw r26,r24
1201 07c6 CB01 movw r24,r22
1202 07c8 8093 0000 sts Umschlag180Nick,r24
1203 07cc 9093 0000 sts (Umschlag180Nick)+1,r25
1204 07d0 A093 0000 sts (Umschlag180Nick)+2,r26
1205 07d4 B093 0000 sts (Umschlag180Nick)+3,r27
1206 07d8 8091 0000 lds r24,EE_Parameter+66
1207 07dc 9927 clr r25
1208 07de AA27 clr r26
1209 07e0 BB27 clr r27
1210 07e2 BC01 movw r22,r24
1211 07e4 CD01 movw r24,r26
1212 07e6 0E94 0000 call __mulsi3
1213 07ea DC01 movw r26,r24
1214 07ec CB01 movw r24,r22
1215 07ee 8093 0000 sts Umschlag180Roll,r24
1216 07f2 9093 0000 sts (Umschlag180Roll)+1,r25
1217 07f6 A093 0000 sts (Umschlag180Roll)+2,r26
1218 07fa B093 0000 sts (Umschlag180Roll)+3,r27
1219 07fe 0E94 0000 call GetActiveParamSet
1220 0802 8983 std Y+1,r24
1221 0804 01C0 rjmp .L104
1222 .L102:
1223 0806 1982 std Y+1,__zero_reg__
1224 .L104:
1225 0808 8091 0000 lds r24,UebertragungAbgeschlossen
1226 080c 8823 tst r24
1227 080e E1F3 breq .L104
1228 0810 81E0 ldi r24,lo8(1)
1229 0812 90E0 ldi r25,hi8(1)
1230 0814 9F93 push r25
1231 0816 8F93 push r24
1232 0818 CE01 movw r24,r28
1233 081a 0196 adiw r24,1
1234 081c 9F93 push r25
1235 081e 8F93 push r24
1236 0820 81E0 ldi r24,lo8(1)
1237 0822 8F93 push r24
1238 0824 8F93 push r24
1239 0826 83E5 ldi r24,lo8(83)
1240 0828 8F93 push r24
1241 082a 0E94 0000 call SendOutData
1242 082e 8DB7 in r24,__SP_L__
1243 0830 9EB7 in r25,__SP_H__
1244 0832 0796 adiw r24,7
1245 0834 8DBF out __SP_L__,r24
1246 0836 26C0 rjmp .L184
1247 .L108:
1248 0838 E091 0000 lds r30,pRxData
1249 083c F091 0000 lds r31,(pRxData)+1
1250 0840 E081 ld r30,Z
1251 0842 8E2F mov r24,r30
1252 0844 8150 subi r24,lo8(-(-1))
1253 0846 8530 cpi r24,lo8(5)
1254 0848 18F4 brsh .L109
1255 084a 8E2F mov r24,r30
1256 084c 0E94 0000 call ParamSet_ReadFromEEProm
1257 .L109:
1258 0850 0E94 0000 call GetActiveParamSet
1259 0854 8983 std Y+1,r24
1260 .L110:
1261 0856 8091 0000 lds r24,UebertragungAbgeschlossen
1262 085a 8823 tst r24
1263 085c E1F3 breq .L110
1264 085e 81E0 ldi r24,lo8(1)
1265 0860 90E0 ldi r25,hi8(1)
1266 0862 9F93 push r25
1267 0864 8F93 push r24
1268 0866 CE01 movw r24,r28
1269 0868 0196 adiw r24,1
1270 086a 9F93 push r25
1271 086c 8F93 push r24
1272 086e 81E0 ldi r24,lo8(1)
1273 0870 8F93 push r24
1274 0872 8F93 push r24
1275 0874 86E4 ldi r24,lo8(70)
1276 0876 8F93 push r24
1277 0878 0E94 0000 call SendOutData
1278 087c ADB7 in r26,__SP_L__
1279 087e BEB7 in r27,__SP_H__
1280 0880 1796 adiw r26,7
1281 0882 ADBF out __SP_L__,r26
1282 .L184:
1283 0884 8091 0000 lds r24,MotorenEin
1284 0888 8823 tst r24
1285 088a 29F4 brne .L113
1286 088c 6EE6 ldi r22,lo8(110)
1287 088e 70E0 ldi r23,hi8(110)
1288 0890 8981 ldd r24,Y+1
1289 0892 0E94 0000 call Piep
1290 .L113:
1291 0896 80E0 ldi r24,lo8(0)
1292 0898 0E94 0000 call LipoDetection
1293 089c 8091 0000 lds r24,EE_Parameter+39
1294 08a0 0E94 0000 call LIBFC_ReceiverInit
1295 08a4 6AC1 rjmp .L143
1296 .L114:
1297 08a6 E091 0000 lds r30,pRxData
1298 08aa F091 0000 lds r31,(pRxData)+1
1299 08ae 8081 ld r24,Z
1300 08b0 9927 clr r25
1301 08b2 87FD sbrc r24,7
1302 08b4 9095 com r25
1303 08b6 9093 0000 sts (PPM_in+26)+1,r25
1304 08ba 8093 0000 sts PPM_in+26,r24
1305 08be 8181 ldd r24,Z+1
1306 08c0 9927 clr r25
1307 08c2 87FD sbrc r24,7
1308 08c4 9095 com r25
1309 08c6 9093 0000 sts (PPM_in+28)+1,r25
1310 08ca 8093 0000 sts PPM_in+28,r24
1311 08ce 8281 ldd r24,Z+2
1312 08d0 9927 clr r25
1313 08d2 87FD sbrc r24,7
1314 08d4 9095 com r25
1315 08d6 9093 0000 sts (PPM_in+30)+1,r25
1316 08da 8093 0000 sts PPM_in+30,r24
1317 08de 8381 ldd r24,Z+3
1318 08e0 9927 clr r25
1319 08e2 87FD sbrc r24,7
1320 08e4 9095 com r25
1321 08e6 9093 0000 sts (PPM_in+32)+1,r25
1322 08ea 8093 0000 sts PPM_in+32,r24
1323 08ee 8481 ldd r24,Z+4
1324 08f0 9927 clr r25
1325 08f2 87FD sbrc r24,7
1326 08f4 9095 com r25
1327 08f6 9093 0000 sts (PPM_in+34)+1,r25
1328 08fa 8093 0000 sts PPM_in+34,r24
1329 08fe 8581 ldd r24,Z+5
1330 0900 9927 clr r25
1331 0902 87FD sbrc r24,7
1332 0904 9095 com r25
1333 0906 9093 0000 sts (PPM_in+36)+1,r25
1334 090a 8093 0000 sts PPM_in+36,r24
1335 090e 8681 ldd r24,Z+6
1336 0910 9927 clr r25
1337 0912 87FD sbrc r24,7
1338 0914 9095 com r25
1339 0916 9093 0000 sts (PPM_in+38)+1,r25
1340 091a 8093 0000 sts PPM_in+38,r24
1341 091e 8781 ldd r24,Z+7
1342 0920 9927 clr r25
1343 0922 87FD sbrc r24,7
1344 0924 9095 com r25
1345 0926 9093 0000 sts (PPM_in+40)+1,r25
1346 092a 8093 0000 sts PPM_in+40,r24
1347 092e 8085 ldd r24,Z+8
1348 0930 9927 clr r25
1349 0932 87FD sbrc r24,7
1350 0934 9095 com r25
1351 0936 9093 0000 sts (PPM_in+42)+1,r25
1352 093a 8093 0000 sts PPM_in+42,r24
1353 093e 8185 ldd r24,Z+9
1354 0940 9927 clr r25
1355 0942 87FD sbrc r24,7
1356 0944 9095 com r25
1357 0946 9093 0000 sts (PPM_in+44)+1,r25
1358 094a 8093 0000 sts PPM_in+44,r24
1359 094e 8285 ldd r24,Z+10
1360 0950 9927 clr r25
1361 0952 87FD sbrc r24,7
1362 0954 9095 com r25
1363 0956 9093 0000 sts (PPM_in+46)+1,r25
1364 095a 8093 0000 sts PPM_in+46,r24
1365 095e 8385 ldd r24,Z+11
1366 0960 9927 clr r25
1367 0962 87FD sbrc r24,7
1368 0964 9095 com r25
1369 0966 9093 0000 sts (PPM_in+48)+1,r25
1370 096a 8093 0000 sts PPM_in+48,r24
1371 096e 05C1 rjmp .L143
1372 .L115:
1373 0970 E091 0000 lds r30,pRxData
1374 0974 F091 0000 lds r31,(pRxData)+1
1375 0978 8081 ld r24,Z
1376 097a 0E94 0000 call I2C_ReadBLConfig
1377 097e 8A83 std Y+2,r24
1378 0980 8823 tst r24
1379 0982 19F4 brne .L116
1380 0984 81E0 ldi r24,lo8(1)
1381 0986 8983 std Y+1,r24
1382 0988 01C0 rjmp .L118
1383 .L116:
1384 098a 1982 std Y+1,__zero_reg__
1385 .L118:
1386 098c 8091 0000 lds r24,UebertragungAbgeschlossen
1387 0990 8823 tst r24
1388 0992 E1F3 breq .L118
1389 0994 88E0 ldi r24,lo8(8)
1390 0996 90E0 ldi r25,hi8(8)
1391 0998 9F93 push r25
1392 099a 8F93 push r24
1393 099c 80E0 ldi r24,lo8(BLConfig)
1394 099e 90E0 ldi r25,hi8(BLConfig)
1395 09a0 9F93 push r25
1396 09a2 8F93 push r24
1397 09a4 21E0 ldi r18,lo8(1)
1398 09a6 30E0 ldi r19,hi8(1)
1399 09a8 3F93 push r19
1400 09aa 2F93 push r18
1401 09ac 8091 0000 lds r24,pRxData
1402 09b0 9091 0000 lds r25,(pRxData)+1
1403 09b4 9F93 push r25
1404 09b6 8F93 push r24
1405 09b8 3F93 push r19
1406 09ba 2F93 push r18
1407 09bc CE01 movw r24,r28
1408 09be 0296 adiw r24,2
1409 09c0 9F93 push r25
1410 09c2 8F93 push r24
1411 09c4 3F93 push r19
1412 09c6 2F93 push r18
1413 09c8 CE01 movw r24,r28
1414 09ca 820F add r24,r18
1415 09cc 931F adc r25,r19
1416 09ce 9F93 push r25
1417 09d0 8F93 push r24
1418 09d2 84E0 ldi r24,lo8(4)
1419 09d4 8F93 push r24
1420 09d6 81E0 ldi r24,lo8(1)
1421 09d8 8F93 push r24
1422 09da 85E5 ldi r24,lo8(85)
1423 09dc 8F93 push r24
1424 09de 0E94 0000 call SendOutData
1425 09e2 EDB7 in r30,__SP_L__
1426 09e4 FEB7 in r31,__SP_H__
1427 09e6 7396 adiw r30,19
1428 09e8 3CC0 rjmp .L179
1429 .L121:
1430 09ea 8091 0000 lds r24,RxDataLen
1431 09ee 8930 cpi r24,lo8(9)
1432 09f0 08F4 brsh .+2
1433 09f2 C3C0 rjmp .L143
1434 09f4 2091 0000 lds r18,pRxData
1435 09f8 3091 0000 lds r19,(pRxData)+1
1436 09fc 2F5F subi r18,lo8(-(1))
1437 09fe 3F4F sbci r19,hi8(-(1))
1438 0a00 88E0 ldi r24,lo8(8)
1439 0a02 A0E0 ldi r26,lo8(BLConfig)
1440 0a04 B0E0 ldi r27,hi8(BLConfig)
1441 0a06 F901 movw r30,r18
1442 0a08 0190 ld __tmp_reg__,Z+
1443 0a0a 0D92 st X+,__tmp_reg__
1444 0a0c 8A95 dec r24
1445 0a0e E1F7 brne .-8
1446 0a10 D901 movw r26,r18
1447 0a12 8E91 ld r24,-X
1448 0a14 0E94 0000 call I2C_WriteBLConfig
1449 0a18 8A83 std Y+2,r24
1450 0a1a 8823 tst r24
1451 0a1c 19F4 brne .L123
1452 0a1e 81E0 ldi r24,lo8(1)
1453 0a20 8983 std Y+1,r24
1454 0a22 01C0 rjmp .L125
1455 .L123:
1456 0a24 1982 std Y+1,__zero_reg__
1457 .L125:
1458 0a26 8091 0000 lds r24,UebertragungAbgeschlossen
1459 0a2a 8823 tst r24
1460 0a2c E1F3 breq .L125
1461 0a2e 21E0 ldi r18,lo8(1)
1462 0a30 30E0 ldi r19,hi8(1)
1463 0a32 3F93 push r19
1464 0a34 2F93 push r18
1465 0a36 CE01 movw r24,r28
1466 0a38 0296 adiw r24,2
1467 0a3a 9F93 push r25
1468 0a3c 8F93 push r24
1469 0a3e 3F93 push r19
1470 0a40 2F93 push r18
1471 0a42 CE01 movw r24,r28
1472 0a44 820F add r24,r18
1473 0a46 931F adc r25,r19
1474 0a48 9F93 push r25
1475 0a4a 8F93 push r24
1476 0a4c 82E0 ldi r24,lo8(2)
1477 0a4e 8F93 push r24
1478 0a50 81E0 ldi r24,lo8(1)
1479 0a52 8F93 push r24
1480 0a54 87E5 ldi r24,lo8(87)
1481 .L183:
1482 0a56 8F93 push r24
1483 0a58 0E94 0000 call SendOutData
1484 0a5c EDB7 in r30,__SP_L__
1485 0a5e FEB7 in r31,__SP_H__
1486 0a60 3B96 adiw r30,11
1487 .L179:
1488 0a62 EDBF out __SP_L__,r30
1489 0a64 8AC0 rjmp .L143
1490 .L128:
1491 0a66 0E94 0000 call LIBFC_GetCPUType
1492 0a6a 8983 std Y+1,r24
1493 0a6c 8230 cpi r24,lo8(2)
1494 0a6e 19F0 breq .L130
1495 0a70 8430 cpi r24,lo8(4)
1496 0a72 09F0 breq .+2
1497 0a74 82C0 rjmp .L143
1498 .L130:
1499 /* #APP */
1500 0a76 F894 cli
1501 /* #NOAPP */
1502 0a78 8091 C100 lds r24,193
1503 0a7c 8F73 andi r24,lo8(63)
1504 0a7e 8093 C100 sts 193,r24
1505 0a82 8091 C900 lds r24,201
1506 0a86 8F73 andi r24,lo8(63)
1507 0a88 8093 C900 sts 201,r24
1508 0a8c 8091 C100 lds r24,193
1509 0a90 877E andi r24,lo8(-25)
1510 0a92 8093 C100 sts 193,r24
1511 0a96 8091 C900 lds r24,201
1512 0a9a 877E andi r24,lo8(-25)
1513 0a9c 8093 C900 sts 201,r24
1514 .L178:
1515 0aa0 8091 C800 lds r24,200
1516 0aa4 87FF sbrs r24,7
1517 0aa6 03C0 rjmp .L171
1518 0aa8 8091 CE00 lds r24,206
1519 0aac F9CF rjmp .L178
1520 .L171:
1521 0aae 8091 C000 lds r24,192
1522 0ab2 87FF sbrs r24,7
1523 0ab4 03C0 rjmp .L173
1524 0ab6 8091 C600 lds r24,198
1525 0aba F9CF rjmp .L171
1526 .L173:
1527 0abc E091 0000 lds r30,pRxData
1528 0ac0 F091 0000 lds r31,(pRxData)+1
1529 0ac4 8081 ld r24,Z
1530 0ac6 8823 tst r24
1531 0ac8 59F5 brne .L137
1532 0aca 81E0 ldi r24,lo8(1)
1533 0acc 8093 0000 sts JetiUpdateModeActive,r24
1534 0ad0 1092 CD00 sts 205,__zero_reg__
1535 0ad4 80E4 ldi r24,lo8(64)
1536 0ad6 90E0 ldi r25,hi8(64)
1537 0ad8 8093 CC00 sts 204,r24
1538 0adc 8091 CD00 lds r24,205
1539 0ae0 8093 C500 sts 197,r24
1540 0ae4 8091 CC00 lds r24,204
1541 0ae8 8093 C400 sts 196,r24
1542 0aec 8091 CA00 lds r24,202
1543 0af0 8F7D andi r24,lo8(-33)
1544 0af2 8093 CA00 sts 202,r24
1545 0af6 8091 CA00 lds r24,202
1546 0afa 8F7E andi r24,lo8(-17)
1547 0afc 8093 CA00 sts 202,r24
1548 0b00 8091 C900 lds r24,201
1549 0b04 8B7F andi r24,lo8(-5)
1550 0b06 8093 C900 sts 201,r24
1551 0b0a 8091 CA00 lds r24,202
1552 0b0e 8460 ori r24,lo8(4)
1553 0b10 8093 CA00 sts 202,r24
1554 0b14 8091 CA00 lds r24,202
1555 0b18 8260 ori r24,lo8(2)
1556 0b1a 8093 CA00 sts 202,r24
1557 0b1e 03C0 rjmp .L138
1558 .L137:
1559 0b20 82E0 ldi r24,lo8(2)
1560 0b22 8093 0000 sts JetiUpdateModeActive,r24
1561 .L138:
1562 0b26 8091 CA00 lds r24,202
1563 0b2a 877F andi r24,lo8(-9)
1564 0b2c 8093 CA00 sts 202,r24
1565 0b30 8091 C200 lds r24,194
1566 0b34 877F andi r24,lo8(-9)
1567 0b36 8093 C200 sts 194,r24
1568 0b3a 8091 C900 lds r24,201
1569 0b3e 8E7F andi r24,lo8(-2)
1570 0b40 8093 C900 sts 201,r24
1571 0b44 8091 C100 lds r24,193
1572 0b48 8861 ori r24,lo8(24)
1573 0b4a 8093 C100 sts 193,r24
1574 0b4e 8091 C900 lds r24,201
1575 0b52 8861 ori r24,lo8(24)
1576 0b54 8093 C900 sts 201,r24
1577 0b58 8091 C100 lds r24,193
1578 0b5c 8068 ori r24,lo8(-128)
1579 0b5e 8093 C100 sts 193,r24
1580 0b62 8091 C900 lds r24,201
1581 0b66 8068 ori r24,lo8(-128)
1582 0b68 8093 C900 sts 201,r24
1583 0b6c 1092 6E00 sts 110,__zero_reg__
1584 0b70 1092 6F00 sts 111,__zero_reg__
1585 0b74 1092 7000 sts 112,__zero_reg__
1586 /* #APP */
1587 0b78 7894 sei
1588 /* #NOAPP */
1589 .L143:
1590 0b7a 8091 0000 lds r24,RxdBuffer+2
1591 0b7e 9927 clr r25
1592 0b80 8436 cpi r24,100
1593 0b82 9105 cpc r25,__zero_reg__
1594 0b84 09F4 brne .+2
1595 0b86 CDC0 rjmp .L158
1596 0b88 8536 cpi r24,101
1597 0b8a 9105 cpc r25,__zero_reg__
1598 0b8c ACF4 brge .L167
1599 0b8e 8136 cpi r24,97
1600 0b90 9105 cpc r25,__zero_reg__
1601 0b92 09F4 brne .+2
1602 0b94 81C0 rjmp .L152
1603 0b96 8236 cpi r24,98
1604 0b98 9105 cpc r25,__zero_reg__
1605 0b9a 2CF4 brge .L168
1606 0b9c 8B34 cpi r24,75
1607 0b9e 9105 cpc r25,__zero_reg__
1608 0ba0 09F4 brne .+2
1609 0ba2 5DC0 rjmp .L151
1610 0ba4 21C1 rjmp .L65
1611 .L168:
1612 0ba6 8236 cpi r24,98
1613 0ba8 9105 cpc r25,__zero_reg__
1614 0baa 09F4 brne .+2
1615 0bac 82C0 rjmp .L154
1616 0bae 8336 cpi r24,99
1617 0bb0 9105 cpc r25,__zero_reg__
1618 0bb2 09F4 brne .+2
1619 0bb4 91C0 rjmp .L155
1620 0bb6 18C1 rjmp .L65
1621 .L167:
1622 0bb8 8C36 cpi r24,108
1623 0bba 9105 cpc r25,__zero_reg__
1624 0bbc 09F4 brne .+2
1625 0bbe FFC0 rjmp .L163
1626 0bc0 8D36 cpi r24,109
1627 0bc2 9105 cpc r25,__zero_reg__
1628 0bc4 4CF4 brge .L169
1629 0bc6 8736 cpi r24,103
1630 0bc8 9105 cpc r25,__zero_reg__
1631 0bca 09F4 brne .+2
1632 0bcc 0AC1 rjmp .L165
1633 0bce 8836 cpi r24,104
1634 0bd0 9105 cpc r25,__zero_reg__
1635 0bd2 09F4 brne .+2
1636 0bd4 C4C0 rjmp .L160
1637 0bd6 08C1 rjmp .L65
1638 .L169:
1639 0bd8 8437 cpi r24,116
1640 0bda 9105 cpc r25,__zero_reg__
1641 0bdc 29F0 breq .L145
1642 0bde 8637 cpi r24,118
1643 0be0 9105 cpc r25,__zero_reg__
1644 0be2 09F4 brne .+2
1645 0be4 FAC0 rjmp .L164
1646 0be6 00C1 rjmp .L65
1647 .L145:
1648 0be8 8091 0000 lds r24,AnzahlEmpfangsBytes
1649 0bec A091 0000 lds r26,pRxData
1650 0bf0 B091 0000 lds r27,(pRxData)+1
1651 0bf4 8031 cpi r24,lo8(16)
1652 0bf6 40F0 brlo .L146
1653 0bf8 80E1 ldi r24,lo8(16)
1654 0bfa E0E0 ldi r30,lo8(MotorTest)
1655 0bfc F0E0 ldi r31,hi8(MotorTest)
1656 0bfe 0D90 ld __tmp_reg__,X+
1657 0c00 0192 st Z+,__tmp_reg__
1658 0c02 8A95 dec r24
1659 0c04 E1F7 brne .-8
1660 0c06 0DC0 rjmp .L148
1661 .L146:
1662 0c08 8D91 ld r24,X+
1663 0c0a 9D91 ld r25,X+
1664 0c0c 0D90 ld __tmp_reg__,X+
1665 0c0e BC91 ld r27,X
1666 0c10 A02D mov r26,__tmp_reg__
1667 0c12 8093 0000 sts MotorTest,r24
1668 0c16 9093 0000 sts (MotorTest)+1,r25
1669 0c1a A093 0000 sts (MotorTest)+2,r26
1670 0c1e B093 0000 sts (MotorTest)+3,r27
1671 .L148:
1672 0c22 8091 0000 lds r24,UebertragungAbgeschlossen
1673 0c26 8823 tst r24
1674 0c28 E1F3 breq .L148
1675 0c2a 1F92 push __zero_reg__
1676 0c2c 8091 0000 lds r24,MeineSlaveAdresse
1677 0c30 8F93 push r24
1678 0c32 84E5 ldi r24,lo8(84)
1679 0c34 8F93 push r24
1680 0c36 0E94 0000 call SendOutData
1681 0c3a 8AEF ldi r24,lo8(-6)
1682 0c3c 8093 0000 sts PC_MotortestActive,r24
1683 0c40 8FEF ldi r24,lo8(-1)
1684 0c42 8093 0000 sts PcZugriff,r24
1685 0c46 80EA ldi r24,lo8(4000)
1686 0c48 9FE0 ldi r25,hi8(4000)
1687 0c4a 0E94 0000 call SetDelay
1688 0c4e 9093 0000 sts (AboTimeOut)+1,r25
1689 0c52 8093 0000 sts AboTimeOut,r24
1690 0c56 0F90 pop __tmp_reg__
1691 0c58 0F90 pop __tmp_reg__
1692 0c5a 0F90 pop __tmp_reg__
1693 0c5c C5C0 rjmp .L65
1694 .L151:
1695 0c5e E091 0000 lds r30,pRxData
1696 0c62 F091 0000 lds r31,(pRxData)+1
1697 0c66 8081 ld r24,Z
1698 0c68 9181 ldd r25,Z+1
1699 0c6a 9093 0000 sts (KompassValue)+1,r25
1700 0c6e 8093 0000 sts KompassValue,r24
1701 0c72 2091 0000 lds r18,KompassStartwert
1702 0c76 3091 0000 lds r19,(KompassStartwert)+1
1703 0c7a 821B sub r24,r18
1704 0c7c 930B sbc r25,r19
1705 0c7e 845E subi r24,lo8(-(540))
1706 0c80 9D4F sbci r25,hi8(-(540))
1707 0c82 68E6 ldi r22,lo8(360)
1708 0c84 71E0 ldi r23,hi8(360)
1709 0c86 0E94 0000 call __divmodhi4
1710 0c8a 845B subi r24,lo8(-(-180))
1711 0c8c 9040 sbci r25,hi8(-(-180))
1712 0c8e 9093 0000 sts (KompassRichtung)+1,r25
1713 0c92 8093 0000 sts KompassRichtung,r24
1714 0c96 A8C0 rjmp .L65
1715 .L152:
1716 0c98 E091 0000 lds r30,pRxData
1717 0c9c F091 0000 lds r31,(pRxData)+1
1718 0ca0 8081 ld r24,Z
1719 0ca2 8093 0000 sts DebugTextAnforderung,r24
1720 0ca6 8032 cpi r24,lo8(32)
1721 0ca8 98F0 brlo .L181
1722 0caa 8FE1 ldi r24,lo8(31)
1723 0cac 8093 0000 sts DebugTextAnforderung,r24
1724 0cb0 0FC0 rjmp .L181
1725 .L154:
1726 0cb2 A091 0000 lds r26,pRxData
1727 0cb6 B091 0000 lds r27,(pRxData)+1
1728 0cba 8BE0 ldi r24,lo8(11)
1729 0cbc E0E0 ldi r30,lo8(ExternControl)
1730 0cbe F0E0 ldi r31,hi8(ExternControl)
1731 0cc0 0D90 ld __tmp_reg__,X+
1732 0cc2 0192 st Z+,__tmp_reg__
1733 0cc4 8A95 dec r24
1734 0cc6 E1F7 brne .-8
1735 0cc8 8091 0000 lds r24,ExternControl+9
1736 0ccc 8093 0000 sts ConfirmFrame,r24
1737 .L181:
1738 0cd0 8FEF ldi r24,lo8(-1)
1739 0cd2 8093 0000 sts PcZugriff,r24
1740 0cd6 88C0 rjmp .L65
1741 .L155:
1742 0cd8 8091 0000 lds r24,Intervall3D
1743 0cdc 9091 0000 lds r25,(Intervall3D)+1
1744 0ce0 892B or r24,r25
1745 0ce2 89F4 brne .L156
1746 0ce4 E091 0000 lds r30,pRxData
1747 0ce8 F091 0000 lds r31,(pRxData)+1
1748 0cec E081 ld r30,Z
1749 0cee EE23 tst r30
1750 0cf0 51F0 breq .L156
1751 0cf2 8AE0 ldi r24,lo8(10)
1752 0cf4 E89F mul r30,r24
1753 0cf6 C001 movw r24,r0
1754 0cf8 1124 clr r1
1755 0cfa 0E94 0000 call SetDelay
1756 0cfe 9093 0000 sts (Timer3D)+1,r25
1757 0d02 8093 0000 sts Timer3D,r24
1758 .L156:
1759 0d06 E091 0000 lds r30,pRxData
1760 0d0a F091 0000 lds r31,(pRxData)+1
1761 0d0e 9081 ld r25,Z
1762 0d10 8AE0 ldi r24,lo8(10)
1763 0d12 989F mul r25,r24
1764 0d14 C001 movw r24,r0
1765 0d16 1124 clr r1
1766 0d18 9093 0000 sts (Intervall3D)+1,r25
1767 0d1c 8093 0000 sts Intervall3D,r24
1768 0d20 15C0 rjmp .L159
1769 .L158:
1770 0d22 8FEF ldi r24,lo8(-1)
1771 0d24 8093 0000 sts PcZugriff,r24
1772 0d28 E091 0000 lds r30,pRxData
1773 0d2c F091 0000 lds r31,(pRxData)+1
1774 0d30 9081 ld r25,Z
1775 0d32 8AE0 ldi r24,lo8(10)
1776 0d34 989F mul r25,r24
1777 0d36 C001 movw r24,r0
1778 0d38 1124 clr r1
1779 0d3a 9093 0000 sts (DebugDataIntervall)+1,r25
1780 0d3e 8093 0000 sts DebugDataIntervall,r24
1781 0d42 892B or r24,r25
1782 0d44 19F0 breq .L159
1783 0d46 81E0 ldi r24,lo8(1)
1784 0d48 8093 0000 sts DebugDataAnforderung,r24
1785 .L159:
1786 0d4c 80EA ldi r24,lo8(4000)
1787 0d4e 9FE0 ldi r25,hi8(4000)
1788 0d50 0E94 0000 call SetDelay
1789 0d54 9093 0000 sts (AboTimeOut)+1,r25
1790 0d58 8093 0000 sts AboTimeOut,r24
1791 0d5c 45C0 rjmp .L65
1792 .L160:
1793 0d5e 8FEF ldi r24,lo8(-1)
1794 0d60 8093 0000 sts PcZugriff,r24
1795 0d64 E091 0000 lds r30,pRxData
1796 0d68 F091 0000 lds r31,(pRxData)+1
1797 0d6c 9081 ld r25,Z
1798 0d6e 97FD sbrc r25,7
1799 0d70 08C0 rjmp .L161
1800 0d72 82E0 ldi r24,lo8(2)
1801 0d74 8093 0000 sts DisplayLine,r24
1802 0d78 1092 0000 sts (Display_Interval)+1,__zero_reg__
1803 0d7c 1092 0000 sts Display_Interval,__zero_reg__
1804 0d80 1AC0 rjmp .L162
1805 .L161:
1806 0d82 9095 com r25
1807 0d84 8091 0000 lds r24,RemoteKeys
1808 0d88 892B or r24,r25
1809 0d8a 8093 0000 sts RemoteKeys,r24
1810 0d8e 9181 ldd r25,Z+1
1811 0d90 8AE0 ldi r24,lo8(10)
1812 0d92 989F mul r25,r24
1813 0d94 C001 movw r24,r0
1814 0d96 1124 clr r1
1815 0d98 9093 0000 sts (Display_Interval)+1,r25
1816 0d9c 8093 0000 sts Display_Interval,r24
1817 0da0 84E0 ldi r24,lo8(4)
1818 0da2 8093 0000 sts DisplayLine,r24
1819 0da6 80EA ldi r24,lo8(4000)
1820 0da8 9FE0 ldi r25,hi8(4000)
1821 0daa 0E94 0000 call SetDelay
1822 0dae 9093 0000 sts (AboTimeOut)+1,r25
1823 0db2 8093 0000 sts AboTimeOut,r24
1824 .L162:
1825 0db6 81E0 ldi r24,lo8(1)
1826 0db8 8093 0000 sts DebugDisplayAnforderung,r24
1827 0dbc 15C0 rjmp .L65
1828 .L163:
1829 0dbe 8FEF ldi r24,lo8(-1)
1830 0dc0 8093 0000 sts PcZugriff,r24
1831 0dc4 E091 0000 lds r30,pRxData
1832 0dc8 F091 0000 lds r31,(pRxData)+1
1833 0dcc 8081 ld r24,Z
1834 0dce 8093 0000 sts MenuePunkt,r24
1835 0dd2 81E0 ldi r24,lo8(1)
1836 0dd4 8093 0000 sts DebugDisplayAnforderung1,r24
1837 0dd8 07C0 rjmp .L65
1838 .L164:
1839 0dda 81E0 ldi r24,lo8(1)
1840 0ddc 8093 0000 sts GetVersionAnforderung,r24
1841 0de0 03C0 rjmp .L65
1842 .L165:
1843 0de2 81E0 ldi r24,lo8(1)
1844 0de4 8093 0000 sts GetExternalControl,r24
1845 .L65:
1846 0de8 1092 0000 sts NeuerDatensatzEmpfangen,__zero_reg__
1847 0dec 1092 0000 sts (pRxData)+1,__zero_reg__
1848 0df0 1092 0000 sts pRxData,__zero_reg__
1849 0df4 1092 0000 sts RxDataLen,__zero_reg__
1850 .L63:
1851 /* epilogue: frame size=2 */
1852 0df8 E3E0 ldi r30,3
1853 0dfa CE5F subi r28,-2
1854 0dfc 0C94 0000 jmp __epilogue_restores__+30
1855 /* epilogue end (size=4) */
1856 /* function BearbeiteRxDaten size 1148 (1138) */
1858 .global uart_putchar
1860 uart_putchar:
1861 /* prologue: frame size=0 */
1862 /* prologue end (size=0) */
1863 0e00 982F mov r25,r24
1864 .L186:
1865 0e02 8091 C000 lds r24,192
1866 0e06 85FF sbrs r24,5
1867 0e08 FCCF rjmp .L186
1868 0e0a 9093 C600 sts 198,r25
1869 /* epilogue: frame size=0 */
1870 0e0e 0895 ret
1871 /* epilogue end (size=1) */
1872 /* function uart_putchar size 8 (7) */
1874 .global UART_Init
1876 UART_Init:
1877 /* prologue: frame size=0 */
1878 0e10 0F93 push r16
1879 0e12 1F93 push r17
1880 /* prologue end (size=2) */
1881 0e14 88E1 ldi r24,lo8(24)
1882 0e16 8093 C100 sts 193,r24
1883 0e1a 8091 C000 lds r24,192
1884 0e1e 8260 ori r24,lo8(2)
1885 0e20 8093 C000 sts 192,r24
1886 0e24 8091 C100 lds r24,193
1887 0e28 8068 ori r24,lo8(-128)
1888 0e2a 8093 C100 sts 193,r24
1889 0e2e 8091 C100 lds r24,193
1890 0e32 8064 ori r24,lo8(64)
1891 0e34 8093 C100 sts 193,r24
1892 0e38 00E0 ldi r16,lo8(0)
1893 0e3a 10E0 ldi r17,hi8(0)
1894 0e3c 0093 C500 sts 197,r16
1895 0e40 8AE2 ldi r24,lo8(42)
1896 0e42 90E0 ldi r25,hi8(42)
1897 0e44 8093 C400 sts 196,r24
1898 0e48 8091 0000 lds r24,DebugDataIntervall
1899 0e4c 9091 0000 lds r25,(DebugDataIntervall)+1
1900 0e50 0E94 0000 call SetDelay
1901 0e54 9093 0000 sts (Debug_Timer)+1,r25
1902 0e58 8093 0000 sts Debug_Timer,r24
1903 0e5c 8CED ldi r24,lo8(220)
1904 0e5e 90E0 ldi r25,hi8(220)
1905 0e60 0E94 0000 call SetDelay
1906 0e64 9093 0000 sts (Kompass_Timer)+1,r25
1907 0e68 8093 0000 sts Kompass_Timer,r24
1908 0e6c 1092 0000 sts VersionInfo,__zero_reg__
1909 0e70 82E5 ldi r24,lo8(82)
1910 0e72 8093 0000 sts VersionInfo+1,r24
1911 0e76 1092 0000 sts VersionInfo+4,__zero_reg__
1912 0e7a 8BE0 ldi r24,lo8(11)
1913 0e7c 8093 0000 sts VersionInfo+2,r24
1914 0e80 1092 0000 sts VersionInfo+3,__zero_reg__
1915 0e84 1093 0000 sts (pRxData)+1,r17
1916 0e88 0093 0000 sts pRxData,r16
1917 0e8c 1092 0000 sts RxDataLen,__zero_reg__
1918 /* epilogue: frame size=0 */
1919 0e90 1F91 pop r17
1920 0e92 0F91 pop r16
1921 0e94 0895 ret
1922 /* epilogue end (size=3) */
1923 /* function UART_Init size 67 (62) */
1925 .section .progmem.data
1928 __c.0:
1929 0200 2121 2120 .string "!!! INCOMPATIBLE !!!"
1929 494E 434F
1929 4D50 4154
1929 4942 4C45
1929 2021 2121
1930 .text
1931 .global DatenUebertragung
1933 DatenUebertragung:
1934 /* prologue: frame size=16 */
1935 0e96 A0E1 ldi r26,lo8(16)
1936 0e98 B0E0 ldi r27,hi8(16)
1937 0e9a E0E0 ldi r30,pm_lo8(1f)
1938 0e9c F0E0 ldi r31,pm_hi8(1f)
1939 0e9e 0C94 0000 jmp __prologue_saves__+24
1940 1:
1941 /* prologue end (size=6) */
1942 0ea2 8091 0000 lds r24,UebertragungAbgeschlossen
1943 0ea6 8823 tst r24
1944 0ea8 09F4 brne .+2
1945 0eaa C1C2 rjmp .L190
1946 0eac 8091 0000 lds r24,AboTimeOut
1947 0eb0 9091 0000 lds r25,(AboTimeOut)+1
1948 0eb4 0E94 0000 call CheckDelay
1949 0eb8 8823 tst r24
1950 0eba 61F0 breq .L192
1951 0ebc 1092 0000 sts (Display_Interval)+1,__zero_reg__
1952 0ec0 1092 0000 sts Display_Interval,__zero_reg__
1953 0ec4 1092 0000 sts (DebugDataIntervall)+1,__zero_reg__
1954 0ec8 1092 0000 sts DebugDataIntervall,__zero_reg__
1955 0ecc 1092 0000 sts (Intervall3D)+1,__zero_reg__
1956 0ed0 1092 0000 sts Intervall3D,__zero_reg__
1957 .L192:
1958 0ed4 8091 0000 lds r24,Display_Interval
1959 0ed8 9091 0000 lds r25,(Display_Interval)+1
1960 0edc 892B or r24,r25
1961 0ede 41F0 breq .L195
1962 0ee0 8091 0000 lds r24,Display_Timer
1963 0ee4 9091 0000 lds r25,(Display_Timer)+1
1964 0ee8 0E94 0000 call CheckDelay
1965 0eec 8823 tst r24
1966 0eee 29F4 brne .L194
1967 .L195:
1968 0ef0 8091 0000 lds r24,DebugDisplayAnforderung
1969 0ef4 8823 tst r24
1970 0ef6 09F4 brne .+2
1971 0ef8 60C0 rjmp .L193
1972 .L194:
1973 0efa 8091 0000 lds r24,UebertragungAbgeschlossen
1974 0efe 8823 tst r24
1975 0f00 09F4 brne .+2
1976 0f02 5BC0 rjmp .L193
1977 0f04 8091 0000 lds r24,DisplayLine
1978 0f08 00E0 ldi r16,lo8(DisplayBuff)
1979 0f0a 10E0 ldi r17,hi8(DisplayBuff)
1980 0f0c 8430 cpi r24,lo8(4)
1981 0f0e A8F0 brlo .L196
1982 0f10 0E94 0000 call Menu
1983 0f14 80E5 ldi r24,lo8(80)
1984 0f16 90E0 ldi r25,hi8(80)
1985 0f18 9F93 push r25
1986 0f1a 8F93 push r24
1987 0f1c 1F93 push r17
1988 0f1e 0F93 push r16
1989 0f20 81E0 ldi r24,lo8(1)
1990 0f22 8F93 push r24
1991 0f24 8F93 push r24
1992 0f26 88E4 ldi r24,lo8(72)
1993 0f28 8F93 push r24
1994 0f2a 0E94 0000 call SendOutData
1995 0f2e 2DB7 in r18,__SP_L__
1996 0f30 3EB7 in r19,__SP_H__
1997 0f32 295F subi r18,lo8(-(7))
1998 0f34 3F4F sbci r19,hi8(-(7))
1999 0f36 2DBF out __SP_L__,r18
2000 0f38 34C0 rjmp .L197
2001 .L196:
2002 0f3a 1092 0000 sts DispPtr,__zero_reg__
2003 0f3e 80E0 ldi r24,lo8(__c.0)
2004 0f40 90E0 ldi r25,hi8(__c.0)
2005 0f42 9F93 push r25
2006 0f44 8F93 push r24
2007 0f46 80E0 ldi r24,lo8(pm(Menu_Putchar))
2008 0f48 90E0 ldi r25,hi8(pm(Menu_Putchar))
2009 0f4a 9F93 push r25
2010 0f4c 8F93 push r24
2011 0f4e E091 0000 lds r30,_printf_P
2012 0f52 F091 0000 lds r31,(_printf_P)+1
2013 0f56 0995 icall
2014 0f58 84E1 ldi r24,lo8(20)
2015 0f5a 90E0 ldi r25,hi8(20)
2016 0f5c 9F93 push r25
2017 0f5e 8F93 push r24
2018 0f60 1F93 push r17
2019 0f62 0F93 push r16
2020 0f64 81E0 ldi r24,lo8(1)
2021 0f66 90E0 ldi r25,hi8(1)
2022 0f68 9F93 push r25
2023 0f6a 8F93 push r24
2024 0f6c 80E0 ldi r24,lo8(DisplayLine)
2025 0f6e 90E0 ldi r25,hi8(DisplayLine)
2026 0f70 9F93 push r25
2027 0f72 8F93 push r24
2028 0f74 82E0 ldi r24,lo8(2)
2029 0f76 8F93 push r24
2030 0f78 81E0 ldi r24,lo8(1)
2031 0f7a 8F93 push r24
2032 0f7c 88E4 ldi r24,lo8(72)
2033 0f7e 8F93 push r24
2034 0f80 0E94 0000 call SendOutData
2035 0f84 8091 0000 lds r24,DisplayLine
2036 0f88 982F mov r25,r24
2037 0f8a 8F5F subi r24,lo8(-(1))
2038 0f8c 8093 0000 sts DisplayLine,r24
2039 0f90 2DB7 in r18,__SP_L__
2040 0f92 3EB7 in r19,__SP_H__
2041 0f94 215F subi r18,lo8(-(15))
2042 0f96 3F4F sbci r19,hi8(-(15))
2043 0f98 2DBF out __SP_L__,r18
2044 0f9a 9430 cpi r25,lo8(4)
2045 0f9c 10F0 brlo .L197
2046 0f9e 1092 0000 sts DisplayLine,__zero_reg__
2047 .L197:
2048 0fa2 8091 0000 lds r24,Display_Interval
2049 0fa6 9091 0000 lds r25,(Display_Interval)+1
2050 0faa 0E94 0000 call SetDelay
2051 0fae 9093 0000 sts (Display_Timer)+1,r25
2052 0fb2 8093 0000 sts Display_Timer,r24
2053 0fb6 1092 0000 sts DebugDisplayAnforderung,__zero_reg__
2054 .L193:
2055 0fba 8091 0000 lds r24,DebugDisplayAnforderung1
2056 0fbe 8823 tst r24
2057 0fc0 51F1 breq .L199
2058 0fc2 8091 0000 lds r24,UebertragungAbgeschlossen
2059 0fc6 8823 tst r24
2060 0fc8 31F1 breq .L199
2061 0fca 0E94 0000 call Menu
2062 0fce 80E5 ldi r24,lo8(80)
2063 0fd0 90E0 ldi r25,hi8(80)
2064 0fd2 9F93 push r25
2065 0fd4 8F93 push r24
2066 0fd6 80E0 ldi r24,lo8(DisplayBuff)
2067 0fd8 90E0 ldi r25,hi8(DisplayBuff)
2068 0fda 9F93 push r25
2069 0fdc 8F93 push r24
2070 0fde 21E0 ldi r18,lo8(1)
2071 0fe0 30E0 ldi r19,hi8(1)
2072 0fe2 3F93 push r19
2073 0fe4 2F93 push r18
2074 0fe6 80E0 ldi r24,lo8(MaxMenue)
2075 0fe8 90E0 ldi r25,hi8(MaxMenue)
2076 0fea 9F93 push r25
2077 0fec 8F93 push r24
2078 0fee 3F93 push r19
2079 0ff0 2F93 push r18
2080 0ff2 80E0 ldi r24,lo8(MenuePunkt)
2081 0ff4 90E0 ldi r25,hi8(MenuePunkt)
2082 0ff6 9F93 push r25
2083 0ff8 8F93 push r24
2084 0ffa 83E0 ldi r24,lo8(3)
2085 0ffc 8F93 push r24
2086 0ffe 81E0 ldi r24,lo8(1)
2087 1000 8F93 push r24
2088 1002 8CE4 ldi r24,lo8(76)
2089 1004 8F93 push r24
2090 1006 0E94 0000 call SendOutData
2091 100a 1092 0000 sts DebugDisplayAnforderung1,__zero_reg__
2092 100e 8DB7 in r24,__SP_L__
2093 1010 9EB7 in r25,__SP_H__
2094 1012 0F96 adiw r24,15
2095 1014 8DBF out __SP_L__,r24
2096 .L199:
2097 1016 8091 0000 lds r24,GetVersionAnforderung
2098 101a 8823 tst r24
2099 101c D1F0 breq .L200
2100 101e 8091 0000 lds r24,UebertragungAbgeschlossen
2101 1022 8823 tst r24
2102 1024 B1F0 breq .L200
2103 1026 8AE0 ldi r24,lo8(10)
2104 1028 90E0 ldi r25,hi8(10)
2105 102a 9F93 push r25
2106 102c 8F93 push r24
2107 102e 80E0 ldi r24,lo8(VersionInfo)
2108 1030 90E0 ldi r25,hi8(VersionInfo)
2109 1032 9F93 push r25
2110 1034 8F93 push r24
2111 1036 81E0 ldi r24,lo8(1)
2112 1038 8F93 push r24
2113 103a 8F93 push r24
2114 103c 86E5 ldi r24,lo8(86)
2115 103e 8F93 push r24
2116 1040 0E94 0000 call SendOutData
2117 1044 1092 0000 sts GetVersionAnforderung,__zero_reg__
2118 1048 2DB7 in r18,__SP_L__
2119 104a 3EB7 in r19,__SP_H__
2120 104c 295F subi r18,lo8(-(7))
2121 104e 3F4F sbci r19,hi8(-(7))
2122 1050 2DBF out __SP_L__,r18
2123 .L200:
2124 1052 8091 0000 lds r24,GetExternalControl
2125 1056 8823 tst r24
2126 1058 D9F0 breq .L201
2127 105a 8091 0000 lds r24,UebertragungAbgeschlossen
2128 105e 8823 tst r24
2129 1060 B9F0 breq .L201
2130 1062 8BE0 ldi r24,lo8(11)
2131 1064 90E0 ldi r25,hi8(11)
2132 1066 9F93 push r25
2133 1068 8F93 push r24
2134 106a 80E0 ldi r24,lo8(ExternControl)
2135 106c 90E0 ldi r25,hi8(ExternControl)
2136 106e 9F93 push r25
2137 1070 8F93 push r24
2138 1072 81E0 ldi r24,lo8(1)
2139 1074 8F93 push r24
2140 1076 8091 0000 lds r24,MeineSlaveAdresse
2141 107a 8F93 push r24
2142 107c 87E4 ldi r24,lo8(71)
2143 107e 8F93 push r24
2144 1080 0E94 0000 call SendOutData
2145 1084 1092 0000 sts GetExternalControl,__zero_reg__
2146 1088 8DB7 in r24,__SP_L__
2147 108a 9EB7 in r25,__SP_H__
2148 108c 0796 adiw r24,7
2149 108e 8DBF out __SP_L__,r24
2150 .L201:
2151 1090 8091 0000 lds r24,Kompass_Timer
2152 1094 9091 0000 lds r25,(Kompass_Timer)+1
2153 1098 0E94 0000 call CheckDelay
2154 109c 8823 tst r24
2155 109e 09F4 brne .+2
2156 10a0 61C0 rjmp .L202
2157 10a2 8091 0000 lds r24,UebertragungAbgeschlossen
2158 10a6 8823 tst r24
2159 10a8 09F4 brne .+2
2160 10aa 5CC0 rjmp .L202
2161 10ac 8091 0000 lds r24,EE_Parameter+28
2162 10b0 9927 clr r25
2163 10b2 880F lsl r24
2164 10b4 991F rol r25
2165 10b6 880F lsl r24
2166 10b8 991F rol r25
2167 10ba 7C01 movw r14,r24
2168 10bc 0027 clr r16
2169 10be F7FC sbrc r15,7
2170 10c0 0095 com r16
2171 10c2 102F mov r17,r16
2172 10c4 8091 0000 lds r24,IntegralNick
2173 10c8 9091 0000 lds r25,(IntegralNick)+1
2174 10cc A091 0000 lds r26,(IntegralNick)+2
2175 10d0 B091 0000 lds r27,(IntegralNick)+3
2176 10d4 BC01 movw r22,r24
2177 10d6 CD01 movw r24,r26
2178 10d8 A801 movw r20,r16
2179 10da 9701 movw r18,r14
2180 10dc 0E94 0000 call __divmodsi4
2181 10e0 3093 0000 sts (WinkelOut)+1,r19
2182 10e4 2093 0000 sts WinkelOut,r18
2183 10e8 8091 0000 lds r24,IntegralRoll
2184 10ec 9091 0000 lds r25,(IntegralRoll)+1
2185 10f0 A091 0000 lds r26,(IntegralRoll)+2
2186 10f4 B091 0000 lds r27,(IntegralRoll)+3
2187 10f8 BC01 movw r22,r24
2188 10fa CD01 movw r24,r26
2189 10fc A801 movw r20,r16
2190 10fe 9701 movw r18,r14
2191 1100 0E94 0000 call __divmodsi4
2192 1104 3093 0000 sts (WinkelOut+2)+1,r19
2193 1108 2093 0000 sts WinkelOut+2,r18
2194 110c 8091 0000 lds r24,Parameter_UserParam1
2195 1110 8093 0000 sts WinkelOut+4,r24
2196 1114 8091 0000 lds r24,Parameter_UserParam2
2197 1118 8093 0000 sts WinkelOut+5,r24
2198 111c 88E0 ldi r24,lo8(8)
2199 111e 90E0 ldi r25,hi8(8)
2200 1120 9F93 push r25
2201 1122 8F93 push r24
2202 1124 80E0 ldi r24,lo8(WinkelOut)
2203 1126 90E0 ldi r25,hi8(WinkelOut)
2204 1128 9F93 push r25
2205 112a 8F93 push r24
2206 112c 81E0 ldi r24,lo8(1)
2207 112e 8F93 push r24
2208 1130 83E0 ldi r24,lo8(3)
2209 1132 8F93 push r24
2210 1134 8BE6 ldi r24,lo8(107)
2211 1136 8F93 push r24
2212 1138 0E94 0000 call SendOutData
2213 113c 8091 0000 lds r24,WinkelOut+6
2214 1140 2DB7 in r18,__SP_L__
2215 1142 3EB7 in r19,__SP_H__
2216 1144 295F subi r18,lo8(-(7))
2217 1146 3F4F sbci r19,hi8(-(7))
2218 1148 2DBF out __SP_L__,r18
2219 114a 8530 cpi r24,lo8(5)
2220 114c 18F0 brlo .L203
2221 114e 86E0 ldi r24,lo8(6)
2222 1150 8093 0000 sts WinkelOut+6,r24
2223 .L203:
2224 1154 83E6 ldi r24,lo8(99)
2225 1156 90E0 ldi r25,hi8(99)
2226 1158 0E94 0000 call SetDelay
2227 115c 9093 0000 sts (Kompass_Timer)+1,r25
2228 1160 8093 0000 sts Kompass_Timer,r24
2229 .L202:
2230 1164 8091 0000 lds r24,DebugDataIntervall
2231 1168 9091 0000 lds r25,(DebugDataIntervall)+1
2232 116c 892B or r24,r25
2233 116e 41F0 breq .L206
2234 1170 8091 0000 lds r24,Debug_Timer
2235 1174 9091 0000 lds r25,(Debug_Timer)+1
2236 1178 0E94 0000 call CheckDelay
2237 117c 8823 tst r24
2238 117e 21F4 brne .L205
2239 .L206:
2240 1180 8091 0000 lds r24,DebugDataAnforderung
2241 1184 8823 tst r24
2242 1186 39F1 breq .L204
2243 .L205:
2244 1188 8091 0000 lds r24,UebertragungAbgeschlossen
2245 118c 8823 tst r24
2246 118e 19F1 breq .L204
2247 1190 0E94 0000 call CopyDebugValues
2248 1194 82E4 ldi r24,lo8(66)
2249 1196 90E0 ldi r25,hi8(66)
2250 1198 9F93 push r25
2251 119a 8F93 push r24
2252 119c 80E0 ldi r24,lo8(DebugOut)
2253 119e 90E0 ldi r25,hi8(DebugOut)
2254 11a0 9F93 push r25
2255 11a2 8F93 push r24
2256 11a4 81E0 ldi r24,lo8(1)
2257 11a6 8F93 push r24
2258 11a8 8F93 push r24
2259 11aa 84E4 ldi r24,lo8(68)
2260 11ac 8F93 push r24
2261 11ae 0E94 0000 call SendOutData
2262 11b2 1092 0000 sts DebugDataAnforderung,__zero_reg__
2263 11b6 8DB7 in r24,__SP_L__
2264 11b8 9EB7 in r25,__SP_H__
2265 11ba 0796 adiw r24,7
2266 11bc 8DBF out __SP_L__,r24
2267 11be 8091 0000 lds r24,DebugDataIntervall
2268 11c2 9091 0000 lds r25,(DebugDataIntervall)+1
2269 11c6 0097 sbiw r24,0
2270 11c8 31F0 breq .L204
2271 11ca 0E94 0000 call SetDelay
2272 11ce 9093 0000 sts (Debug_Timer)+1,r25
2273 11d2 8093 0000 sts Debug_Timer,r24
2274 .L204:
2275 11d6 8091 0000 lds r24,Intervall3D
2276 11da 9091 0000 lds r25,(Intervall3D)+1
2277 11de 892B or r24,r25
2278 11e0 09F4 brne .+2
2279 11e2 B8C0 rjmp .L208
2280 11e4 8091 0000 lds r24,Timer3D
2281 11e8 9091 0000 lds r25,(Timer3D)+1
2282 11ec 0E94 0000 call CheckDelay
2283 11f0 8823 tst r24
2284 11f2 09F4 brne .+2
2285 11f4 AFC0 rjmp .L208
2286 11f6 8091 0000 lds r24,UebertragungAbgeschlossen
2287 11fa 8823 tst r24
2288 11fc 09F4 brne .+2
2289 11fe AAC0 rjmp .L208
2290 1200 8091 0000 lds r24,EE_Parameter+28
2291 1204 9927 clr r25
2292 1206 880F lsl r24
2293 1208 991F rol r25
2294 120a 880F lsl r24
2295 120c 991F rol r25
2296 120e 7C01 movw r14,r24
2297 1210 0027 clr r16
2298 1212 F7FC sbrc r15,7
2299 1214 0095 com r16
2300 1216 102F mov r17,r16
2301 1218 8091 0000 lds r24,IntegralNick
2302 121c 9091 0000 lds r25,(IntegralNick)+1
2303 1220 A091 0000 lds r26,(IntegralNick)+2
2304 1224 B091 0000 lds r27,(IntegralNick)+3
2305 1228 BC01 movw r22,r24
2306 122a CD01 movw r24,r26
2307 122c A801 movw r20,r16
2308 122e 9701 movw r18,r14
2309 1230 0E94 0000 call __divmodsi4
2310 1234 3093 0000 sts (Data3D)+1,r19
2311 1238 2093 0000 sts Data3D,r18
2312 123c 8091 0000 lds r24,IntegralRoll
2313 1240 9091 0000 lds r25,(IntegralRoll)+1
2314 1244 A091 0000 lds r26,(IntegralRoll)+2
2315 1248 B091 0000 lds r27,(IntegralRoll)+3
2316 124c BC01 movw r22,r24
2317 124e CD01 movw r24,r26
2318 1250 A801 movw r20,r16
2319 1252 9701 movw r18,r14
2320 1254 0E94 0000 call __divmodsi4
2321 1258 3093 0000 sts (Data3D+2)+1,r19
2322 125c 2093 0000 sts Data3D+2,r18
2323 1260 2091 0000 lds r18,ErsatzKompass
2324 1264 3091 0000 lds r19,(ErsatzKompass)+1
2325 1268 4091 0000 lds r20,(ErsatzKompass)+2
2326 126c 5091 0000 lds r21,(ErsatzKompass)+3
2327 1270 DA01 movw r26,r20
2328 1272 C901 movw r24,r18
2329 1274 63E0 ldi r22,3
2330 1276 880F 1: lsl r24
2331 1278 991F rol r25
2332 127a AA1F rol r26
2333 127c BB1F rol r27
2334 127e 6A95 dec r22
2335 1280 D1F7 brne 1b
2336 1282 820F add r24,r18
2337 1284 931F adc r25,r19
2338 1286 A41F adc r26,r20
2339 1288 B51F adc r27,r21
2340 128a 820F add r24,r18
2341 128c 931F adc r25,r19
2342 128e A41F adc r26,r20
2343 1290 B51F adc r27,r21
2344 1292 2091 0000 lds r18,GIER_GRAD_FAKTOR
2345 1296 3091 0000 lds r19,(GIER_GRAD_FAKTOR)+1
2346 129a 4091 0000 lds r20,(GIER_GRAD_FAKTOR)+2
2347 129e 5091 0000 lds r21,(GIER_GRAD_FAKTOR)+3
2348 12a2 BC01 movw r22,r24
2349 12a4 CD01 movw r24,r26
2350 12a6 0E94 0000 call __divmodsi4
2351 12aa 3093 0000 sts (Data3D+4)+1,r19
2352 12ae 2093 0000 sts Data3D+4,r18
2353 12b2 8091 0000 lds r24,SummeNick
2354 12b6 9091 0000 lds r25,(SummeNick)+1
2355 12ba A091 0000 lds r26,(SummeNick)+2
2356 12be B091 0000 lds r27,(SummeNick)+3
2357 12c2 39E0 ldi r19,9
2358 12c4 B595 1: asr r27
2359 12c6 A795 ror r26
2360 12c8 9795 ror r25
2361 12ca 8795 ror r24
2362 12cc 3A95 dec r19
2363 12ce D1F7 brne 1b
2364 12d0 8093 0000 sts Data3D+6,r24
2365 12d4 8091 0000 lds r24,SummeRoll
2366 12d8 9091 0000 lds r25,(SummeRoll)+1
2367 12dc A091 0000 lds r26,(SummeRoll)+2
2368 12e0 B091 0000 lds r27,(SummeRoll)+3
2369 12e4 29E0 ldi r18,9
2370 12e6 B595 1: asr r27
2371 12e8 A795 ror r26
2372 12ea 9795 ror r25
2373 12ec 8795 ror r24
2374 12ee 2A95 dec r18
2375 12f0 D1F7 brne 1b
2376 12f2 8093 0000 sts Data3D+7,r24
2377 12f6 8091 0000 lds r24,Mess_Integral_Gier
2378 12fa 9091 0000 lds r25,(Mess_Integral_Gier)+1
2379 12fe A091 0000 lds r26,(Mess_Integral_Gier)+2
2380 1302 B091 0000 lds r27,(Mess_Integral_Gier)+3
2381 1306 09E0 ldi r16,9
2382 1308 B595 1: asr r27
2383 130a A795 ror r26
2384 130c 9795 ror r25
2385 130e 8795 ror r24
2386 1310 0A95 dec r16
2387 1312 D1F7 brne 1b
2388 1314 8093 0000 sts Data3D+8,r24
2389 1318 8EE0 ldi r24,lo8(14)
2390 131a 90E0 ldi r25,hi8(14)
2391 131c 9F93 push r25
2392 131e 8F93 push r24
2393 1320 80E0 ldi r24,lo8(Data3D)
2394 1322 90E0 ldi r25,hi8(Data3D)
2395 1324 9F93 push r25
2396 1326 8F93 push r24
2397 1328 81E0 ldi r24,lo8(1)
2398 132a 8F93 push r24
2399 132c 8F93 push r24
2400 132e 83E4 ldi r24,lo8(67)
2401 1330 8F93 push r24
2402 1332 0E94 0000 call SendOutData
2403 1336 8091 0000 lds r24,Intervall3D
2404 133a 9091 0000 lds r25,(Intervall3D)+1
2405 133e 0E94 0000 call SetDelay
2406 1342 9093 0000 sts (Timer3D)+1,r25
2407 1346 8093 0000 sts Timer3D,r24
2408 134a 2DB7 in r18,__SP_L__
2409 134c 3EB7 in r19,__SP_H__
2410 134e 295F subi r18,lo8(-(7))
2411 1350 3F4F sbci r19,hi8(-(7))
2412 1352 2DBF out __SP_L__,r18
2413 .L208:
2414 1354 8091 0000 lds r24,DebugTextAnforderung
2415 1358 8F3F cpi r24,lo8(-1)
2416 135a 71F1 breq .L209
2417 135c 9927 clr r25
2418 135e 14E0 ldi r17,4
2419 1360 880F 1: lsl r24
2420 1362 991F rol r25
2421 1364 1A95 dec r17
2422 1366 E1F7 brne 1b
2423 1368 8050 subi r24,lo8(-(ANALOG_TEXT))
2424 136a 9040 sbci r25,hi8(-(ANALOG_TEXT))
2425 136c 40E1 ldi r20,lo8(16)
2426 136e 50E0 ldi r21,hi8(16)
2427 1370 BC01 movw r22,r24
2428 1372 CE01 movw r24,r28
2429 1374 0196 adiw r24,1
2430 1376 0E94 0000 call memcpy_P
2431 137a 80E1 ldi r24,lo8(16)
2432 137c 90E0 ldi r25,hi8(16)
2433 137e 9F93 push r25
2434 1380 8F93 push r24
2435 1382 CE01 movw r24,r28
2436 1384 0196 adiw r24,1
2437 1386 9F93 push r25
2438 1388 8F93 push r24
2439 138a 81E0 ldi r24,lo8(1)
2440 138c 90E0 ldi r25,hi8(1)
2441 138e 9F93 push r25
2442 1390 8F93 push r24
2443 1392 80E0 ldi r24,lo8(DebugTextAnforderung)
2444 1394 90E0 ldi r25,hi8(DebugTextAnforderung)
2445 1396 9F93 push r25
2446 1398 8F93 push r24
2447 139a 82E0 ldi r24,lo8(2)
2448 139c 8F93 push r24
2449 139e 81E0 ldi r24,lo8(1)
2450 13a0 8F93 push r24
2451 13a2 81E4 ldi r24,lo8(65)
2452 13a4 8F93 push r24
2453 13a6 0E94 0000 call SendOutData
2454 13aa 8FEF ldi r24,lo8(-1)
2455 13ac 8093 0000 sts DebugTextAnforderung,r24
2456 13b0 8DB7 in r24,__SP_L__
2457 13b2 9EB7 in r25,__SP_H__
2458 13b4 0B96 adiw r24,11
2459 13b6 8DBF out __SP_L__,r24
2460 .L209:
2461 13b8 8091 0000 lds r24,ConfirmFrame
2462 13bc 8823 tst r24
2463 13be D1F0 breq .L210
2464 13c0 8091 0000 lds r24,UebertragungAbgeschlossen
2465 13c4 8823 tst r24
2466 13c6 B1F0 breq .L210
2467 13c8 81E0 ldi r24,lo8(1)
2468 13ca 90E0 ldi r25,hi8(1)
2469 13cc 9F93 push r25
2470 13ce 8F93 push r24
2471 13d0 80E0 ldi r24,lo8(ConfirmFrame)
2472 13d2 90E0 ldi r25,hi8(ConfirmFrame)
2473 13d4 9F93 push r25
2474 13d6 8F93 push r24
2475 13d8 81E0 ldi r24,lo8(1)
2476 13da 8F93 push r24
2477 13dc 8F93 push r24
2478 13de 82E4 ldi r24,lo8(66)
2479 13e0 8F93 push r24
2480 13e2 0E94 0000 call SendOutData
2481 13e6 1092 0000 sts ConfirmFrame,__zero_reg__
2482 13ea 2DB7 in r18,__SP_L__
2483 13ec 3EB7 in r19,__SP_H__
2484 13ee 295F subi r18,lo8(-(7))
2485 13f0 3F4F sbci r19,hi8(-(7))
2486 13f2 2DBF out __SP_L__,r18
2487 .L210:
2488 13f4 8091 0000 lds r24,GetPPMChannelAnforderung
2489 13f8 8823 tst r24
2490 13fa C9F0 breq .L190
2491 13fc 8091 0000 lds r24,UebertragungAbgeschlossen
2492 1400 8823 tst r24
2493 1402 A9F0 breq .L190
2494 1404 84E3 ldi r24,lo8(52)
2495 1406 90E0 ldi r25,hi8(52)
2496 1408 9F93 push r25
2497 140a 8F93 push r24
2498 140c 80E0 ldi r24,lo8(PPM_in)
2499 140e 90E0 ldi r25,hi8(PPM_in)
2500 1410 9F93 push r25
2501 1412 8F93 push r24
2502 1414 81E0 ldi r24,lo8(1)
2503 1416 8F93 push r24
2504 1418 8F93 push r24
2505 141a 80E5 ldi r24,lo8(80)
2506 141c 8F93 push r24
2507 141e 0E94 0000 call SendOutData
2508 1422 1092 0000 sts GetPPMChannelAnforderung,__zero_reg__
2509 1426 8DB7 in r24,__SP_L__
2510 1428 9EB7 in r25,__SP_H__
2511 142a 0796 adiw r24,7
2512 142c 8DBF out __SP_L__,r24
2513 .L190:
2514 /* epilogue: frame size=16 */
2515 142e E6E0 ldi r30,6
2516 1430 C05F subi r28,-16
2517 1432 0C94 0000 jmp __epilogue_restores__+24
2518 /* epilogue end (size=4) */
2519 /* function DatenUebertragung size 720 (710) */
2521 .comm RxdBuffer,170,1
2522 .comm Debug_Timer,2,1
2523 .comm Kompass_Timer,2,1
2524 .comm MotorTest,16,1
2525 .comm DebugOut,66,1
2526 .comm WinkelOut,8,1
2527 .comm Data3D,14,1
2528 .comm ExternControl,11,1
2529 .comm VersionInfo,10,1
2530 .comm TxdBuffer,170,1
2531 .comm ConfirmFrame,1,1
2532 .comm Display_Timer,2,1
2533 .comm Timer3D,2,1
2534 /* File "uart.c": code 2599 = 0x0a27 (2508), prologues 47, epilogues 44 */
DEFINED SYMBOLS
*ABS*:00000000 uart.c
C:\Users\Thomas\AppData\Local\Temp/ccA9aaaa.s:3 *ABS*:0000003f __SREG__
C:\Users\Thomas\AppData\Local\Temp/ccA9aaaa.s:4 *ABS*:0000003e __SP_H__
C:\Users\Thomas\AppData\Local\Temp/ccA9aaaa.s:5 *ABS*:0000003d __SP_L__
C:\Users\Thomas\AppData\Local\Temp/ccA9aaaa.s:6 *ABS*:00000000 __tmp_reg__
C:\Users\Thomas\AppData\Local\Temp/ccA9aaaa.s:7 *ABS*:00000001 __zero_reg__
C:\Users\Thomas\AppData\Local\Temp/ccA9aaaa.s:14 .progmem.data:00000000 ANALOG_TEXT
C:\Users\Thomas\AppData\Local\Temp/ccA9aaaa.s:52 .bss:00000000 JetiUpdateModeActive
C:\Users\Thomas\AppData\Local\Temp/ccA9aaaa.s:58 .bss:00000001 AboTimeOut
C:\Users\Thomas\AppData\Local\Temp/ccA9aaaa.s:64 .bss:00000003 Display_Interval
C:\Users\Thomas\AppData\Local\Temp/ccA9aaaa.s:70 .bss:00000005 Intervall3D
C:\Users\Thomas\AppData\Local\Temp/ccA9aaaa.s:76 .bss:00000007 DebugDataIntervall
C:\Users\Thomas\AppData\Local\Temp/ccA9aaaa.s:82 .data:00000000 MeineSlaveAdresse
C:\Users\Thomas\AppData\Local\Temp/ccA9aaaa.s:87 .data:00000001 PcZugriff
C:\Users\Thomas\AppData\Local\Temp/ccA9aaaa.s:92 .data:00000002 DebugTextAnforderung
C:\Users\Thomas\AppData\Local\Temp/ccA9aaaa.s:99 .bss:00000009 PC_MotortestActive
C:\Users\Thomas\AppData\Local\Temp/ccA9aaaa.s:105 .bss:0000000a PC_DebugTimeout
C:\Users\Thomas\AppData\Local\Temp/ccA9aaaa.s:111 .bss:0000000b RxDataLen
C:\Users\Thomas\AppData\Local\Temp/ccA9aaaa.s:117 .bss:0000000c pRxData
C:\Users\Thomas\AppData\Local\Temp/ccA9aaaa.s:123 .bss:0000000e AnzahlEmpfangsBytes
C:\Users\Thomas\AppData\Local\Temp/ccA9aaaa.s:129 .bss:0000000f CntCrcError
C:\Users\Thomas\AppData\Local\Temp/ccA9aaaa.s:135 .data:00000003 UebertragungAbgeschlossen
C:\Users\Thomas\AppData\Local\Temp/ccA9aaaa.s:142 .bss:00000010 NeueKoordinateEmpfangen
C:\Users\Thomas\AppData\Local\Temp/ccA9aaaa.s:148 .bss:00000011 NeuerDatensatzEmpfangen
C:\Users\Thomas\AppData\Local\Temp/ccA9aaaa.s:154 .bss:00000012 SioTmp
C:\Users\Thomas\AppData\Local\Temp/ccA9aaaa.s:160 .bss:00000013 DisplayLine
C:\Users\Thomas\AppData\Local\Temp/ccA9aaaa.s:166 .bss:00000014 GetPPMChannelAnforderung
C:\Users\Thomas\AppData\Local\Temp/ccA9aaaa.s:172 .bss:00000015 GetVersionAnforderung
C:\Users\Thomas\AppData\Local\Temp/ccA9aaaa.s:178 .bss:00000016 DebugDataAnforderung
C:\Users\Thomas\AppData\Local\Temp/ccA9aaaa.s:184 .bss:00000017 DebugDisplayAnforderung
C:\Users\Thomas\AppData\Local\Temp/ccA9aaaa.s:190 .bss:00000018 DebugDisplayAnforderung1
C:\Users\Thomas\AppData\Local\Temp/ccA9aaaa.s:196 .bss:00000019 GetExternalControl
.bss:0000001a ptr.6
C:\Users\Thomas\AppData\Local\Temp/ccA9aaaa.s:202 .text:00000000 __vector_22
*COM*:000000aa TxdBuffer
C:\Users\Thomas\AppData\Local\Temp/ccA9aaaa.s:198 .bss:0000001c crc.1
C:\Users\Thomas\AppData\Local\Temp/ccA9aaaa.s:256 .bss:0000001e crc1.2
C:\Users\Thomas\AppData\Local\Temp/ccA9aaaa.s:257 .bss:0000001f crc2.3
C:\Users\Thomas\AppData\Local\Temp/ccA9aaaa.s:258 .bss:00000020 buf_ptr.4
C:\Users\Thomas\AppData\Local\Temp/ccA9aaaa.s:259 .bss:00000021 UartState.5
C:\Users\Thomas\AppData\Local\Temp/ccA9aaaa.s:263 .text:0000006c __vector_20
*COM*:000000aa RxdBuffer
C:\Users\Thomas\AppData\Local\Temp/ccA9aaaa.s:493 .text:00000260 AddCRC
C:\Users\Thomas\AppData\Local\Temp/ccA9aaaa.s:549 .text:000002c0 SendOutData
C:\Users\Thomas\AppData\Local\Temp/ccA9aaaa.s:749 .text:00000438 Decode64
C:\Users\Thomas\AppData\Local\Temp/ccA9aaaa.s:862 .text:0000050c BearbeiteRxDaten
*COM*:00000010 MotorTest
*COM*:0000000a VersionInfo
*COM*:0000000b ExternControl
*COM*:00000001 ConfirmFrame
*COM*:00000002 Timer3D
C:\Users\Thomas\AppData\Local\Temp/ccA9aaaa.s:1860 .text:00000e00 uart_putchar
C:\Users\Thomas\AppData\Local\Temp/ccA9aaaa.s:1876 .text:00000e10 UART_Init
*COM*:00000002 Debug_Timer
*COM*:00000002 Kompass_Timer
C:\Users\Thomas\AppData\Local\Temp/ccA9aaaa.s:1928 .progmem.data:00000200 __c.0
C:\Users\Thomas\AppData\Local\Temp/ccA9aaaa.s:1933 .text:00000e96 DatenUebertragung
*COM*:00000002 Display_Timer
*COM*:00000008 WinkelOut
*COM*:00000042 DebugOut
*COM*:0000000e Data3D
 
UNDEFINED SYMBOLS
__do_copy_data
__do_clear_bss
LcdClear
ServoActive
__prologue_saves__
__epilogue_restores__
KompassValue
KompassStartwert
__divmodhi4
KompassRichtung
Mixer
MixerTable_WriteToEEProm
SetDefaultParameter
GetActiveParamSet
ParamSet_ReadFromEEProm
EE_Parameter
ParamSet_WriteToEEProm
__mulsi3
Umschlag180Nick
Umschlag180Roll
MotorenEin
Piep
LipoDetection
LIBFC_ReceiverInit
PPM_in
I2C_ReadBLConfig
BLConfig
I2C_WriteBLConfig
LIBFC_GetCPUType
SetDelay
RemoteKeys
MenuePunkt
CheckDelay
DisplayBuff
Menu
DispPtr
Menu_Putchar
_printf_P
MaxMenue
IntegralNick
__divmodsi4
IntegralRoll
Parameter_UserParam1
Parameter_UserParam2
CopyDebugValues
ErsatzKompass
GIER_GRAD_FAKTOR
SummeNick
SummeRoll
Mess_Integral_Gier
memcpy_P
/branches/metro/v0.82a metro_Akku+/version.txt
0,0 → 1,441
 
-------
V0.53 27.04.2007 H.Buss
- erste öffentliche Version
 
V0.53b 29.04.2007 H.Buss
- der FAKTOR_I war versehentlich auf Null, dann liegt der MikroKopter nicht so hart in der Luft
 
V0.53c 29.04.2007 H.Buss
- es gib ein Menü, in dem die Werte der Kanäle nach Nick, Roll, Gas,... sortiert sind.
Die angezeigten Werte waren nicht die Werte der Funke
 
V0.54 01.05.2007 H.Buss
- die Paramtersätze können jetzt vor dem Start ausgewählt werden
Dazu wird beim Kalibrieren der Messwerte (Gashebel oben links) der Nick-Rollhebel abgefragt:
2 3 4
1 x 5
- - -
Bedeutet: Nick-Rollhebel Links Mitte = Setting:1 Links Oben = Setting:2 usw.
- der Faktor_I für den Hauptregler ist hinzugekommen. Im Heading-Hold-Modus sollte er vergössert werden, was Stabilität bringt
 
V0.55 14.05.2007 H.Buss
- es können nun Servos an J3,J4,J5 mit den Kanälen 5-7 gesteuert werden
 
V0.56 14.05.2007 H.Buss
- es gab Probleme mit Funken, die mehr als 8 Kanäle haben, wenn mehrere Kanäle dann auf Null waren
- Funken, die nicht bis +-120 aussteuern können, sollten jetzt auch gehen
V0.57 24.05.2007 H.Buss
- Der Höhenregler kann nun auch mittels Schalter bedient werden
- Bug im Gier-Algorithmus behoben; Schnelles Gieren fürhrte dazu, dass der MK zu weit gedreht hat
- Kompass-Einfluss dämpfen bei Neigung
- Man kann zwischen Kompass FIX (Richtung beim Kalibrieren) und Variabel (einstellbar per Gier) wählen
- Der Motortest vom Kopter-Tool geht jetzt
- Man kann den Parametersätzen einen Namen geben
- Das Kamerasetting ist unter Setting 2 defaultmässig integriert
V0.58 30.05.2007 H.Buss
- Der Höhenregler-Algorithmus wird nun umgangen, wenn der Höhenreglerschalter aus ist
 
V0.60 17.08.2007 H.Buss
- "Schwindel-Bug" behoben
- Die Poti-Werte werden jetzt auf Unterlauf (<0) überprüft
- Poti4 zugefügt
- Es werden jetzt 8 Kanäle ausgewertet
- Kamera-Servo (an J7)
- Die Settings müssen überschrieben werden
V0.61 - V0.63 H.Buss 27.09.2007
- Poti 4 und Kanal 8 werden im Menü angezeigt
- ein paar Kleinigkeiten bei den DefaultKonstanten2 bereinigt
- Analog.c: Aktuell_ax korrigiert
- auf 32 Debug-Kanäle erweitert
- Loopings sind jetzt möglich und einzeln im KopterTool freischaltbar
- leichte Anpassungen im Gier - Geschwindigkeit und Drift
- die Hardwareversion V1.1 wird erkannt und das Programm stellt sich auf die geänderte Gyroverstärkung und die geänderten Portpins ein
- die Software startet nach dem Einschalten schneller, weil der Luftdruckoffset schneller gefunden wird
- die PPM-Ausgänge liegen wieder an den Pins an
- Details an der Sensordatenverarbeitung -> es fliegt sich geringfügig anders
- der MK ist bei wenig Gas nicht mehr so giftig -> soll das Landen vereinfachen
- I2C-Bus läuft jetzt sicher nach einer Störung wieder an
- Sticksignale werden präziser ausgewertet
- Stick-Kanäle werden ans Kopter-Tool übertragen
- Es muss die Version V1.47 des Kopter-Tool verwendet werden
- Die Settings werden auf Default zurückgesetzt
- am Piepen kann man die Fehlerart unterscheiden
1. einzelnes Piepen beim Einschalten und Kalibrieren
2. langsames Intervall mindestens 1 Sek -> Empfangsausfall
3. schnelleres Intervall mindestens 1 Sek -> Akku
4. sehr schnelles Intervall mindestens 1 Sek -> Kommunikation zu den Reglern gestört
V0.64 H.Buss 30.09.2007
- beim Gieren wurden die Achsen nicht hart genug geregelt
V0.65a H.Buss 15.10.2007
- Integral im Mischer wieder integriert
- Feinabstimmung im ACC/Gyro Abgleich -> 1/32 & 100
- ACC/Gyro Abgleich auch bei HH
 
V0.66a H.Buss 3.11.2007
- Messwertverarbeitung aus dem Analog-Interrupt entfernt
- Analogmessung hängt jetzt am FC-Timing
- Looping-Stick-Hysterese eingebaut
- Looping-180°-Umschlag einstellbar
- Achsenkopplung: Gierbewegung verkoppelt Nick und Roll
- Lageregelung nach ACC-Sensor verbessert
- zusätzlicher I-Anteil in der Lageregelung verbessert die Neutrallage
- Gyrodriftkompensation überarbeitet
- Bug in der Gier-Stick-Berechnung behoben
- Gyro-Messung auf 1kHz beschleunigt
V0.67a H.Buss 16.11.2007
- der Hauptregler-I-Anteil wirkt jetzt nur noch auf den Winkel (ausser im HH-Mode)
- Gyro-Acc-Abgleich jetzt wieder in jedem Zyklus
- Feinabstimmung
- Beim HH-Modus gab es noch Bugs
 
V0.67e H.Buss 29.11.2007
- Parameter: Dynamic Stability und Driftfaktor eingeführt
- Die Namen der Analogwerte werden jetzt zum Koptertool übertragen
- Kompatibilität zum Koptertool erhöht
 
V0.67f H.Buss 04.12.2007
- Das Integral des Hauptreglers wird jetzt linear entladen und nicht mehr proportional
- Schub für Gier wird jetzt auf den Gaswert begrenzt, dadurch steigt der MK nicht mehr beim Gieren. Gier ist allerdings nicht mehr so agressiv
- Die ACC-Nullwerte können jetzt dauerhaft im EEPROM gespeichert werden (Stick:Vollgas und Gier rechts)
V0.68a I.Busker 28.12.2007
- SPI.c & SPI.h ins Projekt aufgenommen
SPI-Kommuikation kann in SPI.h aktiviert/deaktivert werden
 
V0.68c H.Buss 05.01.2008
- Stickauswertung verbessert -> träger und präziser
- Alle Settings angepasst
 
V0.69e H.Buss 05.05.2008
- kleinere Bugs beseitigt
- Schneller Sinkflug jetzt möglich
- Min- und Maxgas in den Settings geändert
- Lagewinkel wird jetzt in 0,1 Grad an Kompass und Navi gesendet
- Kalibrierung für MK3Mag -> Nick unten beim Kalibrieren
- Kompassroutine um den Ersatzkompass (Gyro unterstützt Kompasswert) erweitert
V0.69h H.Buss 21.05.2008
- STICK_GAIN = 4 eingeführt. Das erhöht die Auflösung der Sollwerte. Stick_P und Stick_I müssen nun um Faktor 4 erhöht werden
- SenderOkay auch an das Naviboard übertragen
- Bessere Parameter bei Senderausfall
V0.69j H.Buss 30.05.2008
- Höhere Präzision der Achsenkopplung
 
V0.69k H.Buss 31.05.2008
- Bug in SPI.C behoben
- in 0.69h war ein Bug, der zu ungewollten Loopings führen konnte
 
V0.69L H.Buss 14.06.2008
- feinere Cam-Servo-Auflösung
V0.70a H.Buss 01.07.2008
- Unterstützung der V1.3-Hardware mit automatischem Hardware-Gyro-Abgleich
 
V0.70b H.Buss 14.07.2008
- flexible Einstellungsmöglichkeit von J16 und J17 (Transistorausgänge)
- eigene Parameter für GPS-Naviboard
- eigener Parameter für ExternalControl (war vorher UserParameter1 bzw. 8)
- neue Parameter im EEPROM-Datensatz: J16Bitmask, J16Timing, ExternalControl, Navi...
- MikroKopterFlags eingeführt, damit das Navi den Status des MKs kennt
- KopterTool-Kompatibilität auf 8 erhöht
V0.70c H.Buss 30.07.2008
- Parameter der Datenfusion leicht modifiziert
- EEPROM-Parameter für Looping-Umschlag angepasst (von 100 auf 85)
- MaxStick wird auf 100 begrenzt
 
V0.70d H.Buss 02.08.2008
- Transistorausgänge: das oberste Bit der Blinkmaske (im KopterTool linkes Bit) gibt nun den Zustand des Ausgangs im Schalterbetrieb an
0.71b: H.Buss 19.10.2008
Kommunikation zum Navi erweitert:
- Beeptime jetzt 32Bit
- Datenfusion und Driftkopensation wird durch NaviBoard unterstützt
0.71c: H.Buss 20.10.2008
- LoopConfig heisst jetzt BitConfig
- 3-Fach-Schalter für Höhensteuerung möglich -> kann man mit GPS-Schalter zusammenlegen
- bei den Settings wurde Setting[0] mit abgespeichert, welches es nicht gab.
- in Zukunft werden bei neuen EEPROM-Settings die Kanäle von Setting 1 übernommen
- Variablen NaviWindCorrection, NaviSpeedCompensation, NaviOperatingRadius eingeführt
 
0.71f: H.Buss 15.11.2008
- Ausschalten der Höhenregelung per Schalter um 0,3 sek verzögert
- bei der seriellen Übertragung hat die FC jetzt als SlaveAdresse die 1
- VersionInfo.NaviKompatibel eingeführt
- wenn manuell gegiert wird, wird der GyroKompass-Wert auf den Kompasswert gesetzt
- Luftdruckwert wird an das Navi übertragen
- Der Baro-Offset wird jetzt nachgeführt, um den Messbereich zu erweitern. Geht nur bei Höhenregler mit Schalter
- Debugdaten können jetzt mit 'f' gepollt werden
0.71g: Gregor 09.12.2008
- Kommunikation überarbeitet
Infos hier: http://www.mikrokopter.de/ucwiki/en/SerialCommands
0.71h: H.Buss 15.12.2008
- Freigegebene Version
- NaviAngleLimitation als Parameter zum Navi implementiert
- Antwort auf CMD: 't' entfernt
0.72d: H.Buss 22.01.2009
- OCTO als Compilerschalter
- Unterstützung der FC 2.0 (ME)
- GYRO_D eingeführt
- Achsenkopplung jetzt auch auf Nick/Roll-Bewegung
0.72e: H.Buss 27.01.2009
- die 0.72d hatte kein Integral im Gier
- Parameter eingeführt:
EE_Parameter.NaviGpsPLimit
EE_Parameter.NaviGpsILimit
EE_Parameter.NaviGpsDLimit
EE_Parameter.NaviPH_LoginTime
EE_Parameter.AchsKopplung2
EE_Parameter.CouplingYawCorrection
 
0.72f: H.Buss 28.01.2009
- Bug im Ersatzkompass entfernt
 
0.72h: H.Buss 05.02.2009
- Algorithmen beschleunigt -> Floats durch Fixkomma ersetzt
- Achsentkopplung weiter verbessert
- Nick- und Roll im Octo-Mischer auf jeweils vier Motoren aufgeteilt
 
0.72i: H.Buss 07.02.2009
- Abtastrate von 1kHz auf 2kHz erhöht
 
0.72j: H.Buss 09.02.2009
- neue Implementierung der Servoausgänge
 
0.72k: H.Buss 10.02.2009
- Abtastrate auf 5kHz erhöht
 
0.72L: H.Buss 13.02.2009
- Signalfilterung überarbeitet
- OCTO2 implementiert
 
0.72M: H.Buss 13.02.2009
- Code Cleanup
 
0.72o: H.Buss 24.02.2009
- Abtastrate auf 2kHz
- HW-Version an Navi
- neuer Datensatz 'c' -> Lagedaten für 3D-Grafik
- Auswerteroutine für Spectrum-Satteliten implementiert
- Kanalsettings werden beim Parameterreset nicht mehr gelöscht
- die Driftkompensation wird jetzt feiner aufgelöst --> EE_Parameter.Driftkomp muss mal 8 genommen werden
- die Integrale und ACC-Werte werden jetzt im Scope in ca. 0,1° angezeigt (wie beim NaviBrd)
0.72p: H.Buss 01.03.2009
- Octo3 erstellt
- Analogwerte umbenannt
 
0.73a-d: H.Buss 05.04.2009
- MixerTabelle implementiert
- I2C-Bus auf bis zu 12 Motoren erweitert
- die Busfehler der BL-Regler werden im Menü angezeigt
- Revision der MixerTabelle eingeführt
- MixerTabelle wird bei Parameterreset neu initialisiert
- Motortest auf [12] erweitert
- Motorschalter nicht mehr 3-Stufig
 
0.74a
- Datenfusion im Flug auch, wenn ACC-Z < 512
- Wert für die Luftdruck-Messbereichserweiterung abgefangen
 
0.74d
- Die Driftkompensation ist jetzt dreistufig -> 0,5% pro sekunde zusätzlich eingeführts
0.75a G.Stobrawa 22.5.2009
- Extern Control also received from NC via SPI
 
0.75b H.Buss 27.05.2009
- Spektrum-Singale schalten den PPM-Eingang aus
- max. 2 Sekunden nach dem Start auf die BL-Regler warten
- Automatische Zellenerkennung, wenn Spannungswarnung < 5,0V
- Bei automatischer Zellenerkennung piept es je nach Zellenzahl
- EE_DATENREVISION auf 76 erhöht
- Servo:
- Roll-Servo für FC ME implementiert
- Update-Cmd stoppt Servos
- Servos werden erst nach dem ersten Kalibrieren aktiviert
 
0.75c G.Stobrawa 25.7.2009
- Übertragung der Servo-Settings zur NC
- RSSI wird an NC gesendet, derzeit wird der Wert nicht gesetzt
- Bugfix Messbereichsumschaltung des Luftdrucksensors springt
- Auflösung des Luftdrucks nun bis auf 1 cm (5mal feiner) zur genaueren Berechnung des D-Anteils
- Unterstützung von Warnings-Bitmasks für die J16, J17-Outputs bei Unterspannung
- Unterspannung für einzelne Zelle´n von 3.2V auf 3.3V angehoben (9.6V --> 9.9V für 3S)
0.75d H.Buss 13.8.2009
- RC-Routine: Empfangsausfall soll sicherer erkannt werden
- Zellenerkennung nun auch beim Speichern der Settings
- Warnungs-Blinkmaske auch bei Empfangsausfall
 
0.75e H.Buss 18.8.2009
- LED-Blinken kann an die Motoren gekoppelt werden
- Feinabstimmung des Höhenreglers
0.75f H.Buss 27.8.2009
- D-Anteil des Höhenreglers jetzt mit Quadratischer Komponente
- Lagewinkel wirkt jetzt mit 1/Cos(x) mit in den Höhenregler
- leichte Modifikation der RC-Empfangroutine
 
0.75g H.Buss 31.08.2009
- die Akkuspannung geht jetzt antiproportional ins Gas ein
 
0.75h H.Buss 3.09.2009
- im Höhenregler werden jetzt die Stellwerte begrenzt --> max +- 16% vom geschätzten Schwebegas
 
0.75i H.Buss 7.09.2009
- GpsZ vom Navi zur FC für den Höhenregler
- "hoovergas-Variation" als Parameter
- Kompatibilität zu NC und PC erhöht
 
0.75j H.Buss 17.09.2009
- Laufzeitzähler eingebaut
 
0.75k H.Buss 22.09.2009
- zweite Variante (Gregor) der Höhenregelung implementiert
- umschaltbare RC-Routine
 
0.75L H.Buss 23.09.2009
- SollHoehe und Gas geht nun auch an die NC
 
0.75M H.Buss 29.09.2009
- Spektrum-Timing wird nun überwacht
- die FC kann nun stand-Alone als Kamera-Stabilizer eingesetzt werden, weil die Servos aktiviert werden, wenn I2C fehlt
0.75N H.Buss 29.09.2009
- Hoover-Stickpunkt wird bei aktivem Höhenregler nicht nachgeführt
- Hoover-Stickpunkt kann per Parameter fest eingestellt werden
- Baro-Messbereichserweiterung auch bei aktiviertem Höhenregler
- Gyro_Gier_P und Gyro_Gier_I eingeführt
- I2C_fehler-Zähler jetzt in den Analogdaten
 
0.75o H.Buss 01.10.2009
- der Höhenregler wird jetzt nur alle 10ms bearbeitet
- Baro-Messbereichserweiterung auch bei Poti als Sollwert
 
0.76d H.Buss 10.10.2009
- bei aktiver Messbereichserweiterung wird die aktuelle Höhe übernommen
 
0.76e H.Buss 27.10.2009
- es werden beim Start einmal alle BL-Regler angesprochen, damit BL-Regler#8 auch einen Selbsttest macht
- S3D-ACT-Summensignal als Compilerschalter
 
0.76f H.Buss 05.11.2009
- untere Spannungsgrenze der Unterspannungswarnung (9,3V) entfernt
0.76g H.Buss 10.11.2009
- Casting-Fehler in der Gas-Berechnung
 
0.77a H.Buss 11.11.2009
- Erweiterung auf 12 Kanäle
- Bei Koptertool-Kanalabfrage kein Empfangsausfall-Piepsen
- serielle Kanalerweiterung eingebaut -> PPM_in auf 25 erweitert
- Servos3-5 einstellbar
- neues Kommando "f" -> schaltet auf anderen Parametersatz um
 
0.77b H.Buss 09.12.2009
- JetiBox: Menü wird übertragen
- neu: FCFlags |= FCFLAG_I2CERR;
- LED-Warn-Blinken nun mit festem Timing und abschaltbar
0.77c H.Buss 07.01.2010
- zwei weitere Spektrum-Varianten implementiert
 
0.77d H.Buss 25.01.2010
- Strom-Messung eingebaut
0.78a H.Buss 03.02.2010
- Bugfix: Settingsumschaltung im Flug
 
0.78b H.Buss
- veröffentlichte Version
 
0.78c H.Buss + G.Stobrawa 22.2.2010
- Bewegungsbegrenzung an Servo 3 to 5 der FC 2.0
- Theoretischer Variablenüberlauf bei Vario-Höhenregler
- Anzeige des "SPI RX communication error" wenn GPS Option nicht aktiv
- LED-Schwellwerte fürs Blinken waren unterschiedlich
 
0.78c H.Buss + G.Stobrawa 04.3.2010
- Code cosmetics
 
0.78f H.Buss + I.Busker 23.3.2010
- Unterstützung für Jeti-Expander
- Begrenzung des Vario-Höhenreglers auf ein 10m-Fenster um Überläufe zu verhindern
- Einführung eines Vario-Zeichens (+/-/ ) auf der Jetibox
- BL-Timeout beim Start erhöht
 
0.80a-d H. Buss + G.Stobrawa 20.5.2010 - 22.7.2010
- Motoren Starten nicht ohne Kalibrierung
- Unterstützung der BL2.0-Regler
- statt 8 nun 10 Bit Auflösung der Lageregekung
- Unterstützung der BL2.0-Regler Konfiguration via MK-Tool
- Parametersätze werden per I2C an die BL-Regler durchgereicht
- "Care-Free" implementiert
- Freie Belegung der "Vorne"-Richtung
- nur wenn Motoren laufen: Beepen, wenn Carefree ohne Navi oder ohne gültigen MK3Mag-Wert
- nur wenn Motoren laufen: Beepen wenn NC plötzlich ausfällt
- #define RECEIVER_SPEKTRUM_EXP eingeführt
- #define SWITCH_LEARNS_CAREFREE eingeführt
- Schwerpunktanzeige in den 3D-Daten
- Checksummen gesicherte Datenablage im EEProm
- Fehlerdiagnose implementiert (Wiki: ErrorCodes)
- ErrorCode aufs Jeti-Display
 
- JetiMenü: bis acht Temperaturen der BL-Regler
- GPSInfo.Speed im Jeti-Display
- Compass-Richtung nun im Jeti-menü
 
- diverse Änderungen im Höhenregler
- P wirkt schwächer
- D wirkt stärker
- Anpassung der Höhenregelung auf Level des Hoovergases
- AccZ schneller nachführen
 
Parameter modifiziert:
- EEPROM-Kompatibilität auf 84 -> Parameter werden resettet
- EE_Parameter.Hoehe_ACC_Wirkung = 0; // war 30
- EE_Parameter.Hoehe_HoverBand = 8; // war 5
- Notgas = 45
- NotgasZeit = 90
- Beginnersetting: EE_Parameter.DynamicStability = 70;
- Neu: GyroStability = 6
- GPS-Login-Time auf 2 reduziert
 
0.80e H.Buss 02.08.2010
- MK3Mag ohne NC ging nicht
 
0.80f H.Buss 04.08.2010
- Beim Höhenregler "Deckel" wird das Gas wieder wie in der alten Version behandelt und der D-Anteil auf das alte Verhalten (um Faktor 8) reduziert
 
0.80g H.Buss 11.08.2010
- erweitetern Messbereich für Luftdruck bei der FC2.1 aktiviert
 
0.80h H.Buss 30.08.2010
- bei I2C-Fehlern wurden die Counter zurück gesetzt und für einige ms die Interrupts angehalten - das ist jetzt behoben
- Nur I2C-Daten senden, wenn das alte Paket komplett raus ist
 
0.82a H.Buss 08.11.2010
- MotorSafetySwitch - Verriegelt das Ein/Ausschalten
- ServoManualControlSpeed - Verlangsamt das Cam-Servo
- CamOrientation - für verdrehte Kamera-Servos
- Position der Status-Bits verändert
- "Zucken" der Servos bei kurzen Empfangsausfällen behoben
- jeti update command 'j' added
- Poti-Auswertung nach ParameterZuordnung() verschoben -> FC-Code schneller
- Waypont-Events z.B. zum Triggern der Kamera
- Gyro-Sytbility: Werte bis 16 möglich