"Games"
{
    "left4dead2"
    {
		"Functions"
		{
			"ChangeLevelNow"
			{
				"signature"		"ChangeLevelNow"
				"callconv"		"thiscall"
				"return"		"void"
				"this"			"address"
			}
		}
		"Addresses"
		{
			"CDirector"
			{
				"windows"
				{
					"signature" "DirectorMusicBanks_OnRoundStart"
					"read" "12"
				}
				"linux"
				{
					"signature" "TheDirector"
				}
				"read" "0"
			}
		}
		"Signatures"
		{
			/* Find the Director/ZombieManager singleton classes */
			"TheDirector"
			{
				"library"	"server"
				"linux"		"@TheDirector"
			}

			/* Used solely to get the offset for TheDirector
			 * CDirectorMusicBanks::OnRoundStart
			 * Has unique string "Event.Reveal"
			*/
			"DirectorMusicBanks_OnRoundStart"
			{
				"library"	"server"
				"windows"	"\x55\x8B\xEC\x83\xEC\x2A\x56\x57\x8B\xF9\x8B\x0D\x2A\x2A\x2A\x2A\xE8\x2A\x2A\x2A\x2A\x84\xC0\x0F"
				/* 55 8B EC 83 EC ? 56 57 8B F9 8B 0D ? ? ? ? E8 ? ? ? ? 84 C0 0F */
			}
			
			
			"ChangeLevelNow"
			{
				"library"    "server"
				"linux"		"@_ZN15InfoChangelevel14ChangeLevelNowEv"
				"windows"	"\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x8B\x01\x8B\x50\x3C\xFF\xD2\x84\xC0"
				/* sub_10252460 */
			}
			
			/* CDirector::OnServerShutdown(CDirector *__hidden this) */
			"ServerShutdown"
            {
                "library"    "server"
                "linux"        "@_ZN9CDirector16OnServerShutdownEv"
                "windows"    "\x2A\x2A\x2A\x2A\x2A\x2A\x8B\x2A\x8B\x8E\x2A\x2A\x2A\x2A\x8B\x2A\x8B\x2A\x57"
                /* ? ? ? ? ? ? 8B ? 8B 8E ? ? ? ? 8B ? 8B ? 57 */
            }
		}
	}
}
