diff --git a/final_project/Debug/clock.o b/final_project/Debug/clock.o
index 3406fde..bf8fb70 100644
Binary files a/final_project/Debug/clock.o and b/final_project/Debug/clock.o differ
diff --git a/final_project/Debug/final_project.elf b/final_project/Debug/final_project.elf
index a44e182..c7a0f2e 100644
Binary files a/final_project/Debug/final_project.elf and b/final_project/Debug/final_project.elf differ
diff --git a/final_project/Debug/final_project.hex b/final_project/Debug/final_project.hex
index 4e54162..fa74e0f 100644
--- a/final_project/Debug/final_project.hex
+++ b/final_project/Debug/final_project.hex
@@ -1,7 +1,7 @@
 :100000000C9466000C9483000C9483000C94830081
 :100010000C9483000C9483000C9483000C94830054
 :100020000C9483000C9483000C9483000C94830044
-:100030000C9483000C94F5040C9483000C948300BE
+:100030000C9483000C9483000C9483000C94830034
 :100040000C9483000C9483000C9483000C94830024
 :100050000C9483000C9483000C9483000C94830014
 :100060000C9483000C9483000C9483000C94830004
@@ -11,10 +11,10 @@
 :1000A0000C9483000C9483000C9483000C948300C4
 :1000B0000C9483000C9483000C9483000C948300B4
 :1000C0000C9483000C9483000C94830011241FBEB5
-:1000D000CFEFD8E0DEBFCDBF11E0A0E0B1E0ECE1B2
-:1000E000F5E102C005900D92A83DB107D9F721E0D6
-:1000F000A8EDB1E001C01D92AA3DB207E1F70E9450
-:10010000A1020C948C0A0C940000CF93DF93CDB71E
+:1000D000CFEFD8E0DEBFCDBF11E0A0E0B1E0EEEDA4
+:1000E000F5E102C005900D92A23BB107D9F721E0DE
+:1000F000A2EBB1E001C01D92A43BB207E1F70E9460
+:10010000B2030C94ED0A0C940000CF93DF93CDB7AB
 :10011000DEB780E890E0FC01108281E890E028E002
 :10012000FC01208384E890E0FC0111821082000031
 :10013000DF91CF910895CF93DF93CDB7DEB784E8F9
@@ -47,307 +47,317 @@
 :1002E00080810E94280189819A8101969A8389835D
 :1002F00089819A812B813C81820F931FFC0180812F
 :10030000882339F700000F900F900F900F90DF9126
-:10031000CF910895CF93DF93CDB7DEB78CE290E015
-:10032000FC018081882F90E080749927892B11F43B
-:1003300084E006C080E290E0FC0180818095837FAC
-:10034000DF91CF910895CF93DF93CDB7DEB7639759
-:100350000FB6F894DEBF0FBECDBF898B7B8B6A8B47
-:100360001A8219828989882F90E084709927892BB5
-:1003700011F080E289838989837F8A838BE290E010
-:100380002BE230E0F90130812A812327FC01208310
-:100390008EE290E02EE230E0F901308129812327BE
-:1003A000FC01208320E030E040E85EE364EA70ED89
-:1003B00084EA93E40E9425064A895B8928EE33E0AB
-:1003C000429FC001439F900D529F900D1124CC017C
-:1003D000A0E0B0E0BC01CD010E944008DC01CB01EF
-:1003E0008B839C83AD83BE8320E030E04AE755E4F5
-:1003F0006B817C818D819E810E943809DC01CB015B
-:100400008F839887A987BA8720E030E040E85FE3D0
-:100410006F81788589859A850E94930788232CF4BB
-:1004200081E090E09C878B873FC020E03FEF4FE763
-:1004300057E46F81788589859A850E94330918165B
-:100440004CF520E030E040E251E46B817C818D810D
-:100450009E810E943809DC01CB01BC01CD010E94C4
-:100460001108DC01CB019C878B870FC080E991E0EC
-:100470009E878D878D859E850197F1F79E878D8755
-:100480008B859C8501979C878B878B859C85892B89
-:1004900069F714C06F81788589859A850E94110853
-:1004A000DC01CB019C878B878B859C85988B8F8704
-:1004B0008F8598890197F1F7988B8F878BE290E071
-:1004C0002BE230E0F90130812A812327FC012083CF
-:1004D0008EE290E02EE230E0F9013081298123277D
-:1004E000FC012083000063960FB6F894DEBF0FBEB8
-:1004F000CDBFDF91CF910895CF93DF93CDB7DEB716
-:1005000081E290E0FC01108282E290E02FEFFC019A
-:1005100020838AE290E02FEFFC0120838BE290E0C1
-:100520002FEFFC0120838DE290E020E3FC0120838B
-:100530008EE290E02FEFFC0120830000DF91CF914D
-:1005400008958F929F92AF92BF92CF92DF92EF92D7
-:10055000FF92CF93DF93CDB7DEB7E3970FB6F89452
-:10056000DEBF0FBECDBFF8940E9485000E947C02C2
-:100570000E94FF001A82198280E191E00E945E01D0
-:1005800007C00E944C01882F90E0C0979A8389830E
-:1005900089819A810497ACF789819A811816190686
-:1005A00084F716C289819A8182309105D9F083300F
-:1005B000910569F1019709F03FC083E090E09E83C7
-:1005C0008D8383E090E09C838B8385E090E0988727
-:1005D0008F8383E090E09A87898785E090E09C870D
-:1005E0008B872AC084E090E09E838D8382E090E038
-:1005F0009C838B8387E090E098878F8383E090E0F3
-:100600009A8789878AE090E09C878B8715C085E070
-:1006100090E09E838D8381E090E09C838B838AE0D1
-:1006200090E098878F8385E090E09A8789878FE0B4
-:1006300090E09C878B8700001E861D86188A1F8687
-:100640001A8A198A7FC189859A85092E000CAA0BFE
-:10065000BB0BBC01CD010E9442086B017C012B85C4
-:100660003C8589859A85A901481B590BCA01092E29
-:10067000000CAA0BBB0BBC01CD010E9442084B0130
-:100680005C018D819E810197092E000CAA0BBB0B8A
-:10069000BC01CD010E944208DC01CB019C01AD01EF
-:1006A000C501B4010E949807DC01CB014C015D013A
-:1006B00089899A89092E000CAA0BBB0BBC01CD01BC
-:1006C0000E944208DC01CB019C01AD01C501B401CF
-:1006D0000E943809DC01CB01BC01CD010E947C07DE
-:1006E000DC01CB019C01AD01C701B6010E941007DE
-:1006F000DC01CB01BC01CD010E940A08DC01CB0169
-:100700009B8F8A8F1C8A1B8A37C00E94190A27E098
-:1007100030E0B9010E94A5098D8B8D89833011F4D9
-:1007200087E08D8B8D89282F30E081E090E002C03A
-:10073000880F991F2A95E2F78C8F8AE00E94280182
-:100740008D89805D0E9428018AE00E9428019E0117
-:10075000215D3F4F8B899C89820F931F2C8DFC015B
-:1007600020838B819C81BC018C8D0E94A3018B898D
-:100770009C8901969C8B8B8B2B893C898A8D9B8DC8
-:100780002817390714F28F8198859093D9018093A7
-:10079000D8010E949B00198E188EC7C086E691E092
-:1007A0000E945E010E94EB008823C1F08091D80175
-:1007B0009091D90101979093D9018093D8010E941B
-:1007C000CB000E949B002DEC3CEC4CEC5DE364EA1A
-:1007D00070ED82E893E40E94250606C00E948A011B
-:1007E000882F90E09F8B8E8B8E899F89892B39F47F
-:1007F0008091D8019091D901181619069CF280E0D9
-:1008000090E0AAE7B3E489A39AA3ABA3BCA320E03A
-:1008100030E04AE755E469A17AA18BA19CA10E942E
-:100820003809DC01CB018DA39EA3AFA3B8A720E0BC
-:1008300030E040E85FE36DA17EA18FA198A50E9402
-:10084000930788232CF481E090E09AA789A73FC002
-:1008500020E03FEF4FE757E46DA17EA18FA198A55F
-:100860000E94330918164CF520E030E040E251E4D4
-:1008700069A17AA18BA19CA10E943809DC01CB015E
-:10088000BC01CD010E941108DC01CB019AA789A708
-:100890000FC080E991E09CA78BA78BA59CA5019731
-:1008A000F1F79CA78BA789A59AA501979AA789A775
-:1008B00089A59AA5892B69F714C06DA17EA18FA186
-:1008C00098A50E941108DC01CB019AA789A789A5E8
-:1008D0009AA59EA78DA78DA59EA50197F1F79EA726
-:1008E0008DA78D859E8501969E878D879E01215DB2
-:1008F0003F4F888D998D820F931FFC018081282F97
-:1009000030E08E899F892817390741F48F859889AF
-:100910000196988B8F870E94310502C00E9447057F
-:10092000888D998D0196998F888F288D398D8A8D24
-:100930009B8D281739070CF431CF89899A89019644
-:100940009A8B898B29893A898D819E81281739074D
-:100950000CF479CE8F859889092E000CAA0BBB0B5D
-:10096000BC01CD010E9442086B017C018D859E85F2
-:10097000092E000CAA0BBB0BBC01CD010E94420842
-:10098000DC01CB019C01AD01C701B6010E949807B3
-:10099000DC01CB018D8F9E8FAF8FB8A32DEC3CEC8B
-:1009A0004CE45FE36D8D7E8D8F8D98A10E9433099D
-:1009B000882354F089819A8101969A83898380E8FB
-:1009C00091E00E945E0104C00E940506000005C07F
-:1009D00089819A8103970CF4E5CD89819A810397E7
-:1009E0000CF4C8CD0E94E505C5CD1F920F92009072
-:1009F0005F000F9211242F933F934F935F936F9358
-:100A00007F938F939F93AF93BF93EF93FF93CF9376
-:100A1000DF93CDB7DEB78091D8019091D9019C01C9
-:100A2000215031093093D9012093D80118161906A5
-:100A30001CF00E942506FDCF0000DF91CF91FF91B1
-:100A4000EF91BF91AF919F918F917F916F915F9146
-:100A50004F913F912F910F9000925F000F901F9048
-:100A60001895CF93DF93CDB7DEB78DE891E00E9464
-:100A70005E012DEC3CEC4CEC5DE360E070E08CED55
-:100A800093E40E9425060000DF91CF910895CF9353
-:100A9000DF93CDB7DEB72E970FB6F894DEBF0FBE4B
-:100AA000CDBF88E991E00E945E012DEC3CEC4CE466
-:100AB0005EE36CE57FEC82E893E40E94250680E02B
-:100AC00090E0A8ECB1E489839A83AB83BC8320E0F7
-:100AD00030E04AE755E469817A818B819C810E94EC
-:100AE0003809DC01CB018D839E83AF83B88720E07A
-:100AF00030E040E85FE36D817E818F8198850E94C0
-:100B0000930788232CF481E090E09A8789873FC07F
-:100B100020E03FEF4FE757E46D817E818F8198851C
-:100B20000E94330918164CF520E030E040E251E411
-:100B300069817A818B819C810E943809DC01CB011B
-:100B4000BC01CD010E941108DC01CB019A87898785
-:100B50000FC080E991E09C878B878B859C850197EE
-:100B6000F1F79C878B8789859A8501979A87898772
-:100B700089859A85892B69F714C06D817E818F8163
-:100B800098850E941108DC01CB019A8789878985A5
-:100B90009A859E878D878D859E850197F1F79E8723
-:100BA0008D872DEC3CEC4CE45EE36CE57FEC82E859
-:100BB00093E40E94250600002E960FB6F894DEBF3F
-:100BC0000FBECDBFDF91CF910895CF93DF93CDB707
-:100BD000DEB78BEA91E00E945E0120E030E040E069
-:100BE0005FE360E070E083E893E40E94250620E084
-:100BF00030E040E05FE360E070E084EC93E40E946A
-:100C000025060000DF91CF910895CF93DF93CDB7F4
-:100C1000DEB780EC91E00E945E0120E030E040E031
-:100C20005FE360E070E085EA93E40E94250620E03F
-:100C300030E040E05FE360E070E083E993E40E942D
-:100C400025060000DF91CF910895CF93DF93CDB7B4
-:100C5000DEB76E970FB6F894DEBF0FBECDBF6F8BB9
-:100C6000788F898F9A8F2B8F3C8F4D8F5E8F2F8936
-:100C7000388D498D5A8D60E070E080E89FE30E94D6
-:100C80009807DC01CB0120E030E040E050E4BC01FB
-:100C9000CD010E949807DC01CB0120E030E04AE75B
-:100CA00054E4BC01CD010E943809DC01CB018B83E7
-:100CB0009C83AD83BE832F89388D498D5A8D60E02A
-:100CC00070E080E89FE30E949807DC01CB019C0163
-:100CD000AD016B8D7C8D8D8D9E8D0E949807DC0102
-:100CE000CB01BC01CD010E940A08DC01CB01988731
-:100CF0008F831A82198281C08B819C81AD81BE81D4
-:100D000089879A87AB87BC8720E030E04AE755E4C3
-:100D100069857A858B859C850E943809DC01CB0129
-:100D20008D879E87AF87B88B20E030E040E85FE397
-:100D30006D857E858F8598890E94930788232CF482
-:100D400081E090E09A8B898B3FC020E03FEF4FE736
-:100D500057E46D857E858F8598890E943309181622
-:100D60004CF520E030E040E251E469857A858B85DE
-:100D70009C850E943809DC01CB01BC01CD010E9499
-:100D80001108DC01CB019A8B898B0FC080E991E0BF
-:100D90009C8B8B8B8B899C890197F1F79C8B8B8B20
-:100DA00089899A8901979A8B898B89899A89892B54
-:100DB00069F714C06D857E858F8598890E9411081A
-:100DC000DC01CB019A8B898B89899A899E8B8D8BCB
-:100DD0008D899E890197F1F79E8B8D8B8EE290E035
-:100DE0002EE230E0F901308120E12327FC0120834D
-:100DF00089819A8101969A8389838F819885298137
-:100E00003A812817390708F477CF00006E960FB69D
-:100E1000F894DEBF0FBECDBFDF91CF91089550583B
-:100E2000BB27AA270E9427070C94E1080E94D30839
-:100E300038F00E94DA0820F039F49F3F19F426F4C4
-:100E40000C94D0080EF4E095E7FB0C94A108E92F70
-:100E50000E94F20858F3BA176207730784079507D0
-:100E600020F079F4A6F50C942C090EF4E0950B2EE5
-:100E7000BA2FA02D0B01B90190010C01CA01A001EC
-:100E80001124FF27591B99F0593F50F4503E68F147
-:100E90001A16F040A22F232F342F4427585FF3CF88
-:100EA000469537952795A795F0405395C9F77EF459
-:100EB0001F16BA0B620B730B840BBAF09150A1F0A2
-:100EC000FF0FBB1F661F771F881FC2F70EC0BA0F28
-:100ED000621F731F841F48F4879577956795B795B0
-:100EE000F7959E3F08F0B0CF9395880F08F09927AB
-:100EF000EE0F9795879508950E94140990F09F37FB
-:100F000048F4911116F40C942D0960E070E080E82B
-:100F10009FE3089526F01B16611D711D811D0C9421
-:100F2000A7080C94C2080E947D0808F481E0089587
-:100F30000E94AC070C94E1080E94DA0858F00E9465
-:100F4000D30840F029F45F3F29F00C94A108511117
-:100F50000C942D090C94D0080E94F20868F3992390
-:100F6000B1F3552391F3951B550BBB27AA276217A5
-:100F70007307840738F09F5F5F4F220F331F441FB2
-:100F8000AA1FA9F335D00E2E3AF0E0E832D09150E6
-:100F90005040E695001CCAF72BD0FE2F29D0660FD3
-:100FA000771F881FBB1F261737074807AB07B0E816
-:100FB00009F0BB0B802DBF01FF2793585F4F3AF01C
-:100FC0009E3F510578F00C94A1080C942D095F3FC9
-:100FD000E4F3983ED4F3869577956795B795F795A2
-:100FE0009F5FC9F7880F911D9695879597F908958A
-:100FF000E1E0660F771F881FBB1F62177307840726
-:10100000BA0720F0621B730B840BBA0BEE1F88F734
-:10101000E09508950E9411086894B1110C942D096F
-:1010200008950E94FA0888F09F5798F0B92F9927E1
-:10103000B751B0F0E1F0660F771F881F991F1AF0C3
-:10104000BA95C9F714C0B13091F00E942C09B1E0F3
-:1010500008950C942C09672F782F8827B85F39F0F2
-:10106000B93FCCF3869577956795B395D9F73EF45C
-:1010700090958095709561957F4F8F4F9F4F089504
-:10108000E89409C097FB3EF4909580957095619522
-:101090007F4F8F4F9F4F9923A9F0F92F96E9BB27D8
-:1010A0009395F695879577956795B795F111F8CF54
-:1010B000FAF4BB0F11F460FF1BC06F5F7F4F8F4FBF
-:1010C0009F4F16C0882311F096E911C0772321F0B5
-:1010D0009EE8872F762F05C0662371F096E8862F4D
-:1010E00070E060E02AF09A95660F771F881FDAF7A4
-:1010F000880F9695879597F90895990F0008550FD1
-:10110000AA0BE0E8FEEF16161706E807F907C0F08D
-:1011100012161306E407F50798F0621B730B840B95
-:10112000950B39F40A2661F0232B242B252B21F46F
-:1011300008950A2609F4A140A6958FEF811D811D0F
-:10114000089597F99F6780E870E060E0089588232C
-:1011500071F4772321F09850872B762F07C06623F0
-:1011600011F499270DC09051862B70E060E02AF0B1
-:101170009A95660F771F881FDAF7880F96958795DF
-:1011800097F908959F3F31F0915020F48795779516
-:101190006795B795880F911D9695879597F908954E
-:1011A0009FEF80EC089500240A941616170618067F
-:1011B0000906089500240A9412161306140605065B
-:1011C0000895092E0394000C11F4882352F0BB0FEC
-:1011D00040F4BF2B11F460FF04C06F5F7F4F8F4F4F
-:1011E0009F4F089557FD9058440F551F59F05F3F8A
-:1011F00071F04795880F97FB991F61F09F3F79F039
-:1012000087950895121613061406551FF2CF4695BA
-:10121000F1DF08C0161617061806991FF1CF86953C
-:1012200071056105089408950E94FA08A0F0BEE7D0
-:10123000B91788F4BB279F3860F41616B11D672FC5
-:10124000782F8827985FF7CF869577956795B11D9A
-:1012500093959639C8F30895E894BB2766277727B6
-:10126000CB0197F908950E947D0808F48FEF089547
-:101270000E944B090C94E1080E94D30838F00E94A8
-:10128000DA0820F0952311F00C94A1080C94D008F2
-:1012900011240C942D090E94F20870F3959FC1F35C
-:1012A000950F50E0551F629FF001729FBB27F00D14
-:1012B000B11D639FAA27F00DB11DAA1F649F662769
-:1012C000B00DA11D661F829F2227B00DA11D621FB8
-:1012D000739FB00DA11D621F839FA00D611D221F72
-:1012E000749F3327A00D611D231F849F600D211D56
-:1012F000822F762F6A2F11249F5750409AF0F1F0D9
-:1013000088234AF0EE0FFF1FBB1F661F771F881F41
-:1013100091505040A9F79E3F510580F00C94A108D0
-:101320000C942D095F3FE4F3983ED4F386957795AE
-:101330006795B795F795E7959F5FC1F7FE2B880FE7
-:10134000911D9695879597F9089597FB072E16F4AA
-:10135000009407D077FD09D00E94B90907FC05D099
-:101360003EF4909581959F4F0895709561957F4FBC
-:101370000895AA1BBB1B51E107C0AA1FBB1FA617DC
-:10138000B70710F0A61BB70B881F991F5A95A9F72E
-:1013900080959095BC01CD0108958F929F92AF9258
-:1013A000BF92CF92DF92EF92FF92CF93DF93EC0147
-:1013B000688179818A819B8161157105810591051B
-:1013C00021F464E279ED8BE597E02DE133EF41E024
-:1013D00050E00E94290A49015A019B01AC01A7EA89
-:1013E000B1E40E94480A6B017C01ACEEB4EFA501A8
-:1013F00094010E94560ADC01CB018C0D9D1DAE1D8F
-:10140000BF1DB7FF03C00197A109B0488883998326
-:10141000AA83BB839F77DF91CF91FF90EF90DF90FE
-:10142000CF90BF90AF909F908F9008950E94CD096C
-:10143000089580E091E00E94CD090895A0E0B0E019
-:101440008093000190930101A0930201B0930301E6
-:101450000895052E97FB1EF400940E94400A57FD44
-:1014600007D00E945B0A07FC03D04EF40C94400A9C
-:1014700050954095309521953F4F4F4F5F4F0895C0
-:1014800090958095709561957F4F8F4F9F4F0895F0
-:101490000E947D0AA59F900DB49F900DA49F800D82
-:1014A000911D11240895B7FF0C94480A0E94480A20
-:1014B000821B930B0895A1E21A2EAA1BBB1BFD01F0
-:1014C0000DC0AA1FBB1FEE1FFF1FA217B307E40723
-:1014D000F50720F0A21BB30BE40BF50B661F771F7B
-:1014E000881F991F1A9469F760957095809590955B
-:1014F0009B01AC01BD01CF010895A29FB001B39F34
-:10150000C001A39F700D811D1124911DB29F700D0C
-:0C151000811D1124911D0895F894FFCF57
-:10151C000100000074696D657220746573740A00B3
-:10152C0053494D4F4E2047414D450A456E746572E7
-:10153C0020796F7572207374617274696E672064A0
-:10154C006966666963756C7479206C6576656C3A4E
-:10155C000A312E20456173790A322E204D6F646555
-:10156C00726174650A332E2047697665206D65209B
-:10157C007061696E2E000A676F7420656C656D650D
-:10158C006E742C2077616974696E672E2E2E0A009A
-:10159C000A6E657874206C6576656C0A000A436F78
-:1015AC007272656374210A000A496E636F72726508
-:1015BC0063742067756573732E0A000A596F752062
-:1015CC0062656174207468652067616D65210A002D
-:1015DC000A596F75206C6F6F73652C2074727920AB
-:0815EC00616761696E3F0A00AE
+:10031000CF910895CF93DF93CDB7DEB7A1970FB6F6
+:10032000F894DEBF0FBECDBF80E090E0A8ECB2E451
+:1003300089839A83AB83BC838CE290E0FC0180814B
+:10034000882F90E080749927892B09F07FC00000E6
+:100350008CE290E0FC018081882F90E080749927E6
+:10036000892BB1F389819A81AB81BC818A879B8774
+:10037000AC87BD8720E030E04AE755E46A857B859D
+:100380008C859D850E949909DC01CB018E879F8712
+:10039000A88BB98B20E030E040E85FE36E857F8575
+:1003A000888999890E94F40788232CF481E090E0E1
+:1003B0009B8B8A8B3FC020E03FEF4FE757E46E8571
+:1003C0007F85888999890E94940918164CF520E048
+:1003D00030E040E251E46A857B858C859D850E94F2
+:1003E0009909DC01CB01BC01CD010E947208DC013E
+:1003F000CB019B8B8A8B0FC080E991E09D8B8C8B0E
+:100400008C899D890197F1F79D8B8C8B8A899B89BB
+:1004100001979B8B8A8B8A899B89892B69F714C0EA
+:100420006E857F85888999890E947208DC01CB01DD
+:100430009B8B8A8B8A899B899F8B8E8B8E899F89C8
+:100440000197F1F79F8B8E8B84E085C080E290E06E
+:10045000FC0180818095837F89878985882309F4C1
+:1004600079C0000080E290E0FC0180818F3FD1F7ED
+:1004700089819A81AB81BC818D839E83AF83B8874C
+:1004800020E030E04AE755E46D817E818F819885D8
+:100490000E949909DC01CB01888F998FAA8FBB8FAD
+:1004A00020E030E040E85FE3688D798D8A8D9B8D98
+:1004B0000E94F40788232CF481E090E09D8F8C8FBC
+:1004C0003FC020E03FEF4FE757E4688D798D8A8D7C
+:1004D0009B8D0E94940918164CF520E030E040E214
+:1004E00051E46D817E818F8198850E949909DC019C
+:1004F000CB01BC01CD010E947208DC01CB019D8FB4
+:100500008C8F0FC080E991E09F8F8E8F8E8D9F8D95
+:100510000197F1F79F8F8E8F8C8D9D8D01979D8F09
+:100520008C8F8C8D9D8D892B69F714C0688D798D8A
+:100530008A8D9B8D0E947208DC01CB019D8F8C8F70
+:100540008C8D9D8D99A388A388A199A10197F1F71E
+:1005500099A388A38985A1960FB6F894DEBF0FBE34
+:10056000CDBFDF91CF910895CF93DF93CDB7DEB7A5
+:1005700063970FB6F894DEBF0FBECDBF898B7B8B20
+:100580006A8B1A8219828989882F90E08470992752
+:10059000892B11F080E289838989837F8A838BE2AA
+:1005A00090E02BE230E0F90130812A812327FC0121
+:1005B00020838EE290E02EE230E0F9013081298143
+:1005C0002327FC01208320E030E040E85EE364EA7A
+:1005D00070ED84EA93E40E9486064A895B8928EEDE
+:1005E00033E0429FC001439F900D529F900D112414
+:1005F000CC01A0E0B0E0BC01CD010E94A108DC016B
+:10060000CB018B839C83AD83BE8320E030E04AE73F
+:1006100055E46B817C818D819E810E949909DC016A
+:10062000CB018F839887A987BA8720E030E040E824
+:100630005FE36F81788589859A850E94F407882316
+:100640002CF481E090E09C878B873FC020E03FEF57
+:100650004FE757E46F81788589859A850E949409D0
+:1006600018164CF520E030E040E251E46B817C81CB
+:100670008D819E810E949909DC01CB01BC01CD01D5
+:100680000E947208DC01CB019C878B870FC080E938
+:1006900091E09E878D878D859E850197F1F79E87D6
+:1006A0008D878B859C8501979C878B878B859C8507
+:1006B000892B69F714C06F81788589859A850E9496
+:1006C0007208DC01CB019C878B878B859C85988B7E
+:1006D0008F878F8598890197F1F7988B8F878BE2A9
+:1006E00090E02BE230E0F90130812A812327FC01E0
+:1006F00020838EE290E02EE230E0F9013081298102
+:100700002327FC012083000063960FB6F894DEBF18
+:100710000FBECDBFDF91CF910895CF93DF93CDB7BB
+:10072000DEB781E290E0FC01108282E290E02FEFE0
+:10073000FC0120838AE290E02FEFFC0120838BE212
+:1007400090E02FEFFC0120838DE290E020E3FC019C
+:1007500020838EE290E02FEFFC0120830000DF91E8
+:10076000CF9108958F929F92AF92BF92CF92DF92D6
+:10077000EF92FF92CF93DF93CDB7DEB7A5970FB679
+:10078000F894DEBF0FBECDBFF8940E9485000E9492
+:100790008D030E94FF001A82198284E091E00E947A
+:1007A0005E0107C00E944C01882F90E0C0979A8399
+:1007B000898389819A810497ACF789819A81181677
+:1007C000190684F7A2C189819A8182309105D9F0F6
+:1007D0008330910569F1019709F03FC083E090E013
+:1007E0009E838D8383E090E09C838B8385E090E003
+:1007F00098878F8383E090E09A87898785E090E0EF
+:100800009C878B872AC084E090E09E838D8382E062
+:1008100090E09C838B8387E090E098878F8383E0D0
+:1008200090E09A8789878AE090E09C878B8715C043
+:1008300085E090E09E838D8381E090E09C838B83B4
+:100840008AE090E098878F8385E090E09A87898797
+:100850008FE090E09C878B8700001E861D86188A9B
+:100860001F861A8A198A0BC189859A85092E000C60
+:10087000AA0BBB0BBC01CD010E94A3086B017C013C
+:100880002B853C8589859A85A901481B590BCA018E
+:10089000092E000CAA0BBB0BBC01CD010E94A308C2
+:1008A0004B015C018D819E810197092E000CAA0BE2
+:1008B000BB0BBC01CD010E94A308DC01CB019C0154
+:1008C000AD01C501B4010E94F907DC01CB014C0167
+:1008D0005D0189899A89092E000CAA0BBB0BBC010A
+:1008E000CD010E94A308DC01CB019C01AD01C50133
+:1008F000B4010E949909DC01CB01BC01CD010E9429
+:10090000DD07DC01CB019C01AD01C701B6010E94EE
+:100910007107DC01CB01BC01CD010E946B08DC0139
+:10092000CB019B8F8A8F1C8A1B8A37C00E947A0A50
+:1009300027E030E0B9010E94060A8D8B8D89833053
+:1009400011F487E08D8B8D89282F30E081E090E0D5
+:1009500002C0880F991F2A95E2F78C8F8AE00E94C7
+:1009600028018D89805D0E9428018AE00E9428016B
+:100970009E012F5D3F4F8B899C89820F931F2C8D89
+:10098000FC0120838B819C81BC018C8D0E94B40270
+:100990008B899C8901969C8B8B8B2B893C898A8DBA
+:1009A0009B8D2817390714F28F8198859093B30196
+:1009B0008093B2010E949B00198E188E53C01F8A2B
+:1009C0001E8A0E94EB008823C1F08091B2019091B1
+:1009D000B30101979093B3018093B2010E94CB00C1
+:1009E0000E949B002DEC3CEC4CEC5DE364EA70ED66
+:1009F00082E893E40E94860606C00E948A01882F3E
+:100A000090E09F8B8E8B8E899F89892B39F4809102
+:100A1000B2019091B301181619069CF28D859E853E
+:100A200001969E878D879E012F5D3F4F888D998D02
+:100A3000820F931FFC018081282F30E08E899F89CF
+:100A40002817390741F48F8598890196988B8F87ED
+:100A50000E94920502C00E94A805888D998D01967A
+:100A6000998F888F288D398D8A8D9B8D281739070E
+:100A70000CF4A5CF89899A8901969A8B898B29894B
+:100A80003A898D819E81281739070CF4EDCE8F8528
+:100A90009889092E000CAA0BBB0BBC01CD010E944A
+:100AA000A3086B017C018D859E85092E000CAA0B85
+:100AB000BB0BBC01CD010E94A308DC01CB019C0152
+:100AC000AD01C701B6010E94F907DC01CB018D8F92
+:100AD0009E8FAF8FB8A32DEC3CEC4CE45FE36D8DA3
+:100AE0007E8D8F8D98A10E949409882354F089816E
+:100AF0009A8101969A8389838AE591E00E945E013A
+:100B000004C00E946606000005C089819A8103978F
+:100B10000CF459CE89819A8103970CF43CCE0E9443
+:100B2000460639CECF93DF93CDB7DEB787E691E0A7
+:100B30000E945E012DEC3CEC4CEC5DE360E070E06B
+:100B40008CED93E40E9486060000DF91CF9108951A
+:100B5000CF93DF93CDB7DEB72E970FB6F894DEBFF5
+:100B60000FBECDBF82E791E00E945E012DEC3CEC10
+:100B70004CE45EE36CE57FEC82E893E40E94860639
+:100B800080E090E0A8ECB1E489839A83AB83BC83D6
+:100B900020E030E04AE755E469817A818B819C81CD
+:100BA0000E949909DC01CB018D839E83AF83B887B6
+:100BB00020E030E040E85FE36D817E818F819885A1
+:100BC0000E94F40788232CF481E090E09A878987BB
+:100BD0003FC020E03FEF4FE757E46D817E818F817A
+:100BE00098850E94940918164CF520E030E040E208
+:100BF00051E469817A818B819C810E949909DC0191
+:100C0000CB01BC01CD010E947208DC01CB019A87A7
+:100C100089870FC080E991E09C878B878B859C85B5
+:100C20000197F1F79C878B8789859A8501979A8729
+:100C3000898789859A85892B69F714C06D817E81A2
+:100C40008F8198850E947208DC01CB019A87898781
+:100C500089859A859E878D878D859E850197F1F779
+:100C60009E878D872DEC3CEC4CE45EE36CE57FECDD
+:100C700082E893E40E94860600002E960FB6F89450
+:100C8000DEBF0FBECDBFDF91CF910895CF93DF932D
+:100C9000CDB7DEB785E891E00E945E0120E030E04C
+:100CA00040E05FE360E070E083E893E40E94860642
+:100CB00020E030E040E05FE360E070E084EC93E44B
+:100CC0000E9486060000DF91CF910895CF93DF93B5
+:100CD000CDB7DEB78AE991E00E945E0120E030E006
+:100CE00040E05FE360E070E085EA93E40E948606FE
+:100CF00020E030E040E05FE360E070E083E993E40F
+:100D00000E9486060000DF91CF910895CF93DF9374
+:100D1000CDB7DEB76E970FB6F894DEBF0FBECDBF6E
+:100D20006F8B788F898F9A8F2B8F3C8F4D8F5E8F33
+:100D30002F89388D498D5A8D60E070E080E89FE3FF
+:100D40000E94F907DC01CB0120E030E040E050E4F4
+:100D5000BC01CD010E94F907DC01CB0120E030E0AD
+:100D60004AE754E4BC01CD010E949909DC01CB01A2
+:100D70008B839C83AD83BE832F89388D498D5A8D9B
+:100D800060E070E080E89FE30E94F907DC01CB019E
+:100D90009C01AD016B8D7C8D8D8D9E8D0E94F90720
+:100DA000DC01CB01BC01CD010E946B08DC01CB0151
+:100DB00098878F831A82198281C08B819C81AD8133
+:100DC000BE8189879A87AB87BC8720E030E04AE7FD
+:100DD00055E469857A858B859C850E949909DC019B
+:100DE000CB018D879E87AF87B88B20E030E040E84D
+:100DF0005FE36D857E858F8598890E94F40788233F
+:100E00002CF481E090E09A8B898B3FC020E03FEF8B
+:100E10004FE757E46D857E858F8598890E949409F8
+:100E200018164CF520E030E040E251E469857A85FF
+:100E30008B859C850E949909DC01CB01BC01CD0109
+:100E40000E947208DC01CB019A8B898B0FC080E96C
+:100E500091E09C8B8B8B8B899C890197F1F79C8B04
+:100E60008B8B89899A8901979A8B898B89899A8931
+:100E7000892B69F714C06D857E858F8598890E94BE
+:100E80007208DC01CB019A8B898B89899A899E8BA8
+:100E90008D8B8D899E890197F1F79E8B8D8B8EE2CC
+:100EA00090E02EE230E0F901308120E12327FC01BF
+:100EB000208389819A8101969A8389838F8198857D
+:100EC00029813A812817390708F477CF00006E96F8
+:100ED0000FB6F894DEBF0FBECDBFDF91CF9108955E
+:100EE0005058BB27AA270E9488070C9442090E94E9
+:100EF000340938F00E943B0920F039F49F3F19F47F
+:100F000026F40C9431090EF4E095E7FB0C940209E9
+:100F1000E92F0E94530958F3BA1762077307840731
+:100F2000950720F079F4A6F50C948D090EF4E09560
+:100F30000B2EBA2FA02D0B01B90190010C01CA0193
+:100F4000A0011124FF27591B99F0593F50F4503E3E
+:100F500068F11A16F040A22F232F342F4427585F30
+:100F6000F3CF469537952795A795F0405395C9F748
+:100F70007EF41F16BA0B620B730B840BBAF0915000
+:100F8000A1F0FF0FBB1F661F771F881FC2F70EC09F
+:100F9000BA0F621F731F841F48F487957795679572
+:100FA000B795F7959E3F08F0B0CF9395880F08F05E
+:100FB0009927EE0F9795879508950E94750990F0EF
+:100FC0009F3748F4911116F40C948E0960E070E09C
+:100FD00080E89FE3089526F01B16611D711D811D99
+:100FE0000C9408090C9423090E94DE0808F481E09F
+:100FF00008950E940D080C9442090E943B0958F084
+:101000000E94340940F029F45F3F29F00C94020952
+:1010100051110C948E090C9431090E94530968F304
+:101020009923B1F3552391F3951B550BBB27AA27A1
+:1010300062177307840738F09F5F5F4F220F331FDB
+:10104000441FAA1FA9F335D00E2E3AF0E0E832D0A3
+:1010500091505040E695001CCAF72BD0FE2F29D0A6
+:10106000660F771F881FBB1F261737074807AB0778
+:10107000B0E809F0BB0B802DBF01FF2793585F4FED
+:101080003AF09E3F510578F00C9402090C948E09B9
+:101090005F3FE4F3983ED4F3869577956795B795CF
+:1010A000F7959F5FC9F7880F911D9695879597F9DA
+:1010B0000895E1E0660F771F881FBB1F6217730753
+:1010C0008407BA0720F0621B730B840BBA0BEE1F68
+:1010D00088F7E09508950E9472086894B1110C9405
+:1010E0008E0908950E945B0988F09F5798F0B92FE8
+:1010F0009927B751B0F0E1F0660F771F881F991F4D
+:101100001AF0BA95C9F714C0B13091F00E948D0958
+:10111000B1E008950C948D09672F782F8827B85F68
+:1011200039F0B93FCCF3869577956795B395D9F7A4
+:101130003EF490958095709561957F4F8F4F9F4FAE
+:101140000895E89409C097FB3EF4909580957095BA
+:1011500061957F4F8F4F9F4F9923A9F0F92F96E903
+:10116000BB279395F695879577956795B795F11178
+:10117000F8CFFAF4BB0F11F460FF1BC06F5F7F4F15
+:101180008F4F9F4F16C0882311F096E911C0772327
+:1011900021F09EE8872F762F05C0662371F096E830
+:1011A000862F70E060E02AF09A95660F771F881FFF
+:1011B000DAF7880F9695879597F90895990F0008A3
+:1011C000550FAA0BE0E8FEEF16161706E807F90719
+:1011D000C0F012161306E407F50798F0621B730BB4
+:1011E000840B950B39F40A2661F0232B242B252B35
+:1011F00021F408950A2609F4A140A6958FEF811DD8
+:10120000811D089597F99F6780E870E060E0089578
+:10121000882371F4772321F09850872B762F07C00D
+:10122000662311F499270DC09051862B70E060E081
+:101230002AF09A95660F771F881FDAF7880F969520
+:10124000879597F908959F3F31F0915020F4879545
+:1012500077956795B795880F911D9695879597F91E
+:1012600008959FEF80EC089500240A94161617063F
+:1012700018060906089500240A9412161306140687
+:1012800005060895092E0394000C11F4882352F0EA
+:10129000BB0F40F4BF2B11F460FF04C06F5F7F4FA2
+:1012A0008F4F9F4F089557FD9058440F551F59F089
+:1012B0005F3F71F04795880F97FB991F61F09F3F43
+:1012C00079F087950895121613061406551FF2CF6C
+:1012D0004695F1DF08C0161617061806991FF1CFBC
+:1012E000869571056105089408950E945B09A0F038
+:1012F000BEE7B91788F4BB279F3860F41616B11DF6
+:10130000672F782F8827985FF7CF86957795679511
+:10131000B11D93959639C8F30895E894BB276627C5
+:101320007727CB0197F908950E94DE0808F48FEF24
+:1013300008950E94AC090C9442090E94340938F0C7
+:101340000E943B0920F0952311F00C9402090C94A3
+:10135000310911240C948E090E94530970F3959F52
+:10136000C1F3950F50E0551F629FF001729FBB279C
+:10137000F00DB11D639FAA27F00DB11DAA1F649F38
+:101380006627B00DA11D661F829F2227B00DA11DEB
+:10139000621F739FB00DA11D621F839FA00D611D71
+:1013A000221F749F3327A00D611D231F849F600D92
+:1013B000211D822F762F6A2F11249F5750409AF0BB
+:1013C000F1F088234AF0EE0FFF1FBB1F661F771F47
+:1013D000881F91505040A9F79E3F510580F00C9412
+:1013E00002090C948E095F3FE4F3983ED4F386958E
+:1013F00077956795B795F795E7959F5FC1F7FE2BB2
+:10140000880F911D9695879597F9089597FB072E5C
+:1014100016F4009407D077FD09D00E941A0A07FC41
+:1014200005D03EF4909581959F4F089570956195F4
+:101430007F4F0895AA1BBB1B51E107C0AA1FBB1F0A
+:10144000A617B70710F0A61BB70B881F991F5A9550
+:10145000A9F780959095BC01CD0108958F929F9238
+:10146000AF92BF92CF92DF92EF92FF92CF93DF9332
+:10147000EC01688179818A819B8161157105810503
+:10148000910521F464E279ED8BE597E02DE133EFEE
+:1014900041E050E00E948A0A49015A019B01AC01D7
+:1014A000A7EAB1E40E94A90A6B017C01ACEEB4EF9B
+:1014B000A50194010E94B70ADC01CB018C0D9D1D92
+:1014C000AE1DBF1DB7FF03C00197A109B0488883B7
+:1014D0009983AA83BB839F77DF91CF91FF90EF9091
+:1014E000DF90CF90BF90AF909F908F9008950E9413
+:1014F0002E0A089580E091E00E942E0A0895A0E04F
+:10150000B0E08093000190930101A0930201B09399
+:1015100003010895052E97FB1EF400940E94A10A72
+:1015200057FD07D00E94BC0A07FC03D04EF40C9470
+:10153000A10A50954095309521953F4F4F4F5F4FF1
+:10154000089590958095709561957F4F8F4F9F4F2F
+:1015500008950E94DE0AA59F900DB49F900DA49F50
+:10156000800D911D11240895B7FF0C94A90A0E94C3
+:10157000A90A821B930B0895A1E21A2EAA1BBB1B7A
+:10158000FD010DC0AA1FBB1FEE1FFF1FA217B3074F
+:10159000E407F50720F0A21BB30BE40BF50B661F65
+:1015A000771F881F991F1A9469F760957095809529
+:1015B00090959B01AC01BD01CF010895A29FB001A0
+:1015C000B39FC001A39F700D811D1124911DB29F77
+:0E15D000700D811D1124911D0895F894FFCF18
+:1015DE000100000053494D4F4E2047414D450A45ED
+:1015EE006E74657220796F7572207374617274698E
+:1015FE006E6720646966666963756C7479206C65C4
+:10160E0076656C3A0A312E20456173790A322E20A6
+:10161E004D6F6465726174650A332E204769766575
+:10162E00206D65207061696E2E000A6E65787420DB
+:10163E006C6576656C0A000A436F7272656374217D
+:10164E000A000A496E636F7272656374206775656E
+:10165E0073732E0A000A596F7520626561742074C7
+:10166E0068652067616D65210A000A596F75206CE7
+:10167E006F6F73652C2074727920616761696E3F9C
+:02168E000A0050
 :00000001FF
diff --git a/final_project/Debug/final_project.lss b/final_project/Debug/final_project.lss
index 27309bb..9a51602 100644
--- a/final_project/Debug/final_project.lss
+++ b/final_project/Debug/final_project.lss
@@ -3,31 +3,31 @@ final_project.elf:     file format elf32-avr
 
 Sections:
 Idx Name          Size      VMA       LMA       File off  Algn
-  0 .data         000000d8  00800100  0000151c  000015b0  2**0
+  0 .data         000000b2  00800100  000015de  00001672  2**0
                   CONTENTS, ALLOC, LOAD, DATA
-  1 .text         0000151c  00000000  00000000  00000094  2**1
+  1 .text         000015de  00000000  00000000  00000094  2**1
                   CONTENTS, ALLOC, LOAD, READONLY, CODE
-  2 .bss          00000002  008001d8  008001d8  00001688  2**0
+  2 .bss          00000002  008001b2  008001b2  00001724  2**0
                   ALLOC
-  3 .comment      00000030  00000000  00000000  00001688  2**0
+  3 .comment      00000030  00000000  00000000  00001724  2**0
                   CONTENTS, READONLY
-  4 .note.gnu.avr.deviceinfo 00000040  00000000  00000000  000016b8  2**2
+  4 .note.gnu.avr.deviceinfo 00000040  00000000  00000000  00001754  2**2
                   CONTENTS, READONLY
-  5 .debug_aranges 000000e8  00000000  00000000  000016f8  2**0
+  5 .debug_aranges 000000d8  00000000  00000000  00001794  2**0
                   CONTENTS, READONLY, DEBUGGING
-  6 .debug_info   00001249  00000000  00000000  000017e0  2**0
+  6 .debug_info   0000128c  00000000  00000000  0000186c  2**0
                   CONTENTS, READONLY, DEBUGGING
-  7 .debug_abbrev 00000c72  00000000  00000000  00002a29  2**0
+  7 .debug_abbrev 00000c65  00000000  00000000  00002af8  2**0
                   CONTENTS, READONLY, DEBUGGING
-  8 .debug_line   00000b1b  00000000  00000000  0000369b  2**0
+  8 .debug_line   00000b2e  00000000  00000000  0000375d  2**0
                   CONTENTS, READONLY, DEBUGGING
-  9 .debug_frame  00000328  00000000  00000000  000041b8  2**2
+  9 .debug_frame  000002a4  00000000  00000000  0000428c  2**2
                   CONTENTS, READONLY, DEBUGGING
- 10 .debug_str    000006ed  00000000  00000000  000044e0  2**0
+ 10 .debug_str    000006a3  00000000  00000000  00004530  2**0
                   CONTENTS, READONLY, DEBUGGING
- 11 .debug_loc    00000611  00000000  00000000  00004bcd  2**0
+ 11 .debug_loc    000004f1  00000000  00000000  00004bd3  2**0
                   CONTENTS, READONLY, DEBUGGING
- 12 .debug_ranges 000000b8  00000000  00000000  000051de  2**0
+ 12 .debug_ranges 000000a8  00000000  00000000  000050c4  2**0
                   CONTENTS, READONLY, DEBUGGING
 
 Disassembly of section .text:
@@ -46,7 +46,7 @@ Disassembly of section .text:
       28:	0c 94 83 00 	jmp	0x106	; 0x106 <__bad_interrupt>
       2c:	0c 94 83 00 	jmp	0x106	; 0x106 <__bad_interrupt>
       30:	0c 94 83 00 	jmp	0x106	; 0x106 <__bad_interrupt>
-      34:	0c 94 f5 04 	jmp	0x9ea	; 0x9ea <__vector_13>
+      34:	0c 94 83 00 	jmp	0x106	; 0x106 <__bad_interrupt>
       38:	0c 94 83 00 	jmp	0x106	; 0x106 <__bad_interrupt>
       3c:	0c 94 83 00 	jmp	0x106	; 0x106 <__bad_interrupt>
       40:	0c 94 83 00 	jmp	0x106	; 0x106 <__bad_interrupt>
@@ -97,18 +97,18 @@ Disassembly of section .text:
       d8:	11 e0       	ldi	r17, 0x01	; 1
       da:	a0 e0       	ldi	r26, 0x00	; 0
       dc:	b1 e0       	ldi	r27, 0x01	; 1
-      de:	ec e1       	ldi	r30, 0x1C	; 28
+      de:	ee ed       	ldi	r30, 0xDE	; 222
       e0:	f5 e1       	ldi	r31, 0x15	; 21
       e2:	02 c0       	rjmp	.+4      	; 0xe8 <__do_copy_data+0x10>
       e4:	05 90       	lpm	r0, Z+
       e6:	0d 92       	st	X+, r0
-      e8:	a8 3d       	cpi	r26, 0xD8	; 216
+      e8:	a2 3b       	cpi	r26, 0xB2	; 178
       ea:	b1 07       	cpc	r27, r17
       ec:	d9 f7       	brne	.-10     	; 0xe4 <__do_copy_data+0xc>
 
 000000ee <__do_clear_bss>:
       ee:	21 e0       	ldi	r18, 0x01	; 1
-      f0:	a8 ed       	ldi	r26, 0xD8	; 216
+      f0:	a2 eb       	ldi	r26, 0xB2	; 178
       f2:	b1 e0       	ldi	r27, 0x01	; 1
       f4:	01 c0       	rjmp	.+2      	; 0xf8 <.do_clear_bss_start>
 
@@ -116,11 +116,11 @@ Disassembly of section .text:
       f6:	1d 92       	st	X+, r1
 
 000000f8 <.do_clear_bss_start>:
-      f8:	aa 3d       	cpi	r26, 0xDA	; 218
+      f8:	a4 3b       	cpi	r26, 0xB4	; 180
       fa:	b2 07       	cpc	r27, r18
       fc:	e1 f7       	brne	.-8      	; 0xf6 <.do_clear_bss_loop>
-      fe:	0e 94 a1 02 	call	0x542	; 0x542 <main>
-     102:	0c 94 8c 0a 	jmp	0x1518	; 0x1518 <_exit>
+      fe:	0e 94 b2 03 	call	0x764	; 0x764 <main>
+     102:	0c 94 ed 0a 	jmp	0x15da	; 0x15da <_exit>
 
 00000106 <__bad_interrupt>:
      106:	0c 94 00 00 	jmp	0	; 0x0 <__vectors>
@@ -153,7 +153,6 @@ void timer_init_ctc() {
      128:	fc 01       	movw	r30, r24
      12a:	11 82       	std	Z+1, r1	; 0x01
      12c:	10 82       	st	Z, r1
-	//TIMSK1 |= (1<<OCIE1A); // enable int at timer1
 
 }
      12e:	00 00       	nop
@@ -174,7 +173,8 @@ void start_timer() {
      142:	fc 01       	movw	r30, r24
      144:	11 82       	std	Z+1, r1	; 0x01
      146:	10 82       	st	Z, r1
-	OCR1A = 0x3d09; // 1 second
+	//OCRN1A = (seconds to wait / (prescaler / f_cpu))
+	OCR1A = 0x3d09; // we'll only need to delay 1 second 
      148:	88 e8       	ldi	r24, 0x88	; 136
      14a:	90 e0       	ldi	r25, 0x00	; 0
      14c:	29 e0       	ldi	r18, 0x09	; 9
@@ -182,7 +182,7 @@ void start_timer() {
      150:	fc 01       	movw	r30, r24
      152:	31 83       	std	Z+1, r19	; 0x01
      154:	20 83       	st	Z, r18
-	if(TIFR1 & (1 << OCF1A)) TIFR1 |= (1 << OCF1A);
+	if(TIFR1 & (1 << OCF1A)) TIFR1 |= (1 << OCF1A); //discard possible compare match
      156:	86 e3       	ldi	r24, 0x36	; 54
      158:	90 e0       	ldi	r25, 0x00	; 0
      15a:	fc 01       	movw	r30, r24
@@ -202,7 +202,7 @@ void start_timer() {
      176:	22 60       	ori	r18, 0x02	; 2
      178:	fc 01       	movw	r30, r24
      17a:	20 83       	st	Z, r18
-	TCCR1B |=  (1<<CS12) | (1 << CS10); //start timer with 1024 prescalar
+	TCCR1B |=  (1<<CS12) | (1 << CS10); //start timer with 1024 prescaler
      17c:	81 e8       	ldi	r24, 0x81	; 129
      17e:	90 e0       	ldi	r25, 0x00	; 0
      180:	21 e8       	ldi	r18, 0x81	; 129
@@ -220,12 +220,13 @@ void start_timer() {
 
 00000196 <stop_timer>:
 
+//disable timer
 void stop_timer() {
      196:	cf 93       	push	r28
      198:	df 93       	push	r29
      19a:	cd b7       	in	r28, 0x3d	; 61
      19c:	de b7       	in	r29, 0x3e	; 62
-	if(TIFR1 & (1 << OCF1A)) TIFR1 |= (1 << OCF1A);
+	if(TIFR1 & (1 << OCF1A)) TIFR1 |= (1 << OCF1A); //discard possible compare match
      19e:	86 e3       	ldi	r24, 0x36	; 54
      1a0:	90 e0       	ldi	r25, 0x00	; 0
      1a2:	fc 01       	movw	r30, r24
@@ -245,7 +246,7 @@ void stop_timer() {
      1be:	22 60       	ori	r18, 0x02	; 2
      1c0:	fc 01       	movw	r30, r24
      1c2:	20 83       	st	Z, r18
-	TIMSK1 = (1 << WGM12);
+	TIMSK1 = (1 << WGM12); //no clock source
      1c4:	8f e6       	ldi	r24, 0x6F	; 111
      1c6:	90 e0       	ldi	r25, 0x00	; 0
      1c8:	28 e0       	ldi	r18, 0x08	; 8
@@ -259,12 +260,13 @@ void stop_timer() {
 
 000001d6 <timer_done>:
 
+//see if a second pas passed since start_timer
 bool timer_done() {
      1d6:	cf 93       	push	r28
      1d8:	df 93       	push	r29
      1da:	cd b7       	in	r28, 0x3d	; 61
      1dc:	de b7       	in	r29, 0x3e	; 62
-	return (TIFR1 & (1 << OCF1A)); 
+	return (TIFR1 & (1 << OCF1A)); //check if compare match
      1de:	86 e3       	ldi	r24, 0x36	; 54
      1e0:	90 e0       	ldi	r25, 0x00	; 0
      1e2:	fc 01       	movw	r30, r24
@@ -283,6 +285,12 @@ bool timer_done() {
      1fc:	08 95       	ret
 
 000001fe <usart_init>:
+	
+}
+char usart_rxt() {
+	if(UCSR1A & (1 << RXC)) { return UDR1; } //attempt to get input,
+	return '\0'; //if there is none, then return null char
+}
      1fe:	cf 93       	push	r28
      200:	df 93       	push	r29
      202:	00 d0       	rcall	.+0      	; 0x204 <usart_init+0x6>
@@ -364,10 +372,13 @@ bool timer_done() {
      296:	08 95       	ret
 
 00000298 <usart_rxt_blocking>:
+
+char usart_rxt_blocking() {
      298:	cf 93       	push	r28
      29a:	df 93       	push	r29
      29c:	cd b7       	in	r28, 0x3d	; 61
      29e:	de b7       	in	r29, 0x3e	; 62
+	while(!(UCSR1A & (1 << RXC)));  //wait for input via polling
      2a0:	00 00       	nop
      2a2:	88 ec       	ldi	r24, 0xC8	; 200
      2a4:	90 e0       	ldi	r25, 0x00	; 0
@@ -375,15 +386,19 @@ bool timer_done() {
      2a8:	80 81       	ld	r24, Z
      2aa:	88 23       	and	r24, r24
      2ac:	d4 f7       	brge	.-12     	; 0x2a2 <usart_rxt_blocking+0xa>
+	return UDR1;
      2ae:	8e ec       	ldi	r24, 0xCE	; 206
      2b0:	90 e0       	ldi	r25, 0x00	; 0
      2b2:	fc 01       	movw	r30, r24
      2b4:	80 81       	ld	r24, Z
+}
      2b6:	df 91       	pop	r29
      2b8:	cf 91       	pop	r28
      2ba:	08 95       	ret
 
 000002bc <usart_txstr>:
+
+void usart_txstr(char *str) {
      2bc:	cf 93       	push	r28
      2be:	df 93       	push	r29
      2c0:	00 d0       	rcall	.+0      	; 0x2c2 <usart_txstr+0x6>
@@ -392,6 +407,8 @@ bool timer_done() {
      2c6:	de b7       	in	r29, 0x3e	; 62
      2c8:	9c 83       	std	Y+4, r25	; 0x04
      2ca:	8b 83       	std	Y+3, r24	; 0x03
+	//transmit strong character by character untill null terminator
+	for(int i = 0; str[i] != '\0'; i++) usart_txt(str[i]);
      2cc:	1a 82       	std	Y+2, r1	; 0x02
      2ce:	19 82       	std	Y+1, r1	; 0x01
      2d0:	0f c0       	rjmp	.+30     	; 0x2f0 <usart_txstr+0x34>
@@ -419,6 +436,7 @@ bool timer_done() {
      2fe:	80 81       	ld	r24, Z
      300:	88 23       	and	r24, r24
      302:	39 f7       	brne	.-50     	; 0x2d2 <usart_txstr+0x16>
+}
      304:	00 00       	nop
      306:	0f 90       	pop	r0
      308:	0f 90       	pop	r0
@@ -429,2587 +447,2774 @@ bool timer_done() {
      312:	08 95       	ret
 
 00000314 <get_button>:
-	for(;;)	{
-		usart_txstr("timer test\n");
-		start_timer();
-		while(!timer_done());
-		stop_timer();
-	}
+  * the 2nd bit is set. When displaying elements, we assume
+  * the second bit is the middle PORTE LED.
+  
+  */
+
+uint8_t get_button() {
      314:	cf 93       	push	r28
      316:	df 93       	push	r29
      318:	cd b7       	in	r28, 0x3d	; 61
      31a:	de b7       	in	r29, 0x3e	; 62
-     31c:	8c e2       	ldi	r24, 0x2C	; 44
-     31e:	90 e0       	ldi	r25, 0x00	; 0
-     320:	fc 01       	movw	r30, r24
-     322:	80 81       	ld	r24, Z
-     324:	88 2f       	mov	r24, r24
-     326:	90 e0       	ldi	r25, 0x00	; 0
-     328:	80 74       	andi	r24, 0x40	; 64
-     32a:	99 27       	eor	r25, r25
-     32c:	89 2b       	or	r24, r25
-     32e:	11 f4       	brne	.+4      	; 0x334 <get_button+0x20>
-     330:	84 e0       	ldi	r24, 0x04	; 4
-     332:	06 c0       	rjmp	.+12     	; 0x340 <get_button+0x2c>
-     334:	80 e2       	ldi	r24, 0x20	; 32
-     336:	90 e0       	ldi	r25, 0x00	; 0
-     338:	fc 01       	movw	r30, r24
-     33a:	80 81       	ld	r24, Z
-     33c:	80 95       	com	r24
-     33e:	83 7f       	andi	r24, 0xF3	; 243
-     340:	df 91       	pop	r29
-     342:	cf 91       	pop	r28
-     344:	08 95       	ret
-
-00000346 <display_element>:
-     346:	cf 93       	push	r28
-     348:	df 93       	push	r29
-     34a:	cd b7       	in	r28, 0x3d	; 61
-     34c:	de b7       	in	r29, 0x3e	; 62
-     34e:	63 97       	sbiw	r28, 0x13	; 19
-     350:	0f b6       	in	r0, 0x3f	; 63
-     352:	f8 94       	cli
-     354:	de bf       	out	0x3e, r29	; 62
-     356:	0f be       	out	0x3f, r0	; 63
-     358:	cd bf       	out	0x3d, r28	; 61
-     35a:	89 8b       	std	Y+17, r24	; 0x11
-     35c:	7b 8b       	std	Y+19, r23	; 0x13
-     35e:	6a 8b       	std	Y+18, r22	; 0x12
-     360:	1a 82       	std	Y+2, r1	; 0x02
-     362:	19 82       	std	Y+1, r1	; 0x01
-     364:	89 89       	ldd	r24, Y+17	; 0x11
-     366:	88 2f       	mov	r24, r24
-     368:	90 e0       	ldi	r25, 0x00	; 0
-     36a:	84 70       	andi	r24, 0x04	; 4
-     36c:	99 27       	eor	r25, r25
-     36e:	89 2b       	or	r24, r25
-     370:	11 f0       	breq	.+4      	; 0x376 <display_element+0x30>
-     372:	80 e2       	ldi	r24, 0x20	; 32
-     374:	89 83       	std	Y+1, r24	; 0x01
-     376:	89 89       	ldd	r24, Y+17	; 0x11
-     378:	83 7f       	andi	r24, 0xF3	; 243
-     37a:	8a 83       	std	Y+2, r24	; 0x02
-     37c:	8b e2       	ldi	r24, 0x2B	; 43
-     37e:	90 e0       	ldi	r25, 0x00	; 0
-     380:	2b e2       	ldi	r18, 0x2B	; 43
-     382:	30 e0       	ldi	r19, 0x00	; 0
-     384:	f9 01       	movw	r30, r18
-     386:	30 81       	ld	r19, Z
-     388:	2a 81       	ldd	r18, Y+2	; 0x02
-     38a:	23 27       	eor	r18, r19
-     38c:	fc 01       	movw	r30, r24
-     38e:	20 83       	st	Z, r18
-     390:	8e e2       	ldi	r24, 0x2E	; 46
-     392:	90 e0       	ldi	r25, 0x00	; 0
-     394:	2e e2       	ldi	r18, 0x2E	; 46
-     396:	30 e0       	ldi	r19, 0x00	; 0
-     398:	f9 01       	movw	r30, r18
-     39a:	30 81       	ld	r19, Z
-     39c:	29 81       	ldd	r18, Y+1	; 0x01
-     39e:	23 27       	eor	r18, r19
-     3a0:	fc 01       	movw	r30, r24
-     3a2:	20 83       	st	Z, r18
-     3a4:	20 e0       	ldi	r18, 0x00	; 0
-     3a6:	30 e0       	ldi	r19, 0x00	; 0
-     3a8:	40 e8       	ldi	r20, 0x80	; 128
-     3aa:	5e e3       	ldi	r21, 0x3E	; 62
-     3ac:	64 ea       	ldi	r22, 0xA4	; 164
-     3ae:	70 ed       	ldi	r23, 0xD0	; 208
-     3b0:	84 ea       	ldi	r24, 0xA4	; 164
-     3b2:	93 e4       	ldi	r25, 0x43	; 67
-     3b4:	0e 94 25 06 	call	0xc4a	; 0xc4a <beep>
-     3b8:	4a 89       	ldd	r20, Y+18	; 0x12
-     3ba:	5b 89       	ldd	r21, Y+19	; 0x13
-     3bc:	28 ee       	ldi	r18, 0xE8	; 232
-     3be:	33 e0       	ldi	r19, 0x03	; 3
-     3c0:	42 9f       	mul	r20, r18
-     3c2:	c0 01       	movw	r24, r0
-     3c4:	43 9f       	mul	r20, r19
-     3c6:	90 0d       	add	r25, r0
-     3c8:	52 9f       	mul	r21, r18
-     3ca:	90 0d       	add	r25, r0
-     3cc:	11 24       	eor	r1, r1
-     3ce:	cc 01       	movw	r24, r24
-     3d0:	a0 e0       	ldi	r26, 0x00	; 0
-     3d2:	b0 e0       	ldi	r27, 0x00	; 0
-     3d4:	bc 01       	movw	r22, r24
-     3d6:	cd 01       	movw	r24, r26
-     3d8:	0e 94 40 08 	call	0x1080	; 0x1080 <__floatunsisf>
-     3dc:	dc 01       	movw	r26, r24
-     3de:	cb 01       	movw	r24, r22
-     3e0:	8b 83       	std	Y+3, r24	; 0x03
-     3e2:	9c 83       	std	Y+4, r25	; 0x04
-     3e4:	ad 83       	std	Y+5, r26	; 0x05
-     3e6:	be 83       	std	Y+6, r27	; 0x06
-     3e8:	20 e0       	ldi	r18, 0x00	; 0
-     3ea:	30 e0       	ldi	r19, 0x00	; 0
-     3ec:	4a e7       	ldi	r20, 0x7A	; 122
-     3ee:	55 e4       	ldi	r21, 0x45	; 69
-     3f0:	6b 81       	ldd	r22, Y+3	; 0x03
-     3f2:	7c 81       	ldd	r23, Y+4	; 0x04
-     3f4:	8d 81       	ldd	r24, Y+5	; 0x05
-     3f6:	9e 81       	ldd	r25, Y+6	; 0x06
-     3f8:	0e 94 38 09 	call	0x1270	; 0x1270 <__mulsf3>
-     3fc:	dc 01       	movw	r26, r24
-     3fe:	cb 01       	movw	r24, r22
-     400:	8f 83       	std	Y+7, r24	; 0x07
-     402:	98 87       	std	Y+8, r25	; 0x08
-     404:	a9 87       	std	Y+9, r26	; 0x09
-     406:	ba 87       	std	Y+10, r27	; 0x0a
-     408:	20 e0       	ldi	r18, 0x00	; 0
-     40a:	30 e0       	ldi	r19, 0x00	; 0
-     40c:	40 e8       	ldi	r20, 0x80	; 128
-     40e:	5f e3       	ldi	r21, 0x3F	; 63
-     410:	6f 81       	ldd	r22, Y+7	; 0x07
-     412:	78 85       	ldd	r23, Y+8	; 0x08
-     414:	89 85       	ldd	r24, Y+9	; 0x09
-     416:	9a 85       	ldd	r25, Y+10	; 0x0a
-     418:	0e 94 93 07 	call	0xf26	; 0xf26 <__cmpsf2>
-     41c:	88 23       	and	r24, r24
-     41e:	2c f4       	brge	.+10     	; 0x42a <__EEPROM_REGION_LENGTH__+0x2a>
-     420:	81 e0       	ldi	r24, 0x01	; 1
-     422:	90 e0       	ldi	r25, 0x00	; 0
-     424:	9c 87       	std	Y+12, r25	; 0x0c
-     426:	8b 87       	std	Y+11, r24	; 0x0b
-     428:	3f c0       	rjmp	.+126    	; 0x4a8 <__EEPROM_REGION_LENGTH__+0xa8>
-     42a:	20 e0       	ldi	r18, 0x00	; 0
-     42c:	3f ef       	ldi	r19, 0xFF	; 255
-     42e:	4f e7       	ldi	r20, 0x7F	; 127
-     430:	57 e4       	ldi	r21, 0x47	; 71
-     432:	6f 81       	ldd	r22, Y+7	; 0x07
-     434:	78 85       	ldd	r23, Y+8	; 0x08
-     436:	89 85       	ldd	r24, Y+9	; 0x09
-     438:	9a 85       	ldd	r25, Y+10	; 0x0a
-     43a:	0e 94 33 09 	call	0x1266	; 0x1266 <__gesf2>
-     43e:	18 16       	cp	r1, r24
-     440:	4c f5       	brge	.+82     	; 0x494 <__EEPROM_REGION_LENGTH__+0x94>
-     442:	20 e0       	ldi	r18, 0x00	; 0
-     444:	30 e0       	ldi	r19, 0x00	; 0
-     446:	40 e2       	ldi	r20, 0x20	; 32
-     448:	51 e4       	ldi	r21, 0x41	; 65
-     44a:	6b 81       	ldd	r22, Y+3	; 0x03
-     44c:	7c 81       	ldd	r23, Y+4	; 0x04
-     44e:	8d 81       	ldd	r24, Y+5	; 0x05
-     450:	9e 81       	ldd	r25, Y+6	; 0x06
-     452:	0e 94 38 09 	call	0x1270	; 0x1270 <__mulsf3>
-     456:	dc 01       	movw	r26, r24
-     458:	cb 01       	movw	r24, r22
-     45a:	bc 01       	movw	r22, r24
-     45c:	cd 01       	movw	r24, r26
-     45e:	0e 94 11 08 	call	0x1022	; 0x1022 <__fixunssfsi>
-     462:	dc 01       	movw	r26, r24
-     464:	cb 01       	movw	r24, r22
-     466:	9c 87       	std	Y+12, r25	; 0x0c
-     468:	8b 87       	std	Y+11, r24	; 0x0b
-     46a:	0f c0       	rjmp	.+30     	; 0x48a <__EEPROM_REGION_LENGTH__+0x8a>
-     46c:	80 e9       	ldi	r24, 0x90	; 144
-     46e:	91 e0       	ldi	r25, 0x01	; 1
-     470:	9e 87       	std	Y+14, r25	; 0x0e
-     472:	8d 87       	std	Y+13, r24	; 0x0d
-     474:	8d 85       	ldd	r24, Y+13	; 0x0d
-     476:	9e 85       	ldd	r25, Y+14	; 0x0e
-     478:	01 97       	sbiw	r24, 0x01	; 1
-     47a:	f1 f7       	brne	.-4      	; 0x478 <__EEPROM_REGION_LENGTH__+0x78>
-     47c:	9e 87       	std	Y+14, r25	; 0x0e
-     47e:	8d 87       	std	Y+13, r24	; 0x0d
-     480:	8b 85       	ldd	r24, Y+11	; 0x0b
-     482:	9c 85       	ldd	r25, Y+12	; 0x0c
-     484:	01 97       	sbiw	r24, 0x01	; 1
-     486:	9c 87       	std	Y+12, r25	; 0x0c
-     488:	8b 87       	std	Y+11, r24	; 0x0b
-     48a:	8b 85       	ldd	r24, Y+11	; 0x0b
-     48c:	9c 85       	ldd	r25, Y+12	; 0x0c
-     48e:	89 2b       	or	r24, r25
-     490:	69 f7       	brne	.-38     	; 0x46c <__EEPROM_REGION_LENGTH__+0x6c>
-     492:	14 c0       	rjmp	.+40     	; 0x4bc <__EEPROM_REGION_LENGTH__+0xbc>
-     494:	6f 81       	ldd	r22, Y+7	; 0x07
-     496:	78 85       	ldd	r23, Y+8	; 0x08
-     498:	89 85       	ldd	r24, Y+9	; 0x09
-     49a:	9a 85       	ldd	r25, Y+10	; 0x0a
-     49c:	0e 94 11 08 	call	0x1022	; 0x1022 <__fixunssfsi>
-     4a0:	dc 01       	movw	r26, r24
-     4a2:	cb 01       	movw	r24, r22
-     4a4:	9c 87       	std	Y+12, r25	; 0x0c
-     4a6:	8b 87       	std	Y+11, r24	; 0x0b
-     4a8:	8b 85       	ldd	r24, Y+11	; 0x0b
-     4aa:	9c 85       	ldd	r25, Y+12	; 0x0c
-     4ac:	98 8b       	std	Y+16, r25	; 0x10
-     4ae:	8f 87       	std	Y+15, r24	; 0x0f
-     4b0:	8f 85       	ldd	r24, Y+15	; 0x0f
-     4b2:	98 89       	ldd	r25, Y+16	; 0x10
-     4b4:	01 97       	sbiw	r24, 0x01	; 1
-     4b6:	f1 f7       	brne	.-4      	; 0x4b4 <__EEPROM_REGION_LENGTH__+0xb4>
-     4b8:	98 8b       	std	Y+16, r25	; 0x10
-     4ba:	8f 87       	std	Y+15, r24	; 0x0f
-     4bc:	8b e2       	ldi	r24, 0x2B	; 43
-     4be:	90 e0       	ldi	r25, 0x00	; 0
-     4c0:	2b e2       	ldi	r18, 0x2B	; 43
-     4c2:	30 e0       	ldi	r19, 0x00	; 0
-     4c4:	f9 01       	movw	r30, r18
-     4c6:	30 81       	ld	r19, Z
-     4c8:	2a 81       	ldd	r18, Y+2	; 0x02
-     4ca:	23 27       	eor	r18, r19
-     4cc:	fc 01       	movw	r30, r24
-     4ce:	20 83       	st	Z, r18
-     4d0:	8e e2       	ldi	r24, 0x2E	; 46
-     4d2:	90 e0       	ldi	r25, 0x00	; 0
-     4d4:	2e e2       	ldi	r18, 0x2E	; 46
-     4d6:	30 e0       	ldi	r19, 0x00	; 0
-     4d8:	f9 01       	movw	r30, r18
-     4da:	30 81       	ld	r19, Z
-     4dc:	29 81       	ldd	r18, Y+1	; 0x01
-     4de:	23 27       	eor	r18, r19
-     4e0:	fc 01       	movw	r30, r24
-     4e2:	20 83       	st	Z, r18
-     4e4:	00 00       	nop
-     4e6:	63 96       	adiw	r28, 0x13	; 19
-     4e8:	0f b6       	in	r0, 0x3f	; 63
-     4ea:	f8 94       	cli
-     4ec:	de bf       	out	0x3e, r29	; 62
-     4ee:	0f be       	out	0x3f, r0	; 63
-     4f0:	cd bf       	out	0x3d, r28	; 61
-     4f2:	df 91       	pop	r29
-     4f4:	cf 91       	pop	r28
-     4f6:	08 95       	ret
-
-000004f8 <init_io>:
-     4f8:	cf 93       	push	r28
-     4fa:	df 93       	push	r29
-     4fc:	cd b7       	in	r28, 0x3d	; 61
-     4fe:	de b7       	in	r29, 0x3e	; 62
-     500:	81 e2       	ldi	r24, 0x21	; 33
-     502:	90 e0       	ldi	r25, 0x00	; 0
-     504:	fc 01       	movw	r30, r24
-     506:	10 82       	st	Z, r1
-     508:	82 e2       	ldi	r24, 0x22	; 34
-     50a:	90 e0       	ldi	r25, 0x00	; 0
-     50c:	2f ef       	ldi	r18, 0xFF	; 255
-     50e:	fc 01       	movw	r30, r24
-     510:	20 83       	st	Z, r18
-     512:	8a e2       	ldi	r24, 0x2A	; 42
-     514:	90 e0       	ldi	r25, 0x00	; 0
-     516:	2f ef       	ldi	r18, 0xFF	; 255
-     518:	fc 01       	movw	r30, r24
-     51a:	20 83       	st	Z, r18
-     51c:	8b e2       	ldi	r24, 0x2B	; 43
-     51e:	90 e0       	ldi	r25, 0x00	; 0
-     520:	2f ef       	ldi	r18, 0xFF	; 255
-     522:	fc 01       	movw	r30, r24
-     524:	20 83       	st	Z, r18
-     526:	8d e2       	ldi	r24, 0x2D	; 45
-     528:	90 e0       	ldi	r25, 0x00	; 0
-     52a:	20 e3       	ldi	r18, 0x30	; 48
-     52c:	fc 01       	movw	r30, r24
-     52e:	20 83       	st	Z, r18
-     530:	8e e2       	ldi	r24, 0x2E	; 46
-     532:	90 e0       	ldi	r25, 0x00	; 0
-     534:	2f ef       	ldi	r18, 0xFF	; 255
-     536:	fc 01       	movw	r30, r24
-     538:	20 83       	st	Z, r18
-     53a:	00 00       	nop
-     53c:	df 91       	pop	r29
-     53e:	cf 91       	pop	r28
-     540:	08 95       	ret
-
-00000542 <main>:
-}
-
-int main(void) {
-     542:	8f 92       	push	r8
-     544:	9f 92       	push	r9
-     546:	af 92       	push	r10
-     548:	bf 92       	push	r11
-     54a:	cf 92       	push	r12
-     54c:	df 92       	push	r13
-     54e:	ef 92       	push	r14
-     550:	ff 92       	push	r15
-     552:	cf 93       	push	r28
-     554:	df 93       	push	r29
-     556:	cd b7       	in	r28, 0x3d	; 61
-     558:	de b7       	in	r29, 0x3e	; 62
-     55a:	e3 97       	sbiw	r28, 0x33	; 51
-     55c:	0f b6       	in	r0, 0x3f	; 63
-     55e:	f8 94       	cli
-     560:	de bf       	out	0x3e, r29	; 62
-     562:	0f be       	out	0x3f, r0	; 63
-     564:	cd bf       	out	0x3d, r28	; 61
-	cli();
-     566:	f8 94       	cli
-	timer_init_ctc();
-     568:	0e 94 85 00 	call	0x10a	; 0x10a <timer_init_ctc>
-	init_io();
-     56c:	0e 94 7c 02 	call	0x4f8	; 0x4f8 <init_io>
-	usart_init();
-     570:	0e 94 ff 00 	call	0x1fe	; 0x1fe <usart_init>
-
-
-	while(1) {	
-		int level = 0;
-     574:	1a 82       	std	Y+2, r1	; 0x02
-     576:	19 82       	std	Y+1, r1	; 0x01
-	
-		//get level
-		usart_txstr(
-     578:	80 e1       	ldi	r24, 0x10	; 16
-     57a:	91 e0       	ldi	r25, 0x01	; 1
-     57c:	0e 94 5e 01 	call	0x2bc	; 0x2bc <usart_txstr>
-		"Enter your starting difficulty level:\n"
-		"1. Easy\n"
-		"2. Moderate\n"
-		"3. Give me pain.");
-
-		while((level > 3) || (level < 1)) level = (int)(usart_rxt_blocking() - '0');
-     580:	07 c0       	rjmp	.+14     	; 0x590 <main+0x4e>
-     582:	0e 94 4c 01 	call	0x298	; 0x298 <usart_rxt_blocking>
-     586:	88 2f       	mov	r24, r24
-     588:	90 e0       	ldi	r25, 0x00	; 0
-     58a:	c0 97       	sbiw	r24, 0x30	; 48
-     58c:	9a 83       	std	Y+2, r25	; 0x02
-     58e:	89 83       	std	Y+1, r24	; 0x01
-     590:	89 81       	ldd	r24, Y+1	; 0x01
-     592:	9a 81       	ldd	r25, Y+2	; 0x02
-     594:	04 97       	sbiw	r24, 0x04	; 4
-     596:	ac f7       	brge	.-22     	; 0x582 <main+0x40>
-     598:	89 81       	ldd	r24, Y+1	; 0x01
-     59a:	9a 81       	ldd	r25, Y+2	; 0x02
-     59c:	18 16       	cp	r1, r24
-     59e:	19 06       	cpc	r1, r25
-     5a0:	84 f7       	brge	.-32     	; 0x582 <main+0x40>
-		
-	
-		//main simon game
-		while(level < 3) {
-     5a2:	16 c2       	rjmp	.+1068   	; 0x9d0 <__stack+0xd1>
-			int elements_max;
-			double score;
-			uint8_t element_list[5]; // TODO
-	
-	
-			switch(level) {
-     5a4:	89 81       	ldd	r24, Y+1	; 0x01
-     5a6:	9a 81       	ldd	r25, Y+2	; 0x02
-     5a8:	82 30       	cpi	r24, 0x02	; 2
-     5aa:	91 05       	cpc	r25, r1
-     5ac:	d9 f0       	breq	.+54     	; 0x5e4 <main+0xa2>
-     5ae:	83 30       	cpi	r24, 0x03	; 3
-     5b0:	91 05       	cpc	r25, r1
-     5b2:	69 f1       	breq	.+90     	; 0x60e <main+0xcc>
-     5b4:	01 97       	sbiw	r24, 0x01	; 1
-     5b6:	09 f0       	breq	.+2      	; 0x5ba <main+0x78>
-     5b8:	3f c0       	rjmp	.+126    	; 0x638 <main+0xf6>
-				case 1:
-					sets = 3;
-     5ba:	83 e0       	ldi	r24, 0x03	; 3
-     5bc:	90 e0       	ldi	r25, 0x00	; 0
-     5be:	9e 83       	std	Y+6, r25	; 0x06
-     5c0:	8d 83       	std	Y+5, r24	; 0x05
-					display_time = 3;
-     5c2:	83 e0       	ldi	r24, 0x03	; 3
-     5c4:	90 e0       	ldi	r25, 0x00	; 0
-     5c6:	9c 83       	std	Y+4, r25	; 0x04
-     5c8:	8b 83       	std	Y+3, r24	; 0x03
-					response_time = 5;
-     5ca:	85 e0       	ldi	r24, 0x05	; 5
-     5cc:	90 e0       	ldi	r25, 0x00	; 0
-     5ce:	98 87       	std	Y+8, r25	; 0x08
-     5d0:	8f 83       	std	Y+7, r24	; 0x07
-					elements_min = 3;
-     5d2:	83 e0       	ldi	r24, 0x03	; 3
-     5d4:	90 e0       	ldi	r25, 0x00	; 0
-     5d6:	9a 87       	std	Y+10, r25	; 0x0a
-     5d8:	89 87       	std	Y+9, r24	; 0x09
-					elements_max = 5;
-     5da:	85 e0       	ldi	r24, 0x05	; 5
-     5dc:	90 e0       	ldi	r25, 0x00	; 0
-     5de:	9c 87       	std	Y+12, r25	; 0x0c
-     5e0:	8b 87       	std	Y+11, r24	; 0x0b
-					break;
-     5e2:	2a c0       	rjmp	.+84     	; 0x638 <main+0xf6>
-				case 2:
-					sets = 4;
-     5e4:	84 e0       	ldi	r24, 0x04	; 4
-     5e6:	90 e0       	ldi	r25, 0x00	; 0
-     5e8:	9e 83       	std	Y+6, r25	; 0x06
-     5ea:	8d 83       	std	Y+5, r24	; 0x05
-					display_time = 2;
-     5ec:	82 e0       	ldi	r24, 0x02	; 2
-     5ee:	90 e0       	ldi	r25, 0x00	; 0
-     5f0:	9c 83       	std	Y+4, r25	; 0x04
-     5f2:	8b 83       	std	Y+3, r24	; 0x03
-					response_time = 7;
-     5f4:	87 e0       	ldi	r24, 0x07	; 7
-     5f6:	90 e0       	ldi	r25, 0x00	; 0
-     5f8:	98 87       	std	Y+8, r25	; 0x08
-     5fa:	8f 83       	std	Y+7, r24	; 0x07
-					elements_min = 3;
-     5fc:	83 e0       	ldi	r24, 0x03	; 3
-     5fe:	90 e0       	ldi	r25, 0x00	; 0
-     600:	9a 87       	std	Y+10, r25	; 0x0a
-     602:	89 87       	std	Y+9, r24	; 0x09
-					elements_max = 10;
-     604:	8a e0       	ldi	r24, 0x0A	; 10
-     606:	90 e0       	ldi	r25, 0x00	; 0
-     608:	9c 87       	std	Y+12, r25	; 0x0c
-     60a:	8b 87       	std	Y+11, r24	; 0x0b
-					break;
-     60c:	15 c0       	rjmp	.+42     	; 0x638 <main+0xf6>
-				case 3:
-					sets = 5;
-     60e:	85 e0       	ldi	r24, 0x05	; 5
-     610:	90 e0       	ldi	r25, 0x00	; 0
-     612:	9e 83       	std	Y+6, r25	; 0x06
-     614:	8d 83       	std	Y+5, r24	; 0x05
-					display_time = 1;
-     616:	81 e0       	ldi	r24, 0x01	; 1
-     618:	90 e0       	ldi	r25, 0x00	; 0
-     61a:	9c 83       	std	Y+4, r25	; 0x04
-     61c:	8b 83       	std	Y+3, r24	; 0x03
-					response_time = 10;
-     61e:	8a e0       	ldi	r24, 0x0A	; 10
-     620:	90 e0       	ldi	r25, 0x00	; 0
-     622:	98 87       	std	Y+8, r25	; 0x08
-     624:	8f 83       	std	Y+7, r24	; 0x07
-					elements_min = 5;
-     626:	85 e0       	ldi	r24, 0x05	; 5
-     628:	90 e0       	ldi	r25, 0x00	; 0
-     62a:	9a 87       	std	Y+10, r25	; 0x0a
-     62c:	89 87       	std	Y+9, r24	; 0x09
-					elements_max = 15;
-     62e:	8f e0       	ldi	r24, 0x0F	; 15
-     630:	90 e0       	ldi	r25, 0x00	; 0
-     632:	9c 87       	std	Y+12, r25	; 0x0c
-     634:	8b 87       	std	Y+11, r24	; 0x0b
-					break;
-     636:	00 00       	nop
-
-			
-			/************************************************************************/
-	
-			//main level
-			int max_score = 0;
-     638:	1e 86       	std	Y+14, r1	; 0x0e
-     63a:	1d 86       	std	Y+13, r1	; 0x0d
-			int current_score = 0;
-     63c:	18 8a       	std	Y+16, r1	; 0x10
-     63e:	1f 86       	std	Y+15, r1	; 0x0f
-			for(int set = 0; set < sets; set++) {
-     640:	1a 8a       	std	Y+18, r1	; 0x12
-     642:	19 8a       	std	Y+17, r1	; 0x11
-     644:	7f c1       	rjmp	.+766    	; 0x944 <__stack+0x45>
-				int elements = elements_min + ceil(((elements_max - elements_min) / (float)(sets - 1)) * set);
-     646:	89 85       	ldd	r24, Y+9	; 0x09
-     648:	9a 85       	ldd	r25, Y+10	; 0x0a
-     64a:	09 2e       	mov	r0, r25
-     64c:	00 0c       	add	r0, r0
-     64e:	aa 0b       	sbc	r26, r26
-     650:	bb 0b       	sbc	r27, r27
-     652:	bc 01       	movw	r22, r24
-     654:	cd 01       	movw	r24, r26
-     656:	0e 94 42 08 	call	0x1084	; 0x1084 <__floatsisf>
-     65a:	6b 01       	movw	r12, r22
-     65c:	7c 01       	movw	r14, r24
-     65e:	2b 85       	ldd	r18, Y+11	; 0x0b
-     660:	3c 85       	ldd	r19, Y+12	; 0x0c
-     662:	89 85       	ldd	r24, Y+9	; 0x09
-     664:	9a 85       	ldd	r25, Y+10	; 0x0a
-     666:	a9 01       	movw	r20, r18
-     668:	48 1b       	sub	r20, r24
-     66a:	59 0b       	sbc	r21, r25
-     66c:	ca 01       	movw	r24, r20
-     66e:	09 2e       	mov	r0, r25
-     670:	00 0c       	add	r0, r0
-     672:	aa 0b       	sbc	r26, r26
-     674:	bb 0b       	sbc	r27, r27
-     676:	bc 01       	movw	r22, r24
-     678:	cd 01       	movw	r24, r26
-     67a:	0e 94 42 08 	call	0x1084	; 0x1084 <__floatsisf>
-     67e:	4b 01       	movw	r8, r22
-     680:	5c 01       	movw	r10, r24
-     682:	8d 81       	ldd	r24, Y+5	; 0x05
-     684:	9e 81       	ldd	r25, Y+6	; 0x06
-     686:	01 97       	sbiw	r24, 0x01	; 1
-     688:	09 2e       	mov	r0, r25
-     68a:	00 0c       	add	r0, r0
-     68c:	aa 0b       	sbc	r26, r26
-     68e:	bb 0b       	sbc	r27, r27
-     690:	bc 01       	movw	r22, r24
-     692:	cd 01       	movw	r24, r26
-     694:	0e 94 42 08 	call	0x1084	; 0x1084 <__floatsisf>
-     698:	dc 01       	movw	r26, r24
-     69a:	cb 01       	movw	r24, r22
-     69c:	9c 01       	movw	r18, r24
-     69e:	ad 01       	movw	r20, r26
-     6a0:	c5 01       	movw	r24, r10
-     6a2:	b4 01       	movw	r22, r8
-     6a4:	0e 94 98 07 	call	0xf30	; 0xf30 <__divsf3>
-     6a8:	dc 01       	movw	r26, r24
-     6aa:	cb 01       	movw	r24, r22
-     6ac:	4c 01       	movw	r8, r24
-     6ae:	5d 01       	movw	r10, r26
-     6b0:	89 89       	ldd	r24, Y+17	; 0x11
-     6b2:	9a 89       	ldd	r25, Y+18	; 0x12
-     6b4:	09 2e       	mov	r0, r25
-     6b6:	00 0c       	add	r0, r0
-     6b8:	aa 0b       	sbc	r26, r26
-     6ba:	bb 0b       	sbc	r27, r27
-     6bc:	bc 01       	movw	r22, r24
-     6be:	cd 01       	movw	r24, r26
-     6c0:	0e 94 42 08 	call	0x1084	; 0x1084 <__floatsisf>
-     6c4:	dc 01       	movw	r26, r24
-     6c6:	cb 01       	movw	r24, r22
-     6c8:	9c 01       	movw	r18, r24
-     6ca:	ad 01       	movw	r20, r26
-     6cc:	c5 01       	movw	r24, r10
-     6ce:	b4 01       	movw	r22, r8
-     6d0:	0e 94 38 09 	call	0x1270	; 0x1270 <__mulsf3>
-     6d4:	dc 01       	movw	r26, r24
-     6d6:	cb 01       	movw	r24, r22
-     6d8:	bc 01       	movw	r22, r24
-     6da:	cd 01       	movw	r24, r26
-     6dc:	0e 94 7c 07 	call	0xef8	; 0xef8 <ceil>
-     6e0:	dc 01       	movw	r26, r24
-     6e2:	cb 01       	movw	r24, r22
-     6e4:	9c 01       	movw	r18, r24
-     6e6:	ad 01       	movw	r20, r26
-     6e8:	c7 01       	movw	r24, r14
-     6ea:	b6 01       	movw	r22, r12
-     6ec:	0e 94 10 07 	call	0xe20	; 0xe20 <__addsf3>
-     6f0:	dc 01       	movw	r26, r24
-     6f2:	cb 01       	movw	r24, r22
-     6f4:	bc 01       	movw	r22, r24
-     6f6:	cd 01       	movw	r24, r26
-     6f8:	0e 94 0a 08 	call	0x1014	; 0x1014 <__fixsfsi>
-     6fc:	dc 01       	movw	r26, r24
-     6fe:	cb 01       	movw	r24, r22
-     700:	9b 8f       	std	Y+27, r25	; 0x1b
-     702:	8a 8f       	std	Y+26, r24	; 0x1a
-				//generate, display elements
-				for(int element = 0; element < elements; element++) {
-     704:	1c 8a       	std	Y+20, r1	; 0x14
-     706:	1b 8a       	std	Y+19, r1	; 0x13
-     708:	37 c0       	rjmp	.+110    	; 0x778 <main+0x236>
-					uint8_t element_bit = (rand() % ELEMENT_COUNT);
-     70a:	0e 94 19 0a 	call	0x1432	; 0x1432 <rand>
-     70e:	27 e0       	ldi	r18, 0x07	; 7
-     710:	30 e0       	ldi	r19, 0x00	; 0
-     712:	b9 01       	movw	r22, r18
-     714:	0e 94 a5 09 	call	0x134a	; 0x134a <__divmodhi4>
-     718:	8d 8b       	std	Y+21, r24	; 0x15
-					if(element_bit == 3) element_bit = 7;
-     71a:	8d 89       	ldd	r24, Y+21	; 0x15
-     71c:	83 30       	cpi	r24, 0x03	; 3
-     71e:	11 f4       	brne	.+4      	; 0x724 <main+0x1e2>
-     720:	87 e0       	ldi	r24, 0x07	; 7
-     722:	8d 8b       	std	Y+21, r24	; 0x15
-					uint8_t this_element = 1 << element_bit;
-     724:	8d 89       	ldd	r24, Y+21	; 0x15
-     726:	28 2f       	mov	r18, r24
-     728:	30 e0       	ldi	r19, 0x00	; 0
-     72a:	81 e0       	ldi	r24, 0x01	; 1
-     72c:	90 e0       	ldi	r25, 0x00	; 0
-     72e:	02 c0       	rjmp	.+4      	; 0x734 <main+0x1f2>
-     730:	88 0f       	add	r24, r24
-     732:	99 1f       	adc	r25, r25
-     734:	2a 95       	dec	r18
-     736:	e2 f7       	brpl	.-8      	; 0x730 <main+0x1ee>
-     738:	8c 8f       	std	Y+28, r24	; 0x1c
-					usart_txt('\n');
-     73a:	8a e0       	ldi	r24, 0x0A	; 10
-     73c:	0e 94 28 01 	call	0x250	; 0x250 <usart_txt>
-					usart_txt(element_bit + '0');
-     740:	8d 89       	ldd	r24, Y+21	; 0x15
-     742:	80 5d       	subi	r24, 0xD0	; 208
-     744:	0e 94 28 01 	call	0x250	; 0x250 <usart_txt>
-					usart_txt('\n');
-     748:	8a e0       	ldi	r24, 0x0A	; 10
-     74a:	0e 94 28 01 	call	0x250	; 0x250 <usart_txt>
-					element_list[element] = this_element; // could optimize
-     74e:	9e 01       	movw	r18, r28
-     750:	21 5d       	subi	r18, 0xD1	; 209
-     752:	3f 4f       	sbci	r19, 0xFF	; 255
-     754:	8b 89       	ldd	r24, Y+19	; 0x13
-     756:	9c 89       	ldd	r25, Y+20	; 0x14
-     758:	82 0f       	add	r24, r18
-     75a:	93 1f       	adc	r25, r19
-     75c:	2c 8d       	ldd	r18, Y+28	; 0x1c
-     75e:	fc 01       	movw	r30, r24
-     760:	20 83       	st	Z, r18
-					display_element(this_element, display_time);
-     762:	8b 81       	ldd	r24, Y+3	; 0x03
-     764:	9c 81       	ldd	r25, Y+4	; 0x04
-     766:	bc 01       	movw	r22, r24
-     768:	8c 8d       	ldd	r24, Y+28	; 0x1c
-     76a:	0e 94 a3 01 	call	0x346	; 0x346 <display_element>
-			int max_score = 0;
-			int current_score = 0;
-			for(int set = 0; set < sets; set++) {
-				int elements = elements_min + ceil(((elements_max - elements_min) / (float)(sets - 1)) * set);
-				//generate, display elements
-				for(int element = 0; element < elements; element++) {
-     76e:	8b 89       	ldd	r24, Y+19	; 0x13
-     770:	9c 89       	ldd	r25, Y+20	; 0x14
-     772:	01 96       	adiw	r24, 0x01	; 1
-     774:	9c 8b       	std	Y+20, r25	; 0x14
-     776:	8b 8b       	std	Y+19, r24	; 0x13
-     778:	2b 89       	ldd	r18, Y+19	; 0x13
-     77a:	3c 89       	ldd	r19, Y+20	; 0x14
-     77c:	8a 8d       	ldd	r24, Y+26	; 0x1a
-     77e:	9b 8d       	ldd	r25, Y+27	; 0x1b
-     780:	28 17       	cp	r18, r24
-     782:	39 07       	cpc	r19, r25
-     784:	14 f2       	brlt	.-124    	; 0x70a <main+0x1c8>
-					element_list[element] = this_element; // could optimize
-					display_element(this_element, display_time);
-					
-				}
-				//get elements
-				seconds_remaining = response_time;
-     786:	8f 81       	ldd	r24, Y+7	; 0x07
-     788:	98 85       	ldd	r25, Y+8	; 0x08
-     78a:	90 93 d9 01 	sts	0x01D9, r25	; 0x8001d9 <__data_end+0x1>
-     78e:	80 93 d8 01 	sts	0x01D8, r24	; 0x8001d8 <__data_end>
-				start_timer();
-     792:	0e 94 9b 00 	call	0x136	; 0x136 <start_timer>
-				uint16_t guess;
-				for(int element = 0; element < elements; element++) {
-     796:	19 8e       	std	Y+25, r1	; 0x19
-     798:	18 8e       	std	Y+24, r1	; 0x18
-     79a:	c7 c0       	rjmp	.+398    	; 0x92a <__stack+0x2b>
-					usart_txstr("\ngot element, waiting...\n");
-     79c:	86 e6       	ldi	r24, 0x66	; 102
-     79e:	91 e0       	ldi	r25, 0x01	; 1
-     7a0:	0e 94 5e 01 	call	0x2bc	; 0x2bc <usart_txstr>
-					do {
-						if(timer_done()) {
-     7a4:	0e 94 eb 00 	call	0x1d6	; 0x1d6 <timer_done>
-     7a8:	88 23       	and	r24, r24
-     7aa:	c1 f0       	breq	.+48     	; 0x7dc <main+0x29a>
-							seconds_remaining--;
-     7ac:	80 91 d8 01 	lds	r24, 0x01D8	; 0x8001d8 <__data_end>
-     7b0:	90 91 d9 01 	lds	r25, 0x01D9	; 0x8001d9 <__data_end+0x1>
-     7b4:	01 97       	sbiw	r24, 0x01	; 1
-     7b6:	90 93 d9 01 	sts	0x01D9, r25	; 0x8001d9 <__data_end+0x1>
-     7ba:	80 93 d8 01 	sts	0x01D8, r24	; 0x8001d8 <__data_end>
-							stop_timer(); //TODO only need one function
-     7be:	0e 94 cb 00 	call	0x196	; 0x196 <stop_timer>
-							start_timer();
-     7c2:	0e 94 9b 00 	call	0x136	; 0x136 <start_timer>
-							beep(261.63, .1);
-     7c6:	2d ec       	ldi	r18, 0xCD	; 205
-     7c8:	3c ec       	ldi	r19, 0xCC	; 204
-     7ca:	4c ec       	ldi	r20, 0xCC	; 204
-     7cc:	5d e3       	ldi	r21, 0x3D	; 61
-     7ce:	64 ea       	ldi	r22, 0xA4	; 164
-     7d0:	70 ed       	ldi	r23, 0xD0	; 208
-     7d2:	82 e8       	ldi	r24, 0x82	; 130
-     7d4:	93 e4       	ldi	r25, 0x43	; 67
-     7d6:	0e 94 25 06 	call	0xc4a	; 0xc4a <beep>
-     7da:	06 c0       	rjmp	.+12     	; 0x7e8 <main+0x2a6>
-						}
-						else { guess = get_button(); }
-     7dc:	0e 94 8a 01 	call	0x314	; 0x314 <get_button>
-     7e0:	88 2f       	mov	r24, r24
-     7e2:	90 e0       	ldi	r25, 0x00	; 0
-     7e4:	9f 8b       	std	Y+23, r25	; 0x17
-     7e6:	8e 8b       	std	Y+22, r24	; 0x16
-					} while((!guess) && (seconds_remaining > 0));
-     7e8:	8e 89       	ldd	r24, Y+22	; 0x16
-     7ea:	9f 89       	ldd	r25, Y+23	; 0x17
-     7ec:	89 2b       	or	r24, r25
-     7ee:	39 f4       	brne	.+14     	; 0x7fe <main+0x2bc>
-     7f0:	80 91 d8 01 	lds	r24, 0x01D8	; 0x8001d8 <__data_end>
-     7f4:	90 91 d9 01 	lds	r25, 0x01D9	; 0x8001d9 <__data_end+0x1>
-     7f8:	18 16       	cp	r1, r24
-     7fa:	19 06       	cpc	r1, r25
-     7fc:	9c f2       	brlt	.-90     	; 0x7a4 <main+0x262>
-     7fe:	80 e0       	ldi	r24, 0x00	; 0
-     800:	90 e0       	ldi	r25, 0x00	; 0
-     802:	aa e7       	ldi	r26, 0x7A	; 122
-     804:	b3 e4       	ldi	r27, 0x43	; 67
-     806:	89 a3       	std	Y+33, r24	; 0x21
-     808:	9a a3       	std	Y+34, r25	; 0x22
-     80a:	ab a3       	std	Y+35, r26	; 0x23
-     80c:	bc a3       	std	Y+36, r27	; 0x24
+     31c:	a1 97       	sbiw	r28, 0x21	; 33
+     31e:	0f b6       	in	r0, 0x3f	; 63
+     320:	f8 94       	cli
+     322:	de bf       	out	0x3e, r29	; 62
+     324:	0f be       	out	0x3f, r0	; 63
+     326:	cd bf       	out	0x3d, r28	; 61
+	//debouncing is done by waiting for the user to stop pressing the button,
+	//then waiting an amount of time for the bouncing to stop.
+	const double debounce_wait = 100.0;
+     328:	80 e0       	ldi	r24, 0x00	; 0
+     32a:	90 e0       	ldi	r25, 0x00	; 0
+     32c:	a8 ec       	ldi	r26, 0xC8	; 200
+     32e:	b2 e4       	ldi	r27, 0x42	; 66
+     330:	89 83       	std	Y+1, r24	; 0x01
+     332:	9a 83       	std	Y+2, r25	; 0x02
+     334:	ab 83       	std	Y+3, r26	; 0x03
+     336:	bc 83       	std	Y+4, r27	; 0x04
+	if(~PINE & (1 << 6)) {
+     338:	8c e2       	ldi	r24, 0x2C	; 44
+     33a:	90 e0       	ldi	r25, 0x00	; 0
+     33c:	fc 01       	movw	r30, r24
+     33e:	80 81       	ld	r24, Z
+     340:	88 2f       	mov	r24, r24
+     342:	90 e0       	ldi	r25, 0x00	; 0
+     344:	80 74       	andi	r24, 0x40	; 64
+     346:	99 27       	eor	r25, r25
+     348:	89 2b       	or	r24, r25
+     34a:	09 f0       	breq	.+2      	; 0x34e <get_button+0x3a>
+     34c:	7f c0       	rjmp	.+254    	; 0x44c <__EEPROM_REGION_LENGTH__+0x4c>
+		while((~PINE & (1<<6)));
+     34e:	00 00       	nop
+     350:	8c e2       	ldi	r24, 0x2C	; 44
+     352:	90 e0       	ldi	r25, 0x00	; 0
+     354:	fc 01       	movw	r30, r24
+     356:	80 81       	ld	r24, Z
+     358:	88 2f       	mov	r24, r24
+     35a:	90 e0       	ldi	r25, 0x00	; 0
+     35c:	80 74       	andi	r24, 0x40	; 64
+     35e:	99 27       	eor	r25, r25
+     360:	89 2b       	or	r24, r25
+     362:	b1 f3       	breq	.-20     	; 0x350 <get_button+0x3c>
+     364:	89 81       	ldd	r24, Y+1	; 0x01
+     366:	9a 81       	ldd	r25, Y+2	; 0x02
+     368:	ab 81       	ldd	r26, Y+3	; 0x03
+     36a:	bc 81       	ldd	r27, Y+4	; 0x04
+     36c:	8a 87       	std	Y+10, r24	; 0x0a
+     36e:	9b 87       	std	Y+11, r25	; 0x0b
+     370:	ac 87       	std	Y+12, r26	; 0x0c
+     372:	bd 87       	std	Y+13, r27	; 0x0d
 
 	__builtin_avr_delay_cycles(__ticks_dc);
 
 #else
 	uint16_t __ticks;
 	__tmp = ((F_CPU) / 4e3) * __ms;
-     80e:	20 e0       	ldi	r18, 0x00	; 0
-     810:	30 e0       	ldi	r19, 0x00	; 0
-     812:	4a e7       	ldi	r20, 0x7A	; 122
-     814:	55 e4       	ldi	r21, 0x45	; 69
-     816:	69 a1       	ldd	r22, Y+33	; 0x21
-     818:	7a a1       	ldd	r23, Y+34	; 0x22
-     81a:	8b a1       	ldd	r24, Y+35	; 0x23
-     81c:	9c a1       	ldd	r25, Y+36	; 0x24
-     81e:	0e 94 38 09 	call	0x1270	; 0x1270 <__mulsf3>
-     822:	dc 01       	movw	r26, r24
-     824:	cb 01       	movw	r24, r22
-     826:	8d a3       	std	Y+37, r24	; 0x25
-     828:	9e a3       	std	Y+38, r25	; 0x26
-     82a:	af a3       	std	Y+39, r26	; 0x27
-     82c:	b8 a7       	std	Y+40, r27	; 0x28
+     374:	20 e0       	ldi	r18, 0x00	; 0
+     376:	30 e0       	ldi	r19, 0x00	; 0
+     378:	4a e7       	ldi	r20, 0x7A	; 122
+     37a:	55 e4       	ldi	r21, 0x45	; 69
+     37c:	6a 85       	ldd	r22, Y+10	; 0x0a
+     37e:	7b 85       	ldd	r23, Y+11	; 0x0b
+     380:	8c 85       	ldd	r24, Y+12	; 0x0c
+     382:	9d 85       	ldd	r25, Y+13	; 0x0d
+     384:	0e 94 99 09 	call	0x1332	; 0x1332 <__mulsf3>
+     388:	dc 01       	movw	r26, r24
+     38a:	cb 01       	movw	r24, r22
+     38c:	8e 87       	std	Y+14, r24	; 0x0e
+     38e:	9f 87       	std	Y+15, r25	; 0x0f
+     390:	a8 8b       	std	Y+16, r26	; 0x10
+     392:	b9 8b       	std	Y+17, r27	; 0x11
 	if (__tmp < 1.0)
-     82e:	20 e0       	ldi	r18, 0x00	; 0
-     830:	30 e0       	ldi	r19, 0x00	; 0
-     832:	40 e8       	ldi	r20, 0x80	; 128
-     834:	5f e3       	ldi	r21, 0x3F	; 63
-     836:	6d a1       	ldd	r22, Y+37	; 0x25
-     838:	7e a1       	ldd	r23, Y+38	; 0x26
-     83a:	8f a1       	ldd	r24, Y+39	; 0x27
-     83c:	98 a5       	ldd	r25, Y+40	; 0x28
-     83e:	0e 94 93 07 	call	0xf26	; 0xf26 <__cmpsf2>
-     842:	88 23       	and	r24, r24
-     844:	2c f4       	brge	.+10     	; 0x850 <__DATA_REGION_LENGTH__+0x50>
+     394:	20 e0       	ldi	r18, 0x00	; 0
+     396:	30 e0       	ldi	r19, 0x00	; 0
+     398:	40 e8       	ldi	r20, 0x80	; 128
+     39a:	5f e3       	ldi	r21, 0x3F	; 63
+     39c:	6e 85       	ldd	r22, Y+14	; 0x0e
+     39e:	7f 85       	ldd	r23, Y+15	; 0x0f
+     3a0:	88 89       	ldd	r24, Y+16	; 0x10
+     3a2:	99 89       	ldd	r25, Y+17	; 0x11
+     3a4:	0e 94 f4 07 	call	0xfe8	; 0xfe8 <__cmpsf2>
+     3a8:	88 23       	and	r24, r24
+     3aa:	2c f4       	brge	.+10     	; 0x3b6 <get_button+0xa2>
 		__ticks = 1;
-     846:	81 e0       	ldi	r24, 0x01	; 1
-     848:	90 e0       	ldi	r25, 0x00	; 0
-     84a:	9a a7       	std	Y+42, r25	; 0x2a
-     84c:	89 a7       	std	Y+41, r24	; 0x29
-     84e:	3f c0       	rjmp	.+126    	; 0x8ce <__DATA_REGION_LENGTH__+0xce>
+     3ac:	81 e0       	ldi	r24, 0x01	; 1
+     3ae:	90 e0       	ldi	r25, 0x00	; 0
+     3b0:	9b 8b       	std	Y+19, r25	; 0x13
+     3b2:	8a 8b       	std	Y+18, r24	; 0x12
+     3b4:	3f c0       	rjmp	.+126    	; 0x434 <__EEPROM_REGION_LENGTH__+0x34>
 	else if (__tmp > 65535)
-     850:	20 e0       	ldi	r18, 0x00	; 0
-     852:	3f ef       	ldi	r19, 0xFF	; 255
-     854:	4f e7       	ldi	r20, 0x7F	; 127
-     856:	57 e4       	ldi	r21, 0x47	; 71
-     858:	6d a1       	ldd	r22, Y+37	; 0x25
-     85a:	7e a1       	ldd	r23, Y+38	; 0x26
-     85c:	8f a1       	ldd	r24, Y+39	; 0x27
-     85e:	98 a5       	ldd	r25, Y+40	; 0x28
-     860:	0e 94 33 09 	call	0x1266	; 0x1266 <__gesf2>
-     864:	18 16       	cp	r1, r24
-     866:	4c f5       	brge	.+82     	; 0x8ba <__DATA_REGION_LENGTH__+0xba>
+     3b6:	20 e0       	ldi	r18, 0x00	; 0
+     3b8:	3f ef       	ldi	r19, 0xFF	; 255
+     3ba:	4f e7       	ldi	r20, 0x7F	; 127
+     3bc:	57 e4       	ldi	r21, 0x47	; 71
+     3be:	6e 85       	ldd	r22, Y+14	; 0x0e
+     3c0:	7f 85       	ldd	r23, Y+15	; 0x0f
+     3c2:	88 89       	ldd	r24, Y+16	; 0x10
+     3c4:	99 89       	ldd	r25, Y+17	; 0x11
+     3c6:	0e 94 94 09 	call	0x1328	; 0x1328 <__gesf2>
+     3ca:	18 16       	cp	r1, r24
+     3cc:	4c f5       	brge	.+82     	; 0x420 <__EEPROM_REGION_LENGTH__+0x20>
 	{
 		//	__ticks = requested delay in 1/10 ms
 		__ticks = (uint16_t) (__ms * 10.0);
-     868:	20 e0       	ldi	r18, 0x00	; 0
-     86a:	30 e0       	ldi	r19, 0x00	; 0
-     86c:	40 e2       	ldi	r20, 0x20	; 32
-     86e:	51 e4       	ldi	r21, 0x41	; 65
-     870:	69 a1       	ldd	r22, Y+33	; 0x21
-     872:	7a a1       	ldd	r23, Y+34	; 0x22
-     874:	8b a1       	ldd	r24, Y+35	; 0x23
-     876:	9c a1       	ldd	r25, Y+36	; 0x24
-     878:	0e 94 38 09 	call	0x1270	; 0x1270 <__mulsf3>
-     87c:	dc 01       	movw	r26, r24
-     87e:	cb 01       	movw	r24, r22
-     880:	bc 01       	movw	r22, r24
-     882:	cd 01       	movw	r24, r26
-     884:	0e 94 11 08 	call	0x1022	; 0x1022 <__fixunssfsi>
-     888:	dc 01       	movw	r26, r24
-     88a:	cb 01       	movw	r24, r22
-     88c:	9a a7       	std	Y+42, r25	; 0x2a
-     88e:	89 a7       	std	Y+41, r24	; 0x29
-     890:	0f c0       	rjmp	.+30     	; 0x8b0 <__DATA_REGION_LENGTH__+0xb0>
-     892:	80 e9       	ldi	r24, 0x90	; 144
-     894:	91 e0       	ldi	r25, 0x01	; 1
-     896:	9c a7       	std	Y+44, r25	; 0x2c
-     898:	8b a7       	std	Y+43, r24	; 0x2b
+     3ce:	20 e0       	ldi	r18, 0x00	; 0
+     3d0:	30 e0       	ldi	r19, 0x00	; 0
+     3d2:	40 e2       	ldi	r20, 0x20	; 32
+     3d4:	51 e4       	ldi	r21, 0x41	; 65
+     3d6:	6a 85       	ldd	r22, Y+10	; 0x0a
+     3d8:	7b 85       	ldd	r23, Y+11	; 0x0b
+     3da:	8c 85       	ldd	r24, Y+12	; 0x0c
+     3dc:	9d 85       	ldd	r25, Y+13	; 0x0d
+     3de:	0e 94 99 09 	call	0x1332	; 0x1332 <__mulsf3>
+     3e2:	dc 01       	movw	r26, r24
+     3e4:	cb 01       	movw	r24, r22
+     3e6:	bc 01       	movw	r22, r24
+     3e8:	cd 01       	movw	r24, r26
+     3ea:	0e 94 72 08 	call	0x10e4	; 0x10e4 <__fixunssfsi>
+     3ee:	dc 01       	movw	r26, r24
+     3f0:	cb 01       	movw	r24, r22
+     3f2:	9b 8b       	std	Y+19, r25	; 0x13
+     3f4:	8a 8b       	std	Y+18, r24	; 0x12
+     3f6:	0f c0       	rjmp	.+30     	; 0x416 <__EEPROM_REGION_LENGTH__+0x16>
+     3f8:	80 e9       	ldi	r24, 0x90	; 144
+     3fa:	91 e0       	ldi	r25, 0x01	; 1
+     3fc:	9d 8b       	std	Y+21, r25	; 0x15
+     3fe:	8c 8b       	std	Y+20, r24	; 0x14
     milliseconds can be achieved.
  */
 void
 _delay_loop_2(uint16_t __count)
 {
 	__asm__ volatile (
-     89a:	8b a5       	ldd	r24, Y+43	; 0x2b
-     89c:	9c a5       	ldd	r25, Y+44	; 0x2c
-     89e:	01 97       	sbiw	r24, 0x01	; 1
-     8a0:	f1 f7       	brne	.-4      	; 0x89e <__DATA_REGION_LENGTH__+0x9e>
-     8a2:	9c a7       	std	Y+44, r25	; 0x2c
-     8a4:	8b a7       	std	Y+43, r24	; 0x2b
+     400:	8c 89       	ldd	r24, Y+20	; 0x14
+     402:	9d 89       	ldd	r25, Y+21	; 0x15
+     404:	01 97       	sbiw	r24, 0x01	; 1
+     406:	f1 f7       	brne	.-4      	; 0x404 <__EEPROM_REGION_LENGTH__+0x4>
+     408:	9d 8b       	std	Y+21, r25	; 0x15
+     40a:	8c 8b       	std	Y+20, r24	; 0x14
 		while(__ticks)
 		{
 			// wait 1/10 ms
 			_delay_loop_2(((F_CPU) / 4e3) / 10);
 			__ticks --;
-     8a6:	89 a5       	ldd	r24, Y+41	; 0x29
-     8a8:	9a a5       	ldd	r25, Y+42	; 0x2a
-     8aa:	01 97       	sbiw	r24, 0x01	; 1
-     8ac:	9a a7       	std	Y+42, r25	; 0x2a
-     8ae:	89 a7       	std	Y+41, r24	; 0x29
+     40c:	8a 89       	ldd	r24, Y+18	; 0x12
+     40e:	9b 89       	ldd	r25, Y+19	; 0x13
+     410:	01 97       	sbiw	r24, 0x01	; 1
+     412:	9b 8b       	std	Y+19, r25	; 0x13
+     414:	8a 8b       	std	Y+18, r24	; 0x12
 		__ticks = 1;
 	else if (__tmp > 65535)
 	{
 		//	__ticks = requested delay in 1/10 ms
 		__ticks = (uint16_t) (__ms * 10.0);
 		while(__ticks)
-     8b0:	89 a5       	ldd	r24, Y+41	; 0x29
-     8b2:	9a a5       	ldd	r25, Y+42	; 0x2a
-     8b4:	89 2b       	or	r24, r25
-     8b6:	69 f7       	brne	.-38     	; 0x892 <__DATA_REGION_LENGTH__+0x92>
-     8b8:	14 c0       	rjmp	.+40     	; 0x8e2 <__DATA_REGION_LENGTH__+0xe2>
+     416:	8a 89       	ldd	r24, Y+18	; 0x12
+     418:	9b 89       	ldd	r25, Y+19	; 0x13
+     41a:	89 2b       	or	r24, r25
+     41c:	69 f7       	brne	.-38     	; 0x3f8 <get_button+0xe4>
+     41e:	14 c0       	rjmp	.+40     	; 0x448 <__EEPROM_REGION_LENGTH__+0x48>
 			__ticks --;
 		}
 		return;
 	}
 	else
 		__ticks = (uint16_t)__tmp;
-     8ba:	6d a1       	ldd	r22, Y+37	; 0x25
-     8bc:	7e a1       	ldd	r23, Y+38	; 0x26
-     8be:	8f a1       	ldd	r24, Y+39	; 0x27
-     8c0:	98 a5       	ldd	r25, Y+40	; 0x28
-     8c2:	0e 94 11 08 	call	0x1022	; 0x1022 <__fixunssfsi>
-     8c6:	dc 01       	movw	r26, r24
-     8c8:	cb 01       	movw	r24, r22
-     8ca:	9a a7       	std	Y+42, r25	; 0x2a
-     8cc:	89 a7       	std	Y+41, r24	; 0x29
-     8ce:	89 a5       	ldd	r24, Y+41	; 0x29
-     8d0:	9a a5       	ldd	r25, Y+42	; 0x2a
-     8d2:	9e a7       	std	Y+46, r25	; 0x2e
-     8d4:	8d a7       	std	Y+45, r24	; 0x2d
-     8d6:	8d a5       	ldd	r24, Y+45	; 0x2d
-     8d8:	9e a5       	ldd	r25, Y+46	; 0x2e
-     8da:	01 97       	sbiw	r24, 0x01	; 1
-     8dc:	f1 f7       	brne	.-4      	; 0x8da <__DATA_REGION_LENGTH__+0xda>
-     8de:	9e a7       	std	Y+46, r25	; 0x2e
-     8e0:	8d a7       	std	Y+45, r24	; 0x2d
-					_delay_ms(250); //prevent double press
+     420:	6e 85       	ldd	r22, Y+14	; 0x0e
+     422:	7f 85       	ldd	r23, Y+15	; 0x0f
+     424:	88 89       	ldd	r24, Y+16	; 0x10
+     426:	99 89       	ldd	r25, Y+17	; 0x11
+     428:	0e 94 72 08 	call	0x10e4	; 0x10e4 <__fixunssfsi>
+     42c:	dc 01       	movw	r26, r24
+     42e:	cb 01       	movw	r24, r22
+     430:	9b 8b       	std	Y+19, r25	; 0x13
+     432:	8a 8b       	std	Y+18, r24	; 0x12
+     434:	8a 89       	ldd	r24, Y+18	; 0x12
+     436:	9b 89       	ldd	r25, Y+19	; 0x13
+     438:	9f 8b       	std	Y+23, r25	; 0x17
+     43a:	8e 8b       	std	Y+22, r24	; 0x16
+     43c:	8e 89       	ldd	r24, Y+22	; 0x16
+     43e:	9f 89       	ldd	r25, Y+23	; 0x17
+     440:	01 97       	sbiw	r24, 0x01	; 1
+     442:	f1 f7       	brne	.-4      	; 0x440 <__EEPROM_REGION_LENGTH__+0x40>
+     444:	9f 8b       	std	Y+23, r25	; 0x17
+     446:	8e 8b       	std	Y+22, r24	; 0x16
+		_delay_ms(debounce_wait);
+		return (1 << 2);
+     448:	84 e0       	ldi	r24, 0x04	; 4
+     44a:	85 c0       	rjmp	.+266    	; 0x556 <__EEPROM_REGION_LENGTH__+0x156>
+	}
+	uint8_t porta_state = (~PINA) & ~(0b1100);
+     44c:	80 e2       	ldi	r24, 0x20	; 32
+     44e:	90 e0       	ldi	r25, 0x00	; 0
+     450:	fc 01       	movw	r30, r24
+     452:	80 81       	ld	r24, Z
+     454:	80 95       	com	r24
+     456:	83 7f       	andi	r24, 0xF3	; 243
+     458:	89 87       	std	Y+9, r24	; 0x09
+	if(porta_state) {
+     45a:	89 85       	ldd	r24, Y+9	; 0x09
+     45c:	88 23       	and	r24, r24
+     45e:	09 f4       	brne	.+2      	; 0x462 <__EEPROM_REGION_LENGTH__+0x62>
+     460:	79 c0       	rjmp	.+242    	; 0x554 <__EEPROM_REGION_LENGTH__+0x154>
+		while(PINA != 0xff);
+     462:	00 00       	nop
+     464:	80 e2       	ldi	r24, 0x20	; 32
+     466:	90 e0       	ldi	r25, 0x00	; 0
+     468:	fc 01       	movw	r30, r24
+     46a:	80 81       	ld	r24, Z
+     46c:	8f 3f       	cpi	r24, 0xFF	; 255
+     46e:	d1 f7       	brne	.-12     	; 0x464 <__EEPROM_REGION_LENGTH__+0x64>
+     470:	89 81       	ldd	r24, Y+1	; 0x01
+     472:	9a 81       	ldd	r25, Y+2	; 0x02
+     474:	ab 81       	ldd	r26, Y+3	; 0x03
+     476:	bc 81       	ldd	r27, Y+4	; 0x04
+     478:	8d 83       	std	Y+5, r24	; 0x05
+     47a:	9e 83       	std	Y+6, r25	; 0x06
+     47c:	af 83       	std	Y+7, r26	; 0x07
+     47e:	b8 87       	std	Y+8, r27	; 0x08
+
+	__builtin_avr_delay_cycles(__ticks_dc);
+
+#else
+	uint16_t __ticks;
+	__tmp = ((F_CPU) / 4e3) * __ms;
+     480:	20 e0       	ldi	r18, 0x00	; 0
+     482:	30 e0       	ldi	r19, 0x00	; 0
+     484:	4a e7       	ldi	r20, 0x7A	; 122
+     486:	55 e4       	ldi	r21, 0x45	; 69
+     488:	6d 81       	ldd	r22, Y+5	; 0x05
+     48a:	7e 81       	ldd	r23, Y+6	; 0x06
+     48c:	8f 81       	ldd	r24, Y+7	; 0x07
+     48e:	98 85       	ldd	r25, Y+8	; 0x08
+     490:	0e 94 99 09 	call	0x1332	; 0x1332 <__mulsf3>
+     494:	dc 01       	movw	r26, r24
+     496:	cb 01       	movw	r24, r22
+     498:	88 8f       	std	Y+24, r24	; 0x18
+     49a:	99 8f       	std	Y+25, r25	; 0x19
+     49c:	aa 8f       	std	Y+26, r26	; 0x1a
+     49e:	bb 8f       	std	Y+27, r27	; 0x1b
+	if (__tmp < 1.0)
+     4a0:	20 e0       	ldi	r18, 0x00	; 0
+     4a2:	30 e0       	ldi	r19, 0x00	; 0
+     4a4:	40 e8       	ldi	r20, 0x80	; 128
+     4a6:	5f e3       	ldi	r21, 0x3F	; 63
+     4a8:	68 8d       	ldd	r22, Y+24	; 0x18
+     4aa:	79 8d       	ldd	r23, Y+25	; 0x19
+     4ac:	8a 8d       	ldd	r24, Y+26	; 0x1a
+     4ae:	9b 8d       	ldd	r25, Y+27	; 0x1b
+     4b0:	0e 94 f4 07 	call	0xfe8	; 0xfe8 <__cmpsf2>
+     4b4:	88 23       	and	r24, r24
+     4b6:	2c f4       	brge	.+10     	; 0x4c2 <__EEPROM_REGION_LENGTH__+0xc2>
+		__ticks = 1;
+     4b8:	81 e0       	ldi	r24, 0x01	; 1
+     4ba:	90 e0       	ldi	r25, 0x00	; 0
+     4bc:	9d 8f       	std	Y+29, r25	; 0x1d
+     4be:	8c 8f       	std	Y+28, r24	; 0x1c
+     4c0:	3f c0       	rjmp	.+126    	; 0x540 <__EEPROM_REGION_LENGTH__+0x140>
+	else if (__tmp > 65535)
+     4c2:	20 e0       	ldi	r18, 0x00	; 0
+     4c4:	3f ef       	ldi	r19, 0xFF	; 255
+     4c6:	4f e7       	ldi	r20, 0x7F	; 127
+     4c8:	57 e4       	ldi	r21, 0x47	; 71
+     4ca:	68 8d       	ldd	r22, Y+24	; 0x18
+     4cc:	79 8d       	ldd	r23, Y+25	; 0x19
+     4ce:	8a 8d       	ldd	r24, Y+26	; 0x1a
+     4d0:	9b 8d       	ldd	r25, Y+27	; 0x1b
+     4d2:	0e 94 94 09 	call	0x1328	; 0x1328 <__gesf2>
+     4d6:	18 16       	cp	r1, r24
+     4d8:	4c f5       	brge	.+82     	; 0x52c <__EEPROM_REGION_LENGTH__+0x12c>
+	{
+		//	__ticks = requested delay in 1/10 ms
+		__ticks = (uint16_t) (__ms * 10.0);
+     4da:	20 e0       	ldi	r18, 0x00	; 0
+     4dc:	30 e0       	ldi	r19, 0x00	; 0
+     4de:	40 e2       	ldi	r20, 0x20	; 32
+     4e0:	51 e4       	ldi	r21, 0x41	; 65
+     4e2:	6d 81       	ldd	r22, Y+5	; 0x05
+     4e4:	7e 81       	ldd	r23, Y+6	; 0x06
+     4e6:	8f 81       	ldd	r24, Y+7	; 0x07
+     4e8:	98 85       	ldd	r25, Y+8	; 0x08
+     4ea:	0e 94 99 09 	call	0x1332	; 0x1332 <__mulsf3>
+     4ee:	dc 01       	movw	r26, r24
+     4f0:	cb 01       	movw	r24, r22
+     4f2:	bc 01       	movw	r22, r24
+     4f4:	cd 01       	movw	r24, r26
+     4f6:	0e 94 72 08 	call	0x10e4	; 0x10e4 <__fixunssfsi>
+     4fa:	dc 01       	movw	r26, r24
+     4fc:	cb 01       	movw	r24, r22
+     4fe:	9d 8f       	std	Y+29, r25	; 0x1d
+     500:	8c 8f       	std	Y+28, r24	; 0x1c
+     502:	0f c0       	rjmp	.+30     	; 0x522 <__EEPROM_REGION_LENGTH__+0x122>
+     504:	80 e9       	ldi	r24, 0x90	; 144
+     506:	91 e0       	ldi	r25, 0x01	; 1
+     508:	9f 8f       	std	Y+31, r25	; 0x1f
+     50a:	8e 8f       	std	Y+30, r24	; 0x1e
+     50c:	8e 8d       	ldd	r24, Y+30	; 0x1e
+     50e:	9f 8d       	ldd	r25, Y+31	; 0x1f
+     510:	01 97       	sbiw	r24, 0x01	; 1
+     512:	f1 f7       	brne	.-4      	; 0x510 <__EEPROM_REGION_LENGTH__+0x110>
+     514:	9f 8f       	std	Y+31, r25	; 0x1f
+     516:	8e 8f       	std	Y+30, r24	; 0x1e
+		while(__ticks)
+		{
+			// wait 1/10 ms
+			_delay_loop_2(((F_CPU) / 4e3) / 10);
+			__ticks --;
+     518:	8c 8d       	ldd	r24, Y+28	; 0x1c
+     51a:	9d 8d       	ldd	r25, Y+29	; 0x1d
+     51c:	01 97       	sbiw	r24, 0x01	; 1
+     51e:	9d 8f       	std	Y+29, r25	; 0x1d
+     520:	8c 8f       	std	Y+28, r24	; 0x1c
+		__ticks = 1;
+	else if (__tmp > 65535)
+	{
+		//	__ticks = requested delay in 1/10 ms
+		__ticks = (uint16_t) (__ms * 10.0);
+		while(__ticks)
+     522:	8c 8d       	ldd	r24, Y+28	; 0x1c
+     524:	9d 8d       	ldd	r25, Y+29	; 0x1d
+     526:	89 2b       	or	r24, r25
+     528:	69 f7       	brne	.-38     	; 0x504 <__EEPROM_REGION_LENGTH__+0x104>
+     52a:	14 c0       	rjmp	.+40     	; 0x554 <__EEPROM_REGION_LENGTH__+0x154>
+			__ticks --;
+		}
+		return;
+	}
+	else
+		__ticks = (uint16_t)__tmp;
+     52c:	68 8d       	ldd	r22, Y+24	; 0x18
+     52e:	79 8d       	ldd	r23, Y+25	; 0x19
+     530:	8a 8d       	ldd	r24, Y+26	; 0x1a
+     532:	9b 8d       	ldd	r25, Y+27	; 0x1b
+     534:	0e 94 72 08 	call	0x10e4	; 0x10e4 <__fixunssfsi>
+     538:	dc 01       	movw	r26, r24
+     53a:	cb 01       	movw	r24, r22
+     53c:	9d 8f       	std	Y+29, r25	; 0x1d
+     53e:	8c 8f       	std	Y+28, r24	; 0x1c
+     540:	8c 8d       	ldd	r24, Y+28	; 0x1c
+     542:	9d 8d       	ldd	r25, Y+29	; 0x1d
+     544:	99 a3       	std	Y+33, r25	; 0x21
+     546:	88 a3       	std	Y+32, r24	; 0x20
+     548:	88 a1       	ldd	r24, Y+32	; 0x20
+     54a:	99 a1       	ldd	r25, Y+33	; 0x21
+     54c:	01 97       	sbiw	r24, 0x01	; 1
+     54e:	f1 f7       	brne	.-4      	; 0x54c <__EEPROM_REGION_LENGTH__+0x14c>
+     550:	99 a3       	std	Y+33, r25	; 0x21
+     552:	88 a3       	std	Y+32, r24	; 0x20
+		_delay_ms(debounce_wait);	
+	}
+	return porta_state;
+     554:	89 85       	ldd	r24, Y+9	; 0x09
+}
+     556:	a1 96       	adiw	r28, 0x21	; 33
+     558:	0f b6       	in	r0, 0x3f	; 63
+     55a:	f8 94       	cli
+     55c:	de bf       	out	0x3e, r29	; 62
+     55e:	0f be       	out	0x3f, r0	; 63
+     560:	cd bf       	out	0x3d, r28	; 61
+     562:	df 91       	pop	r29
+     564:	cf 91       	pop	r28
+     566:	08 95       	ret
+
+00000568 <display_element>:
+
+//for documentation see above paragraph
+void display_element(uint8_t element, unsigned int time) {
+     568:	cf 93       	push	r28
+     56a:	df 93       	push	r29
+     56c:	cd b7       	in	r28, 0x3d	; 61
+     56e:	de b7       	in	r29, 0x3e	; 62
+     570:	63 97       	sbiw	r28, 0x13	; 19
+     572:	0f b6       	in	r0, 0x3f	; 63
+     574:	f8 94       	cli
+     576:	de bf       	out	0x3e, r29	; 62
+     578:	0f be       	out	0x3f, r0	; 63
+     57a:	cd bf       	out	0x3d, r28	; 61
+     57c:	89 8b       	std	Y+17, r24	; 0x11
+     57e:	7b 8b       	std	Y+19, r23	; 0x13
+     580:	6a 8b       	std	Y+18, r22	; 0x12
+	uint8_t portd_state = 0;
+     582:	1a 82       	std	Y+2, r1	; 0x02
+	uint8_t porte_state = 0;
+     584:	19 82       	std	Y+1, r1	; 0x01
+	if(element & (1 << 2)) porte_state = (1<<5);
+     586:	89 89       	ldd	r24, Y+17	; 0x11
+     588:	88 2f       	mov	r24, r24
+     58a:	90 e0       	ldi	r25, 0x00	; 0
+     58c:	84 70       	andi	r24, 0x04	; 4
+     58e:	99 27       	eor	r25, r25
+     590:	89 2b       	or	r24, r25
+     592:	11 f0       	breq	.+4      	; 0x598 <display_element+0x30>
+     594:	80 e2       	ldi	r24, 0x20	; 32
+     596:	89 83       	std	Y+1, r24	; 0x01
+	portd_state = element & ~(0b1100);
+     598:	89 89       	ldd	r24, Y+17	; 0x11
+     59a:	83 7f       	andi	r24, 0xF3	; 243
+     59c:	8a 83       	std	Y+2, r24	; 0x02
+	
+	PORTD ^= portd_state;
+     59e:	8b e2       	ldi	r24, 0x2B	; 43
+     5a0:	90 e0       	ldi	r25, 0x00	; 0
+     5a2:	2b e2       	ldi	r18, 0x2B	; 43
+     5a4:	30 e0       	ldi	r19, 0x00	; 0
+     5a6:	f9 01       	movw	r30, r18
+     5a8:	30 81       	ld	r19, Z
+     5aa:	2a 81       	ldd	r18, Y+2	; 0x02
+     5ac:	23 27       	eor	r18, r19
+     5ae:	fc 01       	movw	r30, r24
+     5b0:	20 83       	st	Z, r18
+	PORTE ^= porte_state;
+     5b2:	8e e2       	ldi	r24, 0x2E	; 46
+     5b4:	90 e0       	ldi	r25, 0x00	; 0
+     5b6:	2e e2       	ldi	r18, 0x2E	; 46
+     5b8:	30 e0       	ldi	r19, 0x00	; 0
+     5ba:	f9 01       	movw	r30, r18
+     5bc:	30 81       	ld	r19, Z
+     5be:	29 81       	ldd	r18, Y+1	; 0x01
+     5c0:	23 27       	eor	r18, r19
+     5c2:	fc 01       	movw	r30, r24
+     5c4:	20 83       	st	Z, r18
+	beep(329.63, .25);
+     5c6:	20 e0       	ldi	r18, 0x00	; 0
+     5c8:	30 e0       	ldi	r19, 0x00	; 0
+     5ca:	40 e8       	ldi	r20, 0x80	; 128
+     5cc:	5e e3       	ldi	r21, 0x3E	; 62
+     5ce:	64 ea       	ldi	r22, 0xA4	; 164
+     5d0:	70 ed       	ldi	r23, 0xD0	; 208
+     5d2:	84 ea       	ldi	r24, 0xA4	; 164
+     5d4:	93 e4       	ldi	r25, 0x43	; 67
+     5d6:	0e 94 86 06 	call	0xd0c	; 0xd0c <beep>
+	_delay_ms(time * 1000);
+     5da:	4a 89       	ldd	r20, Y+18	; 0x12
+     5dc:	5b 89       	ldd	r21, Y+19	; 0x13
+     5de:	28 ee       	ldi	r18, 0xE8	; 232
+     5e0:	33 e0       	ldi	r19, 0x03	; 3
+     5e2:	42 9f       	mul	r20, r18
+     5e4:	c0 01       	movw	r24, r0
+     5e6:	43 9f       	mul	r20, r19
+     5e8:	90 0d       	add	r25, r0
+     5ea:	52 9f       	mul	r21, r18
+     5ec:	90 0d       	add	r25, r0
+     5ee:	11 24       	eor	r1, r1
+     5f0:	cc 01       	movw	r24, r24
+     5f2:	a0 e0       	ldi	r26, 0x00	; 0
+     5f4:	b0 e0       	ldi	r27, 0x00	; 0
+     5f6:	bc 01       	movw	r22, r24
+     5f8:	cd 01       	movw	r24, r26
+     5fa:	0e 94 a1 08 	call	0x1142	; 0x1142 <__floatunsisf>
+     5fe:	dc 01       	movw	r26, r24
+     600:	cb 01       	movw	r24, r22
+     602:	8b 83       	std	Y+3, r24	; 0x03
+     604:	9c 83       	std	Y+4, r25	; 0x04
+     606:	ad 83       	std	Y+5, r26	; 0x05
+     608:	be 83       	std	Y+6, r27	; 0x06
+
+	__builtin_avr_delay_cycles(__ticks_dc);
+
+#else
+	uint16_t __ticks;
+	__tmp = ((F_CPU) / 4e3) * __ms;
+     60a:	20 e0       	ldi	r18, 0x00	; 0
+     60c:	30 e0       	ldi	r19, 0x00	; 0
+     60e:	4a e7       	ldi	r20, 0x7A	; 122
+     610:	55 e4       	ldi	r21, 0x45	; 69
+     612:	6b 81       	ldd	r22, Y+3	; 0x03
+     614:	7c 81       	ldd	r23, Y+4	; 0x04
+     616:	8d 81       	ldd	r24, Y+5	; 0x05
+     618:	9e 81       	ldd	r25, Y+6	; 0x06
+     61a:	0e 94 99 09 	call	0x1332	; 0x1332 <__mulsf3>
+     61e:	dc 01       	movw	r26, r24
+     620:	cb 01       	movw	r24, r22
+     622:	8f 83       	std	Y+7, r24	; 0x07
+     624:	98 87       	std	Y+8, r25	; 0x08
+     626:	a9 87       	std	Y+9, r26	; 0x09
+     628:	ba 87       	std	Y+10, r27	; 0x0a
+	if (__tmp < 1.0)
+     62a:	20 e0       	ldi	r18, 0x00	; 0
+     62c:	30 e0       	ldi	r19, 0x00	; 0
+     62e:	40 e8       	ldi	r20, 0x80	; 128
+     630:	5f e3       	ldi	r21, 0x3F	; 63
+     632:	6f 81       	ldd	r22, Y+7	; 0x07
+     634:	78 85       	ldd	r23, Y+8	; 0x08
+     636:	89 85       	ldd	r24, Y+9	; 0x09
+     638:	9a 85       	ldd	r25, Y+10	; 0x0a
+     63a:	0e 94 f4 07 	call	0xfe8	; 0xfe8 <__cmpsf2>
+     63e:	88 23       	and	r24, r24
+     640:	2c f4       	brge	.+10     	; 0x64c <display_element+0xe4>
+		__ticks = 1;
+     642:	81 e0       	ldi	r24, 0x01	; 1
+     644:	90 e0       	ldi	r25, 0x00	; 0
+     646:	9c 87       	std	Y+12, r25	; 0x0c
+     648:	8b 87       	std	Y+11, r24	; 0x0b
+     64a:	3f c0       	rjmp	.+126    	; 0x6ca <display_element+0x162>
+	else if (__tmp > 65535)
+     64c:	20 e0       	ldi	r18, 0x00	; 0
+     64e:	3f ef       	ldi	r19, 0xFF	; 255
+     650:	4f e7       	ldi	r20, 0x7F	; 127
+     652:	57 e4       	ldi	r21, 0x47	; 71
+     654:	6f 81       	ldd	r22, Y+7	; 0x07
+     656:	78 85       	ldd	r23, Y+8	; 0x08
+     658:	89 85       	ldd	r24, Y+9	; 0x09
+     65a:	9a 85       	ldd	r25, Y+10	; 0x0a
+     65c:	0e 94 94 09 	call	0x1328	; 0x1328 <__gesf2>
+     660:	18 16       	cp	r1, r24
+     662:	4c f5       	brge	.+82     	; 0x6b6 <display_element+0x14e>
+	{
+		//	__ticks = requested delay in 1/10 ms
+		__ticks = (uint16_t) (__ms * 10.0);
+     664:	20 e0       	ldi	r18, 0x00	; 0
+     666:	30 e0       	ldi	r19, 0x00	; 0
+     668:	40 e2       	ldi	r20, 0x20	; 32
+     66a:	51 e4       	ldi	r21, 0x41	; 65
+     66c:	6b 81       	ldd	r22, Y+3	; 0x03
+     66e:	7c 81       	ldd	r23, Y+4	; 0x04
+     670:	8d 81       	ldd	r24, Y+5	; 0x05
+     672:	9e 81       	ldd	r25, Y+6	; 0x06
+     674:	0e 94 99 09 	call	0x1332	; 0x1332 <__mulsf3>
+     678:	dc 01       	movw	r26, r24
+     67a:	cb 01       	movw	r24, r22
+     67c:	bc 01       	movw	r22, r24
+     67e:	cd 01       	movw	r24, r26
+     680:	0e 94 72 08 	call	0x10e4	; 0x10e4 <__fixunssfsi>
+     684:	dc 01       	movw	r26, r24
+     686:	cb 01       	movw	r24, r22
+     688:	9c 87       	std	Y+12, r25	; 0x0c
+     68a:	8b 87       	std	Y+11, r24	; 0x0b
+     68c:	0f c0       	rjmp	.+30     	; 0x6ac <display_element+0x144>
+     68e:	80 e9       	ldi	r24, 0x90	; 144
+     690:	91 e0       	ldi	r25, 0x01	; 1
+     692:	9e 87       	std	Y+14, r25	; 0x0e
+     694:	8d 87       	std	Y+13, r24	; 0x0d
+     696:	8d 85       	ldd	r24, Y+13	; 0x0d
+     698:	9e 85       	ldd	r25, Y+14	; 0x0e
+     69a:	01 97       	sbiw	r24, 0x01	; 1
+     69c:	f1 f7       	brne	.-4      	; 0x69a <display_element+0x132>
+     69e:	9e 87       	std	Y+14, r25	; 0x0e
+     6a0:	8d 87       	std	Y+13, r24	; 0x0d
+		while(__ticks)
+		{
+			// wait 1/10 ms
+			_delay_loop_2(((F_CPU) / 4e3) / 10);
+			__ticks --;
+     6a2:	8b 85       	ldd	r24, Y+11	; 0x0b
+     6a4:	9c 85       	ldd	r25, Y+12	; 0x0c
+     6a6:	01 97       	sbiw	r24, 0x01	; 1
+     6a8:	9c 87       	std	Y+12, r25	; 0x0c
+     6aa:	8b 87       	std	Y+11, r24	; 0x0b
+		__ticks = 1;
+	else if (__tmp > 65535)
+	{
+		//	__ticks = requested delay in 1/10 ms
+		__ticks = (uint16_t) (__ms * 10.0);
+		while(__ticks)
+     6ac:	8b 85       	ldd	r24, Y+11	; 0x0b
+     6ae:	9c 85       	ldd	r25, Y+12	; 0x0c
+     6b0:	89 2b       	or	r24, r25
+     6b2:	69 f7       	brne	.-38     	; 0x68e <display_element+0x126>
+     6b4:	14 c0       	rjmp	.+40     	; 0x6de <display_element+0x176>
+			__ticks --;
+		}
+		return;
+	}
+	else
+		__ticks = (uint16_t)__tmp;
+     6b6:	6f 81       	ldd	r22, Y+7	; 0x07
+     6b8:	78 85       	ldd	r23, Y+8	; 0x08
+     6ba:	89 85       	ldd	r24, Y+9	; 0x09
+     6bc:	9a 85       	ldd	r25, Y+10	; 0x0a
+     6be:	0e 94 72 08 	call	0x10e4	; 0x10e4 <__fixunssfsi>
+     6c2:	dc 01       	movw	r26, r24
+     6c4:	cb 01       	movw	r24, r22
+     6c6:	9c 87       	std	Y+12, r25	; 0x0c
+     6c8:	8b 87       	std	Y+11, r24	; 0x0b
+     6ca:	8b 85       	ldd	r24, Y+11	; 0x0b
+     6cc:	9c 85       	ldd	r25, Y+12	; 0x0c
+     6ce:	98 8b       	std	Y+16, r25	; 0x10
+     6d0:	8f 87       	std	Y+15, r24	; 0x0f
+     6d2:	8f 85       	ldd	r24, Y+15	; 0x0f
+     6d4:	98 89       	ldd	r25, Y+16	; 0x10
+     6d6:	01 97       	sbiw	r24, 0x01	; 1
+     6d8:	f1 f7       	brne	.-4      	; 0x6d6 <display_element+0x16e>
+     6da:	98 8b       	std	Y+16, r25	; 0x10
+     6dc:	8f 87       	std	Y+15, r24	; 0x0f
+	PORTD ^= portd_state;
+     6de:	8b e2       	ldi	r24, 0x2B	; 43
+     6e0:	90 e0       	ldi	r25, 0x00	; 0
+     6e2:	2b e2       	ldi	r18, 0x2B	; 43
+     6e4:	30 e0       	ldi	r19, 0x00	; 0
+     6e6:	f9 01       	movw	r30, r18
+     6e8:	30 81       	ld	r19, Z
+     6ea:	2a 81       	ldd	r18, Y+2	; 0x02
+     6ec:	23 27       	eor	r18, r19
+     6ee:	fc 01       	movw	r30, r24
+     6f0:	20 83       	st	Z, r18
+	PORTE ^= porte_state;
+     6f2:	8e e2       	ldi	r24, 0x2E	; 46
+     6f4:	90 e0       	ldi	r25, 0x00	; 0
+     6f6:	2e e2       	ldi	r18, 0x2E	; 46
+     6f8:	30 e0       	ldi	r19, 0x00	; 0
+     6fa:	f9 01       	movw	r30, r18
+     6fc:	30 81       	ld	r19, Z
+     6fe:	29 81       	ldd	r18, Y+1	; 0x01
+     700:	23 27       	eor	r18, r19
+     702:	fc 01       	movw	r30, r24
+     704:	20 83       	st	Z, r18
+}
+     706:	00 00       	nop
+     708:	63 96       	adiw	r28, 0x13	; 19
+     70a:	0f b6       	in	r0, 0x3f	; 63
+     70c:	f8 94       	cli
+     70e:	de bf       	out	0x3e, r29	; 62
+     710:	0f be       	out	0x3f, r0	; 63
+     712:	cd bf       	out	0x3d, r28	; 61
+     714:	df 91       	pop	r29
+     716:	cf 91       	pop	r28
+     718:	08 95       	ret
+
+0000071a <init_io>:
+
+void init_io() {
+     71a:	cf 93       	push	r28
+     71c:	df 93       	push	r29
+     71e:	cd b7       	in	r28, 0x3d	; 61
+     720:	de b7       	in	r29, 0x3e	; 62
+	//initilize IO registers
+	//Buttons
+	DDRA = 0x00;
+     722:	81 e2       	ldi	r24, 0x21	; 33
+     724:	90 e0       	ldi	r25, 0x00	; 0
+     726:	fc 01       	movw	r30, r24
+     728:	10 82       	st	Z, r1
+	PORTA = 0xff;
+     72a:	82 e2       	ldi	r24, 0x22	; 34
+     72c:	90 e0       	ldi	r25, 0x00	; 0
+     72e:	2f ef       	ldi	r18, 0xFF	; 255
+     730:	fc 01       	movw	r30, r24
+     732:	20 83       	st	Z, r18
+	
+	//LEDs
+	DDRD = 0xff;
+     734:	8a e2       	ldi	r24, 0x2A	; 42
+     736:	90 e0       	ldi	r25, 0x00	; 0
+     738:	2f ef       	ldi	r18, 0xFF	; 255
+     73a:	fc 01       	movw	r30, r24
+     73c:	20 83       	st	Z, r18
+	PORTD = 0xff;
+     73e:	8b e2       	ldi	r24, 0x2B	; 43
+     740:	90 e0       	ldi	r25, 0x00	; 0
+     742:	2f ef       	ldi	r18, 0xFF	; 255
+     744:	fc 01       	movw	r30, r24
+     746:	20 83       	st	Z, r18
+	
+	//speaker and middle LED
+	DDRE = (1 << 4) | (1 << 5); 
+     748:	8d e2       	ldi	r24, 0x2D	; 45
+     74a:	90 e0       	ldi	r25, 0x00	; 0
+     74c:	20 e3       	ldi	r18, 0x30	; 48
+     74e:	fc 01       	movw	r30, r24
+     750:	20 83       	st	Z, r18
+	PORTE = 0xff;	
+     752:	8e e2       	ldi	r24, 0x2E	; 46
+     754:	90 e0       	ldi	r25, 0x00	; 0
+     756:	2f ef       	ldi	r18, 0xFF	; 255
+     758:	fc 01       	movw	r30, r24
+     75a:	20 83       	st	Z, r18
+}
+     75c:	00 00       	nop
+     75e:	df 91       	pop	r29
+     760:	cf 91       	pop	r28
+     762:	08 95       	ret
+
+00000764 <main>:
+
+int main(void) {
+     764:	8f 92       	push	r8
+     766:	9f 92       	push	r9
+     768:	af 92       	push	r10
+     76a:	bf 92       	push	r11
+     76c:	cf 92       	push	r12
+     76e:	df 92       	push	r13
+     770:	ef 92       	push	r14
+     772:	ff 92       	push	r15
+     774:	cf 93       	push	r28
+     776:	df 93       	push	r29
+     778:	cd b7       	in	r28, 0x3d	; 61
+     77a:	de b7       	in	r29, 0x3e	; 62
+     77c:	a5 97       	sbiw	r28, 0x25	; 37
+     77e:	0f b6       	in	r0, 0x3f	; 63
+     780:	f8 94       	cli
+     782:	de bf       	out	0x3e, r29	; 62
+     784:	0f be       	out	0x3f, r0	; 63
+     786:	cd bf       	out	0x3d, r28	; 61
+	cli();
+     788:	f8 94       	cli
+	timer_init_ctc();
+     78a:	0e 94 85 00 	call	0x10a	; 0x10a <timer_init_ctc>
+	init_io();
+     78e:	0e 94 8d 03 	call	0x71a	; 0x71a <init_io>
+	usart_init();
+     792:	0e 94 ff 00 	call	0x1fe	; 0x1fe <usart_init>
+
+
+	while(1) {	
+		int level = 0;
+     796:	1a 82       	std	Y+2, r1	; 0x02
+     798:	19 82       	std	Y+1, r1	; 0x01
+	
+		//get level
+		usart_txstr(
+     79a:	84 e0       	ldi	r24, 0x04	; 4
+     79c:	91 e0       	ldi	r25, 0x01	; 1
+     79e:	0e 94 5e 01 	call	0x2bc	; 0x2bc <usart_txstr>
+		"1. Easy\n"
+		"2. Moderate\n"
+		"3. Give me pain.");
+
+		//ask until valid input
+		while((level > 3) || (level < 1)) level = (int)(usart_rxt_blocking() - '0');
+     7a2:	07 c0       	rjmp	.+14     	; 0x7b2 <main+0x4e>
+     7a4:	0e 94 4c 01 	call	0x298	; 0x298 <usart_rxt_blocking>
+     7a8:	88 2f       	mov	r24, r24
+     7aa:	90 e0       	ldi	r25, 0x00	; 0
+     7ac:	c0 97       	sbiw	r24, 0x30	; 48
+     7ae:	9a 83       	std	Y+2, r25	; 0x02
+     7b0:	89 83       	std	Y+1, r24	; 0x01
+     7b2:	89 81       	ldd	r24, Y+1	; 0x01
+     7b4:	9a 81       	ldd	r25, Y+2	; 0x02
+     7b6:	04 97       	sbiw	r24, 0x04	; 4
+     7b8:	ac f7       	brge	.-22     	; 0x7a4 <main+0x40>
+     7ba:	89 81       	ldd	r24, Y+1	; 0x01
+     7bc:	9a 81       	ldd	r25, Y+2	; 0x02
+     7be:	18 16       	cp	r1, r24
+     7c0:	19 06       	cpc	r1, r25
+     7c2:	84 f7       	brge	.-32     	; 0x7a4 <main+0x40>
+		
+	
+		//main simon game
+		while(level < 3) {
+     7c4:	a2 c1       	rjmp	.+836    	; 0xb0a <__stack+0x20b>
+			int elements_max;
+			double score;
+			uint8_t element_list[5]; // TODO
+	
+			//this is where the level properties are set depending on level
+			switch(level) {
+     7c6:	89 81       	ldd	r24, Y+1	; 0x01
+     7c8:	9a 81       	ldd	r25, Y+2	; 0x02
+     7ca:	82 30       	cpi	r24, 0x02	; 2
+     7cc:	91 05       	cpc	r25, r1
+     7ce:	d9 f0       	breq	.+54     	; 0x806 <__DATA_REGION_LENGTH__+0x6>
+     7d0:	83 30       	cpi	r24, 0x03	; 3
+     7d2:	91 05       	cpc	r25, r1
+     7d4:	69 f1       	breq	.+90     	; 0x830 <__DATA_REGION_LENGTH__+0x30>
+     7d6:	01 97       	sbiw	r24, 0x01	; 1
+     7d8:	09 f0       	breq	.+2      	; 0x7dc <main+0x78>
+     7da:	3f c0       	rjmp	.+126    	; 0x85a <__DATA_REGION_LENGTH__+0x5a>
+				case 1:
+					sets = 3;
+     7dc:	83 e0       	ldi	r24, 0x03	; 3
+     7de:	90 e0       	ldi	r25, 0x00	; 0
+     7e0:	9e 83       	std	Y+6, r25	; 0x06
+     7e2:	8d 83       	std	Y+5, r24	; 0x05
+					display_time = 3;
+     7e4:	83 e0       	ldi	r24, 0x03	; 3
+     7e6:	90 e0       	ldi	r25, 0x00	; 0
+     7e8:	9c 83       	std	Y+4, r25	; 0x04
+     7ea:	8b 83       	std	Y+3, r24	; 0x03
+					response_time = 5;
+     7ec:	85 e0       	ldi	r24, 0x05	; 5
+     7ee:	90 e0       	ldi	r25, 0x00	; 0
+     7f0:	98 87       	std	Y+8, r25	; 0x08
+     7f2:	8f 83       	std	Y+7, r24	; 0x07
+					elements_min = 3;
+     7f4:	83 e0       	ldi	r24, 0x03	; 3
+     7f6:	90 e0       	ldi	r25, 0x00	; 0
+     7f8:	9a 87       	std	Y+10, r25	; 0x0a
+     7fa:	89 87       	std	Y+9, r24	; 0x09
+					elements_max = 5;
+     7fc:	85 e0       	ldi	r24, 0x05	; 5
+     7fe:	90 e0       	ldi	r25, 0x00	; 0
+     800:	9c 87       	std	Y+12, r25	; 0x0c
+     802:	8b 87       	std	Y+11, r24	; 0x0b
+					break;
+     804:	2a c0       	rjmp	.+84     	; 0x85a <__DATA_REGION_LENGTH__+0x5a>
+				case 2:
+					sets = 4;
+     806:	84 e0       	ldi	r24, 0x04	; 4
+     808:	90 e0       	ldi	r25, 0x00	; 0
+     80a:	9e 83       	std	Y+6, r25	; 0x06
+     80c:	8d 83       	std	Y+5, r24	; 0x05
+					display_time = 2;
+     80e:	82 e0       	ldi	r24, 0x02	; 2
+     810:	90 e0       	ldi	r25, 0x00	; 0
+     812:	9c 83       	std	Y+4, r25	; 0x04
+     814:	8b 83       	std	Y+3, r24	; 0x03
+					response_time = 7;
+     816:	87 e0       	ldi	r24, 0x07	; 7
+     818:	90 e0       	ldi	r25, 0x00	; 0
+     81a:	98 87       	std	Y+8, r25	; 0x08
+     81c:	8f 83       	std	Y+7, r24	; 0x07
+					elements_min = 3;
+     81e:	83 e0       	ldi	r24, 0x03	; 3
+     820:	90 e0       	ldi	r25, 0x00	; 0
+     822:	9a 87       	std	Y+10, r25	; 0x0a
+     824:	89 87       	std	Y+9, r24	; 0x09
+					elements_max = 10;
+     826:	8a e0       	ldi	r24, 0x0A	; 10
+     828:	90 e0       	ldi	r25, 0x00	; 0
+     82a:	9c 87       	std	Y+12, r25	; 0x0c
+     82c:	8b 87       	std	Y+11, r24	; 0x0b
+					break;
+     82e:	15 c0       	rjmp	.+42     	; 0x85a <__DATA_REGION_LENGTH__+0x5a>
+				case 3:
+					sets = 5;
+     830:	85 e0       	ldi	r24, 0x05	; 5
+     832:	90 e0       	ldi	r25, 0x00	; 0
+     834:	9e 83       	std	Y+6, r25	; 0x06
+     836:	8d 83       	std	Y+5, r24	; 0x05
+					display_time = 1;
+     838:	81 e0       	ldi	r24, 0x01	; 1
+     83a:	90 e0       	ldi	r25, 0x00	; 0
+     83c:	9c 83       	std	Y+4, r25	; 0x04
+     83e:	8b 83       	std	Y+3, r24	; 0x03
+					response_time = 10;
+     840:	8a e0       	ldi	r24, 0x0A	; 10
+     842:	90 e0       	ldi	r25, 0x00	; 0
+     844:	98 87       	std	Y+8, r25	; 0x08
+     846:	8f 83       	std	Y+7, r24	; 0x07
+					elements_min = 5;
+     848:	85 e0       	ldi	r24, 0x05	; 5
+     84a:	90 e0       	ldi	r25, 0x00	; 0
+     84c:	9a 87       	std	Y+10, r25	; 0x0a
+     84e:	89 87       	std	Y+9, r24	; 0x09
+					elements_max = 15;
+     850:	8f e0       	ldi	r24, 0x0F	; 15
+     852:	90 e0       	ldi	r25, 0x00	; 0
+     854:	9c 87       	std	Y+12, r25	; 0x0c
+     856:	8b 87       	std	Y+11, r24	; 0x0b
+					break;
+     858:	00 00       	nop
+
+	
+			//it's easier to make a variable to count the number of guesses (max_score)
+			//and increment current_score after each correct guess to calculate total score
+			//as the number of elements per set scale.
+			int max_score = 0;
+     85a:	1e 86       	std	Y+14, r1	; 0x0e
+     85c:	1d 86       	std	Y+13, r1	; 0x0d
+			int current_score = 0; 
+     85e:	18 8a       	std	Y+16, r1	; 0x10
+     860:	1f 86       	std	Y+15, r1	; 0x0f
+			for(int set = 0; set < sets; set++) {
+     862:	1a 8a       	std	Y+18, r1	; 0x12
+     864:	19 8a       	std	Y+17, r1	; 0x11
+     866:	0b c1       	rjmp	.+534    	; 0xa7e <__stack+0x17f>
+				//scale from elements_min (first set) to elements_max (last set)
+				int elements = elements_min + ceil(((elements_max - elements_min) / (float)(sets - 1)) * set);
+     868:	89 85       	ldd	r24, Y+9	; 0x09
+     86a:	9a 85       	ldd	r25, Y+10	; 0x0a
+     86c:	09 2e       	mov	r0, r25
+     86e:	00 0c       	add	r0, r0
+     870:	aa 0b       	sbc	r26, r26
+     872:	bb 0b       	sbc	r27, r27
+     874:	bc 01       	movw	r22, r24
+     876:	cd 01       	movw	r24, r26
+     878:	0e 94 a3 08 	call	0x1146	; 0x1146 <__floatsisf>
+     87c:	6b 01       	movw	r12, r22
+     87e:	7c 01       	movw	r14, r24
+     880:	2b 85       	ldd	r18, Y+11	; 0x0b
+     882:	3c 85       	ldd	r19, Y+12	; 0x0c
+     884:	89 85       	ldd	r24, Y+9	; 0x09
+     886:	9a 85       	ldd	r25, Y+10	; 0x0a
+     888:	a9 01       	movw	r20, r18
+     88a:	48 1b       	sub	r20, r24
+     88c:	59 0b       	sbc	r21, r25
+     88e:	ca 01       	movw	r24, r20
+     890:	09 2e       	mov	r0, r25
+     892:	00 0c       	add	r0, r0
+     894:	aa 0b       	sbc	r26, r26
+     896:	bb 0b       	sbc	r27, r27
+     898:	bc 01       	movw	r22, r24
+     89a:	cd 01       	movw	r24, r26
+     89c:	0e 94 a3 08 	call	0x1146	; 0x1146 <__floatsisf>
+     8a0:	4b 01       	movw	r8, r22
+     8a2:	5c 01       	movw	r10, r24
+     8a4:	8d 81       	ldd	r24, Y+5	; 0x05
+     8a6:	9e 81       	ldd	r25, Y+6	; 0x06
+     8a8:	01 97       	sbiw	r24, 0x01	; 1
+     8aa:	09 2e       	mov	r0, r25
+     8ac:	00 0c       	add	r0, r0
+     8ae:	aa 0b       	sbc	r26, r26
+     8b0:	bb 0b       	sbc	r27, r27
+     8b2:	bc 01       	movw	r22, r24
+     8b4:	cd 01       	movw	r24, r26
+     8b6:	0e 94 a3 08 	call	0x1146	; 0x1146 <__floatsisf>
+     8ba:	dc 01       	movw	r26, r24
+     8bc:	cb 01       	movw	r24, r22
+     8be:	9c 01       	movw	r18, r24
+     8c0:	ad 01       	movw	r20, r26
+     8c2:	c5 01       	movw	r24, r10
+     8c4:	b4 01       	movw	r22, r8
+     8c6:	0e 94 f9 07 	call	0xff2	; 0xff2 <__divsf3>
+     8ca:	dc 01       	movw	r26, r24
+     8cc:	cb 01       	movw	r24, r22
+     8ce:	4c 01       	movw	r8, r24
+     8d0:	5d 01       	movw	r10, r26
+     8d2:	89 89       	ldd	r24, Y+17	; 0x11
+     8d4:	9a 89       	ldd	r25, Y+18	; 0x12
+     8d6:	09 2e       	mov	r0, r25
+     8d8:	00 0c       	add	r0, r0
+     8da:	aa 0b       	sbc	r26, r26
+     8dc:	bb 0b       	sbc	r27, r27
+     8de:	bc 01       	movw	r22, r24
+     8e0:	cd 01       	movw	r24, r26
+     8e2:	0e 94 a3 08 	call	0x1146	; 0x1146 <__floatsisf>
+     8e6:	dc 01       	movw	r26, r24
+     8e8:	cb 01       	movw	r24, r22
+     8ea:	9c 01       	movw	r18, r24
+     8ec:	ad 01       	movw	r20, r26
+     8ee:	c5 01       	movw	r24, r10
+     8f0:	b4 01       	movw	r22, r8
+     8f2:	0e 94 99 09 	call	0x1332	; 0x1332 <__mulsf3>
+     8f6:	dc 01       	movw	r26, r24
+     8f8:	cb 01       	movw	r24, r22
+     8fa:	bc 01       	movw	r22, r24
+     8fc:	cd 01       	movw	r24, r26
+     8fe:	0e 94 dd 07 	call	0xfba	; 0xfba <ceil>
+     902:	dc 01       	movw	r26, r24
+     904:	cb 01       	movw	r24, r22
+     906:	9c 01       	movw	r18, r24
+     908:	ad 01       	movw	r20, r26
+     90a:	c7 01       	movw	r24, r14
+     90c:	b6 01       	movw	r22, r12
+     90e:	0e 94 71 07 	call	0xee2	; 0xee2 <__addsf3>
+     912:	dc 01       	movw	r26, r24
+     914:	cb 01       	movw	r24, r22
+     916:	bc 01       	movw	r22, r24
+     918:	cd 01       	movw	r24, r26
+     91a:	0e 94 6b 08 	call	0x10d6	; 0x10d6 <__fixsfsi>
+     91e:	dc 01       	movw	r26, r24
+     920:	cb 01       	movw	r24, r22
+     922:	9b 8f       	std	Y+27, r25	; 0x1b
+     924:	8a 8f       	std	Y+26, r24	; 0x1a
+				
+				//randomly get, display elements
+				for(int element = 0; element < elements; element++) {
+     926:	1c 8a       	std	Y+20, r1	; 0x14
+     928:	1b 8a       	std	Y+19, r1	; 0x13
+     92a:	37 c0       	rjmp	.+110    	; 0x99a <__stack+0x9b>
+					uint8_t element_bit = (rand() % ELEMENT_COUNT);
+     92c:	0e 94 7a 0a 	call	0x14f4	; 0x14f4 <rand>
+     930:	27 e0       	ldi	r18, 0x07	; 7
+     932:	30 e0       	ldi	r19, 0x00	; 0
+     934:	b9 01       	movw	r22, r18
+     936:	0e 94 06 0a 	call	0x140c	; 0x140c <__divmodhi4>
+     93a:	8d 8b       	std	Y+21, r24	; 0x15
+					// button 3 should never be pressed, so if 3 is randomly generated,
+					// we make it the last LED. We only generate 7 potential elements. 
+					if(element_bit == 3) element_bit = 7;  
+     93c:	8d 89       	ldd	r24, Y+21	; 0x15
+     93e:	83 30       	cpi	r24, 0x03	; 3
+     940:	11 f4       	brne	.+4      	; 0x946 <__stack+0x47>
+     942:	87 e0       	ldi	r24, 0x07	; 7
+     944:	8d 8b       	std	Y+21, r24	; 0x15
+					uint8_t this_element = 1 << element_bit;
+     946:	8d 89       	ldd	r24, Y+21	; 0x15
+     948:	28 2f       	mov	r18, r24
+     94a:	30 e0       	ldi	r19, 0x00	; 0
+     94c:	81 e0       	ldi	r24, 0x01	; 1
+     94e:	90 e0       	ldi	r25, 0x00	; 0
+     950:	02 c0       	rjmp	.+4      	; 0x956 <__stack+0x57>
+     952:	88 0f       	add	r24, r24
+     954:	99 1f       	adc	r25, r25
+     956:	2a 95       	dec	r18
+     958:	e2 f7       	brpl	.-8      	; 0x952 <__stack+0x53>
+     95a:	8c 8f       	std	Y+28, r24	; 0x1c
+					usart_txt('\n');
+     95c:	8a e0       	ldi	r24, 0x0A	; 10
+     95e:	0e 94 28 01 	call	0x250	; 0x250 <usart_txt>
+					usart_txt(element_bit + '0');
+     962:	8d 89       	ldd	r24, Y+21	; 0x15
+     964:	80 5d       	subi	r24, 0xD0	; 208
+     966:	0e 94 28 01 	call	0x250	; 0x250 <usart_txt>
+					usart_txt('\n');
+     96a:	8a e0       	ldi	r24, 0x0A	; 10
+     96c:	0e 94 28 01 	call	0x250	; 0x250 <usart_txt>
+					element_list[element] = this_element; //will be compared to guesses later
+     970:	9e 01       	movw	r18, r28
+     972:	2f 5d       	subi	r18, 0xDF	; 223
+     974:	3f 4f       	sbci	r19, 0xFF	; 255
+     976:	8b 89       	ldd	r24, Y+19	; 0x13
+     978:	9c 89       	ldd	r25, Y+20	; 0x14
+     97a:	82 0f       	add	r24, r18
+     97c:	93 1f       	adc	r25, r19
+     97e:	2c 8d       	ldd	r18, Y+28	; 0x1c
+     980:	fc 01       	movw	r30, r24
+     982:	20 83       	st	Z, r18
+					display_element(this_element, display_time);
+     984:	8b 81       	ldd	r24, Y+3	; 0x03
+     986:	9c 81       	ldd	r25, Y+4	; 0x04
+     988:	bc 01       	movw	r22, r24
+     98a:	8c 8d       	ldd	r24, Y+28	; 0x1c
+     98c:	0e 94 b4 02 	call	0x568	; 0x568 <display_element>
+			for(int set = 0; set < sets; set++) {
+				//scale from elements_min (first set) to elements_max (last set)
+				int elements = elements_min + ceil(((elements_max - elements_min) / (float)(sets - 1)) * set);
+				
+				//randomly get, display elements
+				for(int element = 0; element < elements; element++) {
+     990:	8b 89       	ldd	r24, Y+19	; 0x13
+     992:	9c 89       	ldd	r25, Y+20	; 0x14
+     994:	01 96       	adiw	r24, 0x01	; 1
+     996:	9c 8b       	std	Y+20, r25	; 0x14
+     998:	8b 8b       	std	Y+19, r24	; 0x13
+     99a:	2b 89       	ldd	r18, Y+19	; 0x13
+     99c:	3c 89       	ldd	r19, Y+20	; 0x14
+     99e:	8a 8d       	ldd	r24, Y+26	; 0x1a
+     9a0:	9b 8d       	ldd	r25, Y+27	; 0x1b
+     9a2:	28 17       	cp	r18, r24
+     9a4:	39 07       	cpc	r19, r25
+     9a6:	14 f2       	brlt	.-124    	; 0x92c <__stack+0x2d>
+					
+				}
+				//get elements from buttono presses
+				//we'll poll the timer to see if a second has passed
+				//as timer only supports a max of 0xffff * (1024 / 16000000) seconds
+				seconds_remaining = response_time;
+     9a8:	8f 81       	ldd	r24, Y+7	; 0x07
+     9aa:	98 85       	ldd	r25, Y+8	; 0x08
+     9ac:	90 93 b3 01 	sts	0x01B3, r25	; 0x8001b3 <__data_end+0x1>
+     9b0:	80 93 b2 01 	sts	0x01B2, r24	; 0x8001b2 <__data_end>
+				start_timer();
+     9b4:	0e 94 9b 00 	call	0x136	; 0x136 <start_timer>
+				uint16_t guess;
+				for(int element = 0; element < elements; element++) {
+     9b8:	19 8e       	std	Y+25, r1	; 0x19
+     9ba:	18 8e       	std	Y+24, r1	; 0x18
+     9bc:	53 c0       	rjmp	.+166    	; 0xa64 <__stack+0x165>
+					guess = 0;
+     9be:	1f 8a       	std	Y+23, r1	; 0x17
+     9c0:	1e 8a       	std	Y+22, r1	; 0x16
+					do {
+						if(timer_done()) { //accounts for seconds passed
+     9c2:	0e 94 eb 00 	call	0x1d6	; 0x1d6 <timer_done>
+     9c6:	88 23       	and	r24, r24
+     9c8:	c1 f0       	breq	.+48     	; 0x9fa <__stack+0xfb>
+							seconds_remaining--;
+     9ca:	80 91 b2 01 	lds	r24, 0x01B2	; 0x8001b2 <__data_end>
+     9ce:	90 91 b3 01 	lds	r25, 0x01B3	; 0x8001b3 <__data_end+0x1>
+     9d2:	01 97       	sbiw	r24, 0x01	; 1
+     9d4:	90 93 b3 01 	sts	0x01B3, r25	; 0x8001b3 <__data_end+0x1>
+     9d8:	80 93 b2 01 	sts	0x01B2, r24	; 0x8001b2 <__data_end>
+							stop_timer(); //TODO only need one function
+     9dc:	0e 94 cb 00 	call	0x196	; 0x196 <stop_timer>
+							start_timer();
+     9e0:	0e 94 9b 00 	call	0x136	; 0x136 <start_timer>
+							beep(261.63, .1);
+     9e4:	2d ec       	ldi	r18, 0xCD	; 205
+     9e6:	3c ec       	ldi	r19, 0xCC	; 204
+     9e8:	4c ec       	ldi	r20, 0xCC	; 204
+     9ea:	5d e3       	ldi	r21, 0x3D	; 61
+     9ec:	64 ea       	ldi	r22, 0xA4	; 164
+     9ee:	70 ed       	ldi	r23, 0xD0	; 208
+     9f0:	82 e8       	ldi	r24, 0x82	; 130
+     9f2:	93 e4       	ldi	r25, 0x43	; 67
+     9f4:	0e 94 86 06 	call	0xd0c	; 0xd0c <beep>
+     9f8:	06 c0       	rjmp	.+12     	; 0xa06 <__stack+0x107>
+						}
+						else { guess = get_button(); }
+     9fa:	0e 94 8a 01 	call	0x314	; 0x314 <get_button>
+     9fe:	88 2f       	mov	r24, r24
+     a00:	90 e0       	ldi	r25, 0x00	; 0
+     a02:	9f 8b       	std	Y+23, r25	; 0x17
+     a04:	8e 8b       	std	Y+22, r24	; 0x16
+					} while((!guess) && (seconds_remaining > 0));
+     a06:	8e 89       	ldd	r24, Y+22	; 0x16
+     a08:	9f 89       	ldd	r25, Y+23	; 0x17
+     a0a:	89 2b       	or	r24, r25
+     a0c:	39 f4       	brne	.+14     	; 0xa1c <__stack+0x11d>
+     a0e:	80 91 b2 01 	lds	r24, 0x01B2	; 0x8001b2 <__data_end>
+     a12:	90 91 b3 01 	lds	r25, 0x01B3	; 0x8001b3 <__data_end+0x1>
+     a16:	18 16       	cp	r1, r24
+     a18:	19 06       	cpc	r1, r25
+     a1a:	9c f2       	brlt	.-90     	; 0x9c2 <__stack+0xc3>
 					max_score++;
-     8e2:	8d 85       	ldd	r24, Y+13	; 0x0d
-     8e4:	9e 85       	ldd	r25, Y+14	; 0x0e
-     8e6:	01 96       	adiw	r24, 0x01	; 1
-     8e8:	9e 87       	std	Y+14, r25	; 0x0e
-     8ea:	8d 87       	std	Y+13, r24	; 0x0d
+     a1c:	8d 85       	ldd	r24, Y+13	; 0x0d
+     a1e:	9e 85       	ldd	r25, Y+14	; 0x0e
+     a20:	01 96       	adiw	r24, 0x01	; 1
+     a22:	9e 87       	std	Y+14, r25	; 0x0e
+     a24:	8d 87       	std	Y+13, r24	; 0x0d
 					if(guess == element_list[element]) {
-     8ec:	9e 01       	movw	r18, r28
-     8ee:	21 5d       	subi	r18, 0xD1	; 209
-     8f0:	3f 4f       	sbci	r19, 0xFF	; 255
-     8f2:	88 8d       	ldd	r24, Y+24	; 0x18
-     8f4:	99 8d       	ldd	r25, Y+25	; 0x19
-     8f6:	82 0f       	add	r24, r18
-     8f8:	93 1f       	adc	r25, r19
-     8fa:	fc 01       	movw	r30, r24
-     8fc:	80 81       	ld	r24, Z
-     8fe:	28 2f       	mov	r18, r24
-     900:	30 e0       	ldi	r19, 0x00	; 0
-     902:	8e 89       	ldd	r24, Y+22	; 0x16
-     904:	9f 89       	ldd	r25, Y+23	; 0x17
-     906:	28 17       	cp	r18, r24
-     908:	39 07       	cpc	r19, r25
-     90a:	41 f4       	brne	.+16     	; 0x91c <__stack+0x1d>
+     a26:	9e 01       	movw	r18, r28
+     a28:	2f 5d       	subi	r18, 0xDF	; 223
+     a2a:	3f 4f       	sbci	r19, 0xFF	; 255
+     a2c:	88 8d       	ldd	r24, Y+24	; 0x18
+     a2e:	99 8d       	ldd	r25, Y+25	; 0x19
+     a30:	82 0f       	add	r24, r18
+     a32:	93 1f       	adc	r25, r19
+     a34:	fc 01       	movw	r30, r24
+     a36:	80 81       	ld	r24, Z
+     a38:	28 2f       	mov	r18, r24
+     a3a:	30 e0       	ldi	r19, 0x00	; 0
+     a3c:	8e 89       	ldd	r24, Y+22	; 0x16
+     a3e:	9f 89       	ldd	r25, Y+23	; 0x17
+     a40:	28 17       	cp	r18, r24
+     a42:	39 07       	cpc	r19, r25
+     a44:	41 f4       	brne	.+16     	; 0xa56 <__stack+0x157>
 						current_score++;
-     90c:	8f 85       	ldd	r24, Y+15	; 0x0f
-     90e:	98 89       	ldd	r25, Y+16	; 0x10
-     910:	01 96       	adiw	r24, 0x01	; 1
-     912:	98 8b       	std	Y+16, r25	; 0x10
-     914:	8f 87       	std	Y+15, r24	; 0x0f
+     a46:	8f 85       	ldd	r24, Y+15	; 0x0f
+     a48:	98 89       	ldd	r25, Y+16	; 0x10
+     a4a:	01 96       	adiw	r24, 0x01	; 1
+     a4c:	98 8b       	std	Y+16, r25	; 0x10
+     a4e:	8f 87       	std	Y+15, r24	; 0x0f
 						correct_beep();
-     916:	0e 94 31 05 	call	0xa62	; 0xa62 <correct_beep>
-     91a:	02 c0       	rjmp	.+4      	; 0x920 <__stack+0x21>
+     a50:	0e 94 92 05 	call	0xb24	; 0xb24 <correct_beep>
+     a54:	02 c0       	rjmp	.+4      	; 0xa5a <__stack+0x15b>
 					}
 					else {
 						incorrect_beep();
-     91c:	0e 94 47 05 	call	0xa8e	; 0xa8e <incorrect_beep>
-				}
-				//get elements
+     a56:	0e 94 a8 05 	call	0xb50	; 0xb50 <incorrect_beep>
+				//we'll poll the timer to see if a second has passed
+				//as timer only supports a max of 0xffff * (1024 / 16000000) seconds
 				seconds_remaining = response_time;
 				start_timer();
 				uint16_t guess;
 				for(int element = 0; element < elements; element++) {
-     920:	88 8d       	ldd	r24, Y+24	; 0x18
-     922:	99 8d       	ldd	r25, Y+25	; 0x19
-     924:	01 96       	adiw	r24, 0x01	; 1
-     926:	99 8f       	std	Y+25, r25	; 0x19
-     928:	88 8f       	std	Y+24, r24	; 0x18
-     92a:	28 8d       	ldd	r18, Y+24	; 0x18
-     92c:	39 8d       	ldd	r19, Y+25	; 0x19
-     92e:	8a 8d       	ldd	r24, Y+26	; 0x1a
-     930:	9b 8d       	ldd	r25, Y+27	; 0x1b
-     932:	28 17       	cp	r18, r24
-     934:	39 07       	cpc	r19, r25
-     936:	0c f4       	brge	.+2      	; 0x93a <__stack+0x3b>
-     938:	31 cf       	rjmp	.-414    	; 0x79c <main+0x25a>
-			/************************************************************************/
-	
-			//main level
+     a5a:	88 8d       	ldd	r24, Y+24	; 0x18
+     a5c:	99 8d       	ldd	r25, Y+25	; 0x19
+     a5e:	01 96       	adiw	r24, 0x01	; 1
+     a60:	99 8f       	std	Y+25, r25	; 0x19
+     a62:	88 8f       	std	Y+24, r24	; 0x18
+     a64:	28 8d       	ldd	r18, Y+24	; 0x18
+     a66:	39 8d       	ldd	r19, Y+25	; 0x19
+     a68:	8a 8d       	ldd	r24, Y+26	; 0x1a
+     a6a:	9b 8d       	ldd	r25, Y+27	; 0x1b
+     a6c:	28 17       	cp	r18, r24
+     a6e:	39 07       	cpc	r19, r25
+     a70:	0c f4       	brge	.+2      	; 0xa74 <__stack+0x175>
+     a72:	a5 cf       	rjmp	.-182    	; 0x9be <__stack+0xbf>
+			//it's easier to make a variable to count the number of guesses (max_score)
+			//and increment current_score after each correct guess to calculate total score
+			//as the number of elements per set scale.
 			int max_score = 0;
-			int current_score = 0;
+			int current_score = 0; 
 			for(int set = 0; set < sets; set++) {
-     93a:	89 89       	ldd	r24, Y+17	; 0x11
-     93c:	9a 89       	ldd	r25, Y+18	; 0x12
-     93e:	01 96       	adiw	r24, 0x01	; 1
-     940:	9a 8b       	std	Y+18, r25	; 0x12
-     942:	89 8b       	std	Y+17, r24	; 0x11
-     944:	29 89       	ldd	r18, Y+17	; 0x11
-     946:	3a 89       	ldd	r19, Y+18	; 0x12
-     948:	8d 81       	ldd	r24, Y+5	; 0x05
-     94a:	9e 81       	ldd	r25, Y+6	; 0x06
-     94c:	28 17       	cp	r18, r24
-     94e:	39 07       	cpc	r19, r25
-     950:	0c f4       	brge	.+2      	; 0x954 <__stack+0x55>
-     952:	79 ce       	rjmp	.-782    	; 0x646 <main+0x104>
-					else {
-						incorrect_beep();
+     a74:	89 89       	ldd	r24, Y+17	; 0x11
+     a76:	9a 89       	ldd	r25, Y+18	; 0x12
+     a78:	01 96       	adiw	r24, 0x01	; 1
+     a7a:	9a 8b       	std	Y+18, r25	; 0x12
+     a7c:	89 8b       	std	Y+17, r24	; 0x11
+     a7e:	29 89       	ldd	r18, Y+17	; 0x11
+     a80:	3a 89       	ldd	r19, Y+18	; 0x12
+     a82:	8d 81       	ldd	r24, Y+5	; 0x05
+     a84:	9e 81       	ldd	r25, Y+6	; 0x06
+     a86:	28 17       	cp	r18, r24
+     a88:	39 07       	cpc	r19, r25
+     a8a:	0c f4       	brge	.+2      	; 0xa8e <__stack+0x18f>
+     a8c:	ed ce       	rjmp	.-550    	; 0x868 <__DATA_REGION_LENGTH__+0x68>
 					}
 				}	
 			}
+			//where we check the score. Score is calculated per level.
+			//If score under 80, we break back to the menu.
 			score = (float)current_score / max_score;
-     954:	8f 85       	ldd	r24, Y+15	; 0x0f
-     956:	98 89       	ldd	r25, Y+16	; 0x10
-     958:	09 2e       	mov	r0, r25
-     95a:	00 0c       	add	r0, r0
-     95c:	aa 0b       	sbc	r26, r26
-     95e:	bb 0b       	sbc	r27, r27
-     960:	bc 01       	movw	r22, r24
-     962:	cd 01       	movw	r24, r26
-     964:	0e 94 42 08 	call	0x1084	; 0x1084 <__floatsisf>
-     968:	6b 01       	movw	r12, r22
-     96a:	7c 01       	movw	r14, r24
-     96c:	8d 85       	ldd	r24, Y+13	; 0x0d
-     96e:	9e 85       	ldd	r25, Y+14	; 0x0e
-     970:	09 2e       	mov	r0, r25
-     972:	00 0c       	add	r0, r0
-     974:	aa 0b       	sbc	r26, r26
-     976:	bb 0b       	sbc	r27, r27
-     978:	bc 01       	movw	r22, r24
-     97a:	cd 01       	movw	r24, r26
-     97c:	0e 94 42 08 	call	0x1084	; 0x1084 <__floatsisf>
-     980:	dc 01       	movw	r26, r24
-     982:	cb 01       	movw	r24, r22
-     984:	9c 01       	movw	r18, r24
-     986:	ad 01       	movw	r20, r26
-     988:	c7 01       	movw	r24, r14
-     98a:	b6 01       	movw	r22, r12
-     98c:	0e 94 98 07 	call	0xf30	; 0xf30 <__divsf3>
-     990:	dc 01       	movw	r26, r24
-     992:	cb 01       	movw	r24, r22
-     994:	8d 8f       	std	Y+29, r24	; 0x1d
-     996:	9e 8f       	std	Y+30, r25	; 0x1e
-     998:	af 8f       	std	Y+31, r26	; 0x1f
-     99a:	b8 a3       	std	Y+32, r27	; 0x20
+     a8e:	8f 85       	ldd	r24, Y+15	; 0x0f
+     a90:	98 89       	ldd	r25, Y+16	; 0x10
+     a92:	09 2e       	mov	r0, r25
+     a94:	00 0c       	add	r0, r0
+     a96:	aa 0b       	sbc	r26, r26
+     a98:	bb 0b       	sbc	r27, r27
+     a9a:	bc 01       	movw	r22, r24
+     a9c:	cd 01       	movw	r24, r26
+     a9e:	0e 94 a3 08 	call	0x1146	; 0x1146 <__floatsisf>
+     aa2:	6b 01       	movw	r12, r22
+     aa4:	7c 01       	movw	r14, r24
+     aa6:	8d 85       	ldd	r24, Y+13	; 0x0d
+     aa8:	9e 85       	ldd	r25, Y+14	; 0x0e
+     aaa:	09 2e       	mov	r0, r25
+     aac:	00 0c       	add	r0, r0
+     aae:	aa 0b       	sbc	r26, r26
+     ab0:	bb 0b       	sbc	r27, r27
+     ab2:	bc 01       	movw	r22, r24
+     ab4:	cd 01       	movw	r24, r26
+     ab6:	0e 94 a3 08 	call	0x1146	; 0x1146 <__floatsisf>
+     aba:	dc 01       	movw	r26, r24
+     abc:	cb 01       	movw	r24, r22
+     abe:	9c 01       	movw	r18, r24
+     ac0:	ad 01       	movw	r20, r26
+     ac2:	c7 01       	movw	r24, r14
+     ac4:	b6 01       	movw	r22, r12
+     ac6:	0e 94 f9 07 	call	0xff2	; 0xff2 <__divsf3>
+     aca:	dc 01       	movw	r26, r24
+     acc:	cb 01       	movw	r24, r22
+     ace:	8d 8f       	std	Y+29, r24	; 0x1d
+     ad0:	9e 8f       	std	Y+30, r25	; 0x1e
+     ad2:	af 8f       	std	Y+31, r26	; 0x1f
+     ad4:	b8 a3       	std	Y+32, r27	; 0x20
 			if(score >= .8) { 
-     99c:	2d ec       	ldi	r18, 0xCD	; 205
-     99e:	3c ec       	ldi	r19, 0xCC	; 204
-     9a0:	4c e4       	ldi	r20, 0x4C	; 76
-     9a2:	5f e3       	ldi	r21, 0x3F	; 63
-     9a4:	6d 8d       	ldd	r22, Y+29	; 0x1d
-     9a6:	7e 8d       	ldd	r23, Y+30	; 0x1e
-     9a8:	8f 8d       	ldd	r24, Y+31	; 0x1f
-     9aa:	98 a1       	ldd	r25, Y+32	; 0x20
-     9ac:	0e 94 33 09 	call	0x1266	; 0x1266 <__gesf2>
-     9b0:	88 23       	and	r24, r24
-     9b2:	54 f0       	brlt	.+20     	; 0x9c8 <__stack+0xc9>
+     ad6:	2d ec       	ldi	r18, 0xCD	; 205
+     ad8:	3c ec       	ldi	r19, 0xCC	; 204
+     ada:	4c e4       	ldi	r20, 0x4C	; 76
+     adc:	5f e3       	ldi	r21, 0x3F	; 63
+     ade:	6d 8d       	ldd	r22, Y+29	; 0x1d
+     ae0:	7e 8d       	ldd	r23, Y+30	; 0x1e
+     ae2:	8f 8d       	ldd	r24, Y+31	; 0x1f
+     ae4:	98 a1       	ldd	r25, Y+32	; 0x20
+     ae6:	0e 94 94 09 	call	0x1328	; 0x1328 <__gesf2>
+     aea:	88 23       	and	r24, r24
+     aec:	54 f0       	brlt	.+20     	; 0xb02 <__stack+0x203>
 				level++;
-     9b4:	89 81       	ldd	r24, Y+1	; 0x01
-     9b6:	9a 81       	ldd	r25, Y+2	; 0x02
-     9b8:	01 96       	adiw	r24, 0x01	; 1
-     9ba:	9a 83       	std	Y+2, r25	; 0x02
-     9bc:	89 83       	std	Y+1, r24	; 0x01
+     aee:	89 81       	ldd	r24, Y+1	; 0x01
+     af0:	9a 81       	ldd	r25, Y+2	; 0x02
+     af2:	01 96       	adiw	r24, 0x01	; 1
+     af4:	9a 83       	std	Y+2, r25	; 0x02
+     af6:	89 83       	std	Y+1, r24	; 0x01
 				usart_txstr("\nnext level\n"); 
-     9be:	80 e8       	ldi	r24, 0x80	; 128
-     9c0:	91 e0       	ldi	r25, 0x01	; 1
-     9c2:	0e 94 5e 01 	call	0x2bc	; 0x2bc <usart_txstr>
-     9c6:	04 c0       	rjmp	.+8      	; 0x9d0 <__stack+0xd1>
-				}
+     af8:	8a e5       	ldi	r24, 0x5A	; 90
+     afa:	91 e0       	ldi	r25, 0x01	; 1
+     afc:	0e 94 5e 01 	call	0x2bc	; 0x2bc <usart_txstr>
+     b00:	04 c0       	rjmp	.+8      	; 0xb0a <__stack+0x20b>
+			}
 			else { 
 				loose(); 
-     9c8:	0e 94 05 06 	call	0xc0a	; 0xc0a <loose>
+     b02:	0e 94 66 06 	call	0xccc	; 0xccc <loose>
 				break;
-     9cc:	00 00       	nop
-     9ce:	05 c0       	rjmp	.+10     	; 0x9da <__stack+0xdb>
-
+     b06:	00 00       	nop
+     b08:	05 c0       	rjmp	.+10     	; 0xb14 <__stack+0x215>
+		//ask until valid input
 		while((level > 3) || (level < 1)) level = (int)(usart_rxt_blocking() - '0');
 		
 	
 		//main simon game
 		while(level < 3) {
-     9d0:	89 81       	ldd	r24, Y+1	; 0x01
-     9d2:	9a 81       	ldd	r25, Y+2	; 0x02
-     9d4:	03 97       	sbiw	r24, 0x03	; 3
-     9d6:	0c f4       	brge	.+2      	; 0x9da <__stack+0xdb>
-     9d8:	e5 cd       	rjmp	.-1078   	; 0x5a4 <main+0x62>
+     b0a:	89 81       	ldd	r24, Y+1	; 0x01
+     b0c:	9a 81       	ldd	r25, Y+2	; 0x02
+     b0e:	03 97       	sbiw	r24, 0x03	; 3
+     b10:	0c f4       	brge	.+2      	; 0xb14 <__stack+0x215>
+     b12:	59 ce       	rjmp	.-846    	; 0x7c6 <main+0x62>
 			else { 
 				loose(); 
 				break;
 			}
 		}
-		if(level >= 3) win();
-     9da:	89 81       	ldd	r24, Y+1	; 0x01
-     9dc:	9a 81       	ldd	r25, Y+2	; 0x02
-     9de:	03 97       	sbiw	r24, 0x03	; 3
-     9e0:	0c f4       	brge	.+2      	; 0x9e4 <__stack+0xe5>
-     9e2:	c8 cd       	rjmp	.-1136   	; 0x574 <main+0x32>
-     9e4:	0e 94 e5 05 	call	0xbca	; 0xbca <win>
+		if(level >= 3) win(); //you win if you get past level 3
+     b14:	89 81       	ldd	r24, Y+1	; 0x01
+     b16:	9a 81       	ldd	r25, Y+2	; 0x02
+     b18:	03 97       	sbiw	r24, 0x03	; 3
+     b1a:	0c f4       	brge	.+2      	; 0xb1e <__stack+0x21f>
+     b1c:	3c ce       	rjmp	.-904    	; 0x796 <main+0x32>
+     b1e:	0e 94 46 06 	call	0xc8c	; 0xc8c <win>
 	}
-     9e8:	c5 cd       	rjmp	.-1142   	; 0x574 <main+0x32>
+     b22:	39 ce       	rjmp	.-910    	; 0x796 <main+0x32>
 
-000009ea <__vector_13>:
+00000b24 <correct_beep>:
 }
 
-//timer interrupt
-ISR(TIMER1_COMPA_vect) {
-     9ea:	1f 92       	push	r1
-     9ec:	0f 92       	push	r0
-     9ee:	00 90 5f 00 	lds	r0, 0x005F	; 0x80005f <__TEXT_REGION_LENGTH__+0x7f805f>
-     9f2:	0f 92       	push	r0
-     9f4:	11 24       	eor	r1, r1
-     9f6:	2f 93       	push	r18
-     9f8:	3f 93       	push	r19
-     9fa:	4f 93       	push	r20
-     9fc:	5f 93       	push	r21
-     9fe:	6f 93       	push	r22
-     a00:	7f 93       	push	r23
-     a02:	8f 93       	push	r24
-     a04:	9f 93       	push	r25
-     a06:	af 93       	push	r26
-     a08:	bf 93       	push	r27
-     a0a:	ef 93       	push	r30
-     a0c:	ff 93       	push	r31
-     a0e:	cf 93       	push	r28
-     a10:	df 93       	push	r29
-     a12:	cd b7       	in	r28, 0x3d	; 61
-     a14:	de b7       	in	r29, 0x3e	; 62
-	if(seconds_remaining-- > 0) return;
-     a16:	80 91 d8 01 	lds	r24, 0x01D8	; 0x8001d8 <__data_end>
-     a1a:	90 91 d9 01 	lds	r25, 0x01D9	; 0x8001d9 <__data_end+0x1>
-     a1e:	9c 01       	movw	r18, r24
-     a20:	21 50       	subi	r18, 0x01	; 1
-     a22:	31 09       	sbc	r19, r1
-     a24:	30 93 d9 01 	sts	0x01D9, r19	; 0x8001d9 <__data_end+0x1>
-     a28:	20 93 d8 01 	sts	0x01D8, r18	; 0x8001d8 <__data_end>
-     a2c:	18 16       	cp	r1, r24
-     a2e:	19 06       	cpc	r1, r25
-     a30:	1c f0       	brlt	.+6      	; 0xa38 <__vector_13+0x4e>
-	for(;;) {
-		beep();
-     a32:	0e 94 25 06 	call	0xc4a	; 0xc4a <beep>
-	}
-     a36:	fd cf       	rjmp	.-6      	; 0xa32 <__vector_13+0x48>
-	}
-}
-
-//timer interrupt
-ISR(TIMER1_COMPA_vect) {
-	if(seconds_remaining-- > 0) return;
-     a38:	00 00       	nop
-	for(;;) {
-		beep();
-	}
-}
-     a3a:	df 91       	pop	r29
-     a3c:	cf 91       	pop	r28
-     a3e:	ff 91       	pop	r31
-     a40:	ef 91       	pop	r30
-     a42:	bf 91       	pop	r27
-     a44:	af 91       	pop	r26
-     a46:	9f 91       	pop	r25
-     a48:	8f 91       	pop	r24
-     a4a:	7f 91       	pop	r23
-     a4c:	6f 91       	pop	r22
-     a4e:	5f 91       	pop	r21
-     a50:	4f 91       	pop	r20
-     a52:	3f 91       	pop	r19
-     a54:	2f 91       	pop	r18
-     a56:	0f 90       	pop	r0
-     a58:	00 92 5f 00 	sts	0x005F, r0	; 0x80005f <__TEXT_REGION_LENGTH__+0x7f805f>
-     a5c:	0f 90       	pop	r0
-     a5e:	1f 90       	pop	r1
-     a60:	18 95       	reti
-
-00000a62 <correct_beep>:
-
 void correct_beep() {
-     a62:	cf 93       	push	r28
-     a64:	df 93       	push	r29
-     a66:	cd b7       	in	r28, 0x3d	; 61
-     a68:	de b7       	in	r29, 0x3e	; 62
+     b24:	cf 93       	push	r28
+     b26:	df 93       	push	r29
+     b28:	cd b7       	in	r28, 0x3d	; 61
+     b2a:	de b7       	in	r29, 0x3e	; 62
 	usart_txstr("\nCorrect!\n");
-     a6a:	8d e8       	ldi	r24, 0x8D	; 141
-     a6c:	91 e0       	ldi	r25, 0x01	; 1
-     a6e:	0e 94 5e 01 	call	0x2bc	; 0x2bc <usart_txstr>
+     b2c:	87 e6       	ldi	r24, 0x67	; 103
+     b2e:	91 e0       	ldi	r25, 0x01	; 1
+     b30:	0e 94 5e 01 	call	0x2bc	; 0x2bc <usart_txstr>
 	beep(440.0, .1);
-     a72:	2d ec       	ldi	r18, 0xCD	; 205
-     a74:	3c ec       	ldi	r19, 0xCC	; 204
-     a76:	4c ec       	ldi	r20, 0xCC	; 204
-     a78:	5d e3       	ldi	r21, 0x3D	; 61
-     a7a:	60 e0       	ldi	r22, 0x00	; 0
-     a7c:	70 e0       	ldi	r23, 0x00	; 0
-     a7e:	8c ed       	ldi	r24, 0xDC	; 220
-     a80:	93 e4       	ldi	r25, 0x43	; 67
-     a82:	0e 94 25 06 	call	0xc4a	; 0xc4a <beep>
+     b34:	2d ec       	ldi	r18, 0xCD	; 205
+     b36:	3c ec       	ldi	r19, 0xCC	; 204
+     b38:	4c ec       	ldi	r20, 0xCC	; 204
+     b3a:	5d e3       	ldi	r21, 0x3D	; 61
+     b3c:	60 e0       	ldi	r22, 0x00	; 0
+     b3e:	70 e0       	ldi	r23, 0x00	; 0
+     b40:	8c ed       	ldi	r24, 0xDC	; 220
+     b42:	93 e4       	ldi	r25, 0x43	; 67
+     b44:	0e 94 86 06 	call	0xd0c	; 0xd0c <beep>
 }
-     a86:	00 00       	nop
-     a88:	df 91       	pop	r29
-     a8a:	cf 91       	pop	r28
-     a8c:	08 95       	ret
+     b48:	00 00       	nop
+     b4a:	df 91       	pop	r29
+     b4c:	cf 91       	pop	r28
+     b4e:	08 95       	ret
 
-00000a8e <incorrect_beep>:
+00000b50 <incorrect_beep>:
 
 void incorrect_beep() {
-     a8e:	cf 93       	push	r28
-     a90:	df 93       	push	r29
-     a92:	cd b7       	in	r28, 0x3d	; 61
-     a94:	de b7       	in	r29, 0x3e	; 62
-     a96:	2e 97       	sbiw	r28, 0x0e	; 14
-     a98:	0f b6       	in	r0, 0x3f	; 63
-     a9a:	f8 94       	cli
-     a9c:	de bf       	out	0x3e, r29	; 62
-     a9e:	0f be       	out	0x3f, r0	; 63
-     aa0:	cd bf       	out	0x3d, r28	; 61
+     b50:	cf 93       	push	r28
+     b52:	df 93       	push	r29
+     b54:	cd b7       	in	r28, 0x3d	; 61
+     b56:	de b7       	in	r29, 0x3e	; 62
+     b58:	2e 97       	sbiw	r28, 0x0e	; 14
+     b5a:	0f b6       	in	r0, 0x3f	; 63
+     b5c:	f8 94       	cli
+     b5e:	de bf       	out	0x3e, r29	; 62
+     b60:	0f be       	out	0x3f, r0	; 63
+     b62:	cd bf       	out	0x3d, r28	; 61
 	usart_txstr("\nIncorrect guess.\n");
-     aa2:	88 e9       	ldi	r24, 0x98	; 152
-     aa4:	91 e0       	ldi	r25, 0x01	; 1
-     aa6:	0e 94 5e 01 	call	0x2bc	; 0x2bc <usart_txstr>
+     b64:	82 e7       	ldi	r24, 0x72	; 114
+     b66:	91 e0       	ldi	r25, 0x01	; 1
+     b68:	0e 94 5e 01 	call	0x2bc	; 0x2bc <usart_txstr>
 	beep(261.62, .2);
-     aaa:	2d ec       	ldi	r18, 0xCD	; 205
-     aac:	3c ec       	ldi	r19, 0xCC	; 204
-     aae:	4c e4       	ldi	r20, 0x4C	; 76
-     ab0:	5e e3       	ldi	r21, 0x3E	; 62
-     ab2:	6c e5       	ldi	r22, 0x5C	; 92
-     ab4:	7f ec       	ldi	r23, 0xCF	; 207
-     ab6:	82 e8       	ldi	r24, 0x82	; 130
-     ab8:	93 e4       	ldi	r25, 0x43	; 67
-     aba:	0e 94 25 06 	call	0xc4a	; 0xc4a <beep>
-     abe:	80 e0       	ldi	r24, 0x00	; 0
-     ac0:	90 e0       	ldi	r25, 0x00	; 0
-     ac2:	a8 ec       	ldi	r26, 0xC8	; 200
-     ac4:	b1 e4       	ldi	r27, 0x41	; 65
-     ac6:	89 83       	std	Y+1, r24	; 0x01
-     ac8:	9a 83       	std	Y+2, r25	; 0x02
-     aca:	ab 83       	std	Y+3, r26	; 0x03
-     acc:	bc 83       	std	Y+4, r27	; 0x04
+     b6c:	2d ec       	ldi	r18, 0xCD	; 205
+     b6e:	3c ec       	ldi	r19, 0xCC	; 204
+     b70:	4c e4       	ldi	r20, 0x4C	; 76
+     b72:	5e e3       	ldi	r21, 0x3E	; 62
+     b74:	6c e5       	ldi	r22, 0x5C	; 92
+     b76:	7f ec       	ldi	r23, 0xCF	; 207
+     b78:	82 e8       	ldi	r24, 0x82	; 130
+     b7a:	93 e4       	ldi	r25, 0x43	; 67
+     b7c:	0e 94 86 06 	call	0xd0c	; 0xd0c <beep>
+     b80:	80 e0       	ldi	r24, 0x00	; 0
+     b82:	90 e0       	ldi	r25, 0x00	; 0
+     b84:	a8 ec       	ldi	r26, 0xC8	; 200
+     b86:	b1 e4       	ldi	r27, 0x41	; 65
+     b88:	89 83       	std	Y+1, r24	; 0x01
+     b8a:	9a 83       	std	Y+2, r25	; 0x02
+     b8c:	ab 83       	std	Y+3, r26	; 0x03
+     b8e:	bc 83       	std	Y+4, r27	; 0x04
 
 	__builtin_avr_delay_cycles(__ticks_dc);
 
 #else
 	uint16_t __ticks;
 	__tmp = ((F_CPU) / 4e3) * __ms;
-     ace:	20 e0       	ldi	r18, 0x00	; 0
-     ad0:	30 e0       	ldi	r19, 0x00	; 0
-     ad2:	4a e7       	ldi	r20, 0x7A	; 122
-     ad4:	55 e4       	ldi	r21, 0x45	; 69
-     ad6:	69 81       	ldd	r22, Y+1	; 0x01
-     ad8:	7a 81       	ldd	r23, Y+2	; 0x02
-     ada:	8b 81       	ldd	r24, Y+3	; 0x03
-     adc:	9c 81       	ldd	r25, Y+4	; 0x04
-     ade:	0e 94 38 09 	call	0x1270	; 0x1270 <__mulsf3>
-     ae2:	dc 01       	movw	r26, r24
-     ae4:	cb 01       	movw	r24, r22
-     ae6:	8d 83       	std	Y+5, r24	; 0x05
-     ae8:	9e 83       	std	Y+6, r25	; 0x06
-     aea:	af 83       	std	Y+7, r26	; 0x07
-     aec:	b8 87       	std	Y+8, r27	; 0x08
+     b90:	20 e0       	ldi	r18, 0x00	; 0
+     b92:	30 e0       	ldi	r19, 0x00	; 0
+     b94:	4a e7       	ldi	r20, 0x7A	; 122
+     b96:	55 e4       	ldi	r21, 0x45	; 69
+     b98:	69 81       	ldd	r22, Y+1	; 0x01
+     b9a:	7a 81       	ldd	r23, Y+2	; 0x02
+     b9c:	8b 81       	ldd	r24, Y+3	; 0x03
+     b9e:	9c 81       	ldd	r25, Y+4	; 0x04
+     ba0:	0e 94 99 09 	call	0x1332	; 0x1332 <__mulsf3>
+     ba4:	dc 01       	movw	r26, r24
+     ba6:	cb 01       	movw	r24, r22
+     ba8:	8d 83       	std	Y+5, r24	; 0x05
+     baa:	9e 83       	std	Y+6, r25	; 0x06
+     bac:	af 83       	std	Y+7, r26	; 0x07
+     bae:	b8 87       	std	Y+8, r27	; 0x08
 	if (__tmp < 1.0)
-     aee:	20 e0       	ldi	r18, 0x00	; 0
-     af0:	30 e0       	ldi	r19, 0x00	; 0
-     af2:	40 e8       	ldi	r20, 0x80	; 128
-     af4:	5f e3       	ldi	r21, 0x3F	; 63
-     af6:	6d 81       	ldd	r22, Y+5	; 0x05
-     af8:	7e 81       	ldd	r23, Y+6	; 0x06
-     afa:	8f 81       	ldd	r24, Y+7	; 0x07
-     afc:	98 85       	ldd	r25, Y+8	; 0x08
-     afe:	0e 94 93 07 	call	0xf26	; 0xf26 <__cmpsf2>
-     b02:	88 23       	and	r24, r24
-     b04:	2c f4       	brge	.+10     	; 0xb10 <incorrect_beep+0x82>
+     bb0:	20 e0       	ldi	r18, 0x00	; 0
+     bb2:	30 e0       	ldi	r19, 0x00	; 0
+     bb4:	40 e8       	ldi	r20, 0x80	; 128
+     bb6:	5f e3       	ldi	r21, 0x3F	; 63
+     bb8:	6d 81       	ldd	r22, Y+5	; 0x05
+     bba:	7e 81       	ldd	r23, Y+6	; 0x06
+     bbc:	8f 81       	ldd	r24, Y+7	; 0x07
+     bbe:	98 85       	ldd	r25, Y+8	; 0x08
+     bc0:	0e 94 f4 07 	call	0xfe8	; 0xfe8 <__cmpsf2>
+     bc4:	88 23       	and	r24, r24
+     bc6:	2c f4       	brge	.+10     	; 0xbd2 <incorrect_beep+0x82>
 		__ticks = 1;
-     b06:	81 e0       	ldi	r24, 0x01	; 1
-     b08:	90 e0       	ldi	r25, 0x00	; 0
-     b0a:	9a 87       	std	Y+10, r25	; 0x0a
-     b0c:	89 87       	std	Y+9, r24	; 0x09
-     b0e:	3f c0       	rjmp	.+126    	; 0xb8e <incorrect_beep+0x100>
+     bc8:	81 e0       	ldi	r24, 0x01	; 1
+     bca:	90 e0       	ldi	r25, 0x00	; 0
+     bcc:	9a 87       	std	Y+10, r25	; 0x0a
+     bce:	89 87       	std	Y+9, r24	; 0x09
+     bd0:	3f c0       	rjmp	.+126    	; 0xc50 <incorrect_beep+0x100>
 	else if (__tmp > 65535)
-     b10:	20 e0       	ldi	r18, 0x00	; 0
-     b12:	3f ef       	ldi	r19, 0xFF	; 255
-     b14:	4f e7       	ldi	r20, 0x7F	; 127
-     b16:	57 e4       	ldi	r21, 0x47	; 71
-     b18:	6d 81       	ldd	r22, Y+5	; 0x05
-     b1a:	7e 81       	ldd	r23, Y+6	; 0x06
-     b1c:	8f 81       	ldd	r24, Y+7	; 0x07
-     b1e:	98 85       	ldd	r25, Y+8	; 0x08
-     b20:	0e 94 33 09 	call	0x1266	; 0x1266 <__gesf2>
-     b24:	18 16       	cp	r1, r24
-     b26:	4c f5       	brge	.+82     	; 0xb7a <incorrect_beep+0xec>
+     bd2:	20 e0       	ldi	r18, 0x00	; 0
+     bd4:	3f ef       	ldi	r19, 0xFF	; 255
+     bd6:	4f e7       	ldi	r20, 0x7F	; 127
+     bd8:	57 e4       	ldi	r21, 0x47	; 71
+     bda:	6d 81       	ldd	r22, Y+5	; 0x05
+     bdc:	7e 81       	ldd	r23, Y+6	; 0x06
+     bde:	8f 81       	ldd	r24, Y+7	; 0x07
+     be0:	98 85       	ldd	r25, Y+8	; 0x08
+     be2:	0e 94 94 09 	call	0x1328	; 0x1328 <__gesf2>
+     be6:	18 16       	cp	r1, r24
+     be8:	4c f5       	brge	.+82     	; 0xc3c <incorrect_beep+0xec>
 	{
 		//	__ticks = requested delay in 1/10 ms
 		__ticks = (uint16_t) (__ms * 10.0);
-     b28:	20 e0       	ldi	r18, 0x00	; 0
-     b2a:	30 e0       	ldi	r19, 0x00	; 0
-     b2c:	40 e2       	ldi	r20, 0x20	; 32
-     b2e:	51 e4       	ldi	r21, 0x41	; 65
-     b30:	69 81       	ldd	r22, Y+1	; 0x01
-     b32:	7a 81       	ldd	r23, Y+2	; 0x02
-     b34:	8b 81       	ldd	r24, Y+3	; 0x03
-     b36:	9c 81       	ldd	r25, Y+4	; 0x04
-     b38:	0e 94 38 09 	call	0x1270	; 0x1270 <__mulsf3>
-     b3c:	dc 01       	movw	r26, r24
-     b3e:	cb 01       	movw	r24, r22
-     b40:	bc 01       	movw	r22, r24
-     b42:	cd 01       	movw	r24, r26
-     b44:	0e 94 11 08 	call	0x1022	; 0x1022 <__fixunssfsi>
-     b48:	dc 01       	movw	r26, r24
-     b4a:	cb 01       	movw	r24, r22
-     b4c:	9a 87       	std	Y+10, r25	; 0x0a
-     b4e:	89 87       	std	Y+9, r24	; 0x09
-     b50:	0f c0       	rjmp	.+30     	; 0xb70 <incorrect_beep+0xe2>
-     b52:	80 e9       	ldi	r24, 0x90	; 144
-     b54:	91 e0       	ldi	r25, 0x01	; 1
-     b56:	9c 87       	std	Y+12, r25	; 0x0c
-     b58:	8b 87       	std	Y+11, r24	; 0x0b
-     b5a:	8b 85       	ldd	r24, Y+11	; 0x0b
-     b5c:	9c 85       	ldd	r25, Y+12	; 0x0c
-     b5e:	01 97       	sbiw	r24, 0x01	; 1
-     b60:	f1 f7       	brne	.-4      	; 0xb5e <incorrect_beep+0xd0>
-     b62:	9c 87       	std	Y+12, r25	; 0x0c
-     b64:	8b 87       	std	Y+11, r24	; 0x0b
+     bea:	20 e0       	ldi	r18, 0x00	; 0
+     bec:	30 e0       	ldi	r19, 0x00	; 0
+     bee:	40 e2       	ldi	r20, 0x20	; 32
+     bf0:	51 e4       	ldi	r21, 0x41	; 65
+     bf2:	69 81       	ldd	r22, Y+1	; 0x01
+     bf4:	7a 81       	ldd	r23, Y+2	; 0x02
+     bf6:	8b 81       	ldd	r24, Y+3	; 0x03
+     bf8:	9c 81       	ldd	r25, Y+4	; 0x04
+     bfa:	0e 94 99 09 	call	0x1332	; 0x1332 <__mulsf3>
+     bfe:	dc 01       	movw	r26, r24
+     c00:	cb 01       	movw	r24, r22
+     c02:	bc 01       	movw	r22, r24
+     c04:	cd 01       	movw	r24, r26
+     c06:	0e 94 72 08 	call	0x10e4	; 0x10e4 <__fixunssfsi>
+     c0a:	dc 01       	movw	r26, r24
+     c0c:	cb 01       	movw	r24, r22
+     c0e:	9a 87       	std	Y+10, r25	; 0x0a
+     c10:	89 87       	std	Y+9, r24	; 0x09
+     c12:	0f c0       	rjmp	.+30     	; 0xc32 <incorrect_beep+0xe2>
+     c14:	80 e9       	ldi	r24, 0x90	; 144
+     c16:	91 e0       	ldi	r25, 0x01	; 1
+     c18:	9c 87       	std	Y+12, r25	; 0x0c
+     c1a:	8b 87       	std	Y+11, r24	; 0x0b
+     c1c:	8b 85       	ldd	r24, Y+11	; 0x0b
+     c1e:	9c 85       	ldd	r25, Y+12	; 0x0c
+     c20:	01 97       	sbiw	r24, 0x01	; 1
+     c22:	f1 f7       	brne	.-4      	; 0xc20 <incorrect_beep+0xd0>
+     c24:	9c 87       	std	Y+12, r25	; 0x0c
+     c26:	8b 87       	std	Y+11, r24	; 0x0b
 		while(__ticks)
 		{
 			// wait 1/10 ms
 			_delay_loop_2(((F_CPU) / 4e3) / 10);
 			__ticks --;
-     b66:	89 85       	ldd	r24, Y+9	; 0x09
-     b68:	9a 85       	ldd	r25, Y+10	; 0x0a
-     b6a:	01 97       	sbiw	r24, 0x01	; 1
-     b6c:	9a 87       	std	Y+10, r25	; 0x0a
-     b6e:	89 87       	std	Y+9, r24	; 0x09
+     c28:	89 85       	ldd	r24, Y+9	; 0x09
+     c2a:	9a 85       	ldd	r25, Y+10	; 0x0a
+     c2c:	01 97       	sbiw	r24, 0x01	; 1
+     c2e:	9a 87       	std	Y+10, r25	; 0x0a
+     c30:	89 87       	std	Y+9, r24	; 0x09
 		__ticks = 1;
 	else if (__tmp > 65535)
 	{
 		//	__ticks = requested delay in 1/10 ms
 		__ticks = (uint16_t) (__ms * 10.0);
 		while(__ticks)
-     b70:	89 85       	ldd	r24, Y+9	; 0x09
-     b72:	9a 85       	ldd	r25, Y+10	; 0x0a
-     b74:	89 2b       	or	r24, r25
-     b76:	69 f7       	brne	.-38     	; 0xb52 <incorrect_beep+0xc4>
-     b78:	14 c0       	rjmp	.+40     	; 0xba2 <incorrect_beep+0x114>
+     c32:	89 85       	ldd	r24, Y+9	; 0x09
+     c34:	9a 85       	ldd	r25, Y+10	; 0x0a
+     c36:	89 2b       	or	r24, r25
+     c38:	69 f7       	brne	.-38     	; 0xc14 <incorrect_beep+0xc4>
+     c3a:	14 c0       	rjmp	.+40     	; 0xc64 <incorrect_beep+0x114>
 			__ticks --;
 		}
 		return;
 	}
 	else
 		__ticks = (uint16_t)__tmp;
-     b7a:	6d 81       	ldd	r22, Y+5	; 0x05
-     b7c:	7e 81       	ldd	r23, Y+6	; 0x06
-     b7e:	8f 81       	ldd	r24, Y+7	; 0x07
-     b80:	98 85       	ldd	r25, Y+8	; 0x08
-     b82:	0e 94 11 08 	call	0x1022	; 0x1022 <__fixunssfsi>
-     b86:	dc 01       	movw	r26, r24
-     b88:	cb 01       	movw	r24, r22
-     b8a:	9a 87       	std	Y+10, r25	; 0x0a
-     b8c:	89 87       	std	Y+9, r24	; 0x09
-     b8e:	89 85       	ldd	r24, Y+9	; 0x09
-     b90:	9a 85       	ldd	r25, Y+10	; 0x0a
-     b92:	9e 87       	std	Y+14, r25	; 0x0e
-     b94:	8d 87       	std	Y+13, r24	; 0x0d
-     b96:	8d 85       	ldd	r24, Y+13	; 0x0d
-     b98:	9e 85       	ldd	r25, Y+14	; 0x0e
-     b9a:	01 97       	sbiw	r24, 0x01	; 1
-     b9c:	f1 f7       	brne	.-4      	; 0xb9a <incorrect_beep+0x10c>
-     b9e:	9e 87       	std	Y+14, r25	; 0x0e
-     ba0:	8d 87       	std	Y+13, r24	; 0x0d
+     c3c:	6d 81       	ldd	r22, Y+5	; 0x05
+     c3e:	7e 81       	ldd	r23, Y+6	; 0x06
+     c40:	8f 81       	ldd	r24, Y+7	; 0x07
+     c42:	98 85       	ldd	r25, Y+8	; 0x08
+     c44:	0e 94 72 08 	call	0x10e4	; 0x10e4 <__fixunssfsi>
+     c48:	dc 01       	movw	r26, r24
+     c4a:	cb 01       	movw	r24, r22
+     c4c:	9a 87       	std	Y+10, r25	; 0x0a
+     c4e:	89 87       	std	Y+9, r24	; 0x09
+     c50:	89 85       	ldd	r24, Y+9	; 0x09
+     c52:	9a 85       	ldd	r25, Y+10	; 0x0a
+     c54:	9e 87       	std	Y+14, r25	; 0x0e
+     c56:	8d 87       	std	Y+13, r24	; 0x0d
+     c58:	8d 85       	ldd	r24, Y+13	; 0x0d
+     c5a:	9e 85       	ldd	r25, Y+14	; 0x0e
+     c5c:	01 97       	sbiw	r24, 0x01	; 1
+     c5e:	f1 f7       	brne	.-4      	; 0xc5c <incorrect_beep+0x10c>
+     c60:	9e 87       	std	Y+14, r25	; 0x0e
+     c62:	8d 87       	std	Y+13, r24	; 0x0d
 	_delay_ms(25);
 	beep(261.62, .2);
-     ba2:	2d ec       	ldi	r18, 0xCD	; 205
-     ba4:	3c ec       	ldi	r19, 0xCC	; 204
-     ba6:	4c e4       	ldi	r20, 0x4C	; 76
-     ba8:	5e e3       	ldi	r21, 0x3E	; 62
-     baa:	6c e5       	ldi	r22, 0x5C	; 92
-     bac:	7f ec       	ldi	r23, 0xCF	; 207
-     bae:	82 e8       	ldi	r24, 0x82	; 130
-     bb0:	93 e4       	ldi	r25, 0x43	; 67
-     bb2:	0e 94 25 06 	call	0xc4a	; 0xc4a <beep>
+     c64:	2d ec       	ldi	r18, 0xCD	; 205
+     c66:	3c ec       	ldi	r19, 0xCC	; 204
+     c68:	4c e4       	ldi	r20, 0x4C	; 76
+     c6a:	5e e3       	ldi	r21, 0x3E	; 62
+     c6c:	6c e5       	ldi	r22, 0x5C	; 92
+     c6e:	7f ec       	ldi	r23, 0xCF	; 207
+     c70:	82 e8       	ldi	r24, 0x82	; 130
+     c72:	93 e4       	ldi	r25, 0x43	; 67
+     c74:	0e 94 86 06 	call	0xd0c	; 0xd0c <beep>
 }
-     bb6:	00 00       	nop
-     bb8:	2e 96       	adiw	r28, 0x0e	; 14
-     bba:	0f b6       	in	r0, 0x3f	; 63
-     bbc:	f8 94       	cli
-     bbe:	de bf       	out	0x3e, r29	; 62
-     bc0:	0f be       	out	0x3f, r0	; 63
-     bc2:	cd bf       	out	0x3d, r28	; 61
-     bc4:	df 91       	pop	r29
-     bc6:	cf 91       	pop	r28
-     bc8:	08 95       	ret
+     c78:	00 00       	nop
+     c7a:	2e 96       	adiw	r28, 0x0e	; 14
+     c7c:	0f b6       	in	r0, 0x3f	; 63
+     c7e:	f8 94       	cli
+     c80:	de bf       	out	0x3e, r29	; 62
+     c82:	0f be       	out	0x3f, r0	; 63
+     c84:	cd bf       	out	0x3d, r28	; 61
+     c86:	df 91       	pop	r29
+     c88:	cf 91       	pop	r28
+     c8a:	08 95       	ret
 
-00000bca <win>:
+00000c8c <win>:
 
 void win() {
-     bca:	cf 93       	push	r28
-     bcc:	df 93       	push	r29
-     bce:	cd b7       	in	r28, 0x3d	; 61
-     bd0:	de b7       	in	r29, 0x3e	; 62
+     c8c:	cf 93       	push	r28
+     c8e:	df 93       	push	r29
+     c90:	cd b7       	in	r28, 0x3d	; 61
+     c92:	de b7       	in	r29, 0x3e	; 62
 	usart_txstr("\nYou beat the game!\n");
-     bd2:	8b ea       	ldi	r24, 0xAB	; 171
-     bd4:	91 e0       	ldi	r25, 0x01	; 1
-     bd6:	0e 94 5e 01 	call	0x2bc	; 0x2bc <usart_txstr>
+     c94:	85 e8       	ldi	r24, 0x85	; 133
+     c96:	91 e0       	ldi	r25, 0x01	; 1
+     c98:	0e 94 5e 01 	call	0x2bc	; 0x2bc <usart_txstr>
 	beep(262., .5);
-     bda:	20 e0       	ldi	r18, 0x00	; 0
-     bdc:	30 e0       	ldi	r19, 0x00	; 0
-     bde:	40 e0       	ldi	r20, 0x00	; 0
-     be0:	5f e3       	ldi	r21, 0x3F	; 63
-     be2:	60 e0       	ldi	r22, 0x00	; 0
-     be4:	70 e0       	ldi	r23, 0x00	; 0
-     be6:	83 e8       	ldi	r24, 0x83	; 131
-     be8:	93 e4       	ldi	r25, 0x43	; 67
-     bea:	0e 94 25 06 	call	0xc4a	; 0xc4a <beep>
+     c9c:	20 e0       	ldi	r18, 0x00	; 0
+     c9e:	30 e0       	ldi	r19, 0x00	; 0
+     ca0:	40 e0       	ldi	r20, 0x00	; 0
+     ca2:	5f e3       	ldi	r21, 0x3F	; 63
+     ca4:	60 e0       	ldi	r22, 0x00	; 0
+     ca6:	70 e0       	ldi	r23, 0x00	; 0
+     ca8:	83 e8       	ldi	r24, 0x83	; 131
+     caa:	93 e4       	ldi	r25, 0x43	; 67
+     cac:	0e 94 86 06 	call	0xd0c	; 0xd0c <beep>
 	beep(392., .5);
-     bee:	20 e0       	ldi	r18, 0x00	; 0
-     bf0:	30 e0       	ldi	r19, 0x00	; 0
-     bf2:	40 e0       	ldi	r20, 0x00	; 0
-     bf4:	5f e3       	ldi	r21, 0x3F	; 63
-     bf6:	60 e0       	ldi	r22, 0x00	; 0
-     bf8:	70 e0       	ldi	r23, 0x00	; 0
-     bfa:	84 ec       	ldi	r24, 0xC4	; 196
-     bfc:	93 e4       	ldi	r25, 0x43	; 67
-     bfe:	0e 94 25 06 	call	0xc4a	; 0xc4a <beep>
+     cb0:	20 e0       	ldi	r18, 0x00	; 0
+     cb2:	30 e0       	ldi	r19, 0x00	; 0
+     cb4:	40 e0       	ldi	r20, 0x00	; 0
+     cb6:	5f e3       	ldi	r21, 0x3F	; 63
+     cb8:	60 e0       	ldi	r22, 0x00	; 0
+     cba:	70 e0       	ldi	r23, 0x00	; 0
+     cbc:	84 ec       	ldi	r24, 0xC4	; 196
+     cbe:	93 e4       	ldi	r25, 0x43	; 67
+     cc0:	0e 94 86 06 	call	0xd0c	; 0xd0c <beep>
 }
-     c02:	00 00       	nop
-     c04:	df 91       	pop	r29
-     c06:	cf 91       	pop	r28
-     c08:	08 95       	ret
+     cc4:	00 00       	nop
+     cc6:	df 91       	pop	r29
+     cc8:	cf 91       	pop	r28
+     cca:	08 95       	ret
 
-00000c0a <loose>:
+00000ccc <loose>:
 
 void loose() {
-     c0a:	cf 93       	push	r28
-     c0c:	df 93       	push	r29
-     c0e:	cd b7       	in	r28, 0x3d	; 61
-     c10:	de b7       	in	r29, 0x3e	; 62
+     ccc:	cf 93       	push	r28
+     cce:	df 93       	push	r29
+     cd0:	cd b7       	in	r28, 0x3d	; 61
+     cd2:	de b7       	in	r29, 0x3e	; 62
 	usart_txstr("\nYou loose, try again?\n");
-     c12:	80 ec       	ldi	r24, 0xC0	; 192
-     c14:	91 e0       	ldi	r25, 0x01	; 1
-     c16:	0e 94 5e 01 	call	0x2bc	; 0x2bc <usart_txstr>
+     cd4:	8a e9       	ldi	r24, 0x9A	; 154
+     cd6:	91 e0       	ldi	r25, 0x01	; 1
+     cd8:	0e 94 5e 01 	call	0x2bc	; 0x2bc <usart_txstr>
 	beep(330., .5);
-     c1a:	20 e0       	ldi	r18, 0x00	; 0
-     c1c:	30 e0       	ldi	r19, 0x00	; 0
-     c1e:	40 e0       	ldi	r20, 0x00	; 0
-     c20:	5f e3       	ldi	r21, 0x3F	; 63
-     c22:	60 e0       	ldi	r22, 0x00	; 0
-     c24:	70 e0       	ldi	r23, 0x00	; 0
-     c26:	85 ea       	ldi	r24, 0xA5	; 165
-     c28:	93 e4       	ldi	r25, 0x43	; 67
-     c2a:	0e 94 25 06 	call	0xc4a	; 0xc4a <beep>
+     cdc:	20 e0       	ldi	r18, 0x00	; 0
+     cde:	30 e0       	ldi	r19, 0x00	; 0
+     ce0:	40 e0       	ldi	r20, 0x00	; 0
+     ce2:	5f e3       	ldi	r21, 0x3F	; 63
+     ce4:	60 e0       	ldi	r22, 0x00	; 0
+     ce6:	70 e0       	ldi	r23, 0x00	; 0
+     ce8:	85 ea       	ldi	r24, 0xA5	; 165
+     cea:	93 e4       	ldi	r25, 0x43	; 67
+     cec:	0e 94 86 06 	call	0xd0c	; 0xd0c <beep>
 	beep(294., .5);
-     c2e:	20 e0       	ldi	r18, 0x00	; 0
-     c30:	30 e0       	ldi	r19, 0x00	; 0
-     c32:	40 e0       	ldi	r20, 0x00	; 0
-     c34:	5f e3       	ldi	r21, 0x3F	; 63
-     c36:	60 e0       	ldi	r22, 0x00	; 0
-     c38:	70 e0       	ldi	r23, 0x00	; 0
-     c3a:	83 e9       	ldi	r24, 0x93	; 147
-     c3c:	93 e4       	ldi	r25, 0x43	; 67
-     c3e:	0e 94 25 06 	call	0xc4a	; 0xc4a <beep>
+     cf0:	20 e0       	ldi	r18, 0x00	; 0
+     cf2:	30 e0       	ldi	r19, 0x00	; 0
+     cf4:	40 e0       	ldi	r20, 0x00	; 0
+     cf6:	5f e3       	ldi	r21, 0x3F	; 63
+     cf8:	60 e0       	ldi	r22, 0x00	; 0
+     cfa:	70 e0       	ldi	r23, 0x00	; 0
+     cfc:	83 e9       	ldi	r24, 0x93	; 147
+     cfe:	93 e4       	ldi	r25, 0x43	; 67
+     d00:	0e 94 86 06 	call	0xd0c	; 0xd0c <beep>
 }
-     c42:	00 00       	nop
-     c44:	df 91       	pop	r29
-     c46:	cf 91       	pop	r28
-     c48:	08 95       	ret
+     d04:	00 00       	nop
+     d06:	df 91       	pop	r29
+     d08:	cf 91       	pop	r28
+     d0a:	08 95       	ret
 
-00000c4a <beep>:
-
-
-//TODO move somewhere else
+00000d0c <beep>:
+ * then multiplies it by 1000 to convert to ms for _delay_ms.
+ * We control how long its played by making it loop,
+ * loop count is durientation of note / period. 
+ * loop_count will be off by a max of 1 period.
+ **/
 void beep(double frequency, double durientation) {
-     c4a:	cf 93       	push	r28
-     c4c:	df 93       	push	r29
-     c4e:	cd b7       	in	r28, 0x3d	; 61
-     c50:	de b7       	in	r29, 0x3e	; 62
-     c52:	6e 97       	sbiw	r28, 0x1e	; 30
-     c54:	0f b6       	in	r0, 0x3f	; 63
-     c56:	f8 94       	cli
-     c58:	de bf       	out	0x3e, r29	; 62
-     c5a:	0f be       	out	0x3f, r0	; 63
-     c5c:	cd bf       	out	0x3d, r28	; 61
-     c5e:	6f 8b       	std	Y+23, r22	; 0x17
-     c60:	78 8f       	std	Y+24, r23	; 0x18
-     c62:	89 8f       	std	Y+25, r24	; 0x19
-     c64:	9a 8f       	std	Y+26, r25	; 0x1a
-     c66:	2b 8f       	std	Y+27, r18	; 0x1b
-     c68:	3c 8f       	std	Y+28, r19	; 0x1c
-     c6a:	4d 8f       	std	Y+29, r20	; 0x1d
-     c6c:	5e 8f       	std	Y+30, r21	; 0x1e
+     d0c:	cf 93       	push	r28
+     d0e:	df 93       	push	r29
+     d10:	cd b7       	in	r28, 0x3d	; 61
+     d12:	de b7       	in	r29, 0x3e	; 62
+     d14:	6e 97       	sbiw	r28, 0x1e	; 30
+     d16:	0f b6       	in	r0, 0x3f	; 63
+     d18:	f8 94       	cli
+     d1a:	de bf       	out	0x3e, r29	; 62
+     d1c:	0f be       	out	0x3f, r0	; 63
+     d1e:	cd bf       	out	0x3d, r28	; 61
+     d20:	6f 8b       	std	Y+23, r22	; 0x17
+     d22:	78 8f       	std	Y+24, r23	; 0x18
+     d24:	89 8f       	std	Y+25, r24	; 0x19
+     d26:	9a 8f       	std	Y+26, r25	; 0x1a
+     d28:	2b 8f       	std	Y+27, r18	; 0x1b
+     d2a:	3c 8f       	std	Y+28, r19	; 0x1c
+     d2c:	4d 8f       	std	Y+29, r20	; 0x1d
+     d2e:	5e 8f       	std	Y+30, r21	; 0x1e
 	double speaker_ms = ((1.0 / frequency) / 2.0) * 1000.0; //TODO clean up
-     c6e:	2f 89       	ldd	r18, Y+23	; 0x17
-     c70:	38 8d       	ldd	r19, Y+24	; 0x18
-     c72:	49 8d       	ldd	r20, Y+25	; 0x19
-     c74:	5a 8d       	ldd	r21, Y+26	; 0x1a
-     c76:	60 e0       	ldi	r22, 0x00	; 0
-     c78:	70 e0       	ldi	r23, 0x00	; 0
-     c7a:	80 e8       	ldi	r24, 0x80	; 128
-     c7c:	9f e3       	ldi	r25, 0x3F	; 63
-     c7e:	0e 94 98 07 	call	0xf30	; 0xf30 <__divsf3>
-     c82:	dc 01       	movw	r26, r24
-     c84:	cb 01       	movw	r24, r22
-     c86:	20 e0       	ldi	r18, 0x00	; 0
-     c88:	30 e0       	ldi	r19, 0x00	; 0
-     c8a:	40 e0       	ldi	r20, 0x00	; 0
-     c8c:	50 e4       	ldi	r21, 0x40	; 64
-     c8e:	bc 01       	movw	r22, r24
-     c90:	cd 01       	movw	r24, r26
-     c92:	0e 94 98 07 	call	0xf30	; 0xf30 <__divsf3>
-     c96:	dc 01       	movw	r26, r24
-     c98:	cb 01       	movw	r24, r22
-     c9a:	20 e0       	ldi	r18, 0x00	; 0
-     c9c:	30 e0       	ldi	r19, 0x00	; 0
-     c9e:	4a e7       	ldi	r20, 0x7A	; 122
-     ca0:	54 e4       	ldi	r21, 0x44	; 68
-     ca2:	bc 01       	movw	r22, r24
-     ca4:	cd 01       	movw	r24, r26
-     ca6:	0e 94 38 09 	call	0x1270	; 0x1270 <__mulsf3>
-     caa:	dc 01       	movw	r26, r24
-     cac:	cb 01       	movw	r24, r22
-     cae:	8b 83       	std	Y+3, r24	; 0x03
-     cb0:	9c 83       	std	Y+4, r25	; 0x04
-     cb2:	ad 83       	std	Y+5, r26	; 0x05
-     cb4:	be 83       	std	Y+6, r27	; 0x06
+     d30:	2f 89       	ldd	r18, Y+23	; 0x17
+     d32:	38 8d       	ldd	r19, Y+24	; 0x18
+     d34:	49 8d       	ldd	r20, Y+25	; 0x19
+     d36:	5a 8d       	ldd	r21, Y+26	; 0x1a
+     d38:	60 e0       	ldi	r22, 0x00	; 0
+     d3a:	70 e0       	ldi	r23, 0x00	; 0
+     d3c:	80 e8       	ldi	r24, 0x80	; 128
+     d3e:	9f e3       	ldi	r25, 0x3F	; 63
+     d40:	0e 94 f9 07 	call	0xff2	; 0xff2 <__divsf3>
+     d44:	dc 01       	movw	r26, r24
+     d46:	cb 01       	movw	r24, r22
+     d48:	20 e0       	ldi	r18, 0x00	; 0
+     d4a:	30 e0       	ldi	r19, 0x00	; 0
+     d4c:	40 e0       	ldi	r20, 0x00	; 0
+     d4e:	50 e4       	ldi	r21, 0x40	; 64
+     d50:	bc 01       	movw	r22, r24
+     d52:	cd 01       	movw	r24, r26
+     d54:	0e 94 f9 07 	call	0xff2	; 0xff2 <__divsf3>
+     d58:	dc 01       	movw	r26, r24
+     d5a:	cb 01       	movw	r24, r22
+     d5c:	20 e0       	ldi	r18, 0x00	; 0
+     d5e:	30 e0       	ldi	r19, 0x00	; 0
+     d60:	4a e7       	ldi	r20, 0x7A	; 122
+     d62:	54 e4       	ldi	r21, 0x44	; 68
+     d64:	bc 01       	movw	r22, r24
+     d66:	cd 01       	movw	r24, r26
+     d68:	0e 94 99 09 	call	0x1332	; 0x1332 <__mulsf3>
+     d6c:	dc 01       	movw	r26, r24
+     d6e:	cb 01       	movw	r24, r22
+     d70:	8b 83       	std	Y+3, r24	; 0x03
+     d72:	9c 83       	std	Y+4, r25	; 0x04
+     d74:	ad 83       	std	Y+5, r26	; 0x05
+     d76:	be 83       	std	Y+6, r27	; 0x06
 	int loop_count = durientation / (1.0 / frequency);
-     cb6:	2f 89       	ldd	r18, Y+23	; 0x17
-     cb8:	38 8d       	ldd	r19, Y+24	; 0x18
-     cba:	49 8d       	ldd	r20, Y+25	; 0x19
-     cbc:	5a 8d       	ldd	r21, Y+26	; 0x1a
-     cbe:	60 e0       	ldi	r22, 0x00	; 0
-     cc0:	70 e0       	ldi	r23, 0x00	; 0
-     cc2:	80 e8       	ldi	r24, 0x80	; 128
-     cc4:	9f e3       	ldi	r25, 0x3F	; 63
-     cc6:	0e 94 98 07 	call	0xf30	; 0xf30 <__divsf3>
-     cca:	dc 01       	movw	r26, r24
-     ccc:	cb 01       	movw	r24, r22
-     cce:	9c 01       	movw	r18, r24
-     cd0:	ad 01       	movw	r20, r26
-     cd2:	6b 8d       	ldd	r22, Y+27	; 0x1b
-     cd4:	7c 8d       	ldd	r23, Y+28	; 0x1c
-     cd6:	8d 8d       	ldd	r24, Y+29	; 0x1d
-     cd8:	9e 8d       	ldd	r25, Y+30	; 0x1e
-     cda:	0e 94 98 07 	call	0xf30	; 0xf30 <__divsf3>
-     cde:	dc 01       	movw	r26, r24
-     ce0:	cb 01       	movw	r24, r22
-     ce2:	bc 01       	movw	r22, r24
-     ce4:	cd 01       	movw	r24, r26
-     ce6:	0e 94 0a 08 	call	0x1014	; 0x1014 <__fixsfsi>
-     cea:	dc 01       	movw	r26, r24
-     cec:	cb 01       	movw	r24, r22
-     cee:	98 87       	std	Y+8, r25	; 0x08
-     cf0:	8f 83       	std	Y+7, r24	; 0x07
+     d78:	2f 89       	ldd	r18, Y+23	; 0x17
+     d7a:	38 8d       	ldd	r19, Y+24	; 0x18
+     d7c:	49 8d       	ldd	r20, Y+25	; 0x19
+     d7e:	5a 8d       	ldd	r21, Y+26	; 0x1a
+     d80:	60 e0       	ldi	r22, 0x00	; 0
+     d82:	70 e0       	ldi	r23, 0x00	; 0
+     d84:	80 e8       	ldi	r24, 0x80	; 128
+     d86:	9f e3       	ldi	r25, 0x3F	; 63
+     d88:	0e 94 f9 07 	call	0xff2	; 0xff2 <__divsf3>
+     d8c:	dc 01       	movw	r26, r24
+     d8e:	cb 01       	movw	r24, r22
+     d90:	9c 01       	movw	r18, r24
+     d92:	ad 01       	movw	r20, r26
+     d94:	6b 8d       	ldd	r22, Y+27	; 0x1b
+     d96:	7c 8d       	ldd	r23, Y+28	; 0x1c
+     d98:	8d 8d       	ldd	r24, Y+29	; 0x1d
+     d9a:	9e 8d       	ldd	r25, Y+30	; 0x1e
+     d9c:	0e 94 f9 07 	call	0xff2	; 0xff2 <__divsf3>
+     da0:	dc 01       	movw	r26, r24
+     da2:	cb 01       	movw	r24, r22
+     da4:	bc 01       	movw	r22, r24
+     da6:	cd 01       	movw	r24, r26
+     da8:	0e 94 6b 08 	call	0x10d6	; 0x10d6 <__fixsfsi>
+     dac:	dc 01       	movw	r26, r24
+     dae:	cb 01       	movw	r24, r22
+     db0:	98 87       	std	Y+8, r25	; 0x08
+     db2:	8f 83       	std	Y+7, r24	; 0x07
 	for(unsigned int i = 0; i < loop_count; i++) {
-     cf2:	1a 82       	std	Y+2, r1	; 0x02
-     cf4:	19 82       	std	Y+1, r1	; 0x01
-     cf6:	81 c0       	rjmp	.+258    	; 0xdfa <beep+0x1b0>
-     cf8:	8b 81       	ldd	r24, Y+3	; 0x03
-     cfa:	9c 81       	ldd	r25, Y+4	; 0x04
-     cfc:	ad 81       	ldd	r26, Y+5	; 0x05
-     cfe:	be 81       	ldd	r27, Y+6	; 0x06
-     d00:	89 87       	std	Y+9, r24	; 0x09
-     d02:	9a 87       	std	Y+10, r25	; 0x0a
-     d04:	ab 87       	std	Y+11, r26	; 0x0b
-     d06:	bc 87       	std	Y+12, r27	; 0x0c
+     db4:	1a 82       	std	Y+2, r1	; 0x02
+     db6:	19 82       	std	Y+1, r1	; 0x01
+     db8:	81 c0       	rjmp	.+258    	; 0xebc <beep+0x1b0>
+     dba:	8b 81       	ldd	r24, Y+3	; 0x03
+     dbc:	9c 81       	ldd	r25, Y+4	; 0x04
+     dbe:	ad 81       	ldd	r26, Y+5	; 0x05
+     dc0:	be 81       	ldd	r27, Y+6	; 0x06
+     dc2:	89 87       	std	Y+9, r24	; 0x09
+     dc4:	9a 87       	std	Y+10, r25	; 0x0a
+     dc6:	ab 87       	std	Y+11, r26	; 0x0b
+     dc8:	bc 87       	std	Y+12, r27	; 0x0c
 
 	__builtin_avr_delay_cycles(__ticks_dc);
 
 #else
 	uint16_t __ticks;
 	__tmp = ((F_CPU) / 4e3) * __ms;
-     d08:	20 e0       	ldi	r18, 0x00	; 0
-     d0a:	30 e0       	ldi	r19, 0x00	; 0
-     d0c:	4a e7       	ldi	r20, 0x7A	; 122
-     d0e:	55 e4       	ldi	r21, 0x45	; 69
-     d10:	69 85       	ldd	r22, Y+9	; 0x09
-     d12:	7a 85       	ldd	r23, Y+10	; 0x0a
-     d14:	8b 85       	ldd	r24, Y+11	; 0x0b
-     d16:	9c 85       	ldd	r25, Y+12	; 0x0c
-     d18:	0e 94 38 09 	call	0x1270	; 0x1270 <__mulsf3>
-     d1c:	dc 01       	movw	r26, r24
-     d1e:	cb 01       	movw	r24, r22
-     d20:	8d 87       	std	Y+13, r24	; 0x0d
-     d22:	9e 87       	std	Y+14, r25	; 0x0e
-     d24:	af 87       	std	Y+15, r26	; 0x0f
-     d26:	b8 8b       	std	Y+16, r27	; 0x10
+     dca:	20 e0       	ldi	r18, 0x00	; 0
+     dcc:	30 e0       	ldi	r19, 0x00	; 0
+     dce:	4a e7       	ldi	r20, 0x7A	; 122
+     dd0:	55 e4       	ldi	r21, 0x45	; 69
+     dd2:	69 85       	ldd	r22, Y+9	; 0x09
+     dd4:	7a 85       	ldd	r23, Y+10	; 0x0a
+     dd6:	8b 85       	ldd	r24, Y+11	; 0x0b
+     dd8:	9c 85       	ldd	r25, Y+12	; 0x0c
+     dda:	0e 94 99 09 	call	0x1332	; 0x1332 <__mulsf3>
+     dde:	dc 01       	movw	r26, r24
+     de0:	cb 01       	movw	r24, r22
+     de2:	8d 87       	std	Y+13, r24	; 0x0d
+     de4:	9e 87       	std	Y+14, r25	; 0x0e
+     de6:	af 87       	std	Y+15, r26	; 0x0f
+     de8:	b8 8b       	std	Y+16, r27	; 0x10
 	if (__tmp < 1.0)
-     d28:	20 e0       	ldi	r18, 0x00	; 0
-     d2a:	30 e0       	ldi	r19, 0x00	; 0
-     d2c:	40 e8       	ldi	r20, 0x80	; 128
-     d2e:	5f e3       	ldi	r21, 0x3F	; 63
-     d30:	6d 85       	ldd	r22, Y+13	; 0x0d
-     d32:	7e 85       	ldd	r23, Y+14	; 0x0e
-     d34:	8f 85       	ldd	r24, Y+15	; 0x0f
-     d36:	98 89       	ldd	r25, Y+16	; 0x10
-     d38:	0e 94 93 07 	call	0xf26	; 0xf26 <__cmpsf2>
-     d3c:	88 23       	and	r24, r24
-     d3e:	2c f4       	brge	.+10     	; 0xd4a <beep+0x100>
+     dea:	20 e0       	ldi	r18, 0x00	; 0
+     dec:	30 e0       	ldi	r19, 0x00	; 0
+     dee:	40 e8       	ldi	r20, 0x80	; 128
+     df0:	5f e3       	ldi	r21, 0x3F	; 63
+     df2:	6d 85       	ldd	r22, Y+13	; 0x0d
+     df4:	7e 85       	ldd	r23, Y+14	; 0x0e
+     df6:	8f 85       	ldd	r24, Y+15	; 0x0f
+     df8:	98 89       	ldd	r25, Y+16	; 0x10
+     dfa:	0e 94 f4 07 	call	0xfe8	; 0xfe8 <__cmpsf2>
+     dfe:	88 23       	and	r24, r24
+     e00:	2c f4       	brge	.+10     	; 0xe0c <beep+0x100>
 		__ticks = 1;
-     d40:	81 e0       	ldi	r24, 0x01	; 1
-     d42:	90 e0       	ldi	r25, 0x00	; 0
-     d44:	9a 8b       	std	Y+18, r25	; 0x12
-     d46:	89 8b       	std	Y+17, r24	; 0x11
-     d48:	3f c0       	rjmp	.+126    	; 0xdc8 <beep+0x17e>
+     e02:	81 e0       	ldi	r24, 0x01	; 1
+     e04:	90 e0       	ldi	r25, 0x00	; 0
+     e06:	9a 8b       	std	Y+18, r25	; 0x12
+     e08:	89 8b       	std	Y+17, r24	; 0x11
+     e0a:	3f c0       	rjmp	.+126    	; 0xe8a <beep+0x17e>
 	else if (__tmp > 65535)
-     d4a:	20 e0       	ldi	r18, 0x00	; 0
-     d4c:	3f ef       	ldi	r19, 0xFF	; 255
-     d4e:	4f e7       	ldi	r20, 0x7F	; 127
-     d50:	57 e4       	ldi	r21, 0x47	; 71
-     d52:	6d 85       	ldd	r22, Y+13	; 0x0d
-     d54:	7e 85       	ldd	r23, Y+14	; 0x0e
-     d56:	8f 85       	ldd	r24, Y+15	; 0x0f
-     d58:	98 89       	ldd	r25, Y+16	; 0x10
-     d5a:	0e 94 33 09 	call	0x1266	; 0x1266 <__gesf2>
-     d5e:	18 16       	cp	r1, r24
-     d60:	4c f5       	brge	.+82     	; 0xdb4 <beep+0x16a>
+     e0c:	20 e0       	ldi	r18, 0x00	; 0
+     e0e:	3f ef       	ldi	r19, 0xFF	; 255
+     e10:	4f e7       	ldi	r20, 0x7F	; 127
+     e12:	57 e4       	ldi	r21, 0x47	; 71
+     e14:	6d 85       	ldd	r22, Y+13	; 0x0d
+     e16:	7e 85       	ldd	r23, Y+14	; 0x0e
+     e18:	8f 85       	ldd	r24, Y+15	; 0x0f
+     e1a:	98 89       	ldd	r25, Y+16	; 0x10
+     e1c:	0e 94 94 09 	call	0x1328	; 0x1328 <__gesf2>
+     e20:	18 16       	cp	r1, r24
+     e22:	4c f5       	brge	.+82     	; 0xe76 <beep+0x16a>
 	{
 		//	__ticks = requested delay in 1/10 ms
 		__ticks = (uint16_t) (__ms * 10.0);
-     d62:	20 e0       	ldi	r18, 0x00	; 0
-     d64:	30 e0       	ldi	r19, 0x00	; 0
-     d66:	40 e2       	ldi	r20, 0x20	; 32
-     d68:	51 e4       	ldi	r21, 0x41	; 65
-     d6a:	69 85       	ldd	r22, Y+9	; 0x09
-     d6c:	7a 85       	ldd	r23, Y+10	; 0x0a
-     d6e:	8b 85       	ldd	r24, Y+11	; 0x0b
-     d70:	9c 85       	ldd	r25, Y+12	; 0x0c
-     d72:	0e 94 38 09 	call	0x1270	; 0x1270 <__mulsf3>
-     d76:	dc 01       	movw	r26, r24
-     d78:	cb 01       	movw	r24, r22
-     d7a:	bc 01       	movw	r22, r24
-     d7c:	cd 01       	movw	r24, r26
-     d7e:	0e 94 11 08 	call	0x1022	; 0x1022 <__fixunssfsi>
-     d82:	dc 01       	movw	r26, r24
-     d84:	cb 01       	movw	r24, r22
-     d86:	9a 8b       	std	Y+18, r25	; 0x12
-     d88:	89 8b       	std	Y+17, r24	; 0x11
-     d8a:	0f c0       	rjmp	.+30     	; 0xdaa <beep+0x160>
-     d8c:	80 e9       	ldi	r24, 0x90	; 144
-     d8e:	91 e0       	ldi	r25, 0x01	; 1
-     d90:	9c 8b       	std	Y+20, r25	; 0x14
-     d92:	8b 8b       	std	Y+19, r24	; 0x13
-     d94:	8b 89       	ldd	r24, Y+19	; 0x13
-     d96:	9c 89       	ldd	r25, Y+20	; 0x14
-     d98:	01 97       	sbiw	r24, 0x01	; 1
-     d9a:	f1 f7       	brne	.-4      	; 0xd98 <beep+0x14e>
-     d9c:	9c 8b       	std	Y+20, r25	; 0x14
-     d9e:	8b 8b       	std	Y+19, r24	; 0x13
+     e24:	20 e0       	ldi	r18, 0x00	; 0
+     e26:	30 e0       	ldi	r19, 0x00	; 0
+     e28:	40 e2       	ldi	r20, 0x20	; 32
+     e2a:	51 e4       	ldi	r21, 0x41	; 65
+     e2c:	69 85       	ldd	r22, Y+9	; 0x09
+     e2e:	7a 85       	ldd	r23, Y+10	; 0x0a
+     e30:	8b 85       	ldd	r24, Y+11	; 0x0b
+     e32:	9c 85       	ldd	r25, Y+12	; 0x0c
+     e34:	0e 94 99 09 	call	0x1332	; 0x1332 <__mulsf3>
+     e38:	dc 01       	movw	r26, r24
+     e3a:	cb 01       	movw	r24, r22
+     e3c:	bc 01       	movw	r22, r24
+     e3e:	cd 01       	movw	r24, r26
+     e40:	0e 94 72 08 	call	0x10e4	; 0x10e4 <__fixunssfsi>
+     e44:	dc 01       	movw	r26, r24
+     e46:	cb 01       	movw	r24, r22
+     e48:	9a 8b       	std	Y+18, r25	; 0x12
+     e4a:	89 8b       	std	Y+17, r24	; 0x11
+     e4c:	0f c0       	rjmp	.+30     	; 0xe6c <beep+0x160>
+     e4e:	80 e9       	ldi	r24, 0x90	; 144
+     e50:	91 e0       	ldi	r25, 0x01	; 1
+     e52:	9c 8b       	std	Y+20, r25	; 0x14
+     e54:	8b 8b       	std	Y+19, r24	; 0x13
+     e56:	8b 89       	ldd	r24, Y+19	; 0x13
+     e58:	9c 89       	ldd	r25, Y+20	; 0x14
+     e5a:	01 97       	sbiw	r24, 0x01	; 1
+     e5c:	f1 f7       	brne	.-4      	; 0xe5a <beep+0x14e>
+     e5e:	9c 8b       	std	Y+20, r25	; 0x14
+     e60:	8b 8b       	std	Y+19, r24	; 0x13
 		while(__ticks)
 		{
 			// wait 1/10 ms
 			_delay_loop_2(((F_CPU) / 4e3) / 10);
 			__ticks --;
-     da0:	89 89       	ldd	r24, Y+17	; 0x11
-     da2:	9a 89       	ldd	r25, Y+18	; 0x12
-     da4:	01 97       	sbiw	r24, 0x01	; 1
-     da6:	9a 8b       	std	Y+18, r25	; 0x12
-     da8:	89 8b       	std	Y+17, r24	; 0x11
+     e62:	89 89       	ldd	r24, Y+17	; 0x11
+     e64:	9a 89       	ldd	r25, Y+18	; 0x12
+     e66:	01 97       	sbiw	r24, 0x01	; 1
+     e68:	9a 8b       	std	Y+18, r25	; 0x12
+     e6a:	89 8b       	std	Y+17, r24	; 0x11
 		__ticks = 1;
 	else if (__tmp > 65535)
 	{
 		//	__ticks = requested delay in 1/10 ms
 		__ticks = (uint16_t) (__ms * 10.0);
 		while(__ticks)
-     daa:	89 89       	ldd	r24, Y+17	; 0x11
-     dac:	9a 89       	ldd	r25, Y+18	; 0x12
-     dae:	89 2b       	or	r24, r25
-     db0:	69 f7       	brne	.-38     	; 0xd8c <beep+0x142>
-     db2:	14 c0       	rjmp	.+40     	; 0xddc <beep+0x192>
+     e6c:	89 89       	ldd	r24, Y+17	; 0x11
+     e6e:	9a 89       	ldd	r25, Y+18	; 0x12
+     e70:	89 2b       	or	r24, r25
+     e72:	69 f7       	brne	.-38     	; 0xe4e <beep+0x142>
+     e74:	14 c0       	rjmp	.+40     	; 0xe9e <beep+0x192>
 			__ticks --;
 		}
 		return;
 	}
 	else
 		__ticks = (uint16_t)__tmp;
-     db4:	6d 85       	ldd	r22, Y+13	; 0x0d
-     db6:	7e 85       	ldd	r23, Y+14	; 0x0e
-     db8:	8f 85       	ldd	r24, Y+15	; 0x0f
-     dba:	98 89       	ldd	r25, Y+16	; 0x10
-     dbc:	0e 94 11 08 	call	0x1022	; 0x1022 <__fixunssfsi>
-     dc0:	dc 01       	movw	r26, r24
-     dc2:	cb 01       	movw	r24, r22
-     dc4:	9a 8b       	std	Y+18, r25	; 0x12
-     dc6:	89 8b       	std	Y+17, r24	; 0x11
-     dc8:	89 89       	ldd	r24, Y+17	; 0x11
-     dca:	9a 89       	ldd	r25, Y+18	; 0x12
-     dcc:	9e 8b       	std	Y+22, r25	; 0x16
-     dce:	8d 8b       	std	Y+21, r24	; 0x15
-     dd0:	8d 89       	ldd	r24, Y+21	; 0x15
-     dd2:	9e 89       	ldd	r25, Y+22	; 0x16
-     dd4:	01 97       	sbiw	r24, 0x01	; 1
-     dd6:	f1 f7       	brne	.-4      	; 0xdd4 <beep+0x18a>
-     dd8:	9e 8b       	std	Y+22, r25	; 0x16
-     dda:	8d 8b       	std	Y+21, r24	; 0x15
+     e76:	6d 85       	ldd	r22, Y+13	; 0x0d
+     e78:	7e 85       	ldd	r23, Y+14	; 0x0e
+     e7a:	8f 85       	ldd	r24, Y+15	; 0x0f
+     e7c:	98 89       	ldd	r25, Y+16	; 0x10
+     e7e:	0e 94 72 08 	call	0x10e4	; 0x10e4 <__fixunssfsi>
+     e82:	dc 01       	movw	r26, r24
+     e84:	cb 01       	movw	r24, r22
+     e86:	9a 8b       	std	Y+18, r25	; 0x12
+     e88:	89 8b       	std	Y+17, r24	; 0x11
+     e8a:	89 89       	ldd	r24, Y+17	; 0x11
+     e8c:	9a 89       	ldd	r25, Y+18	; 0x12
+     e8e:	9e 8b       	std	Y+22, r25	; 0x16
+     e90:	8d 8b       	std	Y+21, r24	; 0x15
+     e92:	8d 89       	ldd	r24, Y+21	; 0x15
+     e94:	9e 89       	ldd	r25, Y+22	; 0x16
+     e96:	01 97       	sbiw	r24, 0x01	; 1
+     e98:	f1 f7       	brne	.-4      	; 0xe96 <beep+0x18a>
+     e9a:	9e 8b       	std	Y+22, r25	; 0x16
+     e9c:	8d 8b       	std	Y+21, r24	; 0x15
 		_delay_ms(speaker_ms);
 		SPEAKER_PORT ^= (1 << SPEAKER_PIN);
-     ddc:	8e e2       	ldi	r24, 0x2E	; 46
-     dde:	90 e0       	ldi	r25, 0x00	; 0
-     de0:	2e e2       	ldi	r18, 0x2E	; 46
-     de2:	30 e0       	ldi	r19, 0x00	; 0
-     de4:	f9 01       	movw	r30, r18
-     de6:	30 81       	ld	r19, Z
-     de8:	20 e1       	ldi	r18, 0x10	; 16
-     dea:	23 27       	eor	r18, r19
-     dec:	fc 01       	movw	r30, r24
-     dee:	20 83       	st	Z, r18
-
-//TODO move somewhere else
+     e9e:	8e e2       	ldi	r24, 0x2E	; 46
+     ea0:	90 e0       	ldi	r25, 0x00	; 0
+     ea2:	2e e2       	ldi	r18, 0x2E	; 46
+     ea4:	30 e0       	ldi	r19, 0x00	; 0
+     ea6:	f9 01       	movw	r30, r18
+     ea8:	30 81       	ld	r19, Z
+     eaa:	20 e1       	ldi	r18, 0x10	; 16
+     eac:	23 27       	eor	r18, r19
+     eae:	fc 01       	movw	r30, r24
+     eb0:	20 83       	st	Z, r18
+ * loop_count will be off by a max of 1 period.
+ **/
 void beep(double frequency, double durientation) {
 	double speaker_ms = ((1.0 / frequency) / 2.0) * 1000.0; //TODO clean up
 	int loop_count = durientation / (1.0 / frequency);
 	for(unsigned int i = 0; i < loop_count; i++) {
-     df0:	89 81       	ldd	r24, Y+1	; 0x01
-     df2:	9a 81       	ldd	r25, Y+2	; 0x02
-     df4:	01 96       	adiw	r24, 0x01	; 1
-     df6:	9a 83       	std	Y+2, r25	; 0x02
-     df8:	89 83       	std	Y+1, r24	; 0x01
-     dfa:	8f 81       	ldd	r24, Y+7	; 0x07
-     dfc:	98 85       	ldd	r25, Y+8	; 0x08
-     dfe:	29 81       	ldd	r18, Y+1	; 0x01
-     e00:	3a 81       	ldd	r19, Y+2	; 0x02
-     e02:	28 17       	cp	r18, r24
-     e04:	39 07       	cpc	r19, r25
-     e06:	08 f4       	brcc	.+2      	; 0xe0a <beep+0x1c0>
-     e08:	77 cf       	rjmp	.-274    	; 0xcf8 <beep+0xae>
+     eb2:	89 81       	ldd	r24, Y+1	; 0x01
+     eb4:	9a 81       	ldd	r25, Y+2	; 0x02
+     eb6:	01 96       	adiw	r24, 0x01	; 1
+     eb8:	9a 83       	std	Y+2, r25	; 0x02
+     eba:	89 83       	std	Y+1, r24	; 0x01
+     ebc:	8f 81       	ldd	r24, Y+7	; 0x07
+     ebe:	98 85       	ldd	r25, Y+8	; 0x08
+     ec0:	29 81       	ldd	r18, Y+1	; 0x01
+     ec2:	3a 81       	ldd	r19, Y+2	; 0x02
+     ec4:	28 17       	cp	r18, r24
+     ec6:	39 07       	cpc	r19, r25
+     ec8:	08 f4       	brcc	.+2      	; 0xecc <beep+0x1c0>
+     eca:	77 cf       	rjmp	.-274    	; 0xdba <beep+0xae>
 		_delay_ms(speaker_ms);
 		SPEAKER_PORT ^= (1 << SPEAKER_PIN);
 	}
-     e0a:	00 00       	nop
-     e0c:	6e 96       	adiw	r28, 0x1e	; 30
-     e0e:	0f b6       	in	r0, 0x3f	; 63
-     e10:	f8 94       	cli
-     e12:	de bf       	out	0x3e, r29	; 62
-     e14:	0f be       	out	0x3f, r0	; 63
-     e16:	cd bf       	out	0x3d, r28	; 61
-     e18:	df 91       	pop	r29
-     e1a:	cf 91       	pop	r28
-     e1c:	08 95       	ret
+     ecc:	00 00       	nop
+     ece:	6e 96       	adiw	r28, 0x1e	; 30
+     ed0:	0f b6       	in	r0, 0x3f	; 63
+     ed2:	f8 94       	cli
+     ed4:	de bf       	out	0x3e, r29	; 62
+     ed6:	0f be       	out	0x3f, r0	; 63
+     ed8:	cd bf       	out	0x3d, r28	; 61
+     eda:	df 91       	pop	r29
+     edc:	cf 91       	pop	r28
+     ede:	08 95       	ret
 
-00000e1e <__subsf3>:
-     e1e:	50 58       	subi	r21, 0x80	; 128
+00000ee0 <__subsf3>:
+     ee0:	50 58       	subi	r21, 0x80	; 128
 
-00000e20 <__addsf3>:
-     e20:	bb 27       	eor	r27, r27
-     e22:	aa 27       	eor	r26, r26
-     e24:	0e 94 27 07 	call	0xe4e	; 0xe4e <__addsf3x>
-     e28:	0c 94 e1 08 	jmp	0x11c2	; 0x11c2 <__fp_round>
-     e2c:	0e 94 d3 08 	call	0x11a6	; 0x11a6 <__fp_pscA>
-     e30:	38 f0       	brcs	.+14     	; 0xe40 <__addsf3+0x20>
-     e32:	0e 94 da 08 	call	0x11b4	; 0x11b4 <__fp_pscB>
-     e36:	20 f0       	brcs	.+8      	; 0xe40 <__addsf3+0x20>
-     e38:	39 f4       	brne	.+14     	; 0xe48 <__addsf3+0x28>
-     e3a:	9f 3f       	cpi	r25, 0xFF	; 255
-     e3c:	19 f4       	brne	.+6      	; 0xe44 <__addsf3+0x24>
-     e3e:	26 f4       	brtc	.+8      	; 0xe48 <__addsf3+0x28>
-     e40:	0c 94 d0 08 	jmp	0x11a0	; 0x11a0 <__fp_nan>
-     e44:	0e f4       	brtc	.+2      	; 0xe48 <__addsf3+0x28>
-     e46:	e0 95       	com	r30
-     e48:	e7 fb       	bst	r30, 7
-     e4a:	0c 94 a1 08 	jmp	0x1142	; 0x1142 <__fp_inf>
+00000ee2 <__addsf3>:
+     ee2:	bb 27       	eor	r27, r27
+     ee4:	aa 27       	eor	r26, r26
+     ee6:	0e 94 88 07 	call	0xf10	; 0xf10 <__addsf3x>
+     eea:	0c 94 42 09 	jmp	0x1284	; 0x1284 <__fp_round>
+     eee:	0e 94 34 09 	call	0x1268	; 0x1268 <__fp_pscA>
+     ef2:	38 f0       	brcs	.+14     	; 0xf02 <__addsf3+0x20>
+     ef4:	0e 94 3b 09 	call	0x1276	; 0x1276 <__fp_pscB>
+     ef8:	20 f0       	brcs	.+8      	; 0xf02 <__addsf3+0x20>
+     efa:	39 f4       	brne	.+14     	; 0xf0a <__addsf3+0x28>
+     efc:	9f 3f       	cpi	r25, 0xFF	; 255
+     efe:	19 f4       	brne	.+6      	; 0xf06 <__addsf3+0x24>
+     f00:	26 f4       	brtc	.+8      	; 0xf0a <__addsf3+0x28>
+     f02:	0c 94 31 09 	jmp	0x1262	; 0x1262 <__fp_nan>
+     f06:	0e f4       	brtc	.+2      	; 0xf0a <__addsf3+0x28>
+     f08:	e0 95       	com	r30
+     f0a:	e7 fb       	bst	r30, 7
+     f0c:	0c 94 02 09 	jmp	0x1204	; 0x1204 <__fp_inf>
 
-00000e4e <__addsf3x>:
-     e4e:	e9 2f       	mov	r30, r25
-     e50:	0e 94 f2 08 	call	0x11e4	; 0x11e4 <__fp_split3>
-     e54:	58 f3       	brcs	.-42     	; 0xe2c <__addsf3+0xc>
-     e56:	ba 17       	cp	r27, r26
-     e58:	62 07       	cpc	r22, r18
-     e5a:	73 07       	cpc	r23, r19
-     e5c:	84 07       	cpc	r24, r20
-     e5e:	95 07       	cpc	r25, r21
-     e60:	20 f0       	brcs	.+8      	; 0xe6a <__addsf3x+0x1c>
-     e62:	79 f4       	brne	.+30     	; 0xe82 <__addsf3x+0x34>
-     e64:	a6 f5       	brtc	.+104    	; 0xece <__addsf3x+0x80>
-     e66:	0c 94 2c 09 	jmp	0x1258	; 0x1258 <__fp_zero>
-     e6a:	0e f4       	brtc	.+2      	; 0xe6e <__addsf3x+0x20>
-     e6c:	e0 95       	com	r30
-     e6e:	0b 2e       	mov	r0, r27
-     e70:	ba 2f       	mov	r27, r26
-     e72:	a0 2d       	mov	r26, r0
-     e74:	0b 01       	movw	r0, r22
-     e76:	b9 01       	movw	r22, r18
-     e78:	90 01       	movw	r18, r0
-     e7a:	0c 01       	movw	r0, r24
-     e7c:	ca 01       	movw	r24, r20
-     e7e:	a0 01       	movw	r20, r0
-     e80:	11 24       	eor	r1, r1
-     e82:	ff 27       	eor	r31, r31
-     e84:	59 1b       	sub	r21, r25
-     e86:	99 f0       	breq	.+38     	; 0xeae <__addsf3x+0x60>
-     e88:	59 3f       	cpi	r21, 0xF9	; 249
-     e8a:	50 f4       	brcc	.+20     	; 0xea0 <__addsf3x+0x52>
-     e8c:	50 3e       	cpi	r21, 0xE0	; 224
-     e8e:	68 f1       	brcs	.+90     	; 0xeea <__addsf3x+0x9c>
-     e90:	1a 16       	cp	r1, r26
-     e92:	f0 40       	sbci	r31, 0x00	; 0
-     e94:	a2 2f       	mov	r26, r18
-     e96:	23 2f       	mov	r18, r19
-     e98:	34 2f       	mov	r19, r20
-     e9a:	44 27       	eor	r20, r20
-     e9c:	58 5f       	subi	r21, 0xF8	; 248
-     e9e:	f3 cf       	rjmp	.-26     	; 0xe86 <__addsf3x+0x38>
-     ea0:	46 95       	lsr	r20
-     ea2:	37 95       	ror	r19
-     ea4:	27 95       	ror	r18
-     ea6:	a7 95       	ror	r26
-     ea8:	f0 40       	sbci	r31, 0x00	; 0
-     eaa:	53 95       	inc	r21
-     eac:	c9 f7       	brne	.-14     	; 0xea0 <__addsf3x+0x52>
-     eae:	7e f4       	brtc	.+30     	; 0xece <__addsf3x+0x80>
-     eb0:	1f 16       	cp	r1, r31
-     eb2:	ba 0b       	sbc	r27, r26
-     eb4:	62 0b       	sbc	r22, r18
-     eb6:	73 0b       	sbc	r23, r19
-     eb8:	84 0b       	sbc	r24, r20
-     eba:	ba f0       	brmi	.+46     	; 0xeea <__addsf3x+0x9c>
-     ebc:	91 50       	subi	r25, 0x01	; 1
-     ebe:	a1 f0       	breq	.+40     	; 0xee8 <__addsf3x+0x9a>
-     ec0:	ff 0f       	add	r31, r31
-     ec2:	bb 1f       	adc	r27, r27
-     ec4:	66 1f       	adc	r22, r22
-     ec6:	77 1f       	adc	r23, r23
-     ec8:	88 1f       	adc	r24, r24
-     eca:	c2 f7       	brpl	.-16     	; 0xebc <__addsf3x+0x6e>
-     ecc:	0e c0       	rjmp	.+28     	; 0xeea <__addsf3x+0x9c>
-     ece:	ba 0f       	add	r27, r26
-     ed0:	62 1f       	adc	r22, r18
-     ed2:	73 1f       	adc	r23, r19
-     ed4:	84 1f       	adc	r24, r20
-     ed6:	48 f4       	brcc	.+18     	; 0xeea <__addsf3x+0x9c>
-     ed8:	87 95       	ror	r24
-     eda:	77 95       	ror	r23
-     edc:	67 95       	ror	r22
-     ede:	b7 95       	ror	r27
-     ee0:	f7 95       	ror	r31
-     ee2:	9e 3f       	cpi	r25, 0xFE	; 254
-     ee4:	08 f0       	brcs	.+2      	; 0xee8 <__addsf3x+0x9a>
-     ee6:	b0 cf       	rjmp	.-160    	; 0xe48 <__addsf3+0x28>
-     ee8:	93 95       	inc	r25
-     eea:	88 0f       	add	r24, r24
-     eec:	08 f0       	brcs	.+2      	; 0xef0 <__addsf3x+0xa2>
-     eee:	99 27       	eor	r25, r25
-     ef0:	ee 0f       	add	r30, r30
-     ef2:	97 95       	ror	r25
-     ef4:	87 95       	ror	r24
-     ef6:	08 95       	ret
+00000f10 <__addsf3x>:
+     f10:	e9 2f       	mov	r30, r25
+     f12:	0e 94 53 09 	call	0x12a6	; 0x12a6 <__fp_split3>
+     f16:	58 f3       	brcs	.-42     	; 0xeee <__addsf3+0xc>
+     f18:	ba 17       	cp	r27, r26
+     f1a:	62 07       	cpc	r22, r18
+     f1c:	73 07       	cpc	r23, r19
+     f1e:	84 07       	cpc	r24, r20
+     f20:	95 07       	cpc	r25, r21
+     f22:	20 f0       	brcs	.+8      	; 0xf2c <__addsf3x+0x1c>
+     f24:	79 f4       	brne	.+30     	; 0xf44 <__addsf3x+0x34>
+     f26:	a6 f5       	brtc	.+104    	; 0xf90 <__addsf3x+0x80>
+     f28:	0c 94 8d 09 	jmp	0x131a	; 0x131a <__fp_zero>
+     f2c:	0e f4       	brtc	.+2      	; 0xf30 <__addsf3x+0x20>
+     f2e:	e0 95       	com	r30
+     f30:	0b 2e       	mov	r0, r27
+     f32:	ba 2f       	mov	r27, r26
+     f34:	a0 2d       	mov	r26, r0
+     f36:	0b 01       	movw	r0, r22
+     f38:	b9 01       	movw	r22, r18
+     f3a:	90 01       	movw	r18, r0
+     f3c:	0c 01       	movw	r0, r24
+     f3e:	ca 01       	movw	r24, r20
+     f40:	a0 01       	movw	r20, r0
+     f42:	11 24       	eor	r1, r1
+     f44:	ff 27       	eor	r31, r31
+     f46:	59 1b       	sub	r21, r25
+     f48:	99 f0       	breq	.+38     	; 0xf70 <__addsf3x+0x60>
+     f4a:	59 3f       	cpi	r21, 0xF9	; 249
+     f4c:	50 f4       	brcc	.+20     	; 0xf62 <__addsf3x+0x52>
+     f4e:	50 3e       	cpi	r21, 0xE0	; 224
+     f50:	68 f1       	brcs	.+90     	; 0xfac <__addsf3x+0x9c>
+     f52:	1a 16       	cp	r1, r26
+     f54:	f0 40       	sbci	r31, 0x00	; 0
+     f56:	a2 2f       	mov	r26, r18
+     f58:	23 2f       	mov	r18, r19
+     f5a:	34 2f       	mov	r19, r20
+     f5c:	44 27       	eor	r20, r20
+     f5e:	58 5f       	subi	r21, 0xF8	; 248
+     f60:	f3 cf       	rjmp	.-26     	; 0xf48 <__addsf3x+0x38>
+     f62:	46 95       	lsr	r20
+     f64:	37 95       	ror	r19
+     f66:	27 95       	ror	r18
+     f68:	a7 95       	ror	r26
+     f6a:	f0 40       	sbci	r31, 0x00	; 0
+     f6c:	53 95       	inc	r21
+     f6e:	c9 f7       	brne	.-14     	; 0xf62 <__addsf3x+0x52>
+     f70:	7e f4       	brtc	.+30     	; 0xf90 <__addsf3x+0x80>
+     f72:	1f 16       	cp	r1, r31
+     f74:	ba 0b       	sbc	r27, r26
+     f76:	62 0b       	sbc	r22, r18
+     f78:	73 0b       	sbc	r23, r19
+     f7a:	84 0b       	sbc	r24, r20
+     f7c:	ba f0       	brmi	.+46     	; 0xfac <__addsf3x+0x9c>
+     f7e:	91 50       	subi	r25, 0x01	; 1
+     f80:	a1 f0       	breq	.+40     	; 0xfaa <__addsf3x+0x9a>
+     f82:	ff 0f       	add	r31, r31
+     f84:	bb 1f       	adc	r27, r27
+     f86:	66 1f       	adc	r22, r22
+     f88:	77 1f       	adc	r23, r23
+     f8a:	88 1f       	adc	r24, r24
+     f8c:	c2 f7       	brpl	.-16     	; 0xf7e <__addsf3x+0x6e>
+     f8e:	0e c0       	rjmp	.+28     	; 0xfac <__addsf3x+0x9c>
+     f90:	ba 0f       	add	r27, r26
+     f92:	62 1f       	adc	r22, r18
+     f94:	73 1f       	adc	r23, r19
+     f96:	84 1f       	adc	r24, r20
+     f98:	48 f4       	brcc	.+18     	; 0xfac <__addsf3x+0x9c>
+     f9a:	87 95       	ror	r24
+     f9c:	77 95       	ror	r23
+     f9e:	67 95       	ror	r22
+     fa0:	b7 95       	ror	r27
+     fa2:	f7 95       	ror	r31
+     fa4:	9e 3f       	cpi	r25, 0xFE	; 254
+     fa6:	08 f0       	brcs	.+2      	; 0xfaa <__addsf3x+0x9a>
+     fa8:	b0 cf       	rjmp	.-160    	; 0xf0a <__addsf3+0x28>
+     faa:	93 95       	inc	r25
+     fac:	88 0f       	add	r24, r24
+     fae:	08 f0       	brcs	.+2      	; 0xfb2 <__addsf3x+0xa2>
+     fb0:	99 27       	eor	r25, r25
+     fb2:	ee 0f       	add	r30, r30
+     fb4:	97 95       	ror	r25
+     fb6:	87 95       	ror	r24
+     fb8:	08 95       	ret
 
-00000ef8 <ceil>:
-     ef8:	0e 94 14 09 	call	0x1228	; 0x1228 <__fp_trunc>
-     efc:	90 f0       	brcs	.+36     	; 0xf22 <ceil+0x2a>
-     efe:	9f 37       	cpi	r25, 0x7F	; 127
-     f00:	48 f4       	brcc	.+18     	; 0xf14 <ceil+0x1c>
-     f02:	91 11       	cpse	r25, r1
-     f04:	16 f4       	brtc	.+4      	; 0xf0a <ceil+0x12>
-     f06:	0c 94 2d 09 	jmp	0x125a	; 0x125a <__fp_szero>
-     f0a:	60 e0       	ldi	r22, 0x00	; 0
-     f0c:	70 e0       	ldi	r23, 0x00	; 0
-     f0e:	80 e8       	ldi	r24, 0x80	; 128
-     f10:	9f e3       	ldi	r25, 0x3F	; 63
-     f12:	08 95       	ret
-     f14:	26 f0       	brts	.+8      	; 0xf1e <ceil+0x26>
-     f16:	1b 16       	cp	r1, r27
-     f18:	61 1d       	adc	r22, r1
-     f1a:	71 1d       	adc	r23, r1
-     f1c:	81 1d       	adc	r24, r1
-     f1e:	0c 94 a7 08 	jmp	0x114e	; 0x114e <__fp_mintl>
-     f22:	0c 94 c2 08 	jmp	0x1184	; 0x1184 <__fp_mpack>
+00000fba <ceil>:
+     fba:	0e 94 75 09 	call	0x12ea	; 0x12ea <__fp_trunc>
+     fbe:	90 f0       	brcs	.+36     	; 0xfe4 <ceil+0x2a>
+     fc0:	9f 37       	cpi	r25, 0x7F	; 127
+     fc2:	48 f4       	brcc	.+18     	; 0xfd6 <ceil+0x1c>
+     fc4:	91 11       	cpse	r25, r1
+     fc6:	16 f4       	brtc	.+4      	; 0xfcc <ceil+0x12>
+     fc8:	0c 94 8e 09 	jmp	0x131c	; 0x131c <__fp_szero>
+     fcc:	60 e0       	ldi	r22, 0x00	; 0
+     fce:	70 e0       	ldi	r23, 0x00	; 0
+     fd0:	80 e8       	ldi	r24, 0x80	; 128
+     fd2:	9f e3       	ldi	r25, 0x3F	; 63
+     fd4:	08 95       	ret
+     fd6:	26 f0       	brts	.+8      	; 0xfe0 <ceil+0x26>
+     fd8:	1b 16       	cp	r1, r27
+     fda:	61 1d       	adc	r22, r1
+     fdc:	71 1d       	adc	r23, r1
+     fde:	81 1d       	adc	r24, r1
+     fe0:	0c 94 08 09 	jmp	0x1210	; 0x1210 <__fp_mintl>
+     fe4:	0c 94 23 09 	jmp	0x1246	; 0x1246 <__fp_mpack>
 
-00000f26 <__cmpsf2>:
-     f26:	0e 94 7d 08 	call	0x10fa	; 0x10fa <__fp_cmp>
-     f2a:	08 f4       	brcc	.+2      	; 0xf2e <__cmpsf2+0x8>
-     f2c:	81 e0       	ldi	r24, 0x01	; 1
-     f2e:	08 95       	ret
+00000fe8 <__cmpsf2>:
+     fe8:	0e 94 de 08 	call	0x11bc	; 0x11bc <__fp_cmp>
+     fec:	08 f4       	brcc	.+2      	; 0xff0 <__cmpsf2+0x8>
+     fee:	81 e0       	ldi	r24, 0x01	; 1
+     ff0:	08 95       	ret
 
-00000f30 <__divsf3>:
-     f30:	0e 94 ac 07 	call	0xf58	; 0xf58 <__divsf3x>
-     f34:	0c 94 e1 08 	jmp	0x11c2	; 0x11c2 <__fp_round>
-     f38:	0e 94 da 08 	call	0x11b4	; 0x11b4 <__fp_pscB>
-     f3c:	58 f0       	brcs	.+22     	; 0xf54 <__divsf3+0x24>
-     f3e:	0e 94 d3 08 	call	0x11a6	; 0x11a6 <__fp_pscA>
-     f42:	40 f0       	brcs	.+16     	; 0xf54 <__divsf3+0x24>
-     f44:	29 f4       	brne	.+10     	; 0xf50 <__divsf3+0x20>
-     f46:	5f 3f       	cpi	r21, 0xFF	; 255
-     f48:	29 f0       	breq	.+10     	; 0xf54 <__divsf3+0x24>
-     f4a:	0c 94 a1 08 	jmp	0x1142	; 0x1142 <__fp_inf>
-     f4e:	51 11       	cpse	r21, r1
-     f50:	0c 94 2d 09 	jmp	0x125a	; 0x125a <__fp_szero>
-     f54:	0c 94 d0 08 	jmp	0x11a0	; 0x11a0 <__fp_nan>
+00000ff2 <__divsf3>:
+     ff2:	0e 94 0d 08 	call	0x101a	; 0x101a <__divsf3x>
+     ff6:	0c 94 42 09 	jmp	0x1284	; 0x1284 <__fp_round>
+     ffa:	0e 94 3b 09 	call	0x1276	; 0x1276 <__fp_pscB>
+     ffe:	58 f0       	brcs	.+22     	; 0x1016 <__divsf3+0x24>
+    1000:	0e 94 34 09 	call	0x1268	; 0x1268 <__fp_pscA>
+    1004:	40 f0       	brcs	.+16     	; 0x1016 <__divsf3+0x24>
+    1006:	29 f4       	brne	.+10     	; 0x1012 <__divsf3+0x20>
+    1008:	5f 3f       	cpi	r21, 0xFF	; 255
+    100a:	29 f0       	breq	.+10     	; 0x1016 <__divsf3+0x24>
+    100c:	0c 94 02 09 	jmp	0x1204	; 0x1204 <__fp_inf>
+    1010:	51 11       	cpse	r21, r1
+    1012:	0c 94 8e 09 	jmp	0x131c	; 0x131c <__fp_szero>
+    1016:	0c 94 31 09 	jmp	0x1262	; 0x1262 <__fp_nan>
 
-00000f58 <__divsf3x>:
-     f58:	0e 94 f2 08 	call	0x11e4	; 0x11e4 <__fp_split3>
-     f5c:	68 f3       	brcs	.-38     	; 0xf38 <__divsf3+0x8>
+0000101a <__divsf3x>:
+    101a:	0e 94 53 09 	call	0x12a6	; 0x12a6 <__fp_split3>
+    101e:	68 f3       	brcs	.-38     	; 0xffa <__divsf3+0x8>
 
-00000f5e <__divsf3_pse>:
-     f5e:	99 23       	and	r25, r25
-     f60:	b1 f3       	breq	.-20     	; 0xf4e <__divsf3+0x1e>
-     f62:	55 23       	and	r21, r21
-     f64:	91 f3       	breq	.-28     	; 0xf4a <__divsf3+0x1a>
-     f66:	95 1b       	sub	r25, r21
-     f68:	55 0b       	sbc	r21, r21
-     f6a:	bb 27       	eor	r27, r27
-     f6c:	aa 27       	eor	r26, r26
-     f6e:	62 17       	cp	r22, r18
-     f70:	73 07       	cpc	r23, r19
-     f72:	84 07       	cpc	r24, r20
-     f74:	38 f0       	brcs	.+14     	; 0xf84 <__divsf3_pse+0x26>
-     f76:	9f 5f       	subi	r25, 0xFF	; 255
-     f78:	5f 4f       	sbci	r21, 0xFF	; 255
-     f7a:	22 0f       	add	r18, r18
-     f7c:	33 1f       	adc	r19, r19
-     f7e:	44 1f       	adc	r20, r20
-     f80:	aa 1f       	adc	r26, r26
-     f82:	a9 f3       	breq	.-22     	; 0xf6e <__divsf3_pse+0x10>
-     f84:	35 d0       	rcall	.+106    	; 0xff0 <__divsf3_pse+0x92>
-     f86:	0e 2e       	mov	r0, r30
-     f88:	3a f0       	brmi	.+14     	; 0xf98 <__divsf3_pse+0x3a>
-     f8a:	e0 e8       	ldi	r30, 0x80	; 128
-     f8c:	32 d0       	rcall	.+100    	; 0xff2 <__divsf3_pse+0x94>
-     f8e:	91 50       	subi	r25, 0x01	; 1
-     f90:	50 40       	sbci	r21, 0x00	; 0
-     f92:	e6 95       	lsr	r30
-     f94:	00 1c       	adc	r0, r0
-     f96:	ca f7       	brpl	.-14     	; 0xf8a <__divsf3_pse+0x2c>
-     f98:	2b d0       	rcall	.+86     	; 0xff0 <__divsf3_pse+0x92>
-     f9a:	fe 2f       	mov	r31, r30
-     f9c:	29 d0       	rcall	.+82     	; 0xff0 <__divsf3_pse+0x92>
-     f9e:	66 0f       	add	r22, r22
-     fa0:	77 1f       	adc	r23, r23
-     fa2:	88 1f       	adc	r24, r24
-     fa4:	bb 1f       	adc	r27, r27
-     fa6:	26 17       	cp	r18, r22
-     fa8:	37 07       	cpc	r19, r23
-     faa:	48 07       	cpc	r20, r24
-     fac:	ab 07       	cpc	r26, r27
-     fae:	b0 e8       	ldi	r27, 0x80	; 128
-     fb0:	09 f0       	breq	.+2      	; 0xfb4 <__divsf3_pse+0x56>
-     fb2:	bb 0b       	sbc	r27, r27
-     fb4:	80 2d       	mov	r24, r0
-     fb6:	bf 01       	movw	r22, r30
-     fb8:	ff 27       	eor	r31, r31
-     fba:	93 58       	subi	r25, 0x83	; 131
-     fbc:	5f 4f       	sbci	r21, 0xFF	; 255
-     fbe:	3a f0       	brmi	.+14     	; 0xfce <__divsf3_pse+0x70>
-     fc0:	9e 3f       	cpi	r25, 0xFE	; 254
-     fc2:	51 05       	cpc	r21, r1
-     fc4:	78 f0       	brcs	.+30     	; 0xfe4 <__divsf3_pse+0x86>
-     fc6:	0c 94 a1 08 	jmp	0x1142	; 0x1142 <__fp_inf>
-     fca:	0c 94 2d 09 	jmp	0x125a	; 0x125a <__fp_szero>
-     fce:	5f 3f       	cpi	r21, 0xFF	; 255
-     fd0:	e4 f3       	brlt	.-8      	; 0xfca <__divsf3_pse+0x6c>
-     fd2:	98 3e       	cpi	r25, 0xE8	; 232
-     fd4:	d4 f3       	brlt	.-12     	; 0xfca <__divsf3_pse+0x6c>
-     fd6:	86 95       	lsr	r24
-     fd8:	77 95       	ror	r23
-     fda:	67 95       	ror	r22
-     fdc:	b7 95       	ror	r27
-     fde:	f7 95       	ror	r31
-     fe0:	9f 5f       	subi	r25, 0xFF	; 255
-     fe2:	c9 f7       	brne	.-14     	; 0xfd6 <__divsf3_pse+0x78>
-     fe4:	88 0f       	add	r24, r24
-     fe6:	91 1d       	adc	r25, r1
-     fe8:	96 95       	lsr	r25
-     fea:	87 95       	ror	r24
-     fec:	97 f9       	bld	r25, 7
-     fee:	08 95       	ret
-     ff0:	e1 e0       	ldi	r30, 0x01	; 1
-     ff2:	66 0f       	add	r22, r22
-     ff4:	77 1f       	adc	r23, r23
-     ff6:	88 1f       	adc	r24, r24
-     ff8:	bb 1f       	adc	r27, r27
-     ffa:	62 17       	cp	r22, r18
-     ffc:	73 07       	cpc	r23, r19
-     ffe:	84 07       	cpc	r24, r20
-    1000:	ba 07       	cpc	r27, r26
-    1002:	20 f0       	brcs	.+8      	; 0x100c <__divsf3_pse+0xae>
-    1004:	62 1b       	sub	r22, r18
-    1006:	73 0b       	sbc	r23, r19
-    1008:	84 0b       	sbc	r24, r20
-    100a:	ba 0b       	sbc	r27, r26
-    100c:	ee 1f       	adc	r30, r30
-    100e:	88 f7       	brcc	.-30     	; 0xff2 <__divsf3_pse+0x94>
-    1010:	e0 95       	com	r30
-    1012:	08 95       	ret
+00001020 <__divsf3_pse>:
+    1020:	99 23       	and	r25, r25
+    1022:	b1 f3       	breq	.-20     	; 0x1010 <__divsf3+0x1e>
+    1024:	55 23       	and	r21, r21
+    1026:	91 f3       	breq	.-28     	; 0x100c <__divsf3+0x1a>
+    1028:	95 1b       	sub	r25, r21
+    102a:	55 0b       	sbc	r21, r21
+    102c:	bb 27       	eor	r27, r27
+    102e:	aa 27       	eor	r26, r26
+    1030:	62 17       	cp	r22, r18
+    1032:	73 07       	cpc	r23, r19
+    1034:	84 07       	cpc	r24, r20
+    1036:	38 f0       	brcs	.+14     	; 0x1046 <__divsf3_pse+0x26>
+    1038:	9f 5f       	subi	r25, 0xFF	; 255
+    103a:	5f 4f       	sbci	r21, 0xFF	; 255
+    103c:	22 0f       	add	r18, r18
+    103e:	33 1f       	adc	r19, r19
+    1040:	44 1f       	adc	r20, r20
+    1042:	aa 1f       	adc	r26, r26
+    1044:	a9 f3       	breq	.-22     	; 0x1030 <__divsf3_pse+0x10>
+    1046:	35 d0       	rcall	.+106    	; 0x10b2 <__divsf3_pse+0x92>
+    1048:	0e 2e       	mov	r0, r30
+    104a:	3a f0       	brmi	.+14     	; 0x105a <__divsf3_pse+0x3a>
+    104c:	e0 e8       	ldi	r30, 0x80	; 128
+    104e:	32 d0       	rcall	.+100    	; 0x10b4 <__divsf3_pse+0x94>
+    1050:	91 50       	subi	r25, 0x01	; 1
+    1052:	50 40       	sbci	r21, 0x00	; 0
+    1054:	e6 95       	lsr	r30
+    1056:	00 1c       	adc	r0, r0
+    1058:	ca f7       	brpl	.-14     	; 0x104c <__divsf3_pse+0x2c>
+    105a:	2b d0       	rcall	.+86     	; 0x10b2 <__divsf3_pse+0x92>
+    105c:	fe 2f       	mov	r31, r30
+    105e:	29 d0       	rcall	.+82     	; 0x10b2 <__divsf3_pse+0x92>
+    1060:	66 0f       	add	r22, r22
+    1062:	77 1f       	adc	r23, r23
+    1064:	88 1f       	adc	r24, r24
+    1066:	bb 1f       	adc	r27, r27
+    1068:	26 17       	cp	r18, r22
+    106a:	37 07       	cpc	r19, r23
+    106c:	48 07       	cpc	r20, r24
+    106e:	ab 07       	cpc	r26, r27
+    1070:	b0 e8       	ldi	r27, 0x80	; 128
+    1072:	09 f0       	breq	.+2      	; 0x1076 <__divsf3_pse+0x56>
+    1074:	bb 0b       	sbc	r27, r27
+    1076:	80 2d       	mov	r24, r0
+    1078:	bf 01       	movw	r22, r30
+    107a:	ff 27       	eor	r31, r31
+    107c:	93 58       	subi	r25, 0x83	; 131
+    107e:	5f 4f       	sbci	r21, 0xFF	; 255
+    1080:	3a f0       	brmi	.+14     	; 0x1090 <__divsf3_pse+0x70>
+    1082:	9e 3f       	cpi	r25, 0xFE	; 254
+    1084:	51 05       	cpc	r21, r1
+    1086:	78 f0       	brcs	.+30     	; 0x10a6 <__divsf3_pse+0x86>
+    1088:	0c 94 02 09 	jmp	0x1204	; 0x1204 <__fp_inf>
+    108c:	0c 94 8e 09 	jmp	0x131c	; 0x131c <__fp_szero>
+    1090:	5f 3f       	cpi	r21, 0xFF	; 255
+    1092:	e4 f3       	brlt	.-8      	; 0x108c <__divsf3_pse+0x6c>
+    1094:	98 3e       	cpi	r25, 0xE8	; 232
+    1096:	d4 f3       	brlt	.-12     	; 0x108c <__divsf3_pse+0x6c>
+    1098:	86 95       	lsr	r24
+    109a:	77 95       	ror	r23
+    109c:	67 95       	ror	r22
+    109e:	b7 95       	ror	r27
+    10a0:	f7 95       	ror	r31
+    10a2:	9f 5f       	subi	r25, 0xFF	; 255
+    10a4:	c9 f7       	brne	.-14     	; 0x1098 <__divsf3_pse+0x78>
+    10a6:	88 0f       	add	r24, r24
+    10a8:	91 1d       	adc	r25, r1
+    10aa:	96 95       	lsr	r25
+    10ac:	87 95       	ror	r24
+    10ae:	97 f9       	bld	r25, 7
+    10b0:	08 95       	ret
+    10b2:	e1 e0       	ldi	r30, 0x01	; 1
+    10b4:	66 0f       	add	r22, r22
+    10b6:	77 1f       	adc	r23, r23
+    10b8:	88 1f       	adc	r24, r24
+    10ba:	bb 1f       	adc	r27, r27
+    10bc:	62 17       	cp	r22, r18
+    10be:	73 07       	cpc	r23, r19
+    10c0:	84 07       	cpc	r24, r20
+    10c2:	ba 07       	cpc	r27, r26
+    10c4:	20 f0       	brcs	.+8      	; 0x10ce <__divsf3_pse+0xae>
+    10c6:	62 1b       	sub	r22, r18
+    10c8:	73 0b       	sbc	r23, r19
+    10ca:	84 0b       	sbc	r24, r20
+    10cc:	ba 0b       	sbc	r27, r26
+    10ce:	ee 1f       	adc	r30, r30
+    10d0:	88 f7       	brcc	.-30     	; 0x10b4 <__divsf3_pse+0x94>
+    10d2:	e0 95       	com	r30
+    10d4:	08 95       	ret
 
-00001014 <__fixsfsi>:
-    1014:	0e 94 11 08 	call	0x1022	; 0x1022 <__fixunssfsi>
-    1018:	68 94       	set
-    101a:	b1 11       	cpse	r27, r1
-    101c:	0c 94 2d 09 	jmp	0x125a	; 0x125a <__fp_szero>
-    1020:	08 95       	ret
+000010d6 <__fixsfsi>:
+    10d6:	0e 94 72 08 	call	0x10e4	; 0x10e4 <__fixunssfsi>
+    10da:	68 94       	set
+    10dc:	b1 11       	cpse	r27, r1
+    10de:	0c 94 8e 09 	jmp	0x131c	; 0x131c <__fp_szero>
+    10e2:	08 95       	ret
 
-00001022 <__fixunssfsi>:
-    1022:	0e 94 fa 08 	call	0x11f4	; 0x11f4 <__fp_splitA>
-    1026:	88 f0       	brcs	.+34     	; 0x104a <__fixunssfsi+0x28>
-    1028:	9f 57       	subi	r25, 0x7F	; 127
-    102a:	98 f0       	brcs	.+38     	; 0x1052 <__fixunssfsi+0x30>
-    102c:	b9 2f       	mov	r27, r25
-    102e:	99 27       	eor	r25, r25
-    1030:	b7 51       	subi	r27, 0x17	; 23
-    1032:	b0 f0       	brcs	.+44     	; 0x1060 <__fixunssfsi+0x3e>
-    1034:	e1 f0       	breq	.+56     	; 0x106e <__fixunssfsi+0x4c>
-    1036:	66 0f       	add	r22, r22
-    1038:	77 1f       	adc	r23, r23
-    103a:	88 1f       	adc	r24, r24
-    103c:	99 1f       	adc	r25, r25
-    103e:	1a f0       	brmi	.+6      	; 0x1046 <__fixunssfsi+0x24>
-    1040:	ba 95       	dec	r27
-    1042:	c9 f7       	brne	.-14     	; 0x1036 <__fixunssfsi+0x14>
-    1044:	14 c0       	rjmp	.+40     	; 0x106e <__fixunssfsi+0x4c>
-    1046:	b1 30       	cpi	r27, 0x01	; 1
-    1048:	91 f0       	breq	.+36     	; 0x106e <__fixunssfsi+0x4c>
-    104a:	0e 94 2c 09 	call	0x1258	; 0x1258 <__fp_zero>
-    104e:	b1 e0       	ldi	r27, 0x01	; 1
-    1050:	08 95       	ret
-    1052:	0c 94 2c 09 	jmp	0x1258	; 0x1258 <__fp_zero>
-    1056:	67 2f       	mov	r22, r23
-    1058:	78 2f       	mov	r23, r24
-    105a:	88 27       	eor	r24, r24
-    105c:	b8 5f       	subi	r27, 0xF8	; 248
-    105e:	39 f0       	breq	.+14     	; 0x106e <__fixunssfsi+0x4c>
-    1060:	b9 3f       	cpi	r27, 0xF9	; 249
-    1062:	cc f3       	brlt	.-14     	; 0x1056 <__fixunssfsi+0x34>
-    1064:	86 95       	lsr	r24
-    1066:	77 95       	ror	r23
-    1068:	67 95       	ror	r22
-    106a:	b3 95       	inc	r27
-    106c:	d9 f7       	brne	.-10     	; 0x1064 <__fixunssfsi+0x42>
-    106e:	3e f4       	brtc	.+14     	; 0x107e <__fixunssfsi+0x5c>
-    1070:	90 95       	com	r25
-    1072:	80 95       	com	r24
-    1074:	70 95       	com	r23
-    1076:	61 95       	neg	r22
-    1078:	7f 4f       	sbci	r23, 0xFF	; 255
-    107a:	8f 4f       	sbci	r24, 0xFF	; 255
-    107c:	9f 4f       	sbci	r25, 0xFF	; 255
-    107e:	08 95       	ret
-
-00001080 <__floatunsisf>:
-    1080:	e8 94       	clt
-    1082:	09 c0       	rjmp	.+18     	; 0x1096 <__floatsisf+0x12>
-
-00001084 <__floatsisf>:
-    1084:	97 fb       	bst	r25, 7
-    1086:	3e f4       	brtc	.+14     	; 0x1096 <__floatsisf+0x12>
-    1088:	90 95       	com	r25
-    108a:	80 95       	com	r24
-    108c:	70 95       	com	r23
-    108e:	61 95       	neg	r22
-    1090:	7f 4f       	sbci	r23, 0xFF	; 255
-    1092:	8f 4f       	sbci	r24, 0xFF	; 255
-    1094:	9f 4f       	sbci	r25, 0xFF	; 255
-    1096:	99 23       	and	r25, r25
-    1098:	a9 f0       	breq	.+42     	; 0x10c4 <__floatsisf+0x40>
-    109a:	f9 2f       	mov	r31, r25
-    109c:	96 e9       	ldi	r25, 0x96	; 150
-    109e:	bb 27       	eor	r27, r27
-    10a0:	93 95       	inc	r25
-    10a2:	f6 95       	lsr	r31
-    10a4:	87 95       	ror	r24
-    10a6:	77 95       	ror	r23
-    10a8:	67 95       	ror	r22
-    10aa:	b7 95       	ror	r27
-    10ac:	f1 11       	cpse	r31, r1
-    10ae:	f8 cf       	rjmp	.-16     	; 0x10a0 <__floatsisf+0x1c>
-    10b0:	fa f4       	brpl	.+62     	; 0x10f0 <__floatsisf+0x6c>
-    10b2:	bb 0f       	add	r27, r27
-    10b4:	11 f4       	brne	.+4      	; 0x10ba <__floatsisf+0x36>
-    10b6:	60 ff       	sbrs	r22, 0
-    10b8:	1b c0       	rjmp	.+54     	; 0x10f0 <__floatsisf+0x6c>
-    10ba:	6f 5f       	subi	r22, 0xFF	; 255
-    10bc:	7f 4f       	sbci	r23, 0xFF	; 255
-    10be:	8f 4f       	sbci	r24, 0xFF	; 255
-    10c0:	9f 4f       	sbci	r25, 0xFF	; 255
-    10c2:	16 c0       	rjmp	.+44     	; 0x10f0 <__floatsisf+0x6c>
-    10c4:	88 23       	and	r24, r24
-    10c6:	11 f0       	breq	.+4      	; 0x10cc <__floatsisf+0x48>
-    10c8:	96 e9       	ldi	r25, 0x96	; 150
-    10ca:	11 c0       	rjmp	.+34     	; 0x10ee <__floatsisf+0x6a>
-    10cc:	77 23       	and	r23, r23
-    10ce:	21 f0       	breq	.+8      	; 0x10d8 <__floatsisf+0x54>
-    10d0:	9e e8       	ldi	r25, 0x8E	; 142
-    10d2:	87 2f       	mov	r24, r23
-    10d4:	76 2f       	mov	r23, r22
-    10d6:	05 c0       	rjmp	.+10     	; 0x10e2 <__floatsisf+0x5e>
-    10d8:	66 23       	and	r22, r22
-    10da:	71 f0       	breq	.+28     	; 0x10f8 <__floatsisf+0x74>
-    10dc:	96 e8       	ldi	r25, 0x86	; 134
-    10de:	86 2f       	mov	r24, r22
-    10e0:	70 e0       	ldi	r23, 0x00	; 0
-    10e2:	60 e0       	ldi	r22, 0x00	; 0
-    10e4:	2a f0       	brmi	.+10     	; 0x10f0 <__floatsisf+0x6c>
-    10e6:	9a 95       	dec	r25
-    10e8:	66 0f       	add	r22, r22
-    10ea:	77 1f       	adc	r23, r23
-    10ec:	88 1f       	adc	r24, r24
-    10ee:	da f7       	brpl	.-10     	; 0x10e6 <__floatsisf+0x62>
-    10f0:	88 0f       	add	r24, r24
-    10f2:	96 95       	lsr	r25
-    10f4:	87 95       	ror	r24
-    10f6:	97 f9       	bld	r25, 7
-    10f8:	08 95       	ret
-
-000010fa <__fp_cmp>:
-    10fa:	99 0f       	add	r25, r25
-    10fc:	00 08       	sbc	r0, r0
-    10fe:	55 0f       	add	r21, r21
-    1100:	aa 0b       	sbc	r26, r26
-    1102:	e0 e8       	ldi	r30, 0x80	; 128
-    1104:	fe ef       	ldi	r31, 0xFE	; 254
-    1106:	16 16       	cp	r1, r22
-    1108:	17 06       	cpc	r1, r23
-    110a:	e8 07       	cpc	r30, r24
-    110c:	f9 07       	cpc	r31, r25
-    110e:	c0 f0       	brcs	.+48     	; 0x1140 <__fp_cmp+0x46>
-    1110:	12 16       	cp	r1, r18
-    1112:	13 06       	cpc	r1, r19
-    1114:	e4 07       	cpc	r30, r20
-    1116:	f5 07       	cpc	r31, r21
-    1118:	98 f0       	brcs	.+38     	; 0x1140 <__fp_cmp+0x46>
-    111a:	62 1b       	sub	r22, r18
-    111c:	73 0b       	sbc	r23, r19
-    111e:	84 0b       	sbc	r24, r20
-    1120:	95 0b       	sbc	r25, r21
-    1122:	39 f4       	brne	.+14     	; 0x1132 <__fp_cmp+0x38>
-    1124:	0a 26       	eor	r0, r26
-    1126:	61 f0       	breq	.+24     	; 0x1140 <__fp_cmp+0x46>
-    1128:	23 2b       	or	r18, r19
-    112a:	24 2b       	or	r18, r20
-    112c:	25 2b       	or	r18, r21
-    112e:	21 f4       	brne	.+8      	; 0x1138 <__fp_cmp+0x3e>
-    1130:	08 95       	ret
-    1132:	0a 26       	eor	r0, r26
-    1134:	09 f4       	brne	.+2      	; 0x1138 <__fp_cmp+0x3e>
-    1136:	a1 40       	sbci	r26, 0x01	; 1
-    1138:	a6 95       	lsr	r26
-    113a:	8f ef       	ldi	r24, 0xFF	; 255
-    113c:	81 1d       	adc	r24, r1
-    113e:	81 1d       	adc	r24, r1
+000010e4 <__fixunssfsi>:
+    10e4:	0e 94 5b 09 	call	0x12b6	; 0x12b6 <__fp_splitA>
+    10e8:	88 f0       	brcs	.+34     	; 0x110c <__fixunssfsi+0x28>
+    10ea:	9f 57       	subi	r25, 0x7F	; 127
+    10ec:	98 f0       	brcs	.+38     	; 0x1114 <__fixunssfsi+0x30>
+    10ee:	b9 2f       	mov	r27, r25
+    10f0:	99 27       	eor	r25, r25
+    10f2:	b7 51       	subi	r27, 0x17	; 23
+    10f4:	b0 f0       	brcs	.+44     	; 0x1122 <__fixunssfsi+0x3e>
+    10f6:	e1 f0       	breq	.+56     	; 0x1130 <__fixunssfsi+0x4c>
+    10f8:	66 0f       	add	r22, r22
+    10fa:	77 1f       	adc	r23, r23
+    10fc:	88 1f       	adc	r24, r24
+    10fe:	99 1f       	adc	r25, r25
+    1100:	1a f0       	brmi	.+6      	; 0x1108 <__fixunssfsi+0x24>
+    1102:	ba 95       	dec	r27
+    1104:	c9 f7       	brne	.-14     	; 0x10f8 <__fixunssfsi+0x14>
+    1106:	14 c0       	rjmp	.+40     	; 0x1130 <__fixunssfsi+0x4c>
+    1108:	b1 30       	cpi	r27, 0x01	; 1
+    110a:	91 f0       	breq	.+36     	; 0x1130 <__fixunssfsi+0x4c>
+    110c:	0e 94 8d 09 	call	0x131a	; 0x131a <__fp_zero>
+    1110:	b1 e0       	ldi	r27, 0x01	; 1
+    1112:	08 95       	ret
+    1114:	0c 94 8d 09 	jmp	0x131a	; 0x131a <__fp_zero>
+    1118:	67 2f       	mov	r22, r23
+    111a:	78 2f       	mov	r23, r24
+    111c:	88 27       	eor	r24, r24
+    111e:	b8 5f       	subi	r27, 0xF8	; 248
+    1120:	39 f0       	breq	.+14     	; 0x1130 <__fixunssfsi+0x4c>
+    1122:	b9 3f       	cpi	r27, 0xF9	; 249
+    1124:	cc f3       	brlt	.-14     	; 0x1118 <__fixunssfsi+0x34>
+    1126:	86 95       	lsr	r24
+    1128:	77 95       	ror	r23
+    112a:	67 95       	ror	r22
+    112c:	b3 95       	inc	r27
+    112e:	d9 f7       	brne	.-10     	; 0x1126 <__fixunssfsi+0x42>
+    1130:	3e f4       	brtc	.+14     	; 0x1140 <__fixunssfsi+0x5c>
+    1132:	90 95       	com	r25
+    1134:	80 95       	com	r24
+    1136:	70 95       	com	r23
+    1138:	61 95       	neg	r22
+    113a:	7f 4f       	sbci	r23, 0xFF	; 255
+    113c:	8f 4f       	sbci	r24, 0xFF	; 255
+    113e:	9f 4f       	sbci	r25, 0xFF	; 255
     1140:	08 95       	ret
 
-00001142 <__fp_inf>:
-    1142:	97 f9       	bld	r25, 7
-    1144:	9f 67       	ori	r25, 0x7F	; 127
-    1146:	80 e8       	ldi	r24, 0x80	; 128
-    1148:	70 e0       	ldi	r23, 0x00	; 0
-    114a:	60 e0       	ldi	r22, 0x00	; 0
-    114c:	08 95       	ret
+00001142 <__floatunsisf>:
+    1142:	e8 94       	clt
+    1144:	09 c0       	rjmp	.+18     	; 0x1158 <__floatsisf+0x12>
 
-0000114e <__fp_mintl>:
-    114e:	88 23       	and	r24, r24
-    1150:	71 f4       	brne	.+28     	; 0x116e <__fp_mintl+0x20>
-    1152:	77 23       	and	r23, r23
-    1154:	21 f0       	breq	.+8      	; 0x115e <__fp_mintl+0x10>
-    1156:	98 50       	subi	r25, 0x08	; 8
-    1158:	87 2b       	or	r24, r23
-    115a:	76 2f       	mov	r23, r22
-    115c:	07 c0       	rjmp	.+14     	; 0x116c <__fp_mintl+0x1e>
-    115e:	66 23       	and	r22, r22
-    1160:	11 f4       	brne	.+4      	; 0x1166 <__fp_mintl+0x18>
-    1162:	99 27       	eor	r25, r25
-    1164:	0d c0       	rjmp	.+26     	; 0x1180 <__fp_mintl+0x32>
-    1166:	90 51       	subi	r25, 0x10	; 16
-    1168:	86 2b       	or	r24, r22
-    116a:	70 e0       	ldi	r23, 0x00	; 0
-    116c:	60 e0       	ldi	r22, 0x00	; 0
-    116e:	2a f0       	brmi	.+10     	; 0x117a <__fp_mintl+0x2c>
-    1170:	9a 95       	dec	r25
-    1172:	66 0f       	add	r22, r22
-    1174:	77 1f       	adc	r23, r23
-    1176:	88 1f       	adc	r24, r24
-    1178:	da f7       	brpl	.-10     	; 0x1170 <__fp_mintl+0x22>
-    117a:	88 0f       	add	r24, r24
-    117c:	96 95       	lsr	r25
-    117e:	87 95       	ror	r24
-    1180:	97 f9       	bld	r25, 7
-    1182:	08 95       	ret
+00001146 <__floatsisf>:
+    1146:	97 fb       	bst	r25, 7
+    1148:	3e f4       	brtc	.+14     	; 0x1158 <__floatsisf+0x12>
+    114a:	90 95       	com	r25
+    114c:	80 95       	com	r24
+    114e:	70 95       	com	r23
+    1150:	61 95       	neg	r22
+    1152:	7f 4f       	sbci	r23, 0xFF	; 255
+    1154:	8f 4f       	sbci	r24, 0xFF	; 255
+    1156:	9f 4f       	sbci	r25, 0xFF	; 255
+    1158:	99 23       	and	r25, r25
+    115a:	a9 f0       	breq	.+42     	; 0x1186 <__floatsisf+0x40>
+    115c:	f9 2f       	mov	r31, r25
+    115e:	96 e9       	ldi	r25, 0x96	; 150
+    1160:	bb 27       	eor	r27, r27
+    1162:	93 95       	inc	r25
+    1164:	f6 95       	lsr	r31
+    1166:	87 95       	ror	r24
+    1168:	77 95       	ror	r23
+    116a:	67 95       	ror	r22
+    116c:	b7 95       	ror	r27
+    116e:	f1 11       	cpse	r31, r1
+    1170:	f8 cf       	rjmp	.-16     	; 0x1162 <__floatsisf+0x1c>
+    1172:	fa f4       	brpl	.+62     	; 0x11b2 <__floatsisf+0x6c>
+    1174:	bb 0f       	add	r27, r27
+    1176:	11 f4       	brne	.+4      	; 0x117c <__floatsisf+0x36>
+    1178:	60 ff       	sbrs	r22, 0
+    117a:	1b c0       	rjmp	.+54     	; 0x11b2 <__floatsisf+0x6c>
+    117c:	6f 5f       	subi	r22, 0xFF	; 255
+    117e:	7f 4f       	sbci	r23, 0xFF	; 255
+    1180:	8f 4f       	sbci	r24, 0xFF	; 255
+    1182:	9f 4f       	sbci	r25, 0xFF	; 255
+    1184:	16 c0       	rjmp	.+44     	; 0x11b2 <__floatsisf+0x6c>
+    1186:	88 23       	and	r24, r24
+    1188:	11 f0       	breq	.+4      	; 0x118e <__floatsisf+0x48>
+    118a:	96 e9       	ldi	r25, 0x96	; 150
+    118c:	11 c0       	rjmp	.+34     	; 0x11b0 <__floatsisf+0x6a>
+    118e:	77 23       	and	r23, r23
+    1190:	21 f0       	breq	.+8      	; 0x119a <__floatsisf+0x54>
+    1192:	9e e8       	ldi	r25, 0x8E	; 142
+    1194:	87 2f       	mov	r24, r23
+    1196:	76 2f       	mov	r23, r22
+    1198:	05 c0       	rjmp	.+10     	; 0x11a4 <__floatsisf+0x5e>
+    119a:	66 23       	and	r22, r22
+    119c:	71 f0       	breq	.+28     	; 0x11ba <__floatsisf+0x74>
+    119e:	96 e8       	ldi	r25, 0x86	; 134
+    11a0:	86 2f       	mov	r24, r22
+    11a2:	70 e0       	ldi	r23, 0x00	; 0
+    11a4:	60 e0       	ldi	r22, 0x00	; 0
+    11a6:	2a f0       	brmi	.+10     	; 0x11b2 <__floatsisf+0x6c>
+    11a8:	9a 95       	dec	r25
+    11aa:	66 0f       	add	r22, r22
+    11ac:	77 1f       	adc	r23, r23
+    11ae:	88 1f       	adc	r24, r24
+    11b0:	da f7       	brpl	.-10     	; 0x11a8 <__floatsisf+0x62>
+    11b2:	88 0f       	add	r24, r24
+    11b4:	96 95       	lsr	r25
+    11b6:	87 95       	ror	r24
+    11b8:	97 f9       	bld	r25, 7
+    11ba:	08 95       	ret
 
-00001184 <__fp_mpack>:
-    1184:	9f 3f       	cpi	r25, 0xFF	; 255
-    1186:	31 f0       	breq	.+12     	; 0x1194 <__fp_mpack_finite+0xc>
-
-00001188 <__fp_mpack_finite>:
-    1188:	91 50       	subi	r25, 0x01	; 1
-    118a:	20 f4       	brcc	.+8      	; 0x1194 <__fp_mpack_finite+0xc>
-    118c:	87 95       	ror	r24
-    118e:	77 95       	ror	r23
-    1190:	67 95       	ror	r22
-    1192:	b7 95       	ror	r27
-    1194:	88 0f       	add	r24, r24
-    1196:	91 1d       	adc	r25, r1
-    1198:	96 95       	lsr	r25
-    119a:	87 95       	ror	r24
-    119c:	97 f9       	bld	r25, 7
-    119e:	08 95       	ret
-
-000011a0 <__fp_nan>:
-    11a0:	9f ef       	ldi	r25, 0xFF	; 255
-    11a2:	80 ec       	ldi	r24, 0xC0	; 192
-    11a4:	08 95       	ret
-
-000011a6 <__fp_pscA>:
-    11a6:	00 24       	eor	r0, r0
-    11a8:	0a 94       	dec	r0
-    11aa:	16 16       	cp	r1, r22
-    11ac:	17 06       	cpc	r1, r23
-    11ae:	18 06       	cpc	r1, r24
-    11b0:	09 06       	cpc	r0, r25
-    11b2:	08 95       	ret
-
-000011b4 <__fp_pscB>:
-    11b4:	00 24       	eor	r0, r0
-    11b6:	0a 94       	dec	r0
-    11b8:	12 16       	cp	r1, r18
-    11ba:	13 06       	cpc	r1, r19
-    11bc:	14 06       	cpc	r1, r20
-    11be:	05 06       	cpc	r0, r21
-    11c0:	08 95       	ret
-
-000011c2 <__fp_round>:
-    11c2:	09 2e       	mov	r0, r25
-    11c4:	03 94       	inc	r0
-    11c6:	00 0c       	add	r0, r0
-    11c8:	11 f4       	brne	.+4      	; 0x11ce <__fp_round+0xc>
-    11ca:	88 23       	and	r24, r24
-    11cc:	52 f0       	brmi	.+20     	; 0x11e2 <__fp_round+0x20>
-    11ce:	bb 0f       	add	r27, r27
-    11d0:	40 f4       	brcc	.+16     	; 0x11e2 <__fp_round+0x20>
-    11d2:	bf 2b       	or	r27, r31
-    11d4:	11 f4       	brne	.+4      	; 0x11da <__fp_round+0x18>
-    11d6:	60 ff       	sbrs	r22, 0
-    11d8:	04 c0       	rjmp	.+8      	; 0x11e2 <__fp_round+0x20>
-    11da:	6f 5f       	subi	r22, 0xFF	; 255
-    11dc:	7f 4f       	sbci	r23, 0xFF	; 255
-    11de:	8f 4f       	sbci	r24, 0xFF	; 255
-    11e0:	9f 4f       	sbci	r25, 0xFF	; 255
-    11e2:	08 95       	ret
-
-000011e4 <__fp_split3>:
-    11e4:	57 fd       	sbrc	r21, 7
-    11e6:	90 58       	subi	r25, 0x80	; 128
-    11e8:	44 0f       	add	r20, r20
-    11ea:	55 1f       	adc	r21, r21
-    11ec:	59 f0       	breq	.+22     	; 0x1204 <__fp_splitA+0x10>
-    11ee:	5f 3f       	cpi	r21, 0xFF	; 255
-    11f0:	71 f0       	breq	.+28     	; 0x120e <__fp_splitA+0x1a>
-    11f2:	47 95       	ror	r20
-
-000011f4 <__fp_splitA>:
-    11f4:	88 0f       	add	r24, r24
-    11f6:	97 fb       	bst	r25, 7
-    11f8:	99 1f       	adc	r25, r25
-    11fa:	61 f0       	breq	.+24     	; 0x1214 <__fp_splitA+0x20>
-    11fc:	9f 3f       	cpi	r25, 0xFF	; 255
-    11fe:	79 f0       	breq	.+30     	; 0x121e <__fp_splitA+0x2a>
-    1200:	87 95       	ror	r24
+000011bc <__fp_cmp>:
+    11bc:	99 0f       	add	r25, r25
+    11be:	00 08       	sbc	r0, r0
+    11c0:	55 0f       	add	r21, r21
+    11c2:	aa 0b       	sbc	r26, r26
+    11c4:	e0 e8       	ldi	r30, 0x80	; 128
+    11c6:	fe ef       	ldi	r31, 0xFE	; 254
+    11c8:	16 16       	cp	r1, r22
+    11ca:	17 06       	cpc	r1, r23
+    11cc:	e8 07       	cpc	r30, r24
+    11ce:	f9 07       	cpc	r31, r25
+    11d0:	c0 f0       	brcs	.+48     	; 0x1202 <__fp_cmp+0x46>
+    11d2:	12 16       	cp	r1, r18
+    11d4:	13 06       	cpc	r1, r19
+    11d6:	e4 07       	cpc	r30, r20
+    11d8:	f5 07       	cpc	r31, r21
+    11da:	98 f0       	brcs	.+38     	; 0x1202 <__fp_cmp+0x46>
+    11dc:	62 1b       	sub	r22, r18
+    11de:	73 0b       	sbc	r23, r19
+    11e0:	84 0b       	sbc	r24, r20
+    11e2:	95 0b       	sbc	r25, r21
+    11e4:	39 f4       	brne	.+14     	; 0x11f4 <__fp_cmp+0x38>
+    11e6:	0a 26       	eor	r0, r26
+    11e8:	61 f0       	breq	.+24     	; 0x1202 <__fp_cmp+0x46>
+    11ea:	23 2b       	or	r18, r19
+    11ec:	24 2b       	or	r18, r20
+    11ee:	25 2b       	or	r18, r21
+    11f0:	21 f4       	brne	.+8      	; 0x11fa <__fp_cmp+0x3e>
+    11f2:	08 95       	ret
+    11f4:	0a 26       	eor	r0, r26
+    11f6:	09 f4       	brne	.+2      	; 0x11fa <__fp_cmp+0x3e>
+    11f8:	a1 40       	sbci	r26, 0x01	; 1
+    11fa:	a6 95       	lsr	r26
+    11fc:	8f ef       	ldi	r24, 0xFF	; 255
+    11fe:	81 1d       	adc	r24, r1
+    1200:	81 1d       	adc	r24, r1
     1202:	08 95       	ret
-    1204:	12 16       	cp	r1, r18
-    1206:	13 06       	cpc	r1, r19
-    1208:	14 06       	cpc	r1, r20
-    120a:	55 1f       	adc	r21, r21
-    120c:	f2 cf       	rjmp	.-28     	; 0x11f2 <__fp_split3+0xe>
-    120e:	46 95       	lsr	r20
-    1210:	f1 df       	rcall	.-30     	; 0x11f4 <__fp_splitA>
-    1212:	08 c0       	rjmp	.+16     	; 0x1224 <__fp_splitA+0x30>
-    1214:	16 16       	cp	r1, r22
-    1216:	17 06       	cpc	r1, r23
-    1218:	18 06       	cpc	r1, r24
-    121a:	99 1f       	adc	r25, r25
-    121c:	f1 cf       	rjmp	.-30     	; 0x1200 <__fp_splitA+0xc>
-    121e:	86 95       	lsr	r24
-    1220:	71 05       	cpc	r23, r1
-    1222:	61 05       	cpc	r22, r1
-    1224:	08 94       	sec
-    1226:	08 95       	ret
 
-00001228 <__fp_trunc>:
-    1228:	0e 94 fa 08 	call	0x11f4	; 0x11f4 <__fp_splitA>
-    122c:	a0 f0       	brcs	.+40     	; 0x1256 <__fp_trunc+0x2e>
-    122e:	be e7       	ldi	r27, 0x7E	; 126
-    1230:	b9 17       	cp	r27, r25
-    1232:	88 f4       	brcc	.+34     	; 0x1256 <__fp_trunc+0x2e>
-    1234:	bb 27       	eor	r27, r27
-    1236:	9f 38       	cpi	r25, 0x8F	; 143
-    1238:	60 f4       	brcc	.+24     	; 0x1252 <__fp_trunc+0x2a>
-    123a:	16 16       	cp	r1, r22
-    123c:	b1 1d       	adc	r27, r1
-    123e:	67 2f       	mov	r22, r23
-    1240:	78 2f       	mov	r23, r24
-    1242:	88 27       	eor	r24, r24
-    1244:	98 5f       	subi	r25, 0xF8	; 248
-    1246:	f7 cf       	rjmp	.-18     	; 0x1236 <__fp_trunc+0xe>
-    1248:	86 95       	lsr	r24
-    124a:	77 95       	ror	r23
-    124c:	67 95       	ror	r22
-    124e:	b1 1d       	adc	r27, r1
-    1250:	93 95       	inc	r25
-    1252:	96 39       	cpi	r25, 0x96	; 150
-    1254:	c8 f3       	brcs	.-14     	; 0x1248 <__fp_trunc+0x20>
-    1256:	08 95       	ret
+00001204 <__fp_inf>:
+    1204:	97 f9       	bld	r25, 7
+    1206:	9f 67       	ori	r25, 0x7F	; 127
+    1208:	80 e8       	ldi	r24, 0x80	; 128
+    120a:	70 e0       	ldi	r23, 0x00	; 0
+    120c:	60 e0       	ldi	r22, 0x00	; 0
+    120e:	08 95       	ret
 
-00001258 <__fp_zero>:
-    1258:	e8 94       	clt
+00001210 <__fp_mintl>:
+    1210:	88 23       	and	r24, r24
+    1212:	71 f4       	brne	.+28     	; 0x1230 <__fp_mintl+0x20>
+    1214:	77 23       	and	r23, r23
+    1216:	21 f0       	breq	.+8      	; 0x1220 <__fp_mintl+0x10>
+    1218:	98 50       	subi	r25, 0x08	; 8
+    121a:	87 2b       	or	r24, r23
+    121c:	76 2f       	mov	r23, r22
+    121e:	07 c0       	rjmp	.+14     	; 0x122e <__fp_mintl+0x1e>
+    1220:	66 23       	and	r22, r22
+    1222:	11 f4       	brne	.+4      	; 0x1228 <__fp_mintl+0x18>
+    1224:	99 27       	eor	r25, r25
+    1226:	0d c0       	rjmp	.+26     	; 0x1242 <__fp_mintl+0x32>
+    1228:	90 51       	subi	r25, 0x10	; 16
+    122a:	86 2b       	or	r24, r22
+    122c:	70 e0       	ldi	r23, 0x00	; 0
+    122e:	60 e0       	ldi	r22, 0x00	; 0
+    1230:	2a f0       	brmi	.+10     	; 0x123c <__fp_mintl+0x2c>
+    1232:	9a 95       	dec	r25
+    1234:	66 0f       	add	r22, r22
+    1236:	77 1f       	adc	r23, r23
+    1238:	88 1f       	adc	r24, r24
+    123a:	da f7       	brpl	.-10     	; 0x1232 <__fp_mintl+0x22>
+    123c:	88 0f       	add	r24, r24
+    123e:	96 95       	lsr	r25
+    1240:	87 95       	ror	r24
+    1242:	97 f9       	bld	r25, 7
+    1244:	08 95       	ret
 
-0000125a <__fp_szero>:
-    125a:	bb 27       	eor	r27, r27
-    125c:	66 27       	eor	r22, r22
-    125e:	77 27       	eor	r23, r23
-    1260:	cb 01       	movw	r24, r22
-    1262:	97 f9       	bld	r25, 7
-    1264:	08 95       	ret
+00001246 <__fp_mpack>:
+    1246:	9f 3f       	cpi	r25, 0xFF	; 255
+    1248:	31 f0       	breq	.+12     	; 0x1256 <__fp_mpack_finite+0xc>
 
-00001266 <__gesf2>:
-    1266:	0e 94 7d 08 	call	0x10fa	; 0x10fa <__fp_cmp>
-    126a:	08 f4       	brcc	.+2      	; 0x126e <__gesf2+0x8>
-    126c:	8f ef       	ldi	r24, 0xFF	; 255
-    126e:	08 95       	ret
+0000124a <__fp_mpack_finite>:
+    124a:	91 50       	subi	r25, 0x01	; 1
+    124c:	20 f4       	brcc	.+8      	; 0x1256 <__fp_mpack_finite+0xc>
+    124e:	87 95       	ror	r24
+    1250:	77 95       	ror	r23
+    1252:	67 95       	ror	r22
+    1254:	b7 95       	ror	r27
+    1256:	88 0f       	add	r24, r24
+    1258:	91 1d       	adc	r25, r1
+    125a:	96 95       	lsr	r25
+    125c:	87 95       	ror	r24
+    125e:	97 f9       	bld	r25, 7
+    1260:	08 95       	ret
 
-00001270 <__mulsf3>:
-    1270:	0e 94 4b 09 	call	0x1296	; 0x1296 <__mulsf3x>
-    1274:	0c 94 e1 08 	jmp	0x11c2	; 0x11c2 <__fp_round>
-    1278:	0e 94 d3 08 	call	0x11a6	; 0x11a6 <__fp_pscA>
-    127c:	38 f0       	brcs	.+14     	; 0x128c <__mulsf3+0x1c>
-    127e:	0e 94 da 08 	call	0x11b4	; 0x11b4 <__fp_pscB>
-    1282:	20 f0       	brcs	.+8      	; 0x128c <__mulsf3+0x1c>
-    1284:	95 23       	and	r25, r21
-    1286:	11 f0       	breq	.+4      	; 0x128c <__mulsf3+0x1c>
-    1288:	0c 94 a1 08 	jmp	0x1142	; 0x1142 <__fp_inf>
-    128c:	0c 94 d0 08 	jmp	0x11a0	; 0x11a0 <__fp_nan>
-    1290:	11 24       	eor	r1, r1
-    1292:	0c 94 2d 09 	jmp	0x125a	; 0x125a <__fp_szero>
+00001262 <__fp_nan>:
+    1262:	9f ef       	ldi	r25, 0xFF	; 255
+    1264:	80 ec       	ldi	r24, 0xC0	; 192
+    1266:	08 95       	ret
 
-00001296 <__mulsf3x>:
-    1296:	0e 94 f2 08 	call	0x11e4	; 0x11e4 <__fp_split3>
-    129a:	70 f3       	brcs	.-36     	; 0x1278 <__mulsf3+0x8>
+00001268 <__fp_pscA>:
+    1268:	00 24       	eor	r0, r0
+    126a:	0a 94       	dec	r0
+    126c:	16 16       	cp	r1, r22
+    126e:	17 06       	cpc	r1, r23
+    1270:	18 06       	cpc	r1, r24
+    1272:	09 06       	cpc	r0, r25
+    1274:	08 95       	ret
 
-0000129c <__mulsf3_pse>:
-    129c:	95 9f       	mul	r25, r21
-    129e:	c1 f3       	breq	.-16     	; 0x1290 <__mulsf3+0x20>
-    12a0:	95 0f       	add	r25, r21
-    12a2:	50 e0       	ldi	r21, 0x00	; 0
-    12a4:	55 1f       	adc	r21, r21
-    12a6:	62 9f       	mul	r22, r18
-    12a8:	f0 01       	movw	r30, r0
-    12aa:	72 9f       	mul	r23, r18
-    12ac:	bb 27       	eor	r27, r27
-    12ae:	f0 0d       	add	r31, r0
-    12b0:	b1 1d       	adc	r27, r1
-    12b2:	63 9f       	mul	r22, r19
-    12b4:	aa 27       	eor	r26, r26
-    12b6:	f0 0d       	add	r31, r0
-    12b8:	b1 1d       	adc	r27, r1
-    12ba:	aa 1f       	adc	r26, r26
-    12bc:	64 9f       	mul	r22, r20
-    12be:	66 27       	eor	r22, r22
-    12c0:	b0 0d       	add	r27, r0
-    12c2:	a1 1d       	adc	r26, r1
-    12c4:	66 1f       	adc	r22, r22
-    12c6:	82 9f       	mul	r24, r18
-    12c8:	22 27       	eor	r18, r18
-    12ca:	b0 0d       	add	r27, r0
-    12cc:	a1 1d       	adc	r26, r1
-    12ce:	62 1f       	adc	r22, r18
-    12d0:	73 9f       	mul	r23, r19
-    12d2:	b0 0d       	add	r27, r0
-    12d4:	a1 1d       	adc	r26, r1
-    12d6:	62 1f       	adc	r22, r18
-    12d8:	83 9f       	mul	r24, r19
-    12da:	a0 0d       	add	r26, r0
-    12dc:	61 1d       	adc	r22, r1
-    12de:	22 1f       	adc	r18, r18
-    12e0:	74 9f       	mul	r23, r20
-    12e2:	33 27       	eor	r19, r19
-    12e4:	a0 0d       	add	r26, r0
-    12e6:	61 1d       	adc	r22, r1
-    12e8:	23 1f       	adc	r18, r19
-    12ea:	84 9f       	mul	r24, r20
-    12ec:	60 0d       	add	r22, r0
-    12ee:	21 1d       	adc	r18, r1
-    12f0:	82 2f       	mov	r24, r18
-    12f2:	76 2f       	mov	r23, r22
-    12f4:	6a 2f       	mov	r22, r26
-    12f6:	11 24       	eor	r1, r1
-    12f8:	9f 57       	subi	r25, 0x7F	; 127
-    12fa:	50 40       	sbci	r21, 0x00	; 0
-    12fc:	9a f0       	brmi	.+38     	; 0x1324 <__mulsf3_pse+0x88>
-    12fe:	f1 f0       	breq	.+60     	; 0x133c <__mulsf3_pse+0xa0>
-    1300:	88 23       	and	r24, r24
-    1302:	4a f0       	brmi	.+18     	; 0x1316 <__mulsf3_pse+0x7a>
-    1304:	ee 0f       	add	r30, r30
-    1306:	ff 1f       	adc	r31, r31
-    1308:	bb 1f       	adc	r27, r27
-    130a:	66 1f       	adc	r22, r22
-    130c:	77 1f       	adc	r23, r23
-    130e:	88 1f       	adc	r24, r24
-    1310:	91 50       	subi	r25, 0x01	; 1
-    1312:	50 40       	sbci	r21, 0x00	; 0
-    1314:	a9 f7       	brne	.-22     	; 0x1300 <__mulsf3_pse+0x64>
-    1316:	9e 3f       	cpi	r25, 0xFE	; 254
-    1318:	51 05       	cpc	r21, r1
-    131a:	80 f0       	brcs	.+32     	; 0x133c <__mulsf3_pse+0xa0>
-    131c:	0c 94 a1 08 	jmp	0x1142	; 0x1142 <__fp_inf>
-    1320:	0c 94 2d 09 	jmp	0x125a	; 0x125a <__fp_szero>
-    1324:	5f 3f       	cpi	r21, 0xFF	; 255
-    1326:	e4 f3       	brlt	.-8      	; 0x1320 <__mulsf3_pse+0x84>
-    1328:	98 3e       	cpi	r25, 0xE8	; 232
-    132a:	d4 f3       	brlt	.-12     	; 0x1320 <__mulsf3_pse+0x84>
-    132c:	86 95       	lsr	r24
-    132e:	77 95       	ror	r23
-    1330:	67 95       	ror	r22
-    1332:	b7 95       	ror	r27
-    1334:	f7 95       	ror	r31
-    1336:	e7 95       	ror	r30
-    1338:	9f 5f       	subi	r25, 0xFF	; 255
-    133a:	c1 f7       	brne	.-16     	; 0x132c <__mulsf3_pse+0x90>
-    133c:	fe 2b       	or	r31, r30
-    133e:	88 0f       	add	r24, r24
-    1340:	91 1d       	adc	r25, r1
-    1342:	96 95       	lsr	r25
-    1344:	87 95       	ror	r24
-    1346:	97 f9       	bld	r25, 7
-    1348:	08 95       	ret
+00001276 <__fp_pscB>:
+    1276:	00 24       	eor	r0, r0
+    1278:	0a 94       	dec	r0
+    127a:	12 16       	cp	r1, r18
+    127c:	13 06       	cpc	r1, r19
+    127e:	14 06       	cpc	r1, r20
+    1280:	05 06       	cpc	r0, r21
+    1282:	08 95       	ret
 
-0000134a <__divmodhi4>:
-    134a:	97 fb       	bst	r25, 7
-    134c:	07 2e       	mov	r0, r23
-    134e:	16 f4       	brtc	.+4      	; 0x1354 <__divmodhi4+0xa>
-    1350:	00 94       	com	r0
-    1352:	07 d0       	rcall	.+14     	; 0x1362 <__divmodhi4_neg1>
-    1354:	77 fd       	sbrc	r23, 7
-    1356:	09 d0       	rcall	.+18     	; 0x136a <__divmodhi4_neg2>
-    1358:	0e 94 b9 09 	call	0x1372	; 0x1372 <__udivmodhi4>
-    135c:	07 fc       	sbrc	r0, 7
-    135e:	05 d0       	rcall	.+10     	; 0x136a <__divmodhi4_neg2>
-    1360:	3e f4       	brtc	.+14     	; 0x1370 <__divmodhi4_exit>
+00001284 <__fp_round>:
+    1284:	09 2e       	mov	r0, r25
+    1286:	03 94       	inc	r0
+    1288:	00 0c       	add	r0, r0
+    128a:	11 f4       	brne	.+4      	; 0x1290 <__fp_round+0xc>
+    128c:	88 23       	and	r24, r24
+    128e:	52 f0       	brmi	.+20     	; 0x12a4 <__fp_round+0x20>
+    1290:	bb 0f       	add	r27, r27
+    1292:	40 f4       	brcc	.+16     	; 0x12a4 <__fp_round+0x20>
+    1294:	bf 2b       	or	r27, r31
+    1296:	11 f4       	brne	.+4      	; 0x129c <__fp_round+0x18>
+    1298:	60 ff       	sbrs	r22, 0
+    129a:	04 c0       	rjmp	.+8      	; 0x12a4 <__fp_round+0x20>
+    129c:	6f 5f       	subi	r22, 0xFF	; 255
+    129e:	7f 4f       	sbci	r23, 0xFF	; 255
+    12a0:	8f 4f       	sbci	r24, 0xFF	; 255
+    12a2:	9f 4f       	sbci	r25, 0xFF	; 255
+    12a4:	08 95       	ret
 
-00001362 <__divmodhi4_neg1>:
-    1362:	90 95       	com	r25
-    1364:	81 95       	neg	r24
-    1366:	9f 4f       	sbci	r25, 0xFF	; 255
-    1368:	08 95       	ret
+000012a6 <__fp_split3>:
+    12a6:	57 fd       	sbrc	r21, 7
+    12a8:	90 58       	subi	r25, 0x80	; 128
+    12aa:	44 0f       	add	r20, r20
+    12ac:	55 1f       	adc	r21, r21
+    12ae:	59 f0       	breq	.+22     	; 0x12c6 <__fp_splitA+0x10>
+    12b0:	5f 3f       	cpi	r21, 0xFF	; 255
+    12b2:	71 f0       	breq	.+28     	; 0x12d0 <__fp_splitA+0x1a>
+    12b4:	47 95       	ror	r20
 
-0000136a <__divmodhi4_neg2>:
-    136a:	70 95       	com	r23
-    136c:	61 95       	neg	r22
-    136e:	7f 4f       	sbci	r23, 0xFF	; 255
+000012b6 <__fp_splitA>:
+    12b6:	88 0f       	add	r24, r24
+    12b8:	97 fb       	bst	r25, 7
+    12ba:	99 1f       	adc	r25, r25
+    12bc:	61 f0       	breq	.+24     	; 0x12d6 <__fp_splitA+0x20>
+    12be:	9f 3f       	cpi	r25, 0xFF	; 255
+    12c0:	79 f0       	breq	.+30     	; 0x12e0 <__fp_splitA+0x2a>
+    12c2:	87 95       	ror	r24
+    12c4:	08 95       	ret
+    12c6:	12 16       	cp	r1, r18
+    12c8:	13 06       	cpc	r1, r19
+    12ca:	14 06       	cpc	r1, r20
+    12cc:	55 1f       	adc	r21, r21
+    12ce:	f2 cf       	rjmp	.-28     	; 0x12b4 <__fp_split3+0xe>
+    12d0:	46 95       	lsr	r20
+    12d2:	f1 df       	rcall	.-30     	; 0x12b6 <__fp_splitA>
+    12d4:	08 c0       	rjmp	.+16     	; 0x12e6 <__fp_splitA+0x30>
+    12d6:	16 16       	cp	r1, r22
+    12d8:	17 06       	cpc	r1, r23
+    12da:	18 06       	cpc	r1, r24
+    12dc:	99 1f       	adc	r25, r25
+    12de:	f1 cf       	rjmp	.-30     	; 0x12c2 <__fp_splitA+0xc>
+    12e0:	86 95       	lsr	r24
+    12e2:	71 05       	cpc	r23, r1
+    12e4:	61 05       	cpc	r22, r1
+    12e6:	08 94       	sec
+    12e8:	08 95       	ret
 
-00001370 <__divmodhi4_exit>:
-    1370:	08 95       	ret
+000012ea <__fp_trunc>:
+    12ea:	0e 94 5b 09 	call	0x12b6	; 0x12b6 <__fp_splitA>
+    12ee:	a0 f0       	brcs	.+40     	; 0x1318 <__fp_trunc+0x2e>
+    12f0:	be e7       	ldi	r27, 0x7E	; 126
+    12f2:	b9 17       	cp	r27, r25
+    12f4:	88 f4       	brcc	.+34     	; 0x1318 <__fp_trunc+0x2e>
+    12f6:	bb 27       	eor	r27, r27
+    12f8:	9f 38       	cpi	r25, 0x8F	; 143
+    12fa:	60 f4       	brcc	.+24     	; 0x1314 <__fp_trunc+0x2a>
+    12fc:	16 16       	cp	r1, r22
+    12fe:	b1 1d       	adc	r27, r1
+    1300:	67 2f       	mov	r22, r23
+    1302:	78 2f       	mov	r23, r24
+    1304:	88 27       	eor	r24, r24
+    1306:	98 5f       	subi	r25, 0xF8	; 248
+    1308:	f7 cf       	rjmp	.-18     	; 0x12f8 <__fp_trunc+0xe>
+    130a:	86 95       	lsr	r24
+    130c:	77 95       	ror	r23
+    130e:	67 95       	ror	r22
+    1310:	b1 1d       	adc	r27, r1
+    1312:	93 95       	inc	r25
+    1314:	96 39       	cpi	r25, 0x96	; 150
+    1316:	c8 f3       	brcs	.-14     	; 0x130a <__fp_trunc+0x20>
+    1318:	08 95       	ret
 
-00001372 <__udivmodhi4>:
-    1372:	aa 1b       	sub	r26, r26
-    1374:	bb 1b       	sub	r27, r27
-    1376:	51 e1       	ldi	r21, 0x11	; 17
-    1378:	07 c0       	rjmp	.+14     	; 0x1388 <__udivmodhi4_ep>
+0000131a <__fp_zero>:
+    131a:	e8 94       	clt
 
-0000137a <__udivmodhi4_loop>:
-    137a:	aa 1f       	adc	r26, r26
-    137c:	bb 1f       	adc	r27, r27
-    137e:	a6 17       	cp	r26, r22
-    1380:	b7 07       	cpc	r27, r23
-    1382:	10 f0       	brcs	.+4      	; 0x1388 <__udivmodhi4_ep>
-    1384:	a6 1b       	sub	r26, r22
-    1386:	b7 0b       	sbc	r27, r23
+0000131c <__fp_szero>:
+    131c:	bb 27       	eor	r27, r27
+    131e:	66 27       	eor	r22, r22
+    1320:	77 27       	eor	r23, r23
+    1322:	cb 01       	movw	r24, r22
+    1324:	97 f9       	bld	r25, 7
+    1326:	08 95       	ret
 
-00001388 <__udivmodhi4_ep>:
-    1388:	88 1f       	adc	r24, r24
-    138a:	99 1f       	adc	r25, r25
-    138c:	5a 95       	dec	r21
-    138e:	a9 f7       	brne	.-22     	; 0x137a <__udivmodhi4_loop>
-    1390:	80 95       	com	r24
-    1392:	90 95       	com	r25
-    1394:	bc 01       	movw	r22, r24
-    1396:	cd 01       	movw	r24, r26
-    1398:	08 95       	ret
+00001328 <__gesf2>:
+    1328:	0e 94 de 08 	call	0x11bc	; 0x11bc <__fp_cmp>
+    132c:	08 f4       	brcc	.+2      	; 0x1330 <__gesf2+0x8>
+    132e:	8f ef       	ldi	r24, 0xFF	; 255
+    1330:	08 95       	ret
 
-0000139a <do_rand>:
-    139a:	8f 92       	push	r8
-    139c:	9f 92       	push	r9
-    139e:	af 92       	push	r10
-    13a0:	bf 92       	push	r11
-    13a2:	cf 92       	push	r12
-    13a4:	df 92       	push	r13
-    13a6:	ef 92       	push	r14
-    13a8:	ff 92       	push	r15
-    13aa:	cf 93       	push	r28
-    13ac:	df 93       	push	r29
-    13ae:	ec 01       	movw	r28, r24
-    13b0:	68 81       	ld	r22, Y
-    13b2:	79 81       	ldd	r23, Y+1	; 0x01
-    13b4:	8a 81       	ldd	r24, Y+2	; 0x02
-    13b6:	9b 81       	ldd	r25, Y+3	; 0x03
-    13b8:	61 15       	cp	r22, r1
-    13ba:	71 05       	cpc	r23, r1
-    13bc:	81 05       	cpc	r24, r1
-    13be:	91 05       	cpc	r25, r1
-    13c0:	21 f4       	brne	.+8      	; 0x13ca <do_rand+0x30>
-    13c2:	64 e2       	ldi	r22, 0x24	; 36
-    13c4:	79 ed       	ldi	r23, 0xD9	; 217
-    13c6:	8b e5       	ldi	r24, 0x5B	; 91
-    13c8:	97 e0       	ldi	r25, 0x07	; 7
-    13ca:	2d e1       	ldi	r18, 0x1D	; 29
-    13cc:	33 ef       	ldi	r19, 0xF3	; 243
-    13ce:	41 e0       	ldi	r20, 0x01	; 1
-    13d0:	50 e0       	ldi	r21, 0x00	; 0
-    13d2:	0e 94 29 0a 	call	0x1452	; 0x1452 <__divmodsi4>
-    13d6:	49 01       	movw	r8, r18
-    13d8:	5a 01       	movw	r10, r20
-    13da:	9b 01       	movw	r18, r22
-    13dc:	ac 01       	movw	r20, r24
-    13de:	a7 ea       	ldi	r26, 0xA7	; 167
-    13e0:	b1 e4       	ldi	r27, 0x41	; 65
-    13e2:	0e 94 48 0a 	call	0x1490	; 0x1490 <__muluhisi3>
-    13e6:	6b 01       	movw	r12, r22
-    13e8:	7c 01       	movw	r14, r24
-    13ea:	ac ee       	ldi	r26, 0xEC	; 236
-    13ec:	b4 ef       	ldi	r27, 0xF4	; 244
-    13ee:	a5 01       	movw	r20, r10
-    13f0:	94 01       	movw	r18, r8
-    13f2:	0e 94 56 0a 	call	0x14ac	; 0x14ac <__mulohisi3>
-    13f6:	dc 01       	movw	r26, r24
-    13f8:	cb 01       	movw	r24, r22
-    13fa:	8c 0d       	add	r24, r12
-    13fc:	9d 1d       	adc	r25, r13
-    13fe:	ae 1d       	adc	r26, r14
-    1400:	bf 1d       	adc	r27, r15
-    1402:	b7 ff       	sbrs	r27, 7
-    1404:	03 c0       	rjmp	.+6      	; 0x140c <do_rand+0x72>
-    1406:	01 97       	sbiw	r24, 0x01	; 1
-    1408:	a1 09       	sbc	r26, r1
-    140a:	b0 48       	sbci	r27, 0x80	; 128
-    140c:	88 83       	st	Y, r24
-    140e:	99 83       	std	Y+1, r25	; 0x01
-    1410:	aa 83       	std	Y+2, r26	; 0x02
-    1412:	bb 83       	std	Y+3, r27	; 0x03
-    1414:	9f 77       	andi	r25, 0x7F	; 127
-    1416:	df 91       	pop	r29
-    1418:	cf 91       	pop	r28
-    141a:	ff 90       	pop	r15
-    141c:	ef 90       	pop	r14
-    141e:	df 90       	pop	r13
-    1420:	cf 90       	pop	r12
-    1422:	bf 90       	pop	r11
-    1424:	af 90       	pop	r10
-    1426:	9f 90       	pop	r9
-    1428:	8f 90       	pop	r8
+00001332 <__mulsf3>:
+    1332:	0e 94 ac 09 	call	0x1358	; 0x1358 <__mulsf3x>
+    1336:	0c 94 42 09 	jmp	0x1284	; 0x1284 <__fp_round>
+    133a:	0e 94 34 09 	call	0x1268	; 0x1268 <__fp_pscA>
+    133e:	38 f0       	brcs	.+14     	; 0x134e <__mulsf3+0x1c>
+    1340:	0e 94 3b 09 	call	0x1276	; 0x1276 <__fp_pscB>
+    1344:	20 f0       	brcs	.+8      	; 0x134e <__mulsf3+0x1c>
+    1346:	95 23       	and	r25, r21
+    1348:	11 f0       	breq	.+4      	; 0x134e <__mulsf3+0x1c>
+    134a:	0c 94 02 09 	jmp	0x1204	; 0x1204 <__fp_inf>
+    134e:	0c 94 31 09 	jmp	0x1262	; 0x1262 <__fp_nan>
+    1352:	11 24       	eor	r1, r1
+    1354:	0c 94 8e 09 	jmp	0x131c	; 0x131c <__fp_szero>
+
+00001358 <__mulsf3x>:
+    1358:	0e 94 53 09 	call	0x12a6	; 0x12a6 <__fp_split3>
+    135c:	70 f3       	brcs	.-36     	; 0x133a <__mulsf3+0x8>
+
+0000135e <__mulsf3_pse>:
+    135e:	95 9f       	mul	r25, r21
+    1360:	c1 f3       	breq	.-16     	; 0x1352 <__mulsf3+0x20>
+    1362:	95 0f       	add	r25, r21
+    1364:	50 e0       	ldi	r21, 0x00	; 0
+    1366:	55 1f       	adc	r21, r21
+    1368:	62 9f       	mul	r22, r18
+    136a:	f0 01       	movw	r30, r0
+    136c:	72 9f       	mul	r23, r18
+    136e:	bb 27       	eor	r27, r27
+    1370:	f0 0d       	add	r31, r0
+    1372:	b1 1d       	adc	r27, r1
+    1374:	63 9f       	mul	r22, r19
+    1376:	aa 27       	eor	r26, r26
+    1378:	f0 0d       	add	r31, r0
+    137a:	b1 1d       	adc	r27, r1
+    137c:	aa 1f       	adc	r26, r26
+    137e:	64 9f       	mul	r22, r20
+    1380:	66 27       	eor	r22, r22
+    1382:	b0 0d       	add	r27, r0
+    1384:	a1 1d       	adc	r26, r1
+    1386:	66 1f       	adc	r22, r22
+    1388:	82 9f       	mul	r24, r18
+    138a:	22 27       	eor	r18, r18
+    138c:	b0 0d       	add	r27, r0
+    138e:	a1 1d       	adc	r26, r1
+    1390:	62 1f       	adc	r22, r18
+    1392:	73 9f       	mul	r23, r19
+    1394:	b0 0d       	add	r27, r0
+    1396:	a1 1d       	adc	r26, r1
+    1398:	62 1f       	adc	r22, r18
+    139a:	83 9f       	mul	r24, r19
+    139c:	a0 0d       	add	r26, r0
+    139e:	61 1d       	adc	r22, r1
+    13a0:	22 1f       	adc	r18, r18
+    13a2:	74 9f       	mul	r23, r20
+    13a4:	33 27       	eor	r19, r19
+    13a6:	a0 0d       	add	r26, r0
+    13a8:	61 1d       	adc	r22, r1
+    13aa:	23 1f       	adc	r18, r19
+    13ac:	84 9f       	mul	r24, r20
+    13ae:	60 0d       	add	r22, r0
+    13b0:	21 1d       	adc	r18, r1
+    13b2:	82 2f       	mov	r24, r18
+    13b4:	76 2f       	mov	r23, r22
+    13b6:	6a 2f       	mov	r22, r26
+    13b8:	11 24       	eor	r1, r1
+    13ba:	9f 57       	subi	r25, 0x7F	; 127
+    13bc:	50 40       	sbci	r21, 0x00	; 0
+    13be:	9a f0       	brmi	.+38     	; 0x13e6 <__mulsf3_pse+0x88>
+    13c0:	f1 f0       	breq	.+60     	; 0x13fe <__mulsf3_pse+0xa0>
+    13c2:	88 23       	and	r24, r24
+    13c4:	4a f0       	brmi	.+18     	; 0x13d8 <__mulsf3_pse+0x7a>
+    13c6:	ee 0f       	add	r30, r30
+    13c8:	ff 1f       	adc	r31, r31
+    13ca:	bb 1f       	adc	r27, r27
+    13cc:	66 1f       	adc	r22, r22
+    13ce:	77 1f       	adc	r23, r23
+    13d0:	88 1f       	adc	r24, r24
+    13d2:	91 50       	subi	r25, 0x01	; 1
+    13d4:	50 40       	sbci	r21, 0x00	; 0
+    13d6:	a9 f7       	brne	.-22     	; 0x13c2 <__mulsf3_pse+0x64>
+    13d8:	9e 3f       	cpi	r25, 0xFE	; 254
+    13da:	51 05       	cpc	r21, r1
+    13dc:	80 f0       	brcs	.+32     	; 0x13fe <__mulsf3_pse+0xa0>
+    13de:	0c 94 02 09 	jmp	0x1204	; 0x1204 <__fp_inf>
+    13e2:	0c 94 8e 09 	jmp	0x131c	; 0x131c <__fp_szero>
+    13e6:	5f 3f       	cpi	r21, 0xFF	; 255
+    13e8:	e4 f3       	brlt	.-8      	; 0x13e2 <__mulsf3_pse+0x84>
+    13ea:	98 3e       	cpi	r25, 0xE8	; 232
+    13ec:	d4 f3       	brlt	.-12     	; 0x13e2 <__mulsf3_pse+0x84>
+    13ee:	86 95       	lsr	r24
+    13f0:	77 95       	ror	r23
+    13f2:	67 95       	ror	r22
+    13f4:	b7 95       	ror	r27
+    13f6:	f7 95       	ror	r31
+    13f8:	e7 95       	ror	r30
+    13fa:	9f 5f       	subi	r25, 0xFF	; 255
+    13fc:	c1 f7       	brne	.-16     	; 0x13ee <__mulsf3_pse+0x90>
+    13fe:	fe 2b       	or	r31, r30
+    1400:	88 0f       	add	r24, r24
+    1402:	91 1d       	adc	r25, r1
+    1404:	96 95       	lsr	r25
+    1406:	87 95       	ror	r24
+    1408:	97 f9       	bld	r25, 7
+    140a:	08 95       	ret
+
+0000140c <__divmodhi4>:
+    140c:	97 fb       	bst	r25, 7
+    140e:	07 2e       	mov	r0, r23
+    1410:	16 f4       	brtc	.+4      	; 0x1416 <__divmodhi4+0xa>
+    1412:	00 94       	com	r0
+    1414:	07 d0       	rcall	.+14     	; 0x1424 <__divmodhi4_neg1>
+    1416:	77 fd       	sbrc	r23, 7
+    1418:	09 d0       	rcall	.+18     	; 0x142c <__divmodhi4_neg2>
+    141a:	0e 94 1a 0a 	call	0x1434	; 0x1434 <__udivmodhi4>
+    141e:	07 fc       	sbrc	r0, 7
+    1420:	05 d0       	rcall	.+10     	; 0x142c <__divmodhi4_neg2>
+    1422:	3e f4       	brtc	.+14     	; 0x1432 <__divmodhi4_exit>
+
+00001424 <__divmodhi4_neg1>:
+    1424:	90 95       	com	r25
+    1426:	81 95       	neg	r24
+    1428:	9f 4f       	sbci	r25, 0xFF	; 255
     142a:	08 95       	ret
 
-0000142c <rand_r>:
-    142c:	0e 94 cd 09 	call	0x139a	; 0x139a <do_rand>
-    1430:	08 95       	ret
+0000142c <__divmodhi4_neg2>:
+    142c:	70 95       	com	r23
+    142e:	61 95       	neg	r22
+    1430:	7f 4f       	sbci	r23, 0xFF	; 255
 
-00001432 <rand>:
-    1432:	80 e0       	ldi	r24, 0x00	; 0
-    1434:	91 e0       	ldi	r25, 0x01	; 1
-    1436:	0e 94 cd 09 	call	0x139a	; 0x139a <do_rand>
-    143a:	08 95       	ret
+00001432 <__divmodhi4_exit>:
+    1432:	08 95       	ret
 
-0000143c <srand>:
-    143c:	a0 e0       	ldi	r26, 0x00	; 0
-    143e:	b0 e0       	ldi	r27, 0x00	; 0
-    1440:	80 93 00 01 	sts	0x0100, r24	; 0x800100 <__DATA_REGION_ORIGIN__>
-    1444:	90 93 01 01 	sts	0x0101, r25	; 0x800101 <__DATA_REGION_ORIGIN__+0x1>
-    1448:	a0 93 02 01 	sts	0x0102, r26	; 0x800102 <__DATA_REGION_ORIGIN__+0x2>
-    144c:	b0 93 03 01 	sts	0x0103, r27	; 0x800103 <__DATA_REGION_ORIGIN__+0x3>
-    1450:	08 95       	ret
+00001434 <__udivmodhi4>:
+    1434:	aa 1b       	sub	r26, r26
+    1436:	bb 1b       	sub	r27, r27
+    1438:	51 e1       	ldi	r21, 0x11	; 17
+    143a:	07 c0       	rjmp	.+14     	; 0x144a <__udivmodhi4_ep>
 
-00001452 <__divmodsi4>:
-    1452:	05 2e       	mov	r0, r21
-    1454:	97 fb       	bst	r25, 7
-    1456:	1e f4       	brtc	.+6      	; 0x145e <__divmodsi4+0xc>
-    1458:	00 94       	com	r0
-    145a:	0e 94 40 0a 	call	0x1480	; 0x1480 <__negsi2>
-    145e:	57 fd       	sbrc	r21, 7
-    1460:	07 d0       	rcall	.+14     	; 0x1470 <__divmodsi4_neg2>
-    1462:	0e 94 5b 0a 	call	0x14b6	; 0x14b6 <__udivmodsi4>
-    1466:	07 fc       	sbrc	r0, 7
-    1468:	03 d0       	rcall	.+6      	; 0x1470 <__divmodsi4_neg2>
-    146a:	4e f4       	brtc	.+18     	; 0x147e <__divmodsi4_exit>
-    146c:	0c 94 40 0a 	jmp	0x1480	; 0x1480 <__negsi2>
+0000143c <__udivmodhi4_loop>:
+    143c:	aa 1f       	adc	r26, r26
+    143e:	bb 1f       	adc	r27, r27
+    1440:	a6 17       	cp	r26, r22
+    1442:	b7 07       	cpc	r27, r23
+    1444:	10 f0       	brcs	.+4      	; 0x144a <__udivmodhi4_ep>
+    1446:	a6 1b       	sub	r26, r22
+    1448:	b7 0b       	sbc	r27, r23
 
-00001470 <__divmodsi4_neg2>:
-    1470:	50 95       	com	r21
-    1472:	40 95       	com	r20
-    1474:	30 95       	com	r19
-    1476:	21 95       	neg	r18
-    1478:	3f 4f       	sbci	r19, 0xFF	; 255
-    147a:	4f 4f       	sbci	r20, 0xFF	; 255
-    147c:	5f 4f       	sbci	r21, 0xFF	; 255
+0000144a <__udivmodhi4_ep>:
+    144a:	88 1f       	adc	r24, r24
+    144c:	99 1f       	adc	r25, r25
+    144e:	5a 95       	dec	r21
+    1450:	a9 f7       	brne	.-22     	; 0x143c <__udivmodhi4_loop>
+    1452:	80 95       	com	r24
+    1454:	90 95       	com	r25
+    1456:	bc 01       	movw	r22, r24
+    1458:	cd 01       	movw	r24, r26
+    145a:	08 95       	ret
 
-0000147e <__divmodsi4_exit>:
-    147e:	08 95       	ret
+0000145c <do_rand>:
+    145c:	8f 92       	push	r8
+    145e:	9f 92       	push	r9
+    1460:	af 92       	push	r10
+    1462:	bf 92       	push	r11
+    1464:	cf 92       	push	r12
+    1466:	df 92       	push	r13
+    1468:	ef 92       	push	r14
+    146a:	ff 92       	push	r15
+    146c:	cf 93       	push	r28
+    146e:	df 93       	push	r29
+    1470:	ec 01       	movw	r28, r24
+    1472:	68 81       	ld	r22, Y
+    1474:	79 81       	ldd	r23, Y+1	; 0x01
+    1476:	8a 81       	ldd	r24, Y+2	; 0x02
+    1478:	9b 81       	ldd	r25, Y+3	; 0x03
+    147a:	61 15       	cp	r22, r1
+    147c:	71 05       	cpc	r23, r1
+    147e:	81 05       	cpc	r24, r1
+    1480:	91 05       	cpc	r25, r1
+    1482:	21 f4       	brne	.+8      	; 0x148c <do_rand+0x30>
+    1484:	64 e2       	ldi	r22, 0x24	; 36
+    1486:	79 ed       	ldi	r23, 0xD9	; 217
+    1488:	8b e5       	ldi	r24, 0x5B	; 91
+    148a:	97 e0       	ldi	r25, 0x07	; 7
+    148c:	2d e1       	ldi	r18, 0x1D	; 29
+    148e:	33 ef       	ldi	r19, 0xF3	; 243
+    1490:	41 e0       	ldi	r20, 0x01	; 1
+    1492:	50 e0       	ldi	r21, 0x00	; 0
+    1494:	0e 94 8a 0a 	call	0x1514	; 0x1514 <__divmodsi4>
+    1498:	49 01       	movw	r8, r18
+    149a:	5a 01       	movw	r10, r20
+    149c:	9b 01       	movw	r18, r22
+    149e:	ac 01       	movw	r20, r24
+    14a0:	a7 ea       	ldi	r26, 0xA7	; 167
+    14a2:	b1 e4       	ldi	r27, 0x41	; 65
+    14a4:	0e 94 a9 0a 	call	0x1552	; 0x1552 <__muluhisi3>
+    14a8:	6b 01       	movw	r12, r22
+    14aa:	7c 01       	movw	r14, r24
+    14ac:	ac ee       	ldi	r26, 0xEC	; 236
+    14ae:	b4 ef       	ldi	r27, 0xF4	; 244
+    14b0:	a5 01       	movw	r20, r10
+    14b2:	94 01       	movw	r18, r8
+    14b4:	0e 94 b7 0a 	call	0x156e	; 0x156e <__mulohisi3>
+    14b8:	dc 01       	movw	r26, r24
+    14ba:	cb 01       	movw	r24, r22
+    14bc:	8c 0d       	add	r24, r12
+    14be:	9d 1d       	adc	r25, r13
+    14c0:	ae 1d       	adc	r26, r14
+    14c2:	bf 1d       	adc	r27, r15
+    14c4:	b7 ff       	sbrs	r27, 7
+    14c6:	03 c0       	rjmp	.+6      	; 0x14ce <do_rand+0x72>
+    14c8:	01 97       	sbiw	r24, 0x01	; 1
+    14ca:	a1 09       	sbc	r26, r1
+    14cc:	b0 48       	sbci	r27, 0x80	; 128
+    14ce:	88 83       	st	Y, r24
+    14d0:	99 83       	std	Y+1, r25	; 0x01
+    14d2:	aa 83       	std	Y+2, r26	; 0x02
+    14d4:	bb 83       	std	Y+3, r27	; 0x03
+    14d6:	9f 77       	andi	r25, 0x7F	; 127
+    14d8:	df 91       	pop	r29
+    14da:	cf 91       	pop	r28
+    14dc:	ff 90       	pop	r15
+    14de:	ef 90       	pop	r14
+    14e0:	df 90       	pop	r13
+    14e2:	cf 90       	pop	r12
+    14e4:	bf 90       	pop	r11
+    14e6:	af 90       	pop	r10
+    14e8:	9f 90       	pop	r9
+    14ea:	8f 90       	pop	r8
+    14ec:	08 95       	ret
 
-00001480 <__negsi2>:
-    1480:	90 95       	com	r25
-    1482:	80 95       	com	r24
-    1484:	70 95       	com	r23
-    1486:	61 95       	neg	r22
-    1488:	7f 4f       	sbci	r23, 0xFF	; 255
-    148a:	8f 4f       	sbci	r24, 0xFF	; 255
-    148c:	9f 4f       	sbci	r25, 0xFF	; 255
-    148e:	08 95       	ret
+000014ee <rand_r>:
+    14ee:	0e 94 2e 0a 	call	0x145c	; 0x145c <do_rand>
+    14f2:	08 95       	ret
 
-00001490 <__muluhisi3>:
-    1490:	0e 94 7d 0a 	call	0x14fa	; 0x14fa <__umulhisi3>
-    1494:	a5 9f       	mul	r26, r21
-    1496:	90 0d       	add	r25, r0
-    1498:	b4 9f       	mul	r27, r20
-    149a:	90 0d       	add	r25, r0
-    149c:	a4 9f       	mul	r26, r20
-    149e:	80 0d       	add	r24, r0
-    14a0:	91 1d       	adc	r25, r1
-    14a2:	11 24       	eor	r1, r1
-    14a4:	08 95       	ret
+000014f4 <rand>:
+    14f4:	80 e0       	ldi	r24, 0x00	; 0
+    14f6:	91 e0       	ldi	r25, 0x01	; 1
+    14f8:	0e 94 2e 0a 	call	0x145c	; 0x145c <do_rand>
+    14fc:	08 95       	ret
 
-000014a6 <__mulshisi3>:
-    14a6:	b7 ff       	sbrs	r27, 7
-    14a8:	0c 94 48 0a 	jmp	0x1490	; 0x1490 <__muluhisi3>
+000014fe <srand>:
+    14fe:	a0 e0       	ldi	r26, 0x00	; 0
+    1500:	b0 e0       	ldi	r27, 0x00	; 0
+    1502:	80 93 00 01 	sts	0x0100, r24	; 0x800100 <__DATA_REGION_ORIGIN__>
+    1506:	90 93 01 01 	sts	0x0101, r25	; 0x800101 <__DATA_REGION_ORIGIN__+0x1>
+    150a:	a0 93 02 01 	sts	0x0102, r26	; 0x800102 <__DATA_REGION_ORIGIN__+0x2>
+    150e:	b0 93 03 01 	sts	0x0103, r27	; 0x800103 <__DATA_REGION_ORIGIN__+0x3>
+    1512:	08 95       	ret
 
-000014ac <__mulohisi3>:
-    14ac:	0e 94 48 0a 	call	0x1490	; 0x1490 <__muluhisi3>
-    14b0:	82 1b       	sub	r24, r18
-    14b2:	93 0b       	sbc	r25, r19
-    14b4:	08 95       	ret
+00001514 <__divmodsi4>:
+    1514:	05 2e       	mov	r0, r21
+    1516:	97 fb       	bst	r25, 7
+    1518:	1e f4       	brtc	.+6      	; 0x1520 <__divmodsi4+0xc>
+    151a:	00 94       	com	r0
+    151c:	0e 94 a1 0a 	call	0x1542	; 0x1542 <__negsi2>
+    1520:	57 fd       	sbrc	r21, 7
+    1522:	07 d0       	rcall	.+14     	; 0x1532 <__divmodsi4_neg2>
+    1524:	0e 94 bc 0a 	call	0x1578	; 0x1578 <__udivmodsi4>
+    1528:	07 fc       	sbrc	r0, 7
+    152a:	03 d0       	rcall	.+6      	; 0x1532 <__divmodsi4_neg2>
+    152c:	4e f4       	brtc	.+18     	; 0x1540 <__divmodsi4_exit>
+    152e:	0c 94 a1 0a 	jmp	0x1542	; 0x1542 <__negsi2>
 
-000014b6 <__udivmodsi4>:
-    14b6:	a1 e2       	ldi	r26, 0x21	; 33
-    14b8:	1a 2e       	mov	r1, r26
-    14ba:	aa 1b       	sub	r26, r26
-    14bc:	bb 1b       	sub	r27, r27
-    14be:	fd 01       	movw	r30, r26
-    14c0:	0d c0       	rjmp	.+26     	; 0x14dc <__udivmodsi4_ep>
+00001532 <__divmodsi4_neg2>:
+    1532:	50 95       	com	r21
+    1534:	40 95       	com	r20
+    1536:	30 95       	com	r19
+    1538:	21 95       	neg	r18
+    153a:	3f 4f       	sbci	r19, 0xFF	; 255
+    153c:	4f 4f       	sbci	r20, 0xFF	; 255
+    153e:	5f 4f       	sbci	r21, 0xFF	; 255
 
-000014c2 <__udivmodsi4_loop>:
-    14c2:	aa 1f       	adc	r26, r26
-    14c4:	bb 1f       	adc	r27, r27
-    14c6:	ee 1f       	adc	r30, r30
-    14c8:	ff 1f       	adc	r31, r31
-    14ca:	a2 17       	cp	r26, r18
-    14cc:	b3 07       	cpc	r27, r19
-    14ce:	e4 07       	cpc	r30, r20
-    14d0:	f5 07       	cpc	r31, r21
-    14d2:	20 f0       	brcs	.+8      	; 0x14dc <__udivmodsi4_ep>
-    14d4:	a2 1b       	sub	r26, r18
-    14d6:	b3 0b       	sbc	r27, r19
-    14d8:	e4 0b       	sbc	r30, r20
-    14da:	f5 0b       	sbc	r31, r21
+00001540 <__divmodsi4_exit>:
+    1540:	08 95       	ret
 
-000014dc <__udivmodsi4_ep>:
-    14dc:	66 1f       	adc	r22, r22
-    14de:	77 1f       	adc	r23, r23
-    14e0:	88 1f       	adc	r24, r24
-    14e2:	99 1f       	adc	r25, r25
-    14e4:	1a 94       	dec	r1
-    14e6:	69 f7       	brne	.-38     	; 0x14c2 <__udivmodsi4_loop>
-    14e8:	60 95       	com	r22
-    14ea:	70 95       	com	r23
-    14ec:	80 95       	com	r24
-    14ee:	90 95       	com	r25
-    14f0:	9b 01       	movw	r18, r22
-    14f2:	ac 01       	movw	r20, r24
-    14f4:	bd 01       	movw	r22, r26
-    14f6:	cf 01       	movw	r24, r30
-    14f8:	08 95       	ret
+00001542 <__negsi2>:
+    1542:	90 95       	com	r25
+    1544:	80 95       	com	r24
+    1546:	70 95       	com	r23
+    1548:	61 95       	neg	r22
+    154a:	7f 4f       	sbci	r23, 0xFF	; 255
+    154c:	8f 4f       	sbci	r24, 0xFF	; 255
+    154e:	9f 4f       	sbci	r25, 0xFF	; 255
+    1550:	08 95       	ret
 
-000014fa <__umulhisi3>:
-    14fa:	a2 9f       	mul	r26, r18
-    14fc:	b0 01       	movw	r22, r0
-    14fe:	b3 9f       	mul	r27, r19
-    1500:	c0 01       	movw	r24, r0
-    1502:	a3 9f       	mul	r26, r19
-    1504:	70 0d       	add	r23, r0
-    1506:	81 1d       	adc	r24, r1
-    1508:	11 24       	eor	r1, r1
-    150a:	91 1d       	adc	r25, r1
-    150c:	b2 9f       	mul	r27, r18
-    150e:	70 0d       	add	r23, r0
-    1510:	81 1d       	adc	r24, r1
-    1512:	11 24       	eor	r1, r1
-    1514:	91 1d       	adc	r25, r1
-    1516:	08 95       	ret
+00001552 <__muluhisi3>:
+    1552:	0e 94 de 0a 	call	0x15bc	; 0x15bc <__umulhisi3>
+    1556:	a5 9f       	mul	r26, r21
+    1558:	90 0d       	add	r25, r0
+    155a:	b4 9f       	mul	r27, r20
+    155c:	90 0d       	add	r25, r0
+    155e:	a4 9f       	mul	r26, r20
+    1560:	80 0d       	add	r24, r0
+    1562:	91 1d       	adc	r25, r1
+    1564:	11 24       	eor	r1, r1
+    1566:	08 95       	ret
 
-00001518 <_exit>:
-    1518:	f8 94       	cli
+00001568 <__mulshisi3>:
+    1568:	b7 ff       	sbrs	r27, 7
+    156a:	0c 94 a9 0a 	jmp	0x1552	; 0x1552 <__muluhisi3>
 
-0000151a <__stop_program>:
-    151a:	ff cf       	rjmp	.-2      	; 0x151a <__stop_program>
+0000156e <__mulohisi3>:
+    156e:	0e 94 a9 0a 	call	0x1552	; 0x1552 <__muluhisi3>
+    1572:	82 1b       	sub	r24, r18
+    1574:	93 0b       	sbc	r25, r19
+    1576:	08 95       	ret
+
+00001578 <__udivmodsi4>:
+    1578:	a1 e2       	ldi	r26, 0x21	; 33
+    157a:	1a 2e       	mov	r1, r26
+    157c:	aa 1b       	sub	r26, r26
+    157e:	bb 1b       	sub	r27, r27
+    1580:	fd 01       	movw	r30, r26
+    1582:	0d c0       	rjmp	.+26     	; 0x159e <__udivmodsi4_ep>
+
+00001584 <__udivmodsi4_loop>:
+    1584:	aa 1f       	adc	r26, r26
+    1586:	bb 1f       	adc	r27, r27
+    1588:	ee 1f       	adc	r30, r30
+    158a:	ff 1f       	adc	r31, r31
+    158c:	a2 17       	cp	r26, r18
+    158e:	b3 07       	cpc	r27, r19
+    1590:	e4 07       	cpc	r30, r20
+    1592:	f5 07       	cpc	r31, r21
+    1594:	20 f0       	brcs	.+8      	; 0x159e <__udivmodsi4_ep>
+    1596:	a2 1b       	sub	r26, r18
+    1598:	b3 0b       	sbc	r27, r19
+    159a:	e4 0b       	sbc	r30, r20
+    159c:	f5 0b       	sbc	r31, r21
+
+0000159e <__udivmodsi4_ep>:
+    159e:	66 1f       	adc	r22, r22
+    15a0:	77 1f       	adc	r23, r23
+    15a2:	88 1f       	adc	r24, r24
+    15a4:	99 1f       	adc	r25, r25
+    15a6:	1a 94       	dec	r1
+    15a8:	69 f7       	brne	.-38     	; 0x1584 <__udivmodsi4_loop>
+    15aa:	60 95       	com	r22
+    15ac:	70 95       	com	r23
+    15ae:	80 95       	com	r24
+    15b0:	90 95       	com	r25
+    15b2:	9b 01       	movw	r18, r22
+    15b4:	ac 01       	movw	r20, r24
+    15b6:	bd 01       	movw	r22, r26
+    15b8:	cf 01       	movw	r24, r30
+    15ba:	08 95       	ret
+
+000015bc <__umulhisi3>:
+    15bc:	a2 9f       	mul	r26, r18
+    15be:	b0 01       	movw	r22, r0
+    15c0:	b3 9f       	mul	r27, r19
+    15c2:	c0 01       	movw	r24, r0
+    15c4:	a3 9f       	mul	r26, r19
+    15c6:	70 0d       	add	r23, r0
+    15c8:	81 1d       	adc	r24, r1
+    15ca:	11 24       	eor	r1, r1
+    15cc:	91 1d       	adc	r25, r1
+    15ce:	b2 9f       	mul	r27, r18
+    15d0:	70 0d       	add	r23, r0
+    15d2:	81 1d       	adc	r24, r1
+    15d4:	11 24       	eor	r1, r1
+    15d6:	91 1d       	adc	r25, r1
+    15d8:	08 95       	ret
+
+000015da <_exit>:
+    15da:	f8 94       	cli
+
+000015dc <__stop_program>:
+    15dc:	ff cf       	rjmp	.-2      	; 0x15dc <__stop_program>
diff --git a/final_project/Debug/final_project.map b/final_project/Debug/final_project.map
index 9820b6f..e6a3ba4 100644
--- a/final_project/Debug/final_project.map
+++ b/final_project/Debug/final_project.map
@@ -91,8 +91,6 @@ Discarded input sections
  .text          0x00000000        0x0 main.o
  .data          0x00000000        0x0 main.o
  .bss           0x00000000        0x0 main.o
- .text.test_timer
-                0x00000000       0x2a main.o
  .text          0x00000000        0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libm.a(addsf3.o)
  .data          0x00000000        0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libm.a(addsf3.o)
  .bss           0x00000000        0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libm.a(addsf3.o)
@@ -453,7 +451,7 @@ END GROUP
 .rela.plt
  *(.rela.plt)
 
-.text           0x00000000     0x151c
+.text           0x00000000     0x15de
  *(.vectors)
  .vectors       0x00000000       0xcc C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATmega_DFP/1.6.364/gcc/dev/atmega324pb/avr5/crtatmega324pb.o
                 0x00000000                __vector_default
@@ -532,6 +530,7 @@ END GROUP
                 0x00000106                __vector_45
                 0x00000106                __vector_25
                 0x00000106                __vector_11
+                0x00000106                __vector_13
                 0x00000106                __vector_17
                 0x00000106                __vector_19
                 0x00000106                __vector_7
@@ -589,147 +588,144 @@ END GROUP
                 0x000002bc       0x58 serial.o
                 0x000002bc                usart_txstr
  .text.get_button
-                0x00000314       0x32 main.o
+                0x00000314      0x254 main.o
                 0x00000314                get_button
  .text.display_element
-                0x00000346      0x1b2 main.o
-                0x00000346                display_element
- .text.init_io  0x000004f8       0x4a main.o
-                0x000004f8                init_io
- .text.main     0x00000542      0x4a8 main.o
-                0x00000542                main
- .text.__vector_13
-                0x000009ea       0x78 main.o
-                0x000009ea                __vector_13
+                0x00000568      0x1b2 main.o
+                0x00000568                display_element
+ .text.init_io  0x0000071a       0x4a main.o
+                0x0000071a                init_io
+ .text.main     0x00000764      0x3c0 main.o
+                0x00000764                main
  .text.correct_beep
-                0x00000a62       0x2c main.o
-                0x00000a62                correct_beep
+                0x00000b24       0x2c main.o
+                0x00000b24                correct_beep
  .text.incorrect_beep
-                0x00000a8e      0x13c main.o
-                0x00000a8e                incorrect_beep
- .text.win      0x00000bca       0x40 main.o
-                0x00000bca                win
- .text.loose    0x00000c0a       0x40 main.o
-                0x00000c0a                loose
- .text.beep     0x00000c4a      0x1d4 main.o
-                0x00000c4a                beep
+                0x00000b50      0x13c main.o
+                0x00000b50                incorrect_beep
+ .text.win      0x00000c8c       0x40 main.o
+                0x00000c8c                win
+ .text.loose    0x00000ccc       0x40 main.o
+                0x00000ccc                loose
+ .text.beep     0x00000d0c      0x1d4 main.o
+                0x00000d0c                beep
  .text.avr-libc.fplib
-                0x00000e1e        0xe c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libm.a(addsf3.o)
-                0x00000e1e                __subsf3
-                0x00000e20                __addsf3
+                0x00000ee0        0xe c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libm.a(addsf3.o)
+                0x00000ee0                __subsf3
+                0x00000ee2                __addsf3
  .text.avr-libc.fplib
-                0x00000e2c       0xcc c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libm.a(addsf3x.o)
-                0x00000e4e                __addsf3x
+                0x00000eee       0xcc c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libm.a(addsf3x.o)
+                0x00000f10                __addsf3x
  .text.avr-libc.fplib
-                0x00000ef8       0x2e c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libm.a(ceil.o)
-                0x00000ef8                ceil
+                0x00000fba       0x2e c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libm.a(ceil.o)
+                0x00000fba                ceil
  .text.avr-libc.fplib
-                0x00000f26        0xa c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libm.a(cmpsf2.o)
-                0x00000f26                __nesf2
-                0x00000f26                __eqsf2
-                0x00000f26                __cmpsf2
-                0x00000f26                __ltsf2
-                0x00000f26                __lesf2
+                0x00000fe8        0xa c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libm.a(cmpsf2.o)
+                0x00000fe8                __nesf2
+                0x00000fe8                __eqsf2
+                0x00000fe8                __cmpsf2
+                0x00000fe8                __ltsf2
+                0x00000fe8                __lesf2
  .text.avr-libc.fplib
-                0x00000f30        0x8 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libm.a(divsf3.o)
-                0x00000f30                __divsf3
+                0x00000ff2        0x8 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libm.a(divsf3.o)
+                0x00000ff2                __divsf3
  .text.avr-libc.fplib
-                0x00000f38       0xdc c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libm.a(divsf3x.o)
-                0x00000f58                __divsf3x
-                0x00000f5e                __divsf3_pse
+                0x00000ffa       0xdc c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libm.a(divsf3x.o)
+                0x0000101a                __divsf3x
+                0x00001020                __divsf3_pse
  .text.avr-libc.fplib
-                0x00001014        0xe c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libm.a(fixsfsi.o)
-                0x00001014                __fixsfsi
+                0x000010d6        0xe c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libm.a(fixsfsi.o)
+                0x000010d6                __fixsfsi
  .text.avr-libc.fplib
-                0x00001022       0x5e c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libm.a(fixunssfsi.o)
-                0x00001022                __fixunssfsi
+                0x000010e4       0x5e c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libm.a(fixunssfsi.o)
+                0x000010e4                __fixunssfsi
  .text.avr-libc.fplib
-                0x00001080       0x7a c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libm.a(floatsisf.o)
-                0x00001080                __floatunsisf
-                0x00001084                __floatsisf
+                0x00001142       0x7a c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libm.a(floatsisf.o)
+                0x00001142                __floatunsisf
+                0x00001146                __floatsisf
  .text.avr-libc.fplib
-                0x000010fa       0x48 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libm.a(fp_cmp.o)
-                0x000010fa                __fp_cmp
+                0x000011bc       0x48 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libm.a(fp_cmp.o)
+                0x000011bc                __fp_cmp
  .text.avr-libc.fplib
-                0x00001142        0xc c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libm.a(fp_inf.o)
-                0x00001142                __fp_inf
+                0x00001204        0xc c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libm.a(fp_inf.o)
+                0x00001204                __fp_inf
  .text.avr-libc.fplib
-                0x0000114e       0x36 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libm.a(fp_mintl.o)
-                0x0000114e                __fp_mintl
+                0x00001210       0x36 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libm.a(fp_mintl.o)
+                0x00001210                __fp_mintl
  .text.avr-libc.fplib
-                0x00001184       0x1c c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libm.a(fp_mpack.o)
-                0x00001184                __fp_mpack
-                0x00001188                __fp_mpack_finite
+                0x00001246       0x1c c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libm.a(fp_mpack.o)
+                0x00001246                __fp_mpack
+                0x0000124a                __fp_mpack_finite
  .text.avr-libc.fplib
-                0x000011a0        0x6 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libm.a(fp_nan.o)
-                0x000011a0                __fp_nan
+                0x00001262        0x6 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libm.a(fp_nan.o)
+                0x00001262                __fp_nan
  .text.avr-libc.fplib
-                0x000011a6        0xe c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libm.a(fp_pscA.o)
-                0x000011a6                __fp_pscA
+                0x00001268        0xe c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libm.a(fp_pscA.o)
+                0x00001268                __fp_pscA
  .text.avr-libc.fplib
-                0x000011b4        0xe c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libm.a(fp_pscB.o)
-                0x000011b4                __fp_pscB
+                0x00001276        0xe c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libm.a(fp_pscB.o)
+                0x00001276                __fp_pscB
  .text.avr-libc.fplib
-                0x000011c2       0x22 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libm.a(fp_round.o)
-                0x000011c2                __fp_round
+                0x00001284       0x22 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libm.a(fp_round.o)
+                0x00001284                __fp_round
  .text.avr-libc.fplib
-                0x000011e4       0x44 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libm.a(fp_split3.o)
-                0x000011e4                __fp_split3
-                0x000011f4                __fp_splitA
+                0x000012a6       0x44 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libm.a(fp_split3.o)
+                0x000012a6                __fp_split3
+                0x000012b6                __fp_splitA
  .text.avr-libc.fplib
-                0x00001228       0x30 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libm.a(fp_trunc.o)
-                0x00001228                __fp_trunc
+                0x000012ea       0x30 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libm.a(fp_trunc.o)
+                0x000012ea                __fp_trunc
  .text.avr-libc.fplib
-                0x00001258        0xe c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libm.a(fp_zero.o)
-                0x00001258                __fp_zero
-                0x0000125a                __fp_szero
+                0x0000131a        0xe c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libm.a(fp_zero.o)
+                0x0000131a                __fp_zero
+                0x0000131c                __fp_szero
  .text.avr-libc.fplib
-                0x00001266        0xa c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libm.a(gesf2.o)
-                0x00001266                __gesf2
-                0x00001266                __gtsf2
+                0x00001328        0xa c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libm.a(gesf2.o)
+                0x00001328                __gesf2
+                0x00001328                __gtsf2
  .text.avr-libc.fplib
-                0x00001270        0x8 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libm.a(mulsf3.o)
-                0x00001270                __mulsf3
+                0x00001332        0x8 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libm.a(mulsf3.o)
+                0x00001332                __mulsf3
  .text.avr-libc.fplib
-                0x00001278       0xd2 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libm.a(mulsf3x.o)
-                0x00001296                __mulsf3x
-                0x0000129c                __mulsf3_pse
+                0x0000133a       0xd2 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libm.a(mulsf3x.o)
+                0x00001358                __mulsf3x
+                0x0000135e                __mulsf3_pse
  .text.libgcc.div
-                0x0000134a       0x28 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_divmodhi4.o)
-                0x0000134a                _div
-                0x0000134a                __divmodhi4
+                0x0000140c       0x28 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_divmodhi4.o)
+                0x0000140c                _div
+                0x0000140c                __divmodhi4
  .text.libgcc.div
-                0x00001372       0x28 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_udivmodhi4.o)
-                0x00001372                __udivmodhi4
+                0x00001434       0x28 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_udivmodhi4.o)
+                0x00001434                __udivmodhi4
  .text.avr-libc
-                0x0000139a       0xb8 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libc.a(rand.o)
-                0x0000142c                rand_r
-                0x00001432                rand
-                0x0000143c                srand
+                0x0000145c       0xb8 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libc.a(rand.o)
+                0x000014ee                rand_r
+                0x000014f4                rand
+                0x000014fe                srand
  .text.libgcc.div
-                0x00001452       0x2e c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_divmodsi4.o)
-                0x00001452                __divmodsi4
+                0x00001514       0x2e c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_divmodsi4.o)
+                0x00001514                __divmodsi4
  .text.libgcc.div
-                0x00001480       0x10 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_negsi2.o)
-                0x00001480                __negsi2
+                0x00001542       0x10 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_negsi2.o)
+                0x00001542                __negsi2
  .text.libgcc.mul
-                0x00001490       0x16 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_muluhisi3.o)
-                0x00001490                __muluhisi3
+                0x00001552       0x16 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_muluhisi3.o)
+                0x00001552                __muluhisi3
  .text.libgcc.mul
-                0x000014a6       0x10 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_mulshisi3.o)
-                0x000014a6                __mulshisi3
-                0x000014ac                __mulohisi3
+                0x00001568       0x10 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_mulshisi3.o)
+                0x00001568                __mulshisi3
+                0x0000156e                __mulohisi3
  .text.libgcc.div
-                0x000014b6       0x44 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_udivmodsi4.o)
-                0x000014b6                __udivmodsi4
+                0x00001578       0x44 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_udivmodsi4.o)
+                0x00001578                __udivmodsi4
  .text.libgcc.mul
-                0x000014fa       0x1e c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_umulhisi3.o)
-                0x000014fa                __umulhisi3
-                0x00001518                . = ALIGN (0x2)
+                0x000015bc       0x1e c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_umulhisi3.o)
+                0x000015bc                __umulhisi3
+                0x000015da                . = ALIGN (0x2)
  *(.fini9)
- .fini9         0x00001518        0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_exit.o)
-                0x00001518                _exit
-                0x00001518                exit
+ .fini9         0x000015da        0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_exit.o)
+                0x000015da                _exit
+                0x000015da                exit
  *(.fini9)
  *(.fini8)
  *(.fini8)
@@ -748,40 +744,40 @@ END GROUP
  *(.fini1)
  *(.fini1)
  *(.fini0)
- .fini0         0x00001518        0x4 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_exit.o)
+ .fini0         0x000015da        0x4 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_exit.o)
  *(.fini0)
-                0x0000151c                _etext = .
+                0x000015de                _etext = .
 
-.data           0x00800100       0xd8 load address 0x0000151c
+.data           0x00800100       0xb2 load address 0x000015de
                 0x00800100                PROVIDE (__data_start, .)
  *(.data)
  .data          0x00800100        0x4 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libc.a(rand.o)
  *(.data*)
  *(.gnu.linkonce.d*)
  *(.rodata)
- .rodata        0x00800104       0xd4 main.o
+ .rodata        0x00800104       0xae main.o
  *(.rodata*)
  *(.gnu.linkonce.r*)
-                0x008001d8                . = ALIGN (0x2)
-                0x008001d8                _edata = .
-                0x008001d8                PROVIDE (__data_end, .)
+                0x008001b2                . = ALIGN (0x2)
+                0x008001b2                _edata = .
+                0x008001b2                PROVIDE (__data_end, .)
 
-.bss            0x008001d8        0x2
-                0x008001d8                PROVIDE (__bss_start, .)
+.bss            0x008001b2        0x2
+                0x008001b2                PROVIDE (__bss_start, .)
  *(.bss)
  *(.bss*)
  *(COMMON)
- COMMON         0x008001d8        0x2 main.o
-                0x008001d8                seconds_remaining
-                0x008001da                PROVIDE (__bss_end, .)
-                0x0000151c                __data_load_start = LOADADDR (.data)
-                0x000015f4                __data_load_end = (__data_load_start + SIZEOF (.data))
+ COMMON         0x008001b2        0x2 main.o
+                0x008001b2                seconds_remaining
+                0x008001b4                PROVIDE (__bss_end, .)
+                0x000015de                __data_load_start = LOADADDR (.data)
+                0x00001690                __data_load_end = (__data_load_start + SIZEOF (.data))
 
-.noinit         0x008001da        0x0
+.noinit         0x008001b4        0x0
                 [!provide]                PROVIDE (__noinit_start, .)
  *(.noinit*)
                 [!provide]                PROVIDE (__noinit_end, .)
-                0x008001da                _end = .
+                0x008001b4                _end = .
                 [!provide]                PROVIDE (__heap_start, .)
 
 .eeprom         0x00810000        0x0
@@ -849,60 +845,60 @@ END GROUP
 .debug_sfnames
  *(.debug_sfnames)
 
-.debug_aranges  0x00000000       0xe8
+.debug_aranges  0x00000000       0xd8
  *(.debug_aranges)
  .debug_aranges
                 0x00000000       0x38 clock.o
  .debug_aranges
                 0x00000038       0x40 serial.o
  .debug_aranges
-                0x00000078       0x70 main.o
+                0x00000078       0x60 main.o
 
 .debug_pubnames
  *(.debug_pubnames)
 
-.debug_info     0x00000000     0x1249
+.debug_info     0x00000000     0x128c
  *(.debug_info .gnu.linkonce.wi.*)
  .debug_info    0x00000000      0x9bb C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATmega_DFP/1.6.364/gcc/dev/atmega324pb/avr5/crtatmega324pb.o
  .debug_info    0x000009bb       0xd7 clock.o
  .debug_info    0x00000a92      0x141 serial.o
- .debug_info    0x00000bd3      0x676 main.o
+ .debug_info    0x00000bd3      0x6b9 main.o
 
-.debug_abbrev   0x00000000      0xc72
+.debug_abbrev   0x00000000      0xc65
  *(.debug_abbrev)
  .debug_abbrev  0x00000000      0x934 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATmega_DFP/1.6.364/gcc/dev/atmega324pb/avr5/crtatmega324pb.o
  .debug_abbrev  0x00000934       0x67 clock.o
  .debug_abbrev  0x0000099b       0xf2 serial.o
- .debug_abbrev  0x00000a8d      0x1e5 main.o
+ .debug_abbrev  0x00000a8d      0x1d8 main.o
 
-.debug_line     0x00000000      0xb1b
+.debug_line     0x00000000      0xb2e
  *(.debug_line .debug_line.* .debug_line_end)
  .debug_line    0x00000000      0x1ca C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATmega_DFP/1.6.364/gcc/dev/atmega324pb/avr5/crtatmega324pb.o
  .debug_line    0x000001ca      0x146 clock.o
- .debug_line    0x00000310      0x181 serial.o
- .debug_line    0x00000491      0x68a main.o
+ .debug_line    0x00000310      0x189 serial.o
+ .debug_line    0x00000499      0x695 main.o
 
-.debug_frame    0x00000000      0x328
+.debug_frame    0x00000000      0x2a4
  *(.debug_frame)
  .debug_frame   0x00000000       0x94 clock.o
  .debug_frame   0x00000094       0xb4 serial.o
- .debug_frame   0x00000148      0x1e0 main.o
+ .debug_frame   0x00000148      0x15c main.o
 
-.debug_str      0x00000000      0x6ed
+.debug_str      0x00000000      0x6a3
  *(.debug_str)
  .debug_str     0x00000000      0x35a C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATmega_DFP/1.6.364/gcc/dev/atmega324pb/avr5/crtatmega324pb.o
  .debug_str     0x0000035a      0x164 clock.o
                                 0x198 (size before relaxing)
- .debug_str     0x000004be       0xa3 serial.o
-                                0x1c2 (size before relaxing)
- .debug_str     0x00000561      0x18c main.o
-                                0x305 (size before relaxing)
+ .debug_str     0x000004be       0x56 serial.o
+                                0x1a6 (size before relaxing)
+ .debug_str     0x00000514      0x18f main.o
+                                0x308 (size before relaxing)
 
-.debug_loc      0x00000000      0x611
+.debug_loc      0x00000000      0x4f1
  *(.debug_loc)
  .debug_loc     0x00000000       0xec clock.o
  .debug_loc     0x000000ec      0x14e serial.o
- .debug_loc     0x0000023a      0x3d7 main.o
+ .debug_loc     0x0000023a      0x2b7 main.o
 
 .debug_macinfo
  *(.debug_macinfo)
@@ -922,11 +918,11 @@ END GROUP
 .debug_pubtypes
  *(.debug_pubtypes)
 
-.debug_ranges   0x00000000       0xb8
+.debug_ranges   0x00000000       0xa8
  *(.debug_ranges)
  .debug_ranges  0x00000000       0x28 clock.o
  .debug_ranges  0x00000028       0x30 serial.o
- .debug_ranges  0x00000058       0x60 main.o
+ .debug_ranges  0x00000058       0x50 main.o
 
 .debug_macro
  *(.debug_macro)
diff --git a/final_project/Debug/final_project.srec b/final_project/Debug/final_project.srec
index b5a2ee4..4e8f706 100644
--- a/final_project/Debug/final_project.srec
+++ b/final_project/Debug/final_project.srec
@@ -2,7 +2,7 @@ S015000066696E616C5F70726F6A6563742E73726563AF
 S11300000C9466000C9483000C9483000C9483007D
 S11300100C9483000C9483000C9483000C94830050
 S11300200C9483000C9483000C9483000C94830040
-S11300300C9483000C94F5040C9483000C948300BA
+S11300300C9483000C9483000C9483000C94830030
 S11300400C9483000C9483000C9483000C94830020
 S11300500C9483000C9483000C9483000C94830010
 S11300600C9483000C9483000C9483000C94830000
@@ -12,10 +12,10 @@ S11300900C9483000C9483000C9483000C948300D0
 S11300A00C9483000C9483000C9483000C948300C0
 S11300B00C9483000C9483000C9483000C948300B0
 S11300C00C9483000C9483000C94830011241FBEB1
-S11300D0CFEFD8E0DEBFCDBF11E0A0E0B1E0ECE1AE
-S11300E0F5E102C005900D92A83DB107D9F721E0D2
-S11300F0A8EDB1E001C01D92AA3DB207E1F70E944C
-S1130100A1020C948C0A0C940000CF93DF93CDB71A
+S11300D0CFEFD8E0DEBFCDBF11E0A0E0B1E0EEEDA0
+S11300E0F5E102C005900D92A23BB107D9F721E0DA
+S11300F0A2EBB1E001C01D92A43BB207E1F70E945C
+S1130100B2030C94ED0A0C940000CF93DF93CDB7A7
 S1130110DEB780E890E0FC01108281E890E028E0FE
 S1130120FC01208384E890E0FC011182108200002D
 S1130130DF91CF910895CF93DF93CDB7DEB784E8F5
@@ -48,307 +48,317 @@ S11302D00FC089819A812B813C81820F931FFC017D
 S11302E080810E94280189819A8101969A83898359
 S11302F089819A812B813C81820F931FFC0180812B
 S1130300882339F700000F900F900F900F90DF9122
-S1130310CF910895CF93DF93CDB7DEB78CE290E011
-S1130320FC018081882F90E080749927892B11F437
-S113033084E006C080E290E0FC0180818095837FA8
-S1130340DF91CF910895CF93DF93CDB7DEB7639755
-S11303500FB6F894DEBF0FBECDBF898B7B8B6A8B43
-S11303601A8219828989882F90E084709927892BB1
-S113037011F080E289838989837F8A838BE290E00C
-S11303802BE230E0F90130812A812327FC0120830C
-S11303908EE290E02EE230E0F901308129812327BA
-S11303A0FC01208320E030E040E85EE364EA70ED85
-S11303B084EA93E40E9425064A895B8928EE33E0A7
-S11303C0429FC001439F900D529F900D1124CC0178
-S11303D0A0E0B0E0BC01CD010E944008DC01CB01EB
-S11303E08B839C83AD83BE8320E030E04AE755E4F1
-S11303F06B817C818D819E810E943809DC01CB0157
-S11304008F839887A987BA8720E030E040E85FE3CC
-S11304106F81788589859A850E94930788232CF4B7
-S113042081E090E09C878B873FC020E03FEF4FE75F
-S113043057E46F81788589859A850E943309181657
-S11304404CF520E030E040E251E46B817C818D8109
-S11304509E810E943809DC01CB01BC01CD010E94C0
-S11304601108DC01CB019C878B870FC080E991E0E8
-S11304709E878D878D859E850197F1F79E878D8751
-S11304808B859C8501979C878B878B859C85892B85
-S113049069F714C06F81788589859A850E9411084F
-S11304A0DC01CB019C878B878B859C85988B8F8700
-S11304B08F8598890197F1F7988B8F878BE290E06D
-S11304C02BE230E0F90130812A812327FC012083CB
-S11304D08EE290E02EE230E0F90130812981232779
-S11304E0FC012083000063960FB6F894DEBF0FBEB4
-S11304F0CDBFDF91CF910895CF93DF93CDB7DEB712
-S113050081E290E0FC01108282E290E02FEFFC0196
-S113051020838AE290E02FEFFC0120838BE290E0BD
-S11305202FEFFC0120838DE290E020E3FC01208387
-S11305308EE290E02FEFFC0120830000DF91CF9149
-S113054008958F929F92AF92BF92CF92DF92EF92D3
-S1130550FF92CF93DF93CDB7DEB7E3970FB6F8944E
-S1130560DEBF0FBECDBFF8940E9485000E947C02BE
-S11305700E94FF001A82198280E191E00E945E01CC
-S113058007C00E944C01882F90E0C0979A8389830A
-S113059089819A810497ACF789819A811816190682
-S11305A084F716C289819A8182309105D9F083300B
-S11305B0910569F1019709F03FC083E090E09E83C3
-S11305C08D8383E090E09C838B8385E090E0988723
-S11305D08F8383E090E09A87898785E090E09C8709
-S11305E08B872AC084E090E09E838D8382E090E034
-S11305F09C838B8387E090E098878F8383E090E0EF
-S11306009A8789878AE090E09C878B8715C085E06C
-S113061090E09E838D8381E090E09C838B838AE0CD
-S113062090E098878F8385E090E09A8789878FE0B0
-S113063090E09C878B8700001E861D86188A1F8683
-S11306401A8A198A7FC189859A85092E000CAA0BFA
-S1130650BB0BBC01CD010E9442086B017C012B85C0
-S11306603C8589859A85A901481B590BCA01092E25
-S1130670000CAA0BBB0BBC01CD010E9442084B012C
-S11306805C018D819E810197092E000CAA0BBB0B86
-S1130690BC01CD010E944208DC01CB019C01AD01EB
-S11306A0C501B4010E949807DC01CB014C015D0136
-S11306B089899A89092E000CAA0BBB0BBC01CD01B8
-S11306C00E944208DC01CB019C01AD01C501B401CB
-S11306D00E943809DC01CB01BC01CD010E947C07DA
-S11306E0DC01CB019C01AD01C701B6010E941007DA
-S11306F0DC01CB01BC01CD010E940A08DC01CB0165
-S11307009B8F8A8F1C8A1B8A37C00E94190A27E094
-S113071030E0B9010E94A5098D8B8D89833011F4D5
-S113072087E08D8B8D89282F30E081E090E002C036
-S1130730880F991F2A95E2F78C8F8AE00E9428017E
-S11307408D89805D0E9428018AE00E9428019E0113
-S1130750215D3F4F8B899C89820F931F2C8DFC0157
-S113076020838B819C81BC018C8D0E94A3018B8989
-S11307709C8901969C8B8B8B2B893C898A8D9B8DC4
-S11307802817390714F28F8198859093D9018093A3
-S1130790D8010E949B00198E188EC7C086E691E08E
-S11307A00E945E010E94EB008823C1F08091D80171
-S11307B09091D90101979093D9018093D8010E9417
-S11307C0CB000E949B002DEC3CEC4CEC5DE364EA16
-S11307D070ED82E893E40E94250606C00E948A0117
-S11307E0882F90E09F8B8E8B8E899F89892B39F47B
-S11307F08091D8019091D901181619069CF280E0D5
-S113080090E0AAE7B3E489A39AA3ABA3BCA320E036
-S113081030E04AE755E469A17AA18BA19CA10E942A
-S11308203809DC01CB018DA39EA3AFA3B8A720E0B8
-S113083030E040E85FE36DA17EA18FA198A50E94FE
-S1130840930788232CF481E090E09AA789A73FC0FE
-S113085020E03FEF4FE757E46DA17EA18FA198A55B
-S11308600E94330918164CF520E030E040E251E4D0
-S113087069A17AA18BA19CA10E943809DC01CB015A
-S1130880BC01CD010E941108DC01CB019AA789A704
-S11308900FC080E991E09CA78BA78BA59CA501972D
-S11308A0F1F79CA78BA789A59AA501979AA789A771
-S11308B089A59AA5892B69F714C06DA17EA18FA182
-S11308C098A50E941108DC01CB019AA789A789A5E4
-S11308D09AA59EA78DA78DA59EA50197F1F79EA722
-S11308E08DA78D859E8501969E878D879E01215DAE
-S11308F03F4F888D998D820F931FFC018081282F93
-S113090030E08E899F892817390741F48F859889AB
-S11309100196988B8F870E94310502C00E9447057B
-S1130920888D998D0196998F888F288D398D8A8D20
-S11309309B8D281739070CF431CF89899A89019640
-S11309409A8B898B29893A898D819E812817390749
-S11309500CF479CE8F859889092E000CAA0BBB0B59
-S1130960BC01CD010E9442086B017C018D859E85EE
-S1130970092E000CAA0BBB0BBC01CD010E9442083E
-S1130980DC01CB019C01AD01C701B6010E949807AF
-S1130990DC01CB018D8F9E8FAF8FB8A32DEC3CEC87
-S11309A04CE45FE36D8D7E8D8F8D98A10E94330999
-S11309B0882354F089819A8101969A83898380E8F7
-S11309C091E00E945E0104C00E940506000005C07B
-S11309D089819A8103970CF4E5CD89819A810397E3
-S11309E00CF4C8CD0E94E505C5CD1F920F9200906E
-S11309F05F000F9211242F933F934F935F936F9354
-S1130A007F938F939F93AF93BF93EF93FF93CF9372
-S1130A10DF93CDB7DEB78091D8019091D9019C01C5
-S1130A20215031093093D9012093D80118161906A1
-S1130A301CF00E942506FDCF0000DF91CF91FF91AD
-S1130A40EF91BF91AF919F918F917F916F915F9142
-S1130A504F913F912F910F9000925F000F901F9044
-S1130A601895CF93DF93CDB7DEB78DE891E00E9460
-S1130A705E012DEC3CEC4CEC5DE360E070E08CED51
-S1130A8093E40E9425060000DF91CF910895CF934F
-S1130A90DF93CDB7DEB72E970FB6F894DEBF0FBE47
-S1130AA0CDBF88E991E00E945E012DEC3CEC4CE462
-S1130AB05EE36CE57FEC82E893E40E94250680E027
-S1130AC090E0A8ECB1E489839A83AB83BC8320E0F3
-S1130AD030E04AE755E469817A818B819C810E94E8
-S1130AE03809DC01CB018D839E83AF83B88720E076
-S1130AF030E040E85FE36D817E818F8198850E94BC
-S1130B00930788232CF481E090E09A8789873FC07B
-S1130B1020E03FEF4FE757E46D817E818F81988518
-S1130B200E94330918164CF520E030E040E251E40D
-S1130B3069817A818B819C810E943809DC01CB0117
-S1130B40BC01CD010E941108DC01CB019A87898781
-S1130B500FC080E991E09C878B878B859C850197EA
-S1130B60F1F79C878B8789859A8501979A8789876E
-S1130B7089859A85892B69F714C06D817E818F815F
-S1130B8098850E941108DC01CB019A8789878985A1
-S1130B909A859E878D878D859E850197F1F79E871F
-S1130BA08D872DEC3CEC4CE45EE36CE57FEC82E855
-S1130BB093E40E94250600002E960FB6F894DEBF3B
-S1130BC00FBECDBFDF91CF910895CF93DF93CDB703
-S1130BD0DEB78BEA91E00E945E0120E030E040E065
-S1130BE05FE360E070E083E893E40E94250620E080
-S1130BF030E040E05FE360E070E084EC93E40E9466
-S1130C0025060000DF91CF910895CF93DF93CDB7F0
-S1130C10DEB780EC91E00E945E0120E030E040E02D
-S1130C205FE360E070E085EA93E40E94250620E03B
-S1130C3030E040E05FE360E070E083E993E40E9429
-S1130C4025060000DF91CF910895CF93DF93CDB7B0
-S1130C50DEB76E970FB6F894DEBF0FBECDBF6F8BB5
-S1130C60788F898F9A8F2B8F3C8F4D8F5E8F2F8932
-S1130C70388D498D5A8D60E070E080E89FE30E94D2
-S1130C809807DC01CB0120E030E040E050E4BC01F7
-S1130C90CD010E949807DC01CB0120E030E04AE757
-S1130CA054E4BC01CD010E943809DC01CB018B83E3
-S1130CB09C83AD83BE832F89388D498D5A8D60E026
-S1130CC070E080E89FE30E949807DC01CB019C015F
-S1130CD0AD016B8D7C8D8D8D9E8D0E949807DC01FE
-S1130CE0CB01BC01CD010E940A08DC01CB0198872D
-S1130CF08F831A82198281C08B819C81AD81BE81D0
-S1130D0089879A87AB87BC8720E030E04AE755E4BF
-S1130D1069857A858B859C850E943809DC01CB0125
-S1130D208D879E87AF87B88B20E030E040E85FE393
-S1130D306D857E858F8598890E94930788232CF47E
-S1130D4081E090E09A8B898B3FC020E03FEF4FE732
-S1130D5057E46D857E858F8598890E94330918161E
-S1130D604CF520E030E040E251E469857A858B85DA
-S1130D709C850E943809DC01CB01BC01CD010E9495
-S1130D801108DC01CB019A8B898B0FC080E991E0BB
-S1130D909C8B8B8B8B899C890197F1F79C8B8B8B1C
-S1130DA089899A8901979A8B898B89899A89892B50
-S1130DB069F714C06D857E858F8598890E94110816
-S1130DC0DC01CB019A8B898B89899A899E8B8D8BC7
-S1130DD08D899E890197F1F79E8B8D8B8EE290E031
-S1130DE02EE230E0F901308120E12327FC01208349
-S1130DF089819A8101969A8389838F819885298133
-S1130E003A812817390708F477CF00006E960FB699
-S1130E10F894DEBF0FBECDBFDF91CF910895505837
-S1130E20BB27AA270E9427070C94E1080E94D30835
-S1130E3038F00E94DA0820F039F49F3F19F426F4C0
-S1130E400C94D0080EF4E095E7FB0C94A108E92F6C
-S1130E500E94F20858F3BA176207730784079507CC
-S1130E6020F079F4A6F50C942C090EF4E0950B2EE1
-S1130E70BA2FA02D0B01B90190010C01CA01A001E8
-S1130E801124FF27591B99F0593F50F4503E68F143
-S1130E901A16F040A22F232F342F4427585FF3CF84
-S1130EA0469537952795A795F0405395C9F77EF455
-S1130EB01F16BA0B620B730B840BBAF09150A1F09E
-S1130EC0FF0FBB1F661F771F881FC2F70EC0BA0F24
-S1130ED0621F731F841F48F4879577956795B795AC
-S1130EE0F7959E3F08F0B0CF9395880F08F09927A7
-S1130EF0EE0F9795879508950E94140990F09F37F7
-S1130F0048F4911116F40C942D0960E070E080E827
-S1130F109FE3089526F01B16611D711D811D0C941D
-S1130F20A7080C94C2080E947D0808F481E0089583
-S1130F300E94AC070C94E1080E94DA0858F00E9461
-S1130F40D30840F029F45F3F29F00C94A108511113
-S1130F500C942D090C94D0080E94F20868F399238C
-S1130F60B1F3552391F3951B550BBB27AA276217A1
-S1130F707307840738F09F5F5F4F220F331F441FAE
-S1130F80AA1FA9F335D00E2E3AF0E0E832D09150E2
-S1130F905040E695001CCAF72BD0FE2F29D0660FCF
-S1130FA0771F881FBB1F261737074807AB07B0E812
-S1130FB009F0BB0B802DBF01FF2793585F4F3AF018
-S1130FC09E3F510578F00C94A1080C942D095F3FC5
-S1130FD0E4F3983ED4F3869577956795B795F7959E
-S1130FE09F5FC9F7880F911D9695879597F9089586
-S1130FF0E1E0660F771F881FBB1F62177307840722
-S1131000BA0720F0621B730B840BBA0BEE1F88F730
-S1131010E09508950E9411086894B1110C942D096B
-S113102008950E94FA0888F09F5798F0B92F9927DD
-S1131030B751B0F0E1F0660F771F881F991F1AF0BF
-S1131040BA95C9F714C0B13091F00E942C09B1E0EF
-S113105008950C942C09672F782F8827B85F39F0EE
-S1131060B93FCCF3869577956795B395D9F73EF458
-S113107090958095709561957F4F8F4F9F4F089500
-S1131080E89409C097FB3EF490958095709561951E
-S11310907F4F8F4F9F4F9923A9F0F92F96E9BB27D4
-S11310A09395F695879577956795B795F111F8CF50
-S11310B0FAF4BB0F11F460FF1BC06F5F7F4F8F4FBB
-S11310C09F4F16C0882311F096E911C0772321F0B1
-S11310D09EE8872F762F05C0662371F096E8862F49
-S11310E070E060E02AF09A95660F771F881FDAF7A0
-S11310F0880F9695879597F90895990F0008550FCD
-S1131100AA0BE0E8FEEF16161706E807F907C0F089
-S113111012161306E407F50798F0621B730B840B91
-S1131120950B39F40A2661F0232B242B252B21F46B
-S113113008950A2609F4A140A6958FEF811D811D0B
-S1131140089597F99F6780E870E060E00895882328
-S113115071F4772321F09850872B762F07C06623EC
-S113116011F499270DC09051862B70E060E02AF0AD
-S11311709A95660F771F881FDAF7880F96958795DB
-S113118097F908959F3F31F0915020F48795779512
-S11311906795B795880F911D9695879597F908954A
-S11311A09FEF80EC089500240A941616170618067B
-S11311B00906089500240A94121613061406050657
-S11311C00895092E0394000C11F4882352F0BB0FE8
-S11311D040F4BF2B11F460FF04C06F5F7F4F8F4F4B
-S11311E09F4F089557FD9058440F551F59F05F3F86
-S11311F071F04795880F97FB991F61F09F3F79F035
-S113120087950895121613061406551FF2CF4695B6
-S1131210F1DF08C0161617061806991FF1CF869538
-S113122071056105089408950E94FA08A0F0BEE7CC
-S1131230B91788F4BB279F3860F41616B11D672FC1
-S1131240782F8827985FF7CF869577956795B11D96
-S113125093959639C8F30895E894BB2766277727B2
-S1131260CB0197F908950E947D0808F48FEF089543
-S11312700E944B090C94E1080E94D30838F00E94A4
-S1131280DA0820F0952311F00C94A1080C94D008EE
-S113129011240C942D090E94F20870F3959FC1F358
-S11312A0950F50E0551F629FF001729FBB27F00D10
-S11312B0B11D639FAA27F00DB11DAA1F649F662765
-S11312C0B00DA11D661F829F2227B00DA11D621FB4
-S11312D0739FB00DA11D621F839FA00D611D221F6E
-S11312E0749F3327A00D611D231F849F600D211D52
-S11312F0822F762F6A2F11249F5750409AF0F1F0D5
-S113130088234AF0EE0FFF1FBB1F661F771F881F3D
-S113131091505040A9F79E3F510580F00C94A108CC
-S11313200C942D095F3FE4F3983ED4F386957795AA
-S11313306795B795F795E7959F5FC1F7FE2B880FE3
-S1131340911D9695879597F9089597FB072E16F4A6
-S1131350009407D077FD09D00E94B90907FC05D095
-S11313603EF4909581959F4F0895709561957F4FB8
-S11313700895AA1BBB1B51E107C0AA1FBB1FA617D8
-S1131380B70710F0A61BB70B881F991F5A95A9F72A
-S113139080959095BC01CD0108958F929F92AF9254
-S11313A0BF92CF92DF92EF92FF92CF93DF93EC0143
-S11313B0688179818A819B81611571058105910517
-S11313C021F464E279ED8BE597E02DE133EF41E020
-S11313D050E00E94290A49015A019B01AC01A7EA85
-S11313E0B1E40E94480A6B017C01ACEEB4EFA501A4
-S11313F094010E94560ADC01CB018C0D9D1DAE1D8B
-S1131400BF1DB7FF03C00197A109B0488883998322
-S1131410AA83BB839F77DF91CF91FF90EF90DF90FA
-S1131420CF90BF90AF909F908F9008950E94CD0968
-S1131430089580E091E00E94CD090895A0E0B0E015
-S11314408093000190930101A0930201B0930301E2
-S11314500895052E97FB1EF400940E94400A57FD40
-S113146007D00E945B0A07FC03D04EF40C94400A98
-S113147050954095309521953F4F4F4F5F4F0895BC
-S113148090958095709561957F4F8F4F9F4F0895EC
-S11314900E947D0AA59F900DB49F900DA49F800D7E
-S11314A0911D11240895B7FF0C94480A0E94480A1C
-S11314B0821B930B0895A1E21A2EAA1BBB1BFD01EC
-S11314C00DC0AA1FBB1FEE1FFF1FA217B307E4071F
-S11314D0F50720F0A21BB30BE40BF50B661F771F77
-S11314E0881F991F1A9469F7609570958095909557
-S11314F09B01AC01BD01CF010895A29FB001B39F30
-S1131500C001A39F700D811D1124911DB29F700D08
-S10F1510811D1124911D0895F894FFCF53
-S113151C0100000074696D657220746573740A00AF
-S113152C53494D4F4E2047414D450A456E746572E3
-S113153C20796F7572207374617274696E6720649C
-S113154C6966666963756C7479206C6576656C3A4A
-S113155C0A312E20456173790A322E204D6F646551
-S113156C726174650A332E2047697665206D652097
-S113157C7061696E2E000A676F7420656C656D6509
-S113158C6E742C2077616974696E672E2E2E0A0096
-S113159C0A6E657874206C6576656C0A000A436F74
-S11315AC7272656374210A000A496E636F72726504
-S11315BC63742067756573732E0A000A596F75205E
-S11315CC62656174207468652067616D65210A0029
-S11315DC0A596F75206C6F6F73652C2074727920A7
-S10B15EC616761696E3F0A00AA
+S1130310CF910895CF93DF93CDB7DEB7A1970FB6F2
+S1130320F894DEBF0FBECDBF80E090E0A8ECB2E44D
+S113033089839A83AB83BC838CE290E0FC01808147
+S1130340882F90E080749927892B09F07FC00000E2
+S11303508CE290E0FC018081882F90E080749927E2
+S1130360892BB1F389819A81AB81BC818A879B8770
+S1130370AC87BD8720E030E04AE755E46A857B8599
+S11303808C859D850E949909DC01CB018E879F870E
+S1130390A88BB98B20E030E040E85FE36E857F8571
+S11303A0888999890E94F40788232CF481E090E0DD
+S11303B09B8B8A8B3FC020E03FEF4FE757E46E856D
+S11303C07F85888999890E94940918164CF520E044
+S11303D030E040E251E46A857B858C859D850E94EE
+S11303E09909DC01CB01BC01CD010E947208DC013A
+S11303F0CB019B8B8A8B0FC080E991E09D8B8C8B0A
+S11304008C899D890197F1F79D8B8C8B8A899B89B7
+S113041001979B8B8A8B8A899B89892B69F714C0E6
+S11304206E857F85888999890E947208DC01CB01D9
+S11304309B8B8A8B8A899B899F8B8E8B8E899F89C4
+S11304400197F1F79F8B8E8B84E085C080E290E06A
+S1130450FC0180818095837F89878985882309F4BD
+S113046079C0000080E290E0FC0180818F3FD1F7E9
+S113047089819A81AB81BC818D839E83AF83B88748
+S113048020E030E04AE755E46D817E818F819885D4
+S11304900E949909DC01CB01888F998FAA8FBB8FA9
+S11304A020E030E040E85FE3688D798D8A8D9B8D94
+S11304B00E94F40788232CF481E090E09D8F8C8FB8
+S11304C03FC020E03FEF4FE757E4688D798D8A8D78
+S11304D09B8D0E94940918164CF520E030E040E210
+S11304E051E46D817E818F8198850E949909DC0198
+S11304F0CB01BC01CD010E947208DC01CB019D8FB0
+S11305008C8F0FC080E991E09F8F8E8F8E8D9F8D91
+S11305100197F1F79F8F8E8F8C8D9D8D01979D8F05
+S11305208C8F8C8D9D8D892B69F714C0688D798D86
+S11305308A8D9B8D0E947208DC01CB019D8F8C8F6C
+S11305408C8D9D8D99A388A388A199A10197F1F71A
+S113055099A388A38985A1960FB6F894DEBF0FBE30
+S1130560CDBFDF91CF910895CF93DF93CDB7DEB7A1
+S113057063970FB6F894DEBF0FBECDBF898B7B8B1C
+S11305806A8B1A8219828989882F90E0847099274E
+S1130590892B11F080E289838989837F8A838BE2A6
+S11305A090E02BE230E0F90130812A812327FC011D
+S11305B020838EE290E02EE230E0F901308129813F
+S11305C02327FC01208320E030E040E85EE364EA76
+S11305D070ED84EA93E40E9486064A895B8928EEDA
+S11305E033E0429FC001439F900D529F900D112410
+S11305F0CC01A0E0B0E0BC01CD010E94A108DC0167
+S1130600CB018B839C83AD83BE8320E030E04AE73B
+S113061055E46B817C818D819E810E949909DC0166
+S1130620CB018F839887A987BA8720E030E040E820
+S11306305FE36F81788589859A850E94F407882312
+S11306402CF481E090E09C878B873FC020E03FEF53
+S11306504FE757E46F81788589859A850E949409CC
+S113066018164CF520E030E040E251E46B817C81C7
+S11306708D819E810E949909DC01CB01BC01CD01D1
+S11306800E947208DC01CB019C878B870FC080E934
+S113069091E09E878D878D859E850197F1F79E87D2
+S11306A08D878B859C8501979C878B878B859C8503
+S11306B0892B69F714C06F81788589859A850E9492
+S11306C07208DC01CB019C878B878B859C85988B7A
+S11306D08F878F8598890197F1F7988B8F878BE2A5
+S11306E090E02BE230E0F90130812A812327FC01DC
+S11306F020838EE290E02EE230E0F90130812981FE
+S11307002327FC012083000063960FB6F894DEBF14
+S11307100FBECDBFDF91CF910895CF93DF93CDB7B7
+S1130720DEB781E290E0FC01108282E290E02FEFDC
+S1130730FC0120838AE290E02FEFFC0120838BE20E
+S113074090E02FEFFC0120838DE290E020E3FC0198
+S113075020838EE290E02FEFFC0120830000DF91E4
+S1130760CF9108958F929F92AF92BF92CF92DF92D2
+S1130770EF92FF92CF93DF93CDB7DEB7A5970FB675
+S1130780F894DEBF0FBECDBFF8940E9485000E948E
+S11307908D030E94FF001A82198284E091E00E9476
+S11307A05E0107C00E944C01882F90E0C0979A8395
+S11307B0898389819A810497ACF789819A81181673
+S11307C0190684F7A2C189819A8182309105D9F0F2
+S11307D08330910569F1019709F03FC083E090E00F
+S11307E09E838D8383E090E09C838B8385E090E0FF
+S11307F098878F8383E090E09A87898785E090E0EB
+S11308009C878B872AC084E090E09E838D8382E05E
+S113081090E09C838B8387E090E098878F8383E0CC
+S113082090E09A8789878AE090E09C878B8715C03F
+S113083085E090E09E838D8381E090E09C838B83B0
+S11308408AE090E098878F8385E090E09A87898793
+S11308508FE090E09C878B8700001E861D86188A97
+S11308601F861A8A198A0BC189859A85092E000C5C
+S1130870AA0BBB0BBC01CD010E94A3086B017C0138
+S11308802B853C8589859A85A901481B590BCA018A
+S1130890092E000CAA0BBB0BBC01CD010E94A308BE
+S11308A04B015C018D819E810197092E000CAA0BDE
+S11308B0BB0BBC01CD010E94A308DC01CB019C0150
+S11308C0AD01C501B4010E94F907DC01CB014C0163
+S11308D05D0189899A89092E000CAA0BBB0BBC0106
+S11308E0CD010E94A308DC01CB019C01AD01C5012F
+S11308F0B4010E949909DC01CB01BC01CD010E9425
+S1130900DD07DC01CB019C01AD01C701B6010E94EA
+S11309107107DC01CB01BC01CD010E946B08DC0135
+S1130920CB019B8F8A8F1C8A1B8A37C00E947A0A4C
+S113093027E030E0B9010E94060A8D8B8D8983304F
+S113094011F487E08D8B8D89282F30E081E090E0D1
+S113095002C0880F991F2A95E2F78C8F8AE00E94C3
+S113096028018D89805D0E9428018AE00E94280167
+S11309709E012F5D3F4F8B899C89820F931F2C8D85
+S1130980FC0120838B819C81BC018C8D0E94B4026C
+S11309908B899C8901969C8B8B8B2B893C898A8DB6
+S11309A09B8D2817390714F28F8198859093B30192
+S11309B08093B2010E949B00198E188E53C01F8A27
+S11309C01E8A0E94EB008823C1F08091B2019091AD
+S11309D0B30101979093B3018093B2010E94CB00BD
+S11309E00E949B002DEC3CEC4CEC5DE364EA70ED62
+S11309F082E893E40E94860606C00E948A01882F3A
+S1130A0090E09F8B8E8B8E899F89892B39F48091FE
+S1130A10B2019091B301181619069CF28D859E853A
+S1130A2001969E878D879E012F5D3F4F888D998DFE
+S1130A30820F931FFC018081282F30E08E899F89CB
+S1130A402817390741F48F8598890196988B8F87E9
+S1130A500E94920502C00E94A805888D998D019676
+S1130A60998F888F288D398D8A8D9B8D281739070A
+S1130A700CF4A5CF89899A8901969A8B898B298947
+S1130A803A898D819E81281739070CF4EDCE8F8524
+S1130A909889092E000CAA0BBB0BBC01CD010E9446
+S1130AA0A3086B017C018D859E85092E000CAA0B81
+S1130AB0BB0BBC01CD010E94A308DC01CB019C014E
+S1130AC0AD01C701B6010E94F907DC01CB018D8F8E
+S1130AD09E8FAF8FB8A32DEC3CEC4CE45FE36D8D9F
+S1130AE07E8D8F8D98A10E949409882354F089816A
+S1130AF09A8101969A8389838AE591E00E945E0136
+S1130B0004C00E946606000005C089819A8103978B
+S1130B100CF459CE89819A8103970CF43CCE0E943F
+S1130B20460639CECF93DF93CDB7DEB787E691E0A3
+S1130B300E945E012DEC3CEC4CEC5DE360E070E067
+S1130B408CED93E40E9486060000DF91CF91089516
+S1130B50CF93DF93CDB7DEB72E970FB6F894DEBFF1
+S1130B600FBECDBF82E791E00E945E012DEC3CEC0C
+S1130B704CE45EE36CE57FEC82E893E40E94860635
+S1130B8080E090E0A8ECB1E489839A83AB83BC83D2
+S1130B9020E030E04AE755E469817A818B819C81C9
+S1130BA00E949909DC01CB018D839E83AF83B887B2
+S1130BB020E030E040E85FE36D817E818F8198859D
+S1130BC00E94F40788232CF481E090E09A878987B7
+S1130BD03FC020E03FEF4FE757E46D817E818F8176
+S1130BE098850E94940918164CF520E030E040E204
+S1130BF051E469817A818B819C810E949909DC018D
+S1130C00CB01BC01CD010E947208DC01CB019A87A3
+S1130C1089870FC080E991E09C878B878B859C85B1
+S1130C200197F1F79C878B8789859A8501979A8725
+S1130C30898789859A85892B69F714C06D817E819E
+S1130C408F8198850E947208DC01CB019A8789877D
+S1130C5089859A859E878D878D859E850197F1F775
+S1130C609E878D872DEC3CEC4CE45EE36CE57FECD9
+S1130C7082E893E40E94860600002E960FB6F8944C
+S1130C80DEBF0FBECDBFDF91CF910895CF93DF9329
+S1130C90CDB7DEB785E891E00E945E0120E030E048
+S1130CA040E05FE360E070E083E893E40E9486063E
+S1130CB020E030E040E05FE360E070E084EC93E447
+S1130CC00E9486060000DF91CF910895CF93DF93B1
+S1130CD0CDB7DEB78AE991E00E945E0120E030E002
+S1130CE040E05FE360E070E085EA93E40E948606FA
+S1130CF020E030E040E05FE360E070E083E993E40B
+S1130D000E9486060000DF91CF910895CF93DF9370
+S1130D10CDB7DEB76E970FB6F894DEBF0FBECDBF6A
+S1130D206F8B788F898F9A8F2B8F3C8F4D8F5E8F2F
+S1130D302F89388D498D5A8D60E070E080E89FE3FB
+S1130D400E94F907DC01CB0120E030E040E050E4F0
+S1130D50BC01CD010E94F907DC01CB0120E030E0A9
+S1130D604AE754E4BC01CD010E949909DC01CB019E
+S1130D708B839C83AD83BE832F89388D498D5A8D97
+S1130D8060E070E080E89FE30E94F907DC01CB019A
+S1130D909C01AD016B8D7C8D8D8D9E8D0E94F9071C
+S1130DA0DC01CB01BC01CD010E946B08DC01CB014D
+S1130DB098878F831A82198281C08B819C81AD812F
+S1130DC0BE8189879A87AB87BC8720E030E04AE7F9
+S1130DD055E469857A858B859C850E949909DC0197
+S1130DE0CB018D879E87AF87B88B20E030E040E849
+S1130DF05FE36D857E858F8598890E94F40788233B
+S1130E002CF481E090E09A8B898B3FC020E03FEF87
+S1130E104FE757E46D857E858F8598890E949409F4
+S1130E2018164CF520E030E040E251E469857A85FB
+S1130E308B859C850E949909DC01CB01BC01CD0105
+S1130E400E947208DC01CB019A8B898B0FC080E968
+S1130E5091E09C8B8B8B8B899C890197F1F79C8B00
+S1130E608B8B89899A8901979A8B898B89899A892D
+S1130E70892B69F714C06D857E858F8598890E94BA
+S1130E807208DC01CB019A8B898B89899A899E8BA4
+S1130E908D8B8D899E890197F1F79E8B8D8B8EE2C8
+S1130EA090E02EE230E0F901308120E12327FC01BB
+S1130EB0208389819A8101969A8389838F81988579
+S1130EC029813A812817390708F477CF00006E96F4
+S1130ED00FB6F894DEBF0FBECDBFDF91CF9108955A
+S1130EE05058BB27AA270E9488070C9442090E94E5
+S1130EF0340938F00E943B0920F039F49F3F19F47B
+S1130F0026F40C9431090EF4E095E7FB0C940209E5
+S1130F10E92F0E94530958F3BA176207730784072D
+S1130F20950720F079F4A6F50C948D090EF4E0955C
+S1130F300B2EBA2FA02D0B01B90190010C01CA018F
+S1130F40A0011124FF27591B99F0593F50F4503E3A
+S1130F5068F11A16F040A22F232F342F4427585F2C
+S1130F60F3CF469537952795A795F0405395C9F744
+S1130F707EF41F16BA0B620B730B840BBAF09150FC
+S1130F80A1F0FF0FBB1F661F771F881FC2F70EC09B
+S1130F90BA0F621F731F841F48F48795779567956E
+S1130FA0B795F7959E3F08F0B0CF9395880F08F05A
+S1130FB09927EE0F9795879508950E94750990F0EB
+S1130FC09F3748F4911116F40C948E0960E070E098
+S1130FD080E89FE3089526F01B16611D711D811D95
+S1130FE00C9408090C9423090E94DE0808F481E09B
+S1130FF008950E940D080C9442090E943B0958F080
+S11310000E94340940F029F45F3F29F00C9402094E
+S113101051110C948E090C9431090E94530968F300
+S11310209923B1F3552391F3951B550BBB27AA279D
+S113103062177307840738F09F5F5F4F220F331FD7
+S1131040441FAA1FA9F335D00E2E3AF0E0E832D09F
+S113105091505040E695001CCAF72BD0FE2F29D0A2
+S1131060660F771F881FBB1F261737074807AB0774
+S1131070B0E809F0BB0B802DBF01FF2793585F4FE9
+S11310803AF09E3F510578F00C9402090C948E09B5
+S11310905F3FE4F3983ED4F3869577956795B795CB
+S11310A0F7959F5FC9F7880F911D9695879597F9D6
+S11310B00895E1E0660F771F881FBB1F621773074F
+S11310C08407BA0720F0621B730B840BBA0BEE1F64
+S11310D088F7E09508950E9472086894B1110C9401
+S11310E08E0908950E945B0988F09F5798F0B92FE4
+S11310F09927B751B0F0E1F0660F771F881F991F49
+S11311001AF0BA95C9F714C0B13091F00E948D0954
+S1131110B1E008950C948D09672F782F8827B85F64
+S113112039F0B93FCCF3869577956795B395D9F7A0
+S11311303EF490958095709561957F4F8F4F9F4FAA
+S11311400895E89409C097FB3EF4909580957095B6
+S113115061957F4F8F4F9F4F9923A9F0F92F96E9FF
+S1131160BB279395F695879577956795B795F11174
+S1131170F8CFFAF4BB0F11F460FF1BC06F5F7F4F11
+S11311808F4F9F4F16C0882311F096E911C0772323
+S113119021F09EE8872F762F05C0662371F096E82C
+S11311A0862F70E060E02AF09A95660F771F881FFB
+S11311B0DAF7880F9695879597F90895990F00089F
+S11311C0550FAA0BE0E8FEEF16161706E807F90715
+S11311D0C0F012161306E407F50798F0621B730BB0
+S11311E0840B950B39F40A2661F0232B242B252B31
+S11311F021F408950A2609F4A140A6958FEF811DD4
+S1131200811D089597F99F6780E870E060E0089574
+S1131210882371F4772321F09850872B762F07C009
+S1131220662311F499270DC09051862B70E060E07D
+S11312302AF09A95660F771F881FDAF7880F96951C
+S1131240879597F908959F3F31F0915020F4879541
+S113125077956795B795880F911D9695879597F91A
+S113126008959FEF80EC089500240A94161617063B
+S113127018060906089500240A9412161306140683
+S113128005060895092E0394000C11F4882352F0E6
+S1131290BB0F40F4BF2B11F460FF04C06F5F7F4F9E
+S11312A08F4F9F4F089557FD9058440F551F59F085
+S11312B05F3F71F04795880F97FB991F61F09F3F3F
+S11312C079F087950895121613061406551FF2CF68
+S11312D04695F1DF08C0161617061806991FF1CFB8
+S11312E0869571056105089408950E945B09A0F034
+S11312F0BEE7B91788F4BB279F3860F41616B11DF2
+S1131300672F782F8827985FF7CF8695779567950D
+S1131310B11D93959639C8F30895E894BB276627C1
+S11313207727CB0197F908950E94DE0808F48FEF20
+S113133008950E94AC090C9442090E94340938F0C3
+S11313400E943B0920F0952311F00C9402090C949F
+S1131350310911240C948E090E94530970F3959F4E
+S1131360C1F3950F50E0551F629FF001729FBB2798
+S1131370F00DB11D639FAA27F00DB11DAA1F649F34
+S11313806627B00DA11D661F829F2227B00DA11DE7
+S1131390621F739FB00DA11D621F839FA00D611D6D
+S11313A0221F749F3327A00D611D231F849F600D8E
+S11313B0211D822F762F6A2F11249F5750409AF0B7
+S11313C0F1F088234AF0EE0FFF1FBB1F661F771F43
+S11313D0881F91505040A9F79E3F510580F00C940E
+S11313E002090C948E095F3FE4F3983ED4F386958A
+S11313F077956795B795F795E7959F5FC1F7FE2BAE
+S1131400880F911D9695879597F9089597FB072E58
+S113141016F4009407D077FD09D00E941A0A07FC3D
+S113142005D03EF4909581959F4F089570956195F0
+S11314307F4F0895AA1BBB1B51E107C0AA1FBB1F06
+S1131440A617B70710F0A61BB70B881F991F5A954C
+S1131450A9F780959095BC01CD0108958F929F9234
+S1131460AF92BF92CF92DF92EF92FF92CF93DF932E
+S1131470EC01688179818A819B81611571058105FF
+S1131480910521F464E279ED8BE597E02DE133EFEA
+S113149041E050E00E948A0A49015A019B01AC01D3
+S11314A0A7EAB1E40E94A90A6B017C01ACEEB4EF97
+S11314B0A50194010E94B70ADC01CB018C0D9D1D8E
+S11314C0AE1DBF1DB7FF03C00197A109B0488883B3
+S11314D09983AA83BB839F77DF91CF91FF90EF908D
+S11314E0DF90CF90BF90AF909F908F9008950E940F
+S11314F02E0A089580E091E00E942E0A0895A0E04B
+S1131500B0E08093000190930101A0930201B09395
+S113151003010895052E97FB1EF400940E94A10A6E
+S113152057FD07D00E94BC0A07FC03D04EF40C946C
+S1131530A10A50954095309521953F4F4F4F5F4FED
+S1131540089590958095709561957F4F8F4F9F4F2B
+S113155008950E94DE0AA59F900DB49F900DA49F4C
+S1131560800D911D11240895B7FF0C94A90A0E94BF
+S1131570A90A821B930B0895A1E21A2EAA1BBB1B76
+S1131580FD010DC0AA1FBB1FEE1FFF1FA217B3074B
+S1131590E407F50720F0A21BB30BE40BF50B661F61
+S11315A0771F881F991F1A9469F760957095809525
+S11315B090959B01AC01BD01CF010895A29FB0019C
+S11315C0B39FC001A39F700D811D1124911DB29F73
+S11115D0700D811D1124911D0895F894FFCF14
+S11315DE0100000053494D4F4E2047414D450A45E9
+S11315EE6E74657220796F7572207374617274698A
+S11315FE6E6720646966666963756C7479206C65C0
+S113160E76656C3A0A312E20456173790A322E20A2
+S113161E4D6F6465726174650A332E204769766571
+S113162E206D65207061696E2E000A6E65787420D7
+S113163E6C6576656C0A000A436F72726563742179
+S113164E0A000A496E636F7272656374206775656A
+S113165E73732E0A000A596F7520626561742074C3
+S113166E68652067616D65210A000A596F75206CE3
+S113167E6F6F73652C2074727920616761696E3F98
+S105168E0A004C
 S9030000FC
diff --git a/final_project/Debug/main.o b/final_project/Debug/main.o
index 4ab8911..7248a29 100644
Binary files a/final_project/Debug/main.o and b/final_project/Debug/main.o differ
diff --git a/final_project/Debug/serial.o b/final_project/Debug/serial.o
index fcbdfff..06e4c3f 100644
Binary files a/final_project/Debug/serial.o and b/final_project/Debug/serial.o differ
diff --git a/final_project/clock.c b/final_project/clock.c
index 7c216fc..ce4ee11 100644
--- a/final_project/clock.c
+++ b/final_project/clock.c
@@ -10,22 +10,24 @@ void timer_init_ctc() {
 	TCCR1A = 0x00; //WGM10 = 0, WGM11 = 0 (CTC mode when combined with WGM12 in TCCR1B)
 	TCCR1B = (1 << WGM12);
 	TCNT1 = 0; // initialize timer at 0
-	//TIMSK1 |= (1<<OCIE1A); // enable int at timer1
 
 }
 
 void start_timer() {
 	TCNT1 = 0;
-	OCR1A = 0x3d09; // 1 second
-	if(TIFR1 & (1 << OCF1A)) TIFR1 |= (1 << OCF1A);
-	TCCR1B |=  (1<<CS12) | (1 << CS10); //start timer with 1024 prescalar
+	//OCRN1A = (seconds to wait / (prescaler / f_cpu))
+	OCR1A = 0x3d09; // we'll only need to delay 1 second 
+	if(TIFR1 & (1 << OCF1A)) TIFR1 |= (1 << OCF1A); //discard possible compare match
+	TCCR1B |=  (1<<CS12) | (1 << CS10); //start timer with 1024 prescaler
 }
 
+//disable timer
 void stop_timer() {
-	if(TIFR1 & (1 << OCF1A)) TIFR1 |= (1 << OCF1A);
-	TIMSK1 = (1 << WGM12);
+	if(TIFR1 & (1 << OCF1A)) TIFR1 |= (1 << OCF1A); //discard possible compare match
+	TIMSK1 = (1 << WGM12); //no clock source
 }
 
+//see if a second pas passed since start_timer
 bool timer_done() {
-	return (TIFR1 & (1 << OCF1A)); 
+	return (TIFR1 & (1 << OCF1A)); //check if compare match
 }
\ No newline at end of file
diff --git a/final_project/main.c b/final_project/main.c
index f301ef5..926cb99 100644
--- a/final_project/main.c
+++ b/final_project/main.c
@@ -18,15 +18,45 @@
 volatile int seconds_remaining; //will be used by ISR
 
 #define SPEAKER_PORT PORTE
-#define SPEAKER_PIN 4 //rename?
+#define SPEAKER_PIN 4 
 #define ELEMENT_COUNT 7
 
-//TODO get_button and display_element unnecessarily complex
+
+
+
+/** GETTING/DISPLAYING ELEMENTS
+  * Two of the LEDs are connected to the RX1/TX1 pins, used for serial.
+  * Because of this, there's 7 possible elements.
+  * Here's how elements (guesses) are retrieved from buttons and displayed on LEDs:
+  
+  * If the button is on PINA, the element is set to the reading from PINA, 
+  * unmodified (aside from the two invalid buttons being masked).
+  * this allows easy LED outputting.
+  
+  * If the button is the single one connected to PORTE,
+  * the 2nd bit is set. When displaying elements, we assume
+  * the second bit is the middle PORTE LED.
+  
+  */
+
 uint8_t get_button() {
-	if(~PINE & (1 << 6)) return (1 << 2);
-	return ((~PINA) & ~(0b1100)); //TODO clean up
+	//debouncing is done by waiting for the user to stop pressing the button,
+	//then waiting an amount of time for the bouncing to stop.
+	const double debounce_wait = 100.0;
+	if(~PINE & (1 << 6)) {
+		while((~PINE & (1<<6)));
+		_delay_ms(debounce_wait);
+		return (1 << 2);
+	}
+	uint8_t porta_state = (~PINA) & ~(0b1100);
+	if(porta_state) {
+		while(PINA != 0xff);
+		_delay_ms(debounce_wait);	
+	}
+	return porta_state;
 }
 
+//for documentation see above paragraph
 void display_element(uint8_t element, unsigned int time) {
 	uint8_t portd_state = 0;
 	uint8_t porte_state = 0;
@@ -42,23 +72,19 @@ void display_element(uint8_t element, unsigned int time) {
 }
 
 void init_io() {
+	//initilize IO registers
+	//Buttons
 	DDRA = 0x00;
 	PORTA = 0xff;
 	
-	DDRD = 0xff; 
+	//LEDs
+	DDRD = 0xff;
 	PORTD = 0xff;
 	
-	DDRE = (1 << 4) | (1 << 5);
+	//speaker and middle LED
+	DDRE = (1 << 4) | (1 << 5); 
 	PORTE = 0xff;	
 }
-void test_timer() {
-	for(;;)	{
-		usart_txstr("timer test\n");
-		start_timer();
-		while(!timer_done());
-		stop_timer();
-	}
-}
 
 int main(void) {
 	cli();
@@ -78,6 +104,7 @@ int main(void) {
 		"2. Moderate\n"
 		"3. Give me pain.");
 
+		//ask until valid input
 		while((level > 3) || (level < 1)) level = (int)(usart_rxt_blocking() - '0');
 		
 	
@@ -91,7 +118,7 @@ int main(void) {
 			double score;
 			uint8_t element_list[5]; // TODO
 	
-	
+			//this is where the level properties are set depending on level
 			switch(level) {
 				case 1:
 					sets = 3;
@@ -117,31 +144,39 @@ int main(void) {
 			}
 
 	
-			//main level
+			//it's easier to make a variable to count the number of guesses (max_score)
+			//and increment current_score after each correct guess to calculate total score
+			//as the number of elements per set scale.
 			int max_score = 0;
-			int current_score = 0;
+			int current_score = 0; 
 			for(int set = 0; set < sets; set++) {
+				//scale from elements_min (first set) to elements_max (last set)
 				int elements = elements_min + ceil(((elements_max - elements_min) / (float)(sets - 1)) * set);
-				//generate, display elements
+				
+				//randomly get, display elements
 				for(int element = 0; element < elements; element++) {
 					uint8_t element_bit = (rand() % ELEMENT_COUNT);
-					if(element_bit == 3) element_bit = 7;
+					// button 3 should never be pressed, so if 3 is randomly generated,
+					// we make it the last LED. We only generate 7 potential elements. 
+					if(element_bit == 3) element_bit = 7;  
 					uint8_t this_element = 1 << element_bit;
 					usart_txt('\n');
 					usart_txt(element_bit + '0');
 					usart_txt('\n');
-					element_list[element] = this_element; // could optimize
+					element_list[element] = this_element; //will be compared to guesses later
 					display_element(this_element, display_time);
 					
 				}
-				//get elements
+				//get elements from buttono presses
+				//we'll poll the timer to see if a second has passed
+				//as timer only supports a max of 0xffff * (1024 / 16000000) seconds
 				seconds_remaining = response_time;
 				start_timer();
 				uint16_t guess;
 				for(int element = 0; element < elements; element++) {
-					usart_txstr("\ngot element, waiting...\n");
+					guess = 0;
 					do {
-						if(timer_done()) {
+						if(timer_done()) { //accounts for seconds passed
 							seconds_remaining--;
 							stop_timer(); //TODO only need one function
 							start_timer();
@@ -149,7 +184,6 @@ int main(void) {
 						}
 						else { guess = get_button(); }
 					} while((!guess) && (seconds_remaining > 0));
-					_delay_ms(250); //prevent double press
 					max_score++;
 					if(guess == element_list[element]) {
 						current_score++;
@@ -160,25 +194,19 @@ int main(void) {
 					}
 				}	
 			}
+			//where we check the score. Score is calculated per level.
+			//If score under 80, we break back to the menu.
 			score = (float)current_score / max_score;
 			if(score >= .8) { 
 				level++;
 				usart_txstr("\nnext level\n"); 
-				}
+			}
 			else { 
 				loose(); 
 				break;
 			}
 		}
-		if(level >= 3) win();
-	}
-}
-
-//timer interrupt
-ISR(TIMER1_COMPA_vect) {
-	if(seconds_remaining-- > 0) return;
-	for(;;) {
-		beep();
+		if(level >= 3) win(); //you win if you get past level 3
 	}
 }
 
@@ -206,8 +234,14 @@ void loose() {
 	beep(294., .5);
 }
 
-
-//TODO move somewhere else
+/** can handle specific frequencies for a durientation of time.
+ * speaker_ms is caculated by taking the period, dividing by 2
+ * (as we need to flip speaker state once per cycle)
+ * then multiplies it by 1000 to convert to ms for _delay_ms.
+ * We control how long its played by making it loop,
+ * loop count is durientation of note / period. 
+ * loop_count will be off by a max of 1 period.
+ **/
 void beep(double frequency, double durientation) {
 	double speaker_ms = ((1.0 / frequency) / 2.0) * 1000.0; //TODO clean up
 	int loop_count = durientation / (1.0 / frequency);
diff --git a/final_project/serial.c b/final_project/serial.c
index bb5b58f..7a230ef 100644
--- a/final_project/serial.c
+++ b/final_project/serial.c
@@ -5,14 +5,19 @@
  *  Author: bsw9xd
  */ 
 #include "serial.h"
+
+#define F_CPU 16000000UL
+#define BAUD 9600 //standard minimum baud rate
 
 void usart_init() {
-	volatile int ubrr = (F_CPU / (16UL * BAUD)) - 1; //TODO: why is this volatile int???
+	volatile int ubrr = (F_CPU / (16UL * BAUD)) - 1;
 	UCSR1A = 0; //async normal communication
+	//enable transmission/reception
 	UCSR1B = (1 << TXEN) | (1 << RXEN);
+	//8 bits per packet, no parity, 1 stop bit
 	UCSR1C = (1 << UCSZ0) | (1 << UCSZ1);
 	
-	
+	//set baud rate
 	UBRR1H = (unsigned char)(ubrr << 8);
 	UBRR1L = (unsigned char)ubrr;
 }
@@ -23,17 +28,16 @@ void usart_txt(char data) { //transmit data
 	
 }
 char usart_rxt() {
-	if(UCSR1A & (1 << RXC)) {
-		return UDR1;
-	}
-	return '\0';
+	if(UCSR1A & (1 << RXC)) { return UDR1; } //attempt to get input,
+	return '\0'; //if there is none, then return null char
 }
 
-char usart_rxt_blocking() { //TODO maybe replace usart_txt
-	while(!(UCSR1A & (1 << RXC))); //TODO simplify
+char usart_rxt_blocking() {
+	while(!(UCSR1A & (1 << RXC)));  //wait for input via polling
 	return UDR1;
 }
 
 void usart_txstr(char *str) {
+	//transmit strong character by character untill null terminator
 	for(int i = 0; str[i] != '\0'; i++) usart_txt(str[i]);
 }
diff --git a/final_project/serial.h b/final_project/serial.h
index 6b5d3d2..681359f 100644
--- a/final_project/serial.h
+++ b/final_project/serial.h
@@ -8,9 +8,7 @@
 #define SERIAL_H
 
 #include <avr/io.h>
-
-#define F_CPU 16000000UL
-#define BAUD 9600
+
 
 void usart_init();
 void usart_txt(char data);