text: //Generated by Nintendump
  #include <idc.idc>
  
  static main () {
  	MakeName(0x80003144, "start");
  	MakeName(0x800032b0, "initRegisters");
  	MakeComm(0x80003324, "Initial stack pointer value");
  	MakeComm(0x8000332c, "Defines _SDA2_BASE_");
  	MakeComm(0x80003334, "Defines _SDA_BASE_");
  	MakeName(0x80003540, "memcpy");
  	SetFunctionCmt(0x80003540, "r3 = destination\nr4 = source\nr5 = size", 0);
  	SetFunctionCmt(0x8000d47c, "Something to do with RARC loading?", 0);
  	MakeComm(0x8000d4a8, "r5 points to a pointer to the \"ROOT\" node of a RARC file");
  	MakeComm(0x800149cc, "Writes to 0x803cac6c");
  	MakeName(0x80014b28, "Write0x803cac6c");
  	MakeComm(0x80014b28, "Writes to 0x803cac6c");
  	MakeComm(0x800155b8, "Load the value of 0x803cac6c");
  	MakeComm(0x800155c0, "If the value of the pointer at r3 is equal to 0 don't try to branch to it.");
  	MakeName(0x800155dc, "InvalidAddress");
  	MakeName(0x800155e0, "RestoreRegisters");
  	MakeComm(0x800155e0, "Restores the original link register and the value of r1");
  	SetFunctionCmt(0x800155f0, "Very similar to 800155A8", 0);
  	MakeComm(0x800158a0, "r0 points to the filesystem tree of a RARC archive");
  	MakeComm(0x800174bc, "80017D28");
  	MakeName(0x80017d28, "LoadBLO_SectionHeader");
  	MakeComm(0x80017d28, "Move the stack pointer back 10");
  	SetFunctionCmt(0x80017d28, "Copy BLO section header to memory\nBranched to from 80017498\n\n\nr3 = Address of a structure:\n    struct unk {\n        0x8 = File location\n        0xC = File size\n        0x10 = Section offset from start of file\n    }\nr4 = Where to load the BLO section header\nr5 = Section header size", 0);
  	MakeComm(0x80017d30, "Write link register to the stack");
  	MakeComm(0x80017d34, "Write r30 to the stack");
  	MakeComm(0x80017d40, "Read section offset");
  	MakeComm(0x80017d44, "Read file size");
  	MakeComm(0x80017d4c, "Make sure sectionStart + sectionHeaderSize isn't larger than the file size");
  	MakeComm(0x80017d58, "If the file is empty skip over memcpy");
  	MakeComm(0x80017d60, "Get file location");
  	MakeComm(0x80017d64, "Destination");
  	MakeComm(0x80017d68, "Section Size");
  	MakeComm(0x80017d6c, "Section Position");
  	MakeComm(0x80017d84, "Restore r30");
  	MakeComm(0x80017d88, "Restore link register");
  	MakeComm(0x80017d90, "Restore the stack pointer");
  	MakeName(0x8001ab48, "PrintError");
  	SetFunctionCmt(0x8001ab48, "r3 = *.cpp file name\nr6 = Message", 0);
  	MakeName(0x8001dc98, "InitControllers");
  	MakeName(0x8001f70c, "InitGraphics");
  	MakeName(0x80030170, "LoadBLO");
  	SetFunctionCmt(0x80030170, "r4 = BLO file name\nr6 = Pointer to 8033E030", 0);
  	MakeComm(0x800301ac, "r3 was r6 at the start of the function");
  	MakeComm(0x800301b8, "80015ea8");
  	MakeComm(0x80047bd4, "80041c68");
  	MakeComm(0x80047c68, "Branched to at 8016BE98");
  	MakeComm(0x80047ca0, "80047b2c");
  	SetFunctionCmt(0x8007a984, "Branched to from 801D0C04", 0);
  	MakeName(0x800a9640, "StopGame");
  	SetFunctionCmt(0x800a9640, "Whenever something goes wrong the game sits here and runs an infinite loop until the console is shut down.", 0);
  	MakeName(0x800ab56c, "DVDConvertPathToEntrynum");
  	SetFunctionCmt(0x800ab56c, "r3 = Address of the path in memory", 0);
  	MakeName(0x800ab8d4, "DVDOpen");
  	MakeName(0x800abcd4, "DVDRead");
  	MakeName(0x800abee0, "DVDChangeDisk");
  	SetFunctionCmt(0x800e22e8, "jumptable 800E21A0 case 3", 1);
  	MakeName(0x800e798c, "GetOSContext");
  	SetFunctionCmt(0x800e798c, "current OS Context (logical address)", 0);
  	MakeName(0x800e80f8, "PrintFormat");
  	SetFunctionCmt(0x800e80f8, "Untested", 0);
  	MakeName(0x800eb178, "GetOSThread");
  	SetFunctionCmt(0x800eb178, "Current OS thread", 0);
  	MakeComm(0x800ec804, "Branch to 800FFC3C");
  	MakeName(0x800ec82c, "StopGame_Wrapper");
  	MakeComm(0x800ec83c, "Everything from this point on is dead code");
  	MakeName(0x800ffe28, "ShutdownGame");
  	MakeName(0x800ffec0, "ShutdownGame_Wrapper");
  	MakeName(0x801038b0, "StringFormat");
  	SetFunctionCmt(0x801038b0, "r5 = The string that will be formatted\nr6 = Replaces the first %s", 0);
  	MakeName(0x80112194, "WriteRegistersToStack");
  	MakeName(0x80130bfc, "LoadSaveData");
  	SetFunctionCmt(0x80130bfc, "Loads save data?", 0);
  	MakeName(0x8013260c, "LoadRecordScreen");
  	MakeName(0x8016230c, "DrawCharacterSelect");
  	SetFunctionCmt(0x8016230c, "Team Information Structure:\nstruct CharacterSelectTeamInfo {\n    int HighlightedCharacter;\n    int DriverPlayerID;\n    int PassengerPlayerID;\n    int DriverCharacterID;\n    int PassengerCharacterID;\n    int KartID;\n    int State; //0 = Picking drivers, 1 = Picking kart, 2 = Ready\n}", 0);
  	MakeComm(0x80162508, "Runs when the left and right triggers are pressed for \"random\"");
  	MakeComm(0x80162570, "Branch if there is no input?");
  	MakeComm(0x8016259c, "Team structure size is 28 bytes");
  	MakeComm(0x801625ac, "Sets offset r29 to be 0x212C bytes behind the current team's information");
  	MakeComm(0x801625b0, "DriverPlayerID");
  	MakeComm(0x801625b4, "If the current player ID doesn't match the driver ID then move to check the passenger");
  	MakeComm(0x801625bc, "DriverCharacterID");
  	MakeComm(0x801625c8, "PassengerPlayerID");
  	MakeComm(0x801625d0, "If the current player isn't the passenger player, branch");
  	MakeComm(0x801625d4, "PassengerCharacterID");
  	MakeComm(0x801625dc, "... Or if the passenger is set");
  	MakeComm(0x8016260c, "Update cursor position");
  	MakeComm(0x80162618, "Set cursor position to 0xFFFFFFFF");
  	MakeName(0x80162ae4, "CharacterSelectAPressed");
  	MakeComm(0x80162b78, "Driver ID");
  	MakeComm(0x80162b80, "If the driver is already set then skip over this section");
  	MakeComm(0x80162b98, "Set the driver ID");
  	MakeComm(0x80162be8, "Passenger ID");
  	MakeComm(0x80162bf0, "If the passenger is already set skip over this section");
  	MakeComm(0x80162c08, "Set the passenger ID");
  	MakeName(0x80162cc0, "CharacterSelectBPressed");
  	MakeName(0x80162ec8, "MoveCharacterSelectCursorUp");
  	MakeName(0x80162f94, "MoveCharacterSelectCursorDown");
  	MakeName(0x80163060, "MoveCharacterSelectCursorLeft");
  	MakeName(0x80163120, "MoveCharacterSelectCursorRight");
  	MakeComm(0x80163158, "Get team state");
  	MakeComm(0x80163160, "Picking kart");
  	MakeComm(0x80163168, "Picking characters");
  	MakeName(0x80163178, "ChangeCharacterRight");
  	MakeName(0x801631a0, "ChangeKartRight");
  	MakeName(0x80163344, "MoveCharacterSelectCursor");
  	MakeName(0x801639b4, "UpdateCharacterAvailability");
  	SetFunctionCmt(0x801639b4, "r3 = Position 0x228C bytes behind the selected character information\n\nSelected Character Information:\nAppears to be a list of booleans, the value is set to true if the character is able to be selected", 0);
  	MakeComm(0x801639c4, "Character availability array");
  	MakeComm(0x801639cc, "Mark every character as available.");
  	MakeComm(0x801639e4, "Player cursor position");
  	MakeComm(0x801639f0, "The value will equal -1 (FFFFFFFF) if the player isn't in the game");
  	MakeComm(0x801639f4, "There are only 20 characters in the game");
  	MakeComm(0x80163a00, "Mark character as unavailable if it is highlighted by a player");
  	MakeComm(0x80163a04, "Check the next player's cursor");
  	MakeComm(0x80163a1c, "Check selected drivers");
  	MakeComm(0x80163a54, "Check selected passengers");
  	MakeComm(0x80163a7c, "Check unlockable characters");
  	MakeComm(0x80164e24, "Game type\n0 = Grand Prix\n1 = Versus\n2 = Time Trial\n3 = Battle");
  	MakeName(0x80164e40, "BattleMode");
  	MakeName(0x80164e4c, "GrandPrixMode");
  	MakeName(0x80164e68, "OnePlayerGrandPrix");
  	MakeComm(0x80164e74, "Number of racers");
  	MakeComm(0x80164e7c, "Number of screen tiles");
  	MakeName(0x80164e8c, "TwoPlayerGrandPrix");
  	MakeComm(0x80164e98, "Number of racers");
  	MakeComm(0x80164ea0, "Number of screen tiles");
  	MakeName(0x80164ed0, "VersusMode");
  	MakeName(0x80164ef8, "TwoPlayerVersus");
  	MakeComm(0x80164f04, "Number of racers");
  	MakeComm(0x80164f0c, "Number of screen tiles");
  	MakeName(0x80164f1c, "ThreePlayer");
  	MakeComm(0x80164f28, "Number of racers");
  	MakeComm(0x80164f30, "Number of screen tiles");
  	MakeName(0x80164f40, "FourPlayer");
  	MakeComm(0x80164f4c, "Number of racers");
  	MakeComm(0x80164f54, "Number of screen tiles");
  	MakeName(0x80164f84, "TimeTrialMode");
  	SetFunctionCmt(0x80169cbc, "Runs when opening course select.", 0);
  	MakeComm(0x8016a234, "80047c68");
  	MakeComm(0x8016a244, "This section runs twice");
  	MakeComm(0x8016a24c, "Runs when you first open the course select");
  	MakeName(0x8016b6e0, "DrawCourseSelect");
  	SetFunctionCmt(0x8016b6e0, "Runs once per frame for the course select screen", 0);
  	MakeComm(0x8016b750, "Seems to always be 80047f68");
  	MakeComm(0x8016bad8, "Seems to always be 80031ac0");
  	MakeComm(0x8016bc1c, "This section handles loading the highest rank (bronze cup, silver cup, gold cup) that the player has won for each cup");
  	MakeName(0x8016bd68, "LoadCupFrame");
  	SetFunctionCmt(0x8016bd68, "Runs whenever a different cup is selected", 0);
  	MakeComm(0x8016bda4, "Seems to always be 80047c68");
  	MakeComm(0x8016bda8, "Loads the value from 815974F0\n\nScene state?\n1 == Choose a cup\n2 == Choose a track (random tooltip appears)\nAnything else acts like choose a track but won't let you vertically scroll and there is no random tooltip");
  	MakeComm(0x8016bdb0, "Draw the individual track selection");
  	MakeComm(0x8016bdb4, "Loads the value from 803CB7A8\nStores the currently selected cup ID.\n0 = Mushroom Cup\n1 = Flower Cup\n2 = Star Cup\n3 = Special Cup");
  	MakeComm(0x8016bdbc, "Draw the selected cup if it isn't the all cup tour");
  	MakeComm(0x8016be98, "Seems to always be 80047C68");
  	MakeName(0x80186d30, "IterateRaceTimer");
  	SetFunctionCmt(0x80186d30, "r3 = Seems to always be 81244978", 0);
  	MakeComm(0x80186d4c, "If the time is greater than the 32bit integer limit do not iterate it anymore.");
  	MakeComm(0x801886e8, "Points to string \"KART MODEL\"");
  	MakeComm(0x80188700, "Points to string \"COURSE MODEL\"");
  	MakeComm(0x80188718, "Points to string \"OBJECT MODEL\"");
  	MakeComm(0x80188730, "Points to string \"ITEM MODEL\"");
  	MakeComm(0x80188748, "Points to string \"EFFECT MODEL\"");
  	MakeName(0x8018c878, "StoreRaceConfig");
  	SetFunctionCmt(0x8018c878, "r5 = Number of racers\nr7 = Number of screen tiles\nr8 = Number of players?", 0);
  	SetFunctionCmt(0x8018c994, "Always called after StoreRaceConfig\n\nr3 = Same as StoreRaceConfig, data stored at 803B145C", 0);
  	MakeName(0x80197068, "DKMtn_LoadCannon");
  	SetFunctionCmt(0x80197068, "Branched to from 801F30D8", 0);
  	MakeName(0x801be728, "DriverAnimateJuggle");
  	SetFunctionCmt(0x801be728, "I could be wrong with this one.", 0);
  	MakeName(0x801be7fc, "DriverSoundRunxxx");
  	SetFunctionCmt(0x801be7fc, "Assuming runxxx is the sound of their feet moving since it is the same for all drivers", 0);
  	MakeName(0x801bee64, "GetDriverName");
  	MakeName(0x801c154c, "GetDriverSound_Wrapper");
  	SetFunctionCmt(0x801c154c, "I don't really know what to call this. It stores some registers and loads them again after running GetDriverSound", 0);
  	MakeComm(0x801c15d0, "Check if the driver doesn't have a common folder?");
  	MakeComm(0x801c15e8, "Get the driver's name");
  	MakeName(0x801c1660, "GetDriverSound");
  	SetFunctionCmt(0x801c1660, "TODO: Test this", 0);
  	MakeComm(0x801c167c, "TODO: Track down this cmp");
  	MakeComm(0x801c16bc, "As far as I can tell this branch is useless. Replaced it with a NOP and the game functioned the exact same.");
  	MakeName(0x801cc6a8, "StartRenderLoop");
  	MakeName(0x801ce3c0, "GetCourseName");
  	SetFunctionCmt(0x801ce3c0, "Switch statement to get the course name. Also appears to be used for character models in the character select screen.\nr2 seems to always be 803d45a0 when this function is called\nr3 is the ID number at the start and turns into the memory address of the course name at the end.", 0);
  	MakeName(0x801ce3e8, "GetCourseName_Case_36");
  	MakeComm(0x801ce3e8, "case 36: Luigi (803CF8A0)");
  	MakeName(0x801ce3f0, "GetCourseName_Case_34");
  	MakeComm(0x801ce3f0, "case 34: Peach (803CF8A8)");
  	MakeName(0x801ce3f8, "GetCourseName_Case_33");
  	MakeComm(0x801ce3f8, "case 33: BabyLuigi (80336A98)");
  	MakeName(0x801ce400, "GetCourseName_Case_40");
  	MakeComm(0x801ce400, "case 40: Nokonoko (80336AA4)");
  	MakeName(0x801ce408, "GetCourseName_Case_50");
  	MakeComm(0x801ce408, "case 50: Desert (803CF8B0)");
  	MakeName(0x801ce410, "GetCourseName_Case_35");
  	MakeComm(0x801ce410, "case 35: Daisy (803CF8B8)");
  	MakeName(0x801ce418, "GetCourseName_Case_51");
  	MakeComm(0x801ce418, "case 51: Snow (803CF8C0)");
  	MakeName(0x801ce420, "GetCourseName_Case_37");
  	MakeComm(0x801ce420, "case 37: Mario (803CF8C8)");
  	MakeName(0x801ce428, "GetCourseName_Case_41");
  	MakeComm(0x801ce428, "case 41: Patapata (80336AB0)");
  	MakeName(0x801ce430, "GetCourseName_Case_42");
  	MakeComm(0x801ce430, "case 42: Waluigi (803CF8D0)");
  	MakeName(0x801ce438, "GetCourseName_Case_45");
  	MakeComm(0x801ce438, "case 45: Donkey (803CF8D8)");
  	MakeName(0x801ce440, "GetCourseName_Case_47");
  	MakeComm(0x801ce440, "case 47: Koopa (803CF8E0)");
  	MakeName(0x801ce448, "GetCourseName_Case_44");
  	MakeComm(0x801ce448, "case 44: Diddy (803CF8E8)");
  	MakeName(0x801ce450, "GetCourseName_Case_38");
  	MakeComm(0x801ce450, "case 38: Yoshi (803CF8F0)");
  	MakeName(0x801ce458, "GetCourseName_Case_43");
  	MakeComm(0x801ce458, "case 43: Wario (803CF8F8)");
  	MakeName(0x801ce460, "GetCourseName_Case_49");
  	MakeComm(0x801ce460, "case 49: Rainbow (803CF900)");
  	MakeName(0x801ce468, "GetCourseName_Case_1");
  	MakeComm(0x801ce468, "case 1: Test1 (803CF908)");
  	MakeName(0x801ce470, "GetCourseName_Case_2");
  	MakeComm(0x801ce470, "case 2: Test2 (803CF910)");
  	MakeName(0x801ce478, "GetCourseName_Case_3");
  	MakeComm(0x801ce478, "case 3: Test3 (803CF918)");
  	MakeName(0x801ce480, "GetCourseName_Case_4");
  	MakeComm(0x801ce480, "case 4: Test4 (803CF920)");
  	MakeName(0x801ce488, "GetCourseName_Case_5");
  	MakeComm(0x801ce488, "case 5: Test5 (803CF928)");
  	MakeName(0x801ce490, "GetCourseName_Case_6");
  	MakeComm(0x801ce490, "case 6: Test6 (803CF930)");
  	MakeName(0x801ce498, "GetCourseName_Case_7");
  	MakeComm(0x801ce498, "case 7: Test7 (803CF938)");
  	MakeName(0x801ce4a0, "GetCourseName_Case_8");
  	MakeComm(0x801ce4a0, "case 8: Test8 (803CF940)");
  	MakeName(0x801ce4a8, "GetCourseName_Case_9");
  	MakeComm(0x801ce4a8, "case 9: Test9 (803CF948)");
  	MakeName(0x801ce4b0, "GetCourseName_Case_10");
  	MakeComm(0x801ce4b0, "case 10: Test10 (803CF950)");
  	MakeName(0x801ce4b8, "GetCourseName_Case_11");
  	MakeComm(0x801ce4b8, "case 11: Test11 (803CF958)");
  	MakeName(0x801ce4c0, "GetCourseName_Case_12");
  	MakeComm(0x801ce4c0, "case 12: Test12 (803CF960)");
  	MakeName(0x801ce4c8, "GetCourseName_Case_31");
  	MakeComm(0x801ce4c8, "case 31: E3 (803CF968)");
  	MakeName(0x801ce4d0, "GetCourseName_Case_29");
  	MakeComm(0x801ce4d0, "case 29: Dekoboko (80336ABC)");
  	MakeName(0x801ce4d8, "GetCourseName_Case_30");
  	MakeComm(0x801ce4d8, "case 30: A3 (803CF96C)");
  	MakeName(0x801ce4e0, "GetCourseName_Case_13");
  	MakeComm(0x801ce4e0, "case 13: Test13 (803CF970)");
  	MakeName(0x801ce4e8, "GetCourseName_Case_14");
  	MakeComm(0x801ce4e8, "case 14: Test14 (803CF978)");
  	MakeName(0x801ce4f0, "GetCourseName_Case_15");
  	MakeComm(0x801ce4f0, "case 15: Test15 (803CF980)");
  	MakeName(0x801ce4f8, "GetCourseName_Case_16");
  	MakeComm(0x801ce4f8, "case 16: Test16 (803CF988)");
  	MakeName(0x801ce500, "GetCourseName_Case_17");
  	MakeComm(0x801ce500, "case 17: Test17 (803CF990)");
  	MakeName(0x801ce508, "GetCourseName_Case_18");
  	MakeComm(0x801ce508, "case 18: Test18 (803CF998)");
  	MakeName(0x801ce510, "GetCourseName_Case_19");
  	MakeComm(0x801ce510, "case 19: Test19 (803CF9A0)");
  	MakeName(0x801ce518, "GetCourseName_Case_20");
  	MakeComm(0x801ce518, "case 20: Test20 (803CF9A8)");
  	MakeName(0x801ce520, "GetCourseName_Case_21");
  	MakeComm(0x801ce520, "case 21: Test21 (803CF9B0)");
  	MakeName(0x801ce528, "GetCourseName_Case_22");
  	MakeComm(0x801ce528, "case 22: Test22 (803CF9B8)");
  	MakeName(0x801ce530, "GetCourseName_Case_23");
  	MakeComm(0x801ce530, "case 23: Test23 (803CF9C0)");
  	MakeName(0x801ce538, "GetCourseName_Case_24");
  	MakeComm(0x801ce538, "case 24: Test24 (803CF9C8)");
  	MakeName(0x801ce540, "GetCourseName_Case_25");
  	MakeComm(0x801ce540, "case 25: Test25 (803CF9D0)");
  	MakeName(0x801ce548, "GetCourseName_Case_26");
  	MakeComm(0x801ce548, "case 26: Test26 (803CF9D8)");
  	MakeName(0x801ce550, "GetCourseName_Case_27");
  	MakeComm(0x801ce550, "case 27: Test27 (803CF9E0)");
  	MakeName(0x801ce558, "GetCourseName_Case_52");
  	MakeComm(0x801ce558, "case 52: Mini1 (803CF9E8)");
  	MakeName(0x801ce560, "GetCourseName_Case_53");
  	MakeComm(0x801ce560, "case 53: Mini2 (803CF9F0)");
  	MakeName(0x801ce568, "GetCourseName_Case_54");
  	MakeComm(0x801ce568, "case 54: Mini3 (803CF9F8)");
  	MakeName(0x801ce570, "GetCourseName_Case_55");
  	MakeComm(0x801ce570, "case 55: Mini4 (803CFA00)");
  	MakeName(0x801ce578, "GetCourseName_Case_56");
  	MakeComm(0x801ce578, "case 56: Mini5 (803CFA08)");
  	MakeName(0x801ce580, "GetCourseName_Case_57");
  	MakeComm(0x801ce580, "case 57: Mini6 (803CFA10)");
  	MakeName(0x801ce588, "GetCourseName_Case_58");
  	MakeComm(0x801ce588, "case 58: Mini7 (803CFA18)");
  	MakeName(0x801ce590, "GetCourseName_Case_59");
  	MakeComm(0x801ce590, "case 59: Mini8 (803CFA20)");
  	MakeName(0x801ce598, "GetCourseName_Case_60");
  	MakeComm(0x801ce598, "case 60: Reverse1 (80336AC8)");
  	MakeName(0x801ce5a0, "GetCourseName_Case_61");
  	MakeComm(0x801ce5a0, "case 61: Reverse2 (80336AD4)");
  	MakeName(0x801ce5a8, "GetCourseName_Case_62");
  	MakeComm(0x801ce5a8, "case 62: Reverse3 (80336AE0)");
  	MakeName(0x801ce5b0, "GetCourseName_Case_63");
  	MakeComm(0x801ce5b0, "case 63: Reverse4 (80336AEC)");
  	MakeName(0x801ce5b8, "GetCourseName_Case_64");
  	MakeComm(0x801ce5b8, "case 64: Reverse5 (80336AF8)");
  	MakeName(0x801ce5c0, "GetCourseName_Case_65");
  	MakeComm(0x801ce5c0, "case 65: Reverse6 (80336B04)");
  	MakeName(0x801ce5c8, "GetCourseName_Case_66");
  	MakeComm(0x801ce5c8, "case 66: Reverse7 (80336B10)");
  	MakeName(0x801ce5d0, "GetCourseName_Case_67");
  	MakeComm(0x801ce5d0, "case 67: Reverse8 (80336B1C)");
  	MakeName(0x801ce5d8, "GetCourseName_Case_68");
  	MakeComm(0x801ce5d8, "case 68: Award (803CFA28)");
  	MakeName(0x801ce5e0, "GetCourseName_Case_69");
  	MakeComm(0x801ce5e0, "case 69: Ending (803CFA30)");
  	MakeName(0x801ce5e8, "GetCourseName_Default");
  	MakeComm(0x801ce5e8, "default: BabyLuigi (80336A98)");
  	MakeComm(0x801cee88, "case 5: baby (803CFA80)");
  	MakeComm(0x801cee90, "case 13: bblui (803CFA88)");
  	MakeComm(0x801cee98, "case 3: noko (803CFA90)");
  	MakeComm(0x801ceea0, "case 11: pata (803CFA98)");
  	MakeComm(0x801ceea8, "case 9: diddy (803CFAA0)");
  	MakeName(0x801cf65c, "PlayDriverEffect");
  	SetFunctionCmt(0x801cf65c, "r1 = Seems to always be 803E21B0\nr2 = Seems to always be 803d45a0\nr5 = driver name\nr6 = sound/animation name\n\nI'm pretty sure that this is only supposed to be used for animations. It is used by GetDriverSound but that is only used once per sound.", 0);
  	MakeName(0x801d0b5c, "RenderLoop");
  	MakeComm(0x801d0c00, "8007A984");
  	MakeName(0x801d1df0, "LoadScene");
  	SetFunctionCmt(0x801d1df0, "Opens a new scene?\n\n1 = Opening Nintendo logo\n5 = Course scene\n6 = Scene Before Award Ceremony, then switches to 5\n7 = Menu Scene? (Runs whenever you exit a race or after the intro video)\n9 = Intro Video", 0);
  	SetFunctionCmt(0x801db840, "Something to do with save data", 0);
  	SetFunctionCmt(0x801dbc18, "Has something to do with GameSaveData", 0);
  	MakeName(0x801f28c8, "SpawnObject");
  	MakeComm(0x801f2900, "Sometimes branches to methods that set r3 to 0");
  	MakeName(0x801f461c, "LoadCourseObject");
  	MakeName(0x801f6270, "GetObjectMonLEBMD");
  	MakeName(0x801f62e8, "GetObjectMonLDBMD");
  	MakeName(0x801f6354, "GetObjectMonLCBMD");
  	MakeName(0x801f63c0, "GetObjectMonLBBMD");
  	MakeName(0x801f642c, "GetObjectMonLABMD");
  	MakeComm(0x8020cbc4, "Select item");
  	SetFunctionCmt(0x802255d4, "Called every time an object path is loaded into r3. Seems to be a wrapper of 801CF5E4\n\nr3 = Object to spawn?", 0);
  	MakeName(0x802400b8, "GetEffectMizubashiraBMD");
  	MakeName(0x802400c4, "GetEffectMizubashiraBCA");
  	MakeName(0x802400d0, "GetEffectMizubashiraBTK");
  	MakeName(0x802400dc, "GetEffectMizubashiraBRK");
  	MakeName(0x802405ac, "GetEffectMizubashiraMudABMD");
  	MakeName(0x802405b8, "GetEffectMizubashiraMudABCA");
  	MakeName(0x802405c4, "GetEffectMizubashiraMudABTK");
  	MakeName(0x802405d0, "GetEffectMizubashiraMudBRK");
  	MakeName(0x80248934, "GetEffectIceRockBMD");
  	MakeName(0x80248940, "GetEffectIceRockAppBCA");
  	MakeName(0x8024895c, "GetEffectIceRockBTK");
  	MakeName(0x80248f48, "GetItemItemHeartBMD");
  	MakeName(0x802497e4, "GetItemHeartBMD");
  	SetFunctionCmt(0x802b1760, "Has something to do with moving AI karts", 0);
  	MakeComm(0x802b3380, "Something to do with \"Nintendo Blur\"");
  	SetFunctionCmt(0x802b6360, "Camera code?", 0);
  	MakeName(0x803298a0, "MIMETypes");
  	MakeComm(0x803298a0, "I'm not sure if this is actually used for anything ingame");
  	MakeName(0x803322e8, "CourseName_bti");
  	MakeName(0x80334db0, "DriverSubfile");
  	MakeComm(0x80336a98, "Accessed at 801CE3F8");
  	MakeComm(0x80336aa4, "Accessed at 801CE400");
  	MakeComm(0x80336ab0, "Accessed at 801CE428");
  	MakeComm(0x80336abc, "Accessed at 801CE4D0");
  	MakeComm(0x80336ac8, "Accessed at 801CE598");
  	MakeComm(0x80336ad4, "Accessed at 801CE5A0");
  	MakeComm(0x80336ae0, "Accessed at 801CE5A8");
  	MakeComm(0x80336aec, "Accessed at 801CE5B0");
  	MakeComm(0x80336af8, "Accessed at 801CE5B8");
  	MakeComm(0x80336b04, "Accessed at 801CE5C0");
  	MakeComm(0x80336b10, "Accessed at 801CE5C8");
  	MakeComm(0x80336b1c, "Accessed at 801CE5D0");
  	MakeName(0x80336cf4, "CourseTitleImage");
  	MakeName(0x80336d10, "TrackStaffGhost");
  	MakeName(0x80336d24, "AltCourseArchiveLuigi");
  	MakeComm(0x80336d24, "Luigi's Circuit is a little different, it has two different versions that change based on the speed selected.");
  	MakeName(0x80336d3c, "CourseArchiveName");
  	MakeName(0x80336d50, "AwardGUIData");
  	MakeName(0x80336d6c, "AwardCupArchive");
  	MakeName(0x80336d84, "OpeningVideoArchive");
  	MakeName(0x8034b7c0, "CupName_bti");
  	MakeName(0x8034b7d4, "SelCourse_bti");
  	MakeName(0x8034c5cc, "dkcannon_types");
  	MakeName(0x80351148, "DriverAnimations");
  	MakeName(0x80351290, "DriverSounds");
  	MakeName(0x803512c0, "DriverNames");
  	MakeName(0x80351310, "DriverCommonNames");
  	MakeName(0x80351360, "DriverBones");
  	MakeComm(0x803532e8, "Every function seems to call sub_800155A8\n\nSeems to follow this structure:\n\nshort someValue;\nshort padding1; //All equal to 0\nlong funcAddress;\nlong padding2; //All equal to 0");
  	MakeName(0x803a4d6c, "ControllerInput");
  	MakeName(0x803b11cc, "ScoreTeam1");
  	MakeComm(0x803b11cc, "This is P1's score");
  	MakeName(0x803b11d0, "ScoreTeam2");
  	MakeName(0x803b11d4, "ScoreTeam3");
  	MakeName(0x803b11d8, "ScoreTeam4");
  	MakeName(0x803b11dc, "ScoreTeam5");
  	MakeName(0x803b11e0, "ScoreTeam6");
  	MakeName(0x803b11e4, "ScoreTeam7");
  	MakeName(0x803b11e8, "ScoreTeam8");
  	MakeName(0x803bc1c0, "GameSaveData");
  	MakeName(0x803cf8a0, "CourseNameLuigi");
  	MakeComm(0x803cf8a0, "Luigi's Circuit (Map Slot 0)\nWARNING: Changing this will most likely break the game because there is special code to load Luigi's circuit. If a speed other than 50cc is selected the game will add a 2 to the end of this string and load Luigi2.arc. For example, changing this to \"Mario\" and trying to use a speed other than 50cc will result in the game trying to load \"Mario2\" and crash.");
  	MakeName(0x803cf8a8, "CourseNamePeach");
  	MakeComm(0x803cf8a8, "Peach Beach (Map Slot 1)");
  	MakeName(0x803cf8b0, "CourseNameDesert");
  	MakeComm(0x803cf8b0, "Dry Dry Desert (Map Slot 3)");
  	MakeName(0x803d1420, "SDA_BASE");
  }
  