// this script was compiled with wurst 1.8.1.0-jenkins-Wurst-1367
globals
// integer JASS_MAX_ARRAY_SIZE=0
// integer PLAYER_NEUTRAL_PASSIVE=0
// integer PLAYER_NEUTRAL_AGGRESSIVE=0
// playercolor PLAYER_COLOR_RED=null
// playercolor PLAYER_COLOR_BLUE=null
// playercolor PLAYER_COLOR_CYAN=null
// playercolor PLAYER_COLOR_PURPLE=null
// playercolor PLAYER_COLOR_YELLOW=null
// playercolor PLAYER_COLOR_ORANGE=null
// playercolor PLAYER_COLOR_GREEN=null
// playercolor PLAYER_COLOR_PINK=null
// playercolor PLAYER_COLOR_LIGHT_GRAY=null
// playercolor PLAYER_COLOR_LIGHT_BLUE=null
// playercolor PLAYER_COLOR_AQUA=null
// playercolor PLAYER_COLOR_BROWN=null
// playercolor PLAYER_COLOR_MAROON=null
// playercolor PLAYER_COLOR_NAVY=null
// playercolor PLAYER_COLOR_TURQUOISE=null
// playercolor PLAYER_COLOR_VIOLET=null
// playercolor PLAYER_COLOR_WHEAT=null
// playercolor PLAYER_COLOR_PEACH=null
// playercolor PLAYER_COLOR_MINT=null
// playercolor PLAYER_COLOR_LAVENDER=null
// playercolor PLAYER_COLOR_COAL=null
// playercolor PLAYER_COLOR_SNOW=null
// playercolor PLAYER_COLOR_EMERALD=null
// playercolor PLAYER_COLOR_PEANUT=null
// playergameresult PLAYER_GAME_RESULT_DEFEAT=null
// alliancetype ALLIANCE_PASSIVE=null
// alliancetype ALLIANCE_HELP_REQUEST=null
// alliancetype ALLIANCE_HELP_RESPONSE=null
// alliancetype ALLIANCE_SHARED_XP=null
// alliancetype ALLIANCE_SHARED_SPELLS=null
// alliancetype ALLIANCE_SHARED_VISION=null
// version VERSION_REIGN_OF_CHAOS=null
// attacktype ATTACK_TYPE_NORMAL=null
// attacktype ATTACK_TYPE_CHAOS=null
// damagetype DAMAGE_TYPE_UNKNOWN=null
// damagetype DAMAGE_TYPE_UNIVERSAL=null
// weapontype WEAPON_TYPE_WHOKNOWS=null
// pathingtype PATHING_TYPE_WALKABILITY=null
// animtype ANIM_TYPE_STAND=null
// racepreference RACE_PREF_HUMAN=null
// mapcontrol MAP_CONTROL_USER=null
// mapcontrol MAP_CONTROL_RESCUABLE=null
// placement MAP_PLACEMENT_TEAMS_TOGETHER=null
// startlocprio MAP_LOC_PRIO_HIGH=null
// playerslotstate PLAYER_SLOT_STATE_PLAYING=null
// fgamestate GAME_STATE_TIME_OF_DAY=null
// playerstate PLAYER_STATE_RESOURCE_GOLD=null
// playerstate PLAYER_STATE_GIVES_BOUNTY=null
// playerstate PLAYER_STATE_ALLIED_VICTORY=null
// unitstate UNIT_STATE_LIFE=null
// unitstate UNIT_STATE_MANA=null
// playerevent EVENT_PLAYER_LEAVE=null
// playerevent EVENT_PLAYER_END_CINEMATIC=null
// playerunitevent EVENT_PLAYER_UNIT_ATTACKED=null
// playerunitevent EVENT_PLAYER_UNIT_RESCUED=null
// playerunitevent EVENT_PLAYER_UNIT_DEATH=null
// playerunitevent EVENT_PLAYER_UNIT_CONSTRUCT_FINISH=null
// playerunitevent EVENT_PLAYER_UNIT_UPGRADE_FINISH=null
// playerunitevent EVENT_PLAYER_UNIT_ISSUED_ORDER=null
// playerunitevent EVENT_PLAYER_UNIT_ISSUED_POINT_ORDER=null
// playerunitevent EVENT_PLAYER_UNIT_ISSUED_TARGET_ORDER=null
// playerunitevent EVENT_PLAYER_HERO_SKILL=null
// playerunitevent EVENT_PLAYER_UNIT_DROP_ITEM=null
// playerunitevent EVENT_PLAYER_UNIT_PICKUP_ITEM=null
// playerunitevent EVENT_PLAYER_UNIT_USE_ITEM=null
// playerunitevent EVENT_PLAYER_UNIT_DAMAGED=null
// playerunitevent EVENT_PLAYER_UNIT_DAMAGING=null
// unitevent EVENT_UNIT_DAMAGED=null
// playerevent EVENT_PLAYER_ARROW_LEFT_DOWN=null
// playerevent EVENT_PLAYER_ARROW_LEFT_UP=null
// playerevent EVENT_PLAYER_ARROW_RIGHT_DOWN=null
// playerevent EVENT_PLAYER_ARROW_RIGHT_UP=null
// playerevent EVENT_PLAYER_ARROW_DOWN_DOWN=null
// playerevent EVENT_PLAYER_ARROW_DOWN_UP=null
// playerevent EVENT_PLAYER_ARROW_UP_DOWN=null
// playerevent EVENT_PLAYER_ARROW_UP_UP=null
// playerevent EVENT_PLAYER_MOUSE_DOWN=null
// playerevent EVENT_PLAYER_MOUSE_UP=null
// playerevent EVENT_PLAYER_MOUSE_MOVE=null
// playerunitevent EVENT_PLAYER_UNIT_SELL_ITEM=null
// playerunitevent EVENT_PLAYER_UNIT_SPELL_CAST=null
// playerunitevent EVENT_PLAYER_UNIT_SPELL_EFFECT=null
// limitop LESS_THAN=null
// limitop EQUAL=null
// limitop GREATER_THAN_OR_EQUAL=null
// unittype UNIT_TYPE_HERO=null
// unittype UNIT_TYPE_STRUCTURE=null
// unittype UNIT_TYPE_PEON=null
// itemtype ITEM_TYPE_PERMANENT=null
// itemtype ITEM_TYPE_CHARGED=null
// itemtype ITEM_TYPE_ARTIFACT=null
// camerafield CAMERA_FIELD_TARGET_DISTANCE=null
// camerafield CAMERA_FIELD_FARZ=null
// camerafield CAMERA_FIELD_ANGLE_OF_ATTACK=null
// camerafield CAMERA_FIELD_FIELD_OF_VIEW=null
// camerafield CAMERA_FIELD_ROLL=null
// camerafield CAMERA_FIELD_ROTATION=null
// camerafield CAMERA_FIELD_ZOFFSET=null
// blendmode BLEND_MODE_BLEND=null
// texmapflags TEXMAP_FLAG_NONE=null
// fogstate FOG_OF_WAR_MASKED=null
// fogstate FOG_OF_WAR_VISIBLE=null
// integer CAMERA_MARGIN_LEFT=0
// integer CAMERA_MARGIN_RIGHT=0
// integer CAMERA_MARGIN_TOP=0
// integer CAMERA_MARGIN_BOTTOM=0
// originframetype ORIGIN_FRAME_GAME_UI=null
// originframetype ORIGIN_FRAME_WORLD_FRAME=null
// real bj_UNIT_FACING=0.
// real bj_GAME_STARTED_THRESHOLD=0.
// integer bj_MAX_INVENTORY=0
// integer bj_MAX_PLAYERS=0
// integer bj_PLAYER_NEUTRAL_VICTIM=0
// integer bj_MAX_PLAYER_SLOTS=0
// integer bj_MAX_SKELETONS=0
// integer bj_MAX_STOCK_ITEM_SLOTS=0
// integer bj_MAX_STOCK_UNIT_SLOTS=0
// integer bj_MAX_ITEM_LEVEL=0
// real bj_TOD_DAWN=0.
// real bj_TOD_DUSK=0.
// real bj_STOCK_RESTOCK_INITIAL_DELAY=0.
// real bj_STOCK_RESTOCK_INTERVAL=0.
// integer bj_STOCK_MAX_ITERATIONS=0
// real bj_RESCUE_PING_TIME=0.
// integer bj_MAX_QUEUED_TRIGGERS=0
// real bj_QUEUED_TRIGGER_TIMEOUT=0.
// integer bj_CINEFADETYPE_FADEIN=0
// integer bj_CINEFADETYPE_FADEOUT=0
// integer bj_CINEFADETYPE_FADEOUTIN=0
// real bj_CORPSE_MAX_DEATH_TIME=0.
// force bj_FORCE_ALL_PLAYERS=null
// rect bj_mapInitialPlayableArea=null
// timer bj_gameStartedTimer=null
// trigger bj_dncSoundsDay=null
// trigger bj_dncSoundsNight=null
// sound bj_dayAmbientSound=null
// sound bj_nightAmbientSound=null
// trigger bj_dncSoundsDawn=null
// trigger bj_dncSoundsDusk=null
// sound bj_dawnSound=null
// sound bj_duskSound=null
// boolean bj_useDawnDuskSounds=false
// boolean bj_dncIsDaytime=false
// sound bj_rescueSound=null
// trigger bj_stockItemPurchased=null
// timer bj_stockUpdateTimer=null
// integer bj_stockPickedItemLevel=0
// itemtype bj_stockPickedItemType=null
// trigger bj_rescueUnitBehavior=null
// boolean bj_rescueChangeColorUnit=false
// boolean bj_rescueChangeColorBldg=false
// timer bj_cineFadeFinishTimer=null
// timer bj_cineFadeContinueTimer=null
// real bj_cineFadeContinueRed=0.
// real bj_cineFadeContinueGreen=0.
// real bj_cineFadeContinueBlue=0.
// real bj_cineFadeContinueTrans=0.
// real bj_cineFadeContinueDuration=0.
// string bj_cineFadeContinueTex=null
// integer bj_queuedExecTotal=0
// timer bj_queuedExecTimeoutTimer=null
// trigger bj_queuedExecTimeout=null
// integer bj_groupEnumTypeId=0
// player bj_groupEnumOwningPlayer=null
// location bj_enumDestructableCenter=null
// real bj_enumDestructableRadius=0.
// group bj_suspendDecayFleshGroup=null
// group bj_suspendDecayBoneGroup=null
// timer bj_delayedSuspendDecayTimer=null
// trigger bj_delayedSuspendDecayTrig=null
// integer bj_livingPlayerUnitsTypeId=0
rect gg_rct_Choose=null
rect gg_rct_Region_002=null
rect gg_rct_Region_014=null
rect gg_rct_Region_015=null
rect gg_rct_Region_000=null
rect gg_rct_Region_001=null
rect gg_rct_Region_003=null
rect gg_rct_Region_004=null
rect gg_rct_Region_005=null
rect gg_rct_Region_006=null
rect gg_rct_Region_007=null
rect gg_rct_Region_008=null
rect gg_rct_Region_009=null
rect gg_rct_Region_010=null
rect gg_rct_Region_011=null
rect gg_rct_Region_012=null
rect gg_rct_Region_013=null
rect gg_rct_Region_016=null
rect gg_rct_Region_017=null
rect gg_rct_Region_018=null
rect gg_rct_Region_024=null
rect gg_rct_Region_026=null
rect gg_rct_Start=null
rect gg_rct_Region_023=null
rect gg_rct_coingamearea=null
rect gg_rct_spaceygamearea=null
rect gg_rct_coingamebounds=null
rect gg_rct_spaceygamebounds=null
rect gg_rct_slidegamearea=null
rect gg_rct_slidegamebounds=null
rect gg_rct_slidegamespawn=null
rect gg_rct_Region_027=null
rect gg_rct_agargamearea=null
rect gg_rct_agargamefoodspawn=null
rect gg_rct_agargamebounds=null
camerasetup gg_cam_Camera_001=null
camerasetup gg_cam_BuilderSetupCam=null
camerasetup gg_cam_BuilderBuilderCam=null
camerasetup gg_cam_BlackCam=null
camerasetup gg_cam_StdCam=null
camerasetup gg_cam_BuilderTilesCam=null
camerasetup gg_cam_spaceycam=null
sound gg_snd_ArrangedTeamInvitation=null
trigger gg_trg_Untitled_Trigger_005=null
unit gg_unit_revp_0002=null
unit gg_unit_arca_0050=null
unit gg_unit_airk_0149=null
unit gg_unit_tele_0150=null
unit gg_unit_dor2_0011=null
unit gg_unit_sick_0014=null
unit gg_unit_bisk_0018=null
unit gg_unit_bisk_0020=null
unit gg_unit_tele_0324=null
unit gg_unit_tele_0323=null
unit gg_unit_revp_0322=null
unit gg_unit_unre_0118=null
unit gg_unit_revp_0059=null
unit gg_unit_tele_0061=null
unit gg_unit_fnt2_0067=null
unit gg_unit_glve_0160=null
unit gg_unit_bsak_0080=null
unit gg_unit_bsak_0081=null
unit gg_unit_revp_0085=null
unit gg_unit_dor2_0087=null
unit gg_unit_glve_0159=null
unit gg_unit_glve_0158=null
unit gg_unit_glve_0156=null
unit gg_unit_bsak_0104=null
unit gg_unit_sgrk_0153=null
unit gg_unit_jump_0152=null
unit gg_unit_jump_0151=null
unit gg_unit_ssak_0120=null
unit gg_unit_ssak_0121=null
unit gg_unit_ssak_0122=null
unit gg_unit_ssak_0123=null
unit gg_unit_ssak_0124=null
unit gg_unit_ssak_0125=null
unit gg_unit_bsak_0127=null
unit gg_unit_bsak_0128=null
unit gg_unit_bgrk_0145=null
unit gg_unit_dor2_0136=null
unit gg_unit_tele_0141=null
unit gg_unit_sick_0012=null
unit gg_unit_sick_0013=null
unit gg_unit_bcik_0280=null
unit gg_unit_scik_0278=null
unit gg_unit_scik_0277=null
unit gg_unit_scik_0276=null
unit gg_unit_scik_0275=null
unit gg_unit_scik_0274=null
unit gg_unit_scik_0273=null
unit gg_unit_scik_0272=null
unit gg_unit_scik_0271=null
unit gg_unit_scik_0270=null
unit gg_unit_scik_0269=null
unit gg_unit_scik_0268=null
unit gg_unit_scik_0267=null
unit gg_unit_bcik_0266=null
unit gg_unit_scik_0263=null
unit gg_unit_bcik_0262=null
unit gg_unit_scik_0261=null
unit gg_unit_scik_0260=null
unit gg_unit_dims_0100=null
unit gg_unit_uncr_0117=null
unit gg_unit_wayp_0116=null
unit gg_unit_tele_0234=null
unit gg_unit_dor2_0023=null
unit gg_unit_scik_0210=null
unit gg_unit_scik_0211=null
unit gg_unit_scik_0213=null
unit gg_unit_scik_0214=null
unit gg_unit_scik_0215=null
unit gg_unit_scik_0216=null
unit gg_unit_scik_0217=null
unit gg_unit_scik_0218=null
unit gg_unit_scik_0219=null
unit gg_unit_bcik_0220=null
unit gg_unit_scik_0221=null
unit gg_unit_scik_0222=null
unit gg_unit_bcik_0225=null
unit gg_unit_revp_0226=null
unit gg_unit_revp_0022=null
unit gg_unit_sick_0036=null
unit gg_unit_wayp_0114=null
unit gg_unit_knck_0033=null
unit gg_unit_knck_0034=null
unit gg_unit_tele_0044=null
unit gg_unit_sgrk_0038=null
unit gg_unit_sgrk_0039=null
unit gg_unit_fnt2_0065=null
unit gg_unit_spnr_0162=null
unit gg_unit_knck_0053=null
unit gg_unit_knck_0054=null
unit gg_unit_tele_0058=null
unit gg_unit_tele_0063=null
unit gg_unit_tele_0115=null
unit gg_unit_tele_0143=null
unit gg_unit_fnt2_0074=null
unit gg_unit_wayp_0066=null
unit gg_unit_wayp_0068=null
unit gg_unit_wayp_0078=null
unit gg_unit_wayp_0099=null
unit gg_unit_wayp_0101=null
unit gg_unit_wayp_0102=null
unit gg_unit_exec_0076=null
unit gg_unit_spnr_0129=null
unit gg_unit_spnr_0130=null
unit gg_unit_spnr_0147=null
unit gg_unit_spnr_0157=null
unit gg_unit_spnr_0161=null
rect gg_rct_warlockgamearea=null
rect gg_rct_warlockgamebounds=null
string Abilities_aIamTarget=null
string Abilities_ancestralSpiritCaster=null
string Abilities_ancientProtectorMissile=null
string Abilities_aneuCaster=null
string Abilities_blinkCaster=null
string Abilities_blinkTarget=null
string Abilities_boltImpact=null
string Abilities_charmTarget=null
string Abilities_creepSleepTarget=null
string Abilities_demolisherMissile=null
string Abilities_dispelMagicTarget=null
string Abilities_faerieDragonMissile=null
string Abilities_fireBallMissile=null
string Abilities_flameStrikeEmbers=null
string Abilities_frostNovaTarget=null
string Abilities_generalAuraTarget=null
string Abilities_greenDragonMissile=null
string Abilities_healTarget=null
string Abilities_innerFireTarget=null
string Abilities_makuraMissile=null
string Abilities_manaBurnTarget=null
string Abilities_manaFlareBoltImpact=null
string Abilities_poisonStingTarget=null
string Abilities_polyMorphTarget=null
string Abilities_rockBoltMissile=null
string Abilities_silenceTarget=null
string Abilities_sleepTarget=null
string Abilities_spellBreakerAttack=null
string Abilities_spellShieldCaster=null
string Abilities_vengeanceMissile=null
string Abilities_warStompCaster=null
integer AbilityIds_wander=0
integer AirPhysicsModule_MAX_MASS=0
real Angle_DEGTORAD=0.
real Angle_RADTODEG=0.
integer Arcanery_SILENCE_ID=0
integer Arcanery_SILENCE_BUFF_abilId=0
integer Arcanery_SILENCE_BUFF_buffId=0
integer Arcanery_SILENCE_MODE_ID=0
integer Arcanery_JUMP_MODE_ID=0
integer Arcanery_ORB_MODE_ID=0
integer Attackspeed_ATTACK_SPEED_RATE_POSITIVE_ID=0
integer Attackspeed_ATTACK_SPEED_RATE_NEGATIVE_ID=0
integer Attackspeed_ATTACK_SPEED_DUMMY_ID=0
integer Attackspeed_ATTACK_SPEED_INCREASE=0
integer Attackspeed_ATTACK_SPEED_DECREASE=0
string BaseObject_KEY_RALLY_X=null
string BaseObject_KEY_RALLY_Y=null
integer BasicSpells_BALL_SPELL_ID=0
integer BasicSpells_BALL_ITEM_ID=0
real Basics_ANIMATION_PERIOD=0.
real Basics_MAX_COLLISION_SIZE=0.
integer Basics_HEIGHT_ENABLER=0
integer Basics_LOCUST_ID=0
integer Basics_GHOST_INVIS_ID=0
integer Basics_GHOST_VIS_ID=0
player Basics_DUMMY_PLAYER=null
integer BigNum_l_count=0
integer BigString_BIG_SUBSTRING_LEN=0
integer BigString_MAX_SUBSTRINGS=0
integer BitSet_BITSET_SIZE=0
integer array BitSet_pows
integer array BitSet_reversePows
integer Bomber_BOMBER_ID=0
integer Bomber_AUTOATTACK_ID=0
integer Bomber_ATTACK_ORDER=0
integer Bomber_ATTACK_GROUND_ORDER=0
integer Bomber_STOP_ORDER=0
integer Bomber_MOVE_ORDER=0
integer Bombertower_ATTACK_ORDER=0
integer Bombertower_ATTACK_GROUND_ORDER=0
integer Bombertower_STOP_ORDER=0
integer Booster_SPEED_UP_ID=0
integer Booster_SPEED_DOWN_ID=0
real Booster_EVENT_RADIUS=0.
string Booster_BOOST_SPEED_KEY=null
integer Boots_BOOTS_DUMMY_ID=0
integer BossDamager_DAMAGER_ID=0
integer BossDamager_DMG_INC_ID=0
integer BossDamager_DMG_DEC_ID=0
real BossDamager_EVENT_RADIUS=0.
integer BossSpellTarget_SPELLTARGET_ID=0
integer BossSpellTarget_AOE_ID=0
integer BossSpellTarget_MISSILE_ID=0
integer BossSpellTarget_targets=0
real BossSpellTarget_MISSILE_RADIUS=0.
real BossSpellTarget_MISSILE_SPEED=0.
integer Boss_HP_UP_ID=0
integer Boss_HP_DOWN_ID=0
integer Boss_REAL_HP_BIG_ID=0
integer Boss_REAL_HP_SMALL_ID=0
integer Boss_AOE_SPELL_ID=0
integer Boss_MISSILE_SPELL_ID=0
integer Boss_REVIVE_ID=0
integer Boss_SUMMON_MINION_ID=0
integer Boss_MINION_SPAWN_SOUND=0
integer Boss_REVIVE_SOUND=0
real Buff_BUFF_ANIM_PERIOD=0.
integer array Buff_buffMap
integer Buff_LinkedListModule_first=0
integer Buff_LinkedListModule_last=0
integer Buff_LinkedListModule_size=0
integer BuilderConstants_TURN_ON_ID=0
integer BuilderConstants_TURN_OFF_ID=0
integer BuilderConstants_MAKE_UNIT_INVISIBLE_ID=0
integer BuilderConstants_MAKE_UNIT_VISIBLE_ID=0
integer BuilderConstants_REMOVE_OBJECT_ID=0
integer BuilderConstants_MODE_ESCAPERS_ID=0
integer BuilderConstants_MODE_KILLERS_ID=0
integer BuilderConstants_MODE_BOTH_ID=0
integer BuilderConstants_TELEPORTER_ID=0
integer BuilderConstants_WAYPOINT_ID=0
integer BuilderConstants_ARCANERY_ID=0
integer BuilderConstants_EXECUTER_ID=0
integer BuilderConstants_TC_BLOCKER_ID=0
integer BuilderConstants_UNIT_CREATOR_ID=0
integer BuilderConstants_UNIT_REMOVER_ID=0
integer BuilderConstants_REVIVE_POINT_ID=0
integer BuilderConstants_JUMPER_ID=0
integer BuilderConstants_TEXTER_ID=0
integer BuilderConstants_BOOSTER_ID=0
integer BuilderConstants_TRAP_ID=0
integer BuilderConstants_BOMB_TOWER_ID=0
integer BuilderConstants_CONGA_LINE_HEAD_ID=0
integer BuilderConstants_DOORDUMMY_ID=0
integer BuilderConstants_DOORORDER_ID=0
integer BuilderConstants_FOUNTAIN_BOTH_ID=0
integer BuilderConstants_FOUNTAIN_HEAL_ID=0
integer BuilderConstants_FOUNTAIN_CURE_ID=0
integer BuilderConstants_POWER_NODE_ID=0
integer BuilderConstants_SPINNER_ID=0
integer BuilderConstants_BUILD_TRACKS_ID=0
integer BuilderConstants_VORTEX_ID=0
integer BuilderConstants_PED_ID=0
integer BuilderConstants_VOLCANO_ID=0
integer BuilderConstants_HOR_WALL_ID=0
integer BuilderConstants_VER_WALL_ID=0
integer BuilderConstants_WALL_ID=0
integer BuilderConstants_TREE_DUMMY_ID=0
integer BuilderConstants_SOBS_DUMMY_ID=0
integer BuilderConstants_BOBS_DUMMY_ID=0
integer BuilderConstants_HOBS_DUMMY_ID=0
integer BuilderConstants_REMAINS_ID=0
integer BuilderConstants_FARM_ID=0
integer BuilderConstants_ICE_CRYSTAL_ID=0
integer BuilderConstants_OBELISK_ID=0
integer BuilderConstants_POISON_EGGS_ID=0
integer BuilderConstants_LANTERN_ID=0
integer BuilderConstants_MUSHROOM_ID=0
integer BuilderConstants_POST_LANTERN_ID=0
integer BuilderConstants_RUNE_ID=0
integer BuilderConstants_TORCH_ID=0
integer BuilderConstants_SUPERLIGHT_ID=0
integer BuilderConstants_SMALL_GRASS_KILLER_ID=0
integer BuilderConstants_SMALL_ICE_KILLER_ID=0
integer BuilderConstants_SMALL_CITADEL_KILLER_ID=0
integer BuilderConstants_SMALL_SAND_KILLER_ID=0
integer BuilderConstants_SMALL_SUNKEN_KILLER_ID=0
integer BuilderConstants_BIG_GRASS_KILLER_ID=0
integer BuilderConstants_BIG_ICE_KILLER_ID=0
integer BuilderConstants_BIG_CITADEL_KILLER_ID=0
integer BuilderConstants_BIG_SAND_KILLER_ID=0
integer BuilderConstants_BIG_SUNKEN_KILLER_ID=0
integer BuilderConstants_ESC_STRONG_ID=0
integer BuilderConstants_ESC_ICE_ID=0
integer BuilderConstants_ESC_FAST_ID=0
integer BuilderConstants_ESC_HOLY_ID=0
integer BuilderConstants_ESC_BLIND_ID=0
real BuilderConstants_hidden_x=0.
real BuilderConstants_hidden_y=0.
integer BuilderConstants_CONTROLLABLEICE=0
integer BuilderConstants_UNCONTROLLABLEICE=0
integer BuilderConstants_REVICE=0
integer BuilderConstants_LAVA=0
integer BuilderConstants_POISON=0
integer BuilderConstants_RUNES=0
integer BuilderConstants_MENU_2=0
integer BuilderConstants_MENU_3=0
integer BuilderConstants_MENU_BOSS=0
integer BuilderConstants_KEY_SPELL_ID=0
integer BuilderConstants_TOME_SPELL_ID=0
integer BuilderConstants_COIN_SPELL_ID=0
integer BuilderConstants_BOOTS_SPELL_ID=0
integer BuilderConstants_BM_BOSS_ID=0
integer BuilderConstants_BM_SPELLTARGET_ID=0
integer BuilderConstants_BM_DAMAGER_ID=0
integer BuilderConstants_BM_WEAPON_ID=0
integer BuilderConstants_TOME_ID=0
integer BuilderConstants_COIN_ID=0
integer BuilderConstants_BOOTS_ID=0
integer BuilderConstants_REGION_ADMIN_ID=0
integer array BuilderConstants_colorSpells
integer Builder_BUILDER_CIRCLES_ID=0
integer Builder_MENU_CIRCLES_ID=0
integer Builder_MENU_OBJECTS_ID=0
integer Builder_MENU_ENVIROMENTALS_ID=0
integer Builder_MENU_DECORATIONS_ID=0
integer Builder_CHAOS_BUILDER_1=0
integer Builder_CHAOS_BUILDER_2=0
integer Builder_CHAOS_BUILDER_3=0
integer Builder_CHAOS_BUILDER_4=0
real Camerashakes_LOOP_PERIOD=0.
real Camerashakes_SHAKE_REDUCE_FLAT=0.
real Camerashakes_SHAKE_REDUCE_PERCENT=0.
real Camerashakes_SHAKE_THRESHOLD=0.
real Camerashakes_RICHTER_MAX=0.
real Camerashakes_RICHTER_MIN=0.
force Camerashakes_shakingPlayers=null
real array Camerashakes_playerCurrentShake
integer ChunkedString_DEFAULT_CHUNK_SIZE=0
playerevent ClosureEvents_EVENT_PLAYER_CHAT_FILTER=null
trigger ClosureEvents_unitTrig=null
trigger ClosureEvents_leaveTrig=null
trigger ClosureEvents_keyTrig=null
integer array ClosureEvents_eventidToIndex
integer ClosureEvents_eventTypeCounter=0
integer EventListener_castMap=0
integer array EventListener_castMapCasters
integer array EventListener_generalListenersFirsts
integer array EventListener_unitListenersFirsts
boolean EventListener_useMouseEvents=false
boolean array ClosureEvents_config_fire
group ClosureForGroups_DUMMY_GROUP=null
integer array ClosureForGroups_tempCallbacks
integer ClosureForGroups_tempCallbacksCount=0
integer ClosureForGroups_maxCount=0
integer ClosureForGroups_iterCount=0
filterfunc ClosureForGroups_filter=null
integer ClosureTimers_x=0
integer Coin_COIN_DUMMY_ID=0
string array Colors_hexs
integer Colors_decs=0
integer Colors_COLOR_WHITE_red=0
integer Colors_COLOR_WHITE_green=0
integer Colors_COLOR_WHITE_blue=0
integer Colors_COLOR_WHITE_alpha=0
integer Colors_COLOR_BLACK_red=0
integer Colors_COLOR_BLACK_green=0
integer Colors_COLOR_BLACK_blue=0
integer Colors_COLOR_BLACK_alpha=0
integer Colors_COLOR_GOLD_red=0
integer Colors_COLOR_GOLD_green=0
integer Colors_COLOR_GOLD_blue=0
integer Colors_COLOR_GOLD_alpha=0
integer Colors_MAX_PLAYER_COLORS=0
integer array Colors_PLAYER_COLORS_red
integer array Colors_PLAYER_COLORS_green
integer array Colors_PLAYER_COLORS_blue
string array Colors_PLAYER_COLOR_NAMES
integer CongaObjects_ADD_ID=0
integer CongaObjects_INC_ID=0
integer CongaObjects_DEC_ID=0
integer CongaObjects_CONGA_STRICT_ID=0
integer CongaObjects_CONGA_LOOSE_ID=0
integer CongaObjects_CONGA_CONFIG_ID=0
integer CustomBar_DEFAULT_BACKGROUND=0
integer CustomBar_DEFAULT_FOREGROUND=0
integer array CustomBar_bars
integer CustomBar_count=0
timer CustomBar_animationTimer=null
boolean DamageEvent_DETECT_NATIVE_ABILITIES=false
integer DamageEvent_DAMAGE_ELEMENT_ATTACK=0
integer DamageEvent_nextDamageId=0
integer DamageEvent_nextDamageType=0
integer DamageEvent_nextDamageElement=0
boolean DamageEvent_abort=false
integer array DamageEvent_firstListeners
integer DamageEvent_maxPriority=0
integer array DamageEvent_firstUnreducedListeners
integer DamageEvent_maxUnreducedPriority=0
integer DamageInstance_current=0
integer array DamageInstance_stack
integer DamageInstance_count=0
multiboard DebugInfo_mb=null
integer DebugInfo_rows=0
integer DebugInfo_columns=0
integer DebugInfo_seconds=0
integer DebugInfo_eventCallbacksPerSecond=0
integer DebugInfo_totalEventCallbacks=0
integer DebugInfo_allocationsPerSecond=0
integer DebugInfo_totalAllocations=0
boolean DebugInfo_isFirst=false
integer Decoration_CHANGE_FACE_ID=0
integer Decoration_INC_SCALE=0
integer Decoration_DEC_SCALE=0
string Decoration_KEY_SCALE=null
string Decoration_KEY_ANGLE=null
string Doodads_shimmeringPortal=null
integer Door_DOORPATH=0
integer Door_DOORPATH_O=0
integer Door_DOOROPEN_ABILITY_ID=0
integer Door_DOORTURN_ABILITY_ID=0
real Door_EVENT_RADIUS=0.
integer array Door_KEY_COLOR_ID
string Door_KEY_COLOR=null
string Door_KEY_ROTATION=null
integer DummyRecycler_DUMMY_UNIT_ID=0
integer DummyRecycler_ROOT_ENABLER=0
integer DummyRecycler_DIFFERENT_ANGLES=0
real DummyRecycler_ANGLE_DEGREE=0.
integer DummyRecycler_SAVED_UNITS_PER_ANGLE=0
integer array DummyRecycler_angleQueues
integer Encoder_maxHash=0
integer EntityManagement_activeItr=0
integer EntityManagement_buffItr=0
string Entity_KEY_X=null
string Entity_KEY_Y=null
string Entity_KEY_Z=null
string Entity_KEY_TYPE=null
real Entity_serializeOrigin_x=0.
real Entity_serializeOrigin_y=0.
real Entity_serializeOrigin_z=0.
integer array Entity_entities
integer Entity_DupletListModule_firstActive=0
integer Entity_DupletListModule_lastActive=0
integer Entity_DupletListModule_firstInactive=0
integer Entity_DupletListModule_lastInactive=0
integer Entity_DupletListModule_activeSize=0
integer Entity_DupletListModule_inactiveSize=0
integer ErrorHandling_MUTE_ERROR_DURATION=0
integer ErrorHandling_PRIMARY_ERROR_KEY=0
hashtable ErrorHandling_HT=null
string ErrorHandling_lastError=null
boolean ErrorHandling_suppressErrorMessages=false
integer EscaperClasses_REINCARNATION_ID=0
integer EscaperClasses_PORTAL_CREATE_ID=0
integer EscaperClasses_SPEEDWAVE_ID=0
integer EscaperClasses_STAGNANCYSHIELD_ID=0
integer EscaperClasses_SLOWWAVE_ID=0
integer EscaperClasses_TEMP_REV_ID=0
integer EscaperClasses_INNER_STRENGTH_ID=0
integer EscaperClasses_FIRE_RESISTANCE=0
integer Portal_Sensor_sensorListeners=0
real EscaperKillers_COLL_SIZE_SK=0.
real EscaperKillers_COLL_SIZE_BK=0.
real EscaperKillers_COLL_SIZE_SRK=0.
real EscaperKillers_COLL_SIZE_BRK=0.
real EscaperKillers_COLL_SIZE_TANK=0.
real EscaperKillers_COLL_SIZE_GLAIVE=0.
real EscaperKillers_COLL_SIZE_AIR_Z=0.
real EscaperKillers_COLL_SIZE_AIR_XY=0.
real EscaperKillers_COLL_SIZE_FIRE=0.
integer EscaperKillers_SMALL_RANDOM_KILLER_ID=0
integer EscaperKillers_BIG_RANDOM_KILLER_ID=0
integer EscaperKillers_GLAIVE_KILLER_ID=0
integer EscaperKillers_TANK_KILLER_ID=0
integer EscaperKillers_FIRE_KILLER_ID=0
integer EscaperKillers_AIR_KILLER_ID=0
integer EscaperObjects_HP_GAIN_50=0
integer EscaperObjects_HP_GAIN_75=0
integer EscaperObjects_HP_GAIN_100=0
integer EscaperObjects_TOMB_DUMMY_ID=0
integer EscaperSensorSetup_Sensor_sensorListeners=0
real Escaper_SLIDE_ADD=0.
integer Escaper_ANK_ITEM_ID=0
integer Escaper_TELEPORT_ITEM_ID=0
integer Escaper_JUMP_SPELL=0
integer Escaper_ORB_SPELL=0
integer Escaper_JAUNT_SPELL=0
string Escaper_POISON_EFFECT=null
string Escaper_LAVA_EFFECT=null
integer Escaper_escapers=0
real Escaper_currentRevivepoint_x=0.
real Escaper_currentRevivepoint_y=0.
integer EventHelper_rectMap=0
integer EventHelper_regionMap=0
integer EventHelper_triggerData=0
force Execute_executeForce=null
boolean array Execute_tempCallbacksSuccess
integer array Execute_tempCallbacks
integer Execute_tempCallbacksCount=0
integer Executer_LEVER_DUMMY_ID=0
integer Executer_PLATE_DUMMY_ID=0
real Executer_EVENT_RADIUS=0.
integer Executer_ONESHOT_ABIL=0
integer Executer_REPEATING_ABIL=0
integer Executer_LEVER_ABIL=0
integer Executer_PRESSURE_ABIL=0
integer Executer_REACTIVATE_ABIL=0
integer Executer_TERRAIN_CHANGE_ABIL=0
integer Executer_TERRAIN_WALKABLE_ABIL=0
integer Executer_TERRAIN_UNWALKABLE_ABIL=0
integer Executer_TERRAIN_ICE_ABIL=0
integer Executer_TERRAIN_UNICE_ABIL=0
integer Executer_TERRAIN_REVICE_ABIL=0
integer Executer_TERRAIN_W_O_ABIL=0
integer Executer_TERRAIN_UW_O_ABIL=0
integer Executer_TERRAIN_I_O_ABIL=0
integer Executer_TERRAIN_UI_O_ABIL=0
integer Executer_TERRAIN_RI_O_ABIL=0
integer Executer_TERRAIN_INCREASE_H_ABIL=0
integer Executer_TERRAIN_INCREASE_V_ABIL=0
integer Executer_TERRAIN_DECREASE_H_ABIL=0
integer Executer_TERRAIN_DECREASE_V_ABIL=0
integer Executer_TERRAIN_BOOK_ABIL=0
integer Executer_TERRAIN_ANTIBOOK_ABIL=0
integer Executer_DOOR_OPEN_ABIL=0
integer Executer_DOOR_CLOSE_ABIL=0
integer Executer_DOOR_TOGGLE_ABIL=0
integer Executer_MOVE_UNIT_DIRECT_ABIL=0
integer Executer_MOVE_UNIT_PATROL_ABIL=0
integer Executer_MOVE_UNIT_STOP_ABIL=0
integer Executer_MOVE_UNIT_SELECT_ABIL=0
integer Executer_TRAIN_BOOK_ABIL=0
integer Executer_SPAWN_UNIT_ID=0
integer Executer_TRAIN_BK_ABIL=0
integer Executer_TRAIN_SK_ABIL=0
integer Executer_TRAIN_BRK_ABIL=0
integer Executer_TRAIN_SRK_ABIL=0
integer Executer_TRAIN_TANK_ABIL=0
integer Executer_TRAIN_GLAIVE_ABIL=0
integer Executer_TRAIN_POINTER_ABIL=0
integer Executer_TRAIN_KNOCK_ABIL=0
trigger Executer_executerUnitLeave=null
trigger Executer_executerUnitEnter=null
integer FText_recylcer=0
integer FText_LinkedListModule_first=0
integer FText_LinkedListModule_last=0
integer FText_LinkedListModule_size=0
real Faceless_KILL_RADIUS=0.
integer Faceless_DIMENSION_SHIFTER_ID=0
integer Faceless_UP_VIS_ID=0
integer Faceless_DOWN_VIS_ID=0
integer Faceless_UP_INVIS_ID=0
integer Faceless_DOWN_INVIS_ID=0
integer FileIO_CHUNKS_PER_FILE=0
integer FileIO_FILE_IO_ABIL_ID=0
string FileIO_FILE_IO_ABIL_ID_STR=null
string Fountain_EFFECT_ID=null
framehandle Framehandle_GAME_UI=null
real Framehandle_SCREEN_TOP_x=0.
real Framehandle_SCREEN_TOP_y=0.
real Framehandle_SCREEN_BOTTOM_x=0.
real Framehandle_SCREEN_BOTTOM_y=0.
integer Framehandle_BLZ_FRAMENAME_MAXLENGTH=0
boolean Frentity_DYNAMIC_Z=false
boolean Frentity_KILL_ACTORS=false
boolean Frentity_DISABLE_TEAMATTACK=false
boolean Frentity_SHOW_SQUARE=false
string GameConstants_MAP_VER=null
player GameConstants_STAFF_PLAYER=null
string array GameConstants_names
string array GameConstants_tags
integer array GameConstants_expBounds
string array GameConstants_ranks
integer GameStatus_gameStatus=0
timer GameTimer_gameTimer=null
real GameTimer_currentTime=0.
integer GlobalShop_GOODS_STORE_ID=0
integer GroupUtils_GROUP_NUMBER_LIMIT=0
integer GroupUtils_START_CREATE_GROUPS=0
integer GroupUtils_used=0
group array GroupUtils_stack
integer GroupUtils_numStack=0
integer GroupUtils_numTotal=0
boolean GroupUtils_shownMaxError=false
group Group_ENUM_GROUP=null
group Group_iterGroup=null
hashtable HashList_ht=null
hashtable HashList_occurences=null
hashtable HashSet_position=null
integer array Heightmap_quads_id
integer array Heightmap_quads_x
integer array Heightmap_quads_y
real array Heightmap_quads_botLeft_x
real array Heightmap_quads_botLeft_y
real array Heightmap_quads_z1
real array Heightmap_quads_z2
real array Heightmap_quads_z3
real array Heightmap_quads_z4
string Icons_bTNAnkh=null
string Icons_bTNHuntress=null
string Icons_bTNSelectHeroOn=null
integer array InstantBuild_buildorders
integer InstantDummyCaster_DUMMY_CASTER_UNIT_ID=0
integer InstantDummyCaster_DUMMY_ROOT_ABIL_ID=0
unit InstantDummyCaster_caster=null
integer Integer_INT_MAX=0
integer Integer_INT_MIN=0
string JsonParser_numbermap=null
string JsonParser_lettermap=null
integer Json_JSON_SIGN_COMMA=0
integer Json_JSON_OPEN_ARRAY=0
integer Json_JSON_CLOSE_ARRAY=0
integer JukeBox_jukeBox=0
integer JukeBox_musics=0
integer Jumper_DECREASE_FORCE_ID=0
integer Jumper_INCREASE_FORCE_ID=0
integer Jumper_MODE_FORCED_ID=0
integer Jumper_MODE_UNFORCED_ID=0
string Jumper_EFFECT_STRING=null
integer Jumper_SPECIAL_ID=0
integer Jumper_snd=0
boolean array KeyUtils_keyStatuses_up
boolean array KeyUtils_keyStatuses_down
boolean array KeyUtils_keyStatuses_left
boolean array KeyUtils_keyStatuses_right
integer KeyUtils_firstKeyListener=0
integer Key_KEY_DUMMY_ID=0
integer array Key_keyIds
integer Key_DYN_ID=0
integer Key_STATIC_ID=0
integer Key_INFINITE_ID=0
string Key_KEY_COLOR=null
integer Knockbacker_KNOCKBACKER_ID=0
integer Knockbacker_KNOCK_INC_ID=0
integer Knockbacker_KNOCK_DEC_ID=0
integer Knockbacker_DMG_INC_ID=0
integer Knockbacker_DMG_DEC_ID=0
integer LZW_maxDictSize=0
string LZW_DICT_INIT=null
string LZW_ALLOWED_PLAYER_CHARS=null
integer LZW_dictionary=0
integer LZW_dictSize=0
string LobbyTeleporter_EFFECT_STRING=null
integer LobbyTeleporter_ESC_ID=0
real LobbyTeleporter_EVENT_RADIUS=0.
real MGAgar_RIGHT_SPOT_x=0.
real MGAgar_RIGHT_SPOT_y=0.
integer MGAgar_map=0
real MGSlide_LEFT_SPOT_x=0.
real MGSlide_LEFT_SPOT_y=0.
real MGSlide_RIGHT_SPOT_x=0.
real MGSlide_RIGHT_SPOT_y=0.
real MGSpacey_ARENA_POS_x=0.
real MGSpacey_ARENA_POS_y=0.
integer MGSpacey_minigame=0
integer MGSpacey_SHIP_ID=0
integer MGSpacey_ships=0
integer MGSpacey_rocks=0
real MGWarlock_ARENA_POS_x=0.
real MGWarlock_ARENA_POS_y=0.
integer MGWarlock_minigame=0
integer MGWarlock_WARLOCK_ID=0
integer MGWarlock_FIREBALL_ID=0
integer MGWarlock_warlocks=0
boolean MagicFunctions_compiletime=false
rect MapBounds_playableMapRect=null
rect MapBounds_boundRect=null
region MapBounds_boundRegion=null
real MapBounds_playableMin_x=0.
real MapBounds_playableMin_y=0.
real MapBounds_playableMax_x=0.
real MapBounds_playableMax_y=0.
real MapBounds_boundMin_x=0.
real MapBounds_boundMin_y=0.
real MapBounds_boundMax_x=0.
real MapBounds_boundMax_y=0.
real Maths_PI=0.
real Matrices_ZERO44_m00=0.
real Matrices_ZERO44_m01=0.
real Matrices_ZERO44_m02=0.
real Matrices_ZERO44_m03=0.
real Matrices_ZERO44_m10=0.
real Matrices_ZERO44_m11=0.
real Matrices_ZERO44_m12=0.
real Matrices_ZERO44_m13=0.
real Matrices_ZERO44_m20=0.
real Matrices_ZERO44_m21=0.
real Matrices_ZERO44_m22=0.
real Matrices_ZERO44_m23=0.
real Matrices_ZERO44_m30=0.
real Matrices_ZERO44_m31=0.
real Matrices_ZERO44_m32=0.
real Matrices_ZERO44_m33=0.
integer MinigameTeleporter_ESC_ID=0
integer MinigameTeleporter_MINI_TP=0
real MinigameTeleporter_EVENT_RADIUS=0.
integer Minigame_minigames=0
integer Minigame_minigames_live=0
real Minigame_MAX_TIME=0.
integer Minigame_BEGIN_SOUND=0
real Minion_COLL_SIZE_MINION=0.
real Minion_ATTACK_DISTANCE=0.
real Minion_ATTACK_RANGE=0.
real Minion_ATTACK_DAMAGE=0.
real Minion_FOLLOW_RANGE=0.
integer MoveSpeed_INC_SPEED_ID=0
integer MoveSpeed_DEC_SPEED_ID=0
integer MultiboardClass_counter=0
string ObjectIds_CHARMAP=null
integer ObjectTarget_OBJECT_TARGET_ID=0
string Objects_impaleTargetDust=null
string Objects_questionMark1=null
integer ObstacleObjects_SOBS_CITADEL_ID=0
integer ObstacleObjects_BOBS_CITADEL_ID=0
integer ObstacleObjects_HOBS_CITADEL_ID=0
integer ObstacleObjects_SOBS_ICE_ID=0
integer ObstacleObjects_BOBS_ICE_ID=0
integer ObstacleObjects_HOBS_ICE_ID=0
integer ObstacleObjects_SOBS_GRASS_ID=0
integer ObstacleObjects_BOBS_GRASS_ID=0
integer ObstacleObjects_HOBS_GRASS_ID=0
integer ObstacleObjects_SOBS_DESERT_ID=0
integer ObstacleObjects_BOBS_DESERT_ID=0
integer ObstacleObjects_HOBS_DESERT_ID=0
integer ObstacleObjects_SOBS_SUNKEN_ID=0
integer ObstacleObjects_BOBS_SUNKEN_ID=0
integer ObstacleObjects_HOBS_SUNKEN_ID=0
real Obstacle_EVENT_RADIUS_SMALL=0.
real Obstacle_EVENT_RADIUS_BIG=0.
real Obstacle_EVENT_RADIUS_HIGH=0.
real Obstacle_EVENT_HEIGHT_HIGH=0.
real Obstacle_EVENT_RADIUS_V=0.
trigger OnUnitEnterLeave_eventTrigger=null
group OnUnitEnterLeave_preplacedUnits=null
unit array OnUnitEnterLeave_tempUnits
integer OnUnitEnterLeave_tempUnitsCount=0
integer OnUnitEnterLeave_ABILITY_ID=0
integer OrderIds_patrol=0
integer OrderIds_soulburn=0
integer OrderIds_undefend=0
real PedestalObjects_AOE_PICK_RANGE=0.
integer PedestalObjects_SELECT_SINGLE_ID=0
integer PedestalObjects_SELECT_AOE_ID=0
integer PedestalObjects_SELECT_AOE_TILE_ID=0
integer PedestalObjects_SELECT_TILE_ID=0
integer PedestalObjects_SAVE1_ID=0
integer PedestalObjects_SAVE2_ID=0
integer PedestalObjects_SAVE3_ID=0
integer PedestalObjects_SAVE4_ID=0
integer PedestalObjects_LOAD1_ID=0
integer PedestalObjects_LOAD2_ID=0
integer PedestalObjects_LOAD3_ID=0
integer PedestalObjects_LOAD4_ID=0
string MemoryAccessPedestal_ENTITIES_KEY=null
string MemoryAccessPedestal_TILES_KEY=null
integer array MemoryAccessPedestal_lastRef
real PhysicsConstants_defaultGravity=0.
integer array PickSystem_currentView
real PickSystem_START_x=0.
real PickSystem_START_y=0.
real PickSystem_PICK_x=0.
real PickSystem_PICK_y=0.
real PickSystem_PICK_z=0.
integer PickSystem_BLINK_ID=0
integer PickSystem_PICK_DUMMY_ID=0
integer PickSystem_PREV_ID=0
integer PickSystem_NEXT_ID=0
integer PickSystem_PICK_ID=0
boolean PickSystem_hastStartedYet=false
integer EscaperDefinition_LinkedListModule_first=0
integer EscaperDefinition_LinkedListModule_last=0
integer EscaperDefinition_LinkedListModule_size=0
integer PlayerData_playerboard=0
integer array PlayerData_pData
integer PlayerData_allPlayers=0
integer PlayerData_escaperPlayers=0
integer PlayerData_builderPlayers=0
integer PlayerData_questFailedSound=0
integer PlayerData_minutes=0
integer PlayerData_seconds=0
player array Player_players
player Player_localPlayer=null
playercolor Playercolor_PLAYER_COLOR_BLACK_AGGRESSIVE=null
playercolor Playercolor_PLAYER_COLOR_UNKNOWN1=null
playercolor Playercolor_PLAYER_COLOR_UNKNOWN2=null
playercolor Playercolor_PLAYER_COLOR_BLACK_PASSIVE=null
playercolor array Playercolor_LOOKUP
integer Players_ALL_PLAYERS=0
integer Players_onLeaveListener=0
integer Pointer_POINTER_ID=0
real Pointer_POINTER_RADIUS=0.
integer Pointer_INC_ID=0
integer Pointer_DEC_ID=0
integer Pointer_START_ID=0
integer Pointer_STOP_ID=0
string Powernode_EFFECT_STRING=null
string Powernode_EFFECT_BOUNCE_STRING=null
string Powernode_EFFECT_DIODE_STRING=null
string Powernode_EFFECT_TETHER_BOTH_STRING=null
string Powernode_EFFECT_TETHER_AIR_STRING=null
string Powernode_EFFECT_ORB_STRING=null
string Powernode_KILL_EFFECT=null
real Powernode_ACTIVATION_DIST=0.
integer Powernode_INCREASE_BOUNCE_ID=0
integer Powernode_DECREASE_BOUNCE_ID=0
integer Powernode_LINK_B_GROUND_ID=0
integer Powernode_LINK_B_AIR_ID=0
integer Powernode_LINK_B_BOTH_ID=0
integer Powernode_LINK_KILL_ID=0
integer Powernode_LINK_SPELLBOOK_ID=0
integer Powernode_LINK_DIODE_GROUND_ID=0
integer Powernode_LINK_ORB_ID=0
boolean Preloader_autoFinish=false
group Preloader_dumg=null
unit Preloader_dum=null
real Printing_DEBUG_MSG_DURATION=0.
integer Printing_config_DEBUG_LEVEL=0
real Quaternion_IDENTITYQ_x=0.
real Quaternion_IDENTITYQ_y=0.
real Quaternion_IDENTITYQ_z=0.
real Quaternion_IDENTITYQ_w=0.
real Quaternion_EPSILON=0.
real Real_REAL_MAX=0.
real Real_REAL_MIN=0.
real RegionData_LOUNGE_x=0.
real RegionData_LOUNGE_y=0.
integer RegionData_regionMap=0
real RegionData_x=0.
real RegionData_y=0.
integer array RegionData_currentRegion
integer array RegionData_regions
integer RegionData_EMPTY_REGION=0
trigger array RegisterEvents_t
integer RegisterEvents_onCastMap=0
real ReviveManager_TIMER_PERIOD=0.
integer ReviveManager_waitForListener=0
integer ReviveManager_revMode=0
integer array ReviveManager_pods
integer ReviveManager_waitForCount=0
integer RevivePointModifier_REV_MODIFIER_DUMMY_ID=0
integer RevivePointModifier_CREATE_REV_MOD_ID=0
integer RevivePointModifier_REMOVE_REV_MOD_ID=0
real Revivepoint_EVENT_RADIUS=0.
integer Revivepoint_rescueSound=0
integer Revivepoint_currentRevive=0
boolean SafetyChecks_SAFETY_CHECKS_ENABLED=false
boolean SaveLoadData_READ_FILES_IN_REPLAYS=false
integer SerializeIds_JUMPER_INDEX=0
integer SerializeIds_REVIVE_INDEX=0
integer SerializeIds_TEXTER_INDEX=0
integer SerializeIds_BOMBTOWER_INDEX=0
integer SerializeIds_VORTEX_INDEX=0
integer SerializeIds_EXECUTER_INDEX=0
integer SerializeIds_BOOSTER_INDEX=0
integer SerializeIds_UNITREMOVER_INDEX=0
integer SerializeIds_WAYPOINT_INDEX=0
integer SerializeIds_TELEPORTER_INDEX=0
integer SerializeIds_DOOR_INDEX=0
integer SerializeIds_SMALLOBS_INDEX=0
integer SerializeIds_BIGOBS_INDEX=0
integer SerializeIds_TREE_INDEX=0
integer SerializeIds_SPINNER_INDEX=0
integer SerializeIds_UNITCREATOR_INDEX=0
integer SerializeIds_TRACKS_INDEX=0
integer SerializeIds_FOUNTAIN_INDEX=0
integer SerializeIds_POWERNODE_INDEX=0
integer SerializeIds_TRAP_INDEX=0
integer SerializeIds_CONGA_INDEX=0
integer SerializeIds_TBLOCKER_INDEX=0
integer SerializeIds_VOLCANO_INDEX=0
integer SerializeIds_WALL_INDEX=0
integer SerializeIds_HWALL_INDEX=0
integer SerializeIds_VWALL_INDEX=0
integer SerializeIds_ARCANERY_INDEX=0
integer SerializeIds_SMALLKILL_INDEX=0
integer SerializeIds_BIGKILL_INDEX=0
integer SerializeIds_BOMBER_INDEX=0
integer SerializeIds_KEY_INDEX=0
integer SerializeIds_BIGRANDKILL_INDEX=0
integer SerializeIds_SMALLRANDKILL_INDEX=0
integer SerializeIds_TANKKILL_INDEX=0
integer SerializeIds_GLAIVEKILL_INDEX=0
integer SerializeIds_AIRKILL_INDEX=0
integer SerializeIds_FIREKILL_INDEX=0
integer SerializeIds_FACELESS_INDEX=0
integer SerializeIds_KNOCKBACKER_INDEX=0
integer SerializeIds_POINTER_INDEX=0
integer SerializeIds_OBJ_TARGET_INDEX=0
integer SerializeIds_TC_INDEX=0
integer SerializeIds_HIGH_OBS_INDEX=0
integer SerializeIds_COIN_INDEX=0
integer SerializeIds_TOME_INDEX=0
integer SerializeIds_BOOTS_INDEX=0
integer SetupBox_SETUP_BOX_ID=0
integer SetupBox_EASY_ENABLE=0
integer SetupBox_EASY_DISABLE=0
integer SetupBox_ICEI_ID=0
integer SetupBox_ICED_ID=0
integer SetupBox_PI_ID=0
integer SetupBox_PD_ID=0
integer SetupBox_LI_ID=0
integer SetupBox_LD_ID=0
integer SetupBox_TURND_ID=0
integer SetupBox_TURNI_ID=0
integer SetupBox_ALLOW_ID=0
integer SetupBox_CLEAR_ID=0
integer SetupBox_BOSS_MODE_ID=0
integer SetupBox_JUMP_TOGGLE_ID=0
integer SetupBox_JUMP_SPELL_ID=0
integer SetupBox_FIRST_PAGE=0
integer SetupBox_SECOND_PAGE=0
integer SetupBox_INC_GRAVITY=0
integer SetupBox_DEC_GRAVITY=0
integer SetupBox_ABIL_WIZARD=0
integer SetupBox_ORB_TOGGLE_ID=0
integer SetupBox_ORB_SPELL_ID=0
integer SetupBox_CANCEL_TOGGLE_ID=0
integer SetupBox_CUT_ALLOW=0
integer SetupBox_CUT_DISABLE=0
real SetupBox_MAX_SLIDESPEED=0.
real SetupBox_MAX_DOT_DMG=0.
integer SetupBox_BOSS_SOUND=0
integer SetupObject_count=0
real array SetupObject_offsets_x
real array SetupObject_offsets_y
boolean SoundUtils_DEFAULT_SOUND_STOPS_ON_LEAVE_RANGE=false
integer SoundUtils_DEFAULT_SOUND_FADE_IN_RATE=0
integer SoundUtils_DEFAULT_SOUND_FADE_OUT_RATE=0
string SoundUtils_DEFAULT_SOUND_EAX_SETTINGS=null
integer SoundUtils_DEFAULT_SOUND_VOLUME=0
real SoundUtils_DEFAULT_SOUND_PITCH=0.
integer SoundUtils_DEFAULT_SOUND_DURATION=0
integer SoundUtils_SOUND_CHANNEL=0
real SoundUtils_SOUND_MIN_DIST=0.
real SoundUtils_SOUND_MAX_DIST=0.
real SoundUtils_SOUND_DIST_CUT=0.
string Sounds_arrangedTeamInvitation=null
string Sounds_questFailed=null
integer SpinnerObjects_SPIN_ADD_SINGLE_ID=0
integer SpinnerObjects_SPIN_ADD_GROUP_ID=0
integer SpinnerObjects_SPIN_INC_SPEED_ID=0
integer SpinnerObjects_SPIN_DEC_SPEED_ID=0
integer SpinnerObjects_SPIN_COS_INC_ID=0
integer SpinnerObjects_SPIN_COS_DEC_ID=0
integer SpinnerObjects_SPIN_SIN_INC_ID=0
integer SpinnerObjects_SPIN_SIN_DEC_ID=0
string array Squares_squares
integer array Startmazes_startmazes
integer Startmazes_currentMaze=0
integer Startmazes_svRev=0
string array StringUtils_c2s
integer array StringUtils_s2c
integer array StringUtils_width
integer StringUtils_MAX_INDEX=0
integer StringUtils_DEFAULT_WIDTH=0
boolean String_ENABLE_MULTIBYTE_SUPPORT=false
string String_charset=null
string String_numberset=null
string SyncSimple_DEFAULT_PREFIX=null
string SyncSimple_LAST_CHUNK_PREFIX=null
boolean SyncSimple_SYNC_IN_REPLAYS=false
integer SyncSimple_syncQueue=0
hashtable Table_ht=null
string Teleporter_EFFECT_STRING=null
real Teleporter_EVENT_RADIUS=0.
integer TerrainChanger_TERRAIN_CHANGER_ID=0
integer TerrainChanger_TERRAIN_O_WALKABLE_ID=0
integer TerrainChanger_TERRAIN_O_UNWALKABLE_ID=0
integer TerrainChanger_TERRAIN_O_ICE_ID=0
integer TerrainChanger_TERRAIN_O_UNICE_ID=0
integer TerrainChanger_TERRAIN_I_WALKABLE_ID=0
integer TerrainChanger_TERRAIN_I_UNWALKABLE_ID=0
integer TerrainChanger_TERRAIN_I_ICE_ID=0
integer TerrainChanger_TERRAIN_I_UNICE_ID=0
integer TerrainChanger_TERRAIN_INC_H_ID=0
integer TerrainChanger_TERRAIN_INC_V_ID=0
integer TerrainChanger_TERRAIN_DEC_H_ID=0
integer TerrainChanger_TERRAIN_DEC_V_ID=0
integer TerrainData_xCells=0
hashtable TerrainData_tileMap=null
integer TerrainModder_WALKABLE_ID=0
integer TerrainModder_UNWALKABLE_ID=0
integer TerrainModder_SLIDEABLE_ICE_ID=0
integer TerrainModder_SLIDEABLE_UNC_ICE_ID=0
integer TerrainModder_ICE_ABILITY=0
integer TerrainModder_REVICE_ABILITY=0
integer array TerrainModder_UNWALKABLE_MOD_ABILITY_ID
integer TerrainModder_BRUSH_1_IDLE_ABILITY=0
integer TerrainModder_BRUSH_1_ACTIVE_ABILITY=0
integer TerrainModder_BRUSH_3_IDLE_ABILITY=0
integer TerrainModder_BRUSH_3_ACTIVE_ABILITY=0
integer TerrainModder_BRUSH_5_IDLE_ABILITY=0
integer TerrainModder_BRUSH_5_ACTIVE_ABILITY=0
integer TerrainModder_BRUSH_CIRCLE_ID=0
integer TerrainModder_BRUSH_RECT_ID=0
real TerrainUtils_MAX_RANGE_SQ=0.
integer TerrainUtils_DUMMY_ITEM_ID=0
item TerrainUtils_dummyItem=null
rect TerrainUtils_itemSearchRect=null
item array TerrainUtils_hiddenItems
integer TerrainUtils_hiddenItemsCount=0
integer TerrainUtils_TILES_X=0
integer TerrainUtils_TILES_Y=0
real Texter_EVENT_RADIUS=0.
string array Texter_stdcolors
string Textures_black_mask=null
timer array TimerUtils_freeTimers
integer TimerUtils_freeTimersCount=0
integer TimerUtils_timerData=0
integer TimerUtils_HELD=0
integer Tome_TOME_DUMMY_ID=0
integer array Tracks_TRACKS
integer Tracks_TRACKS_ID=0
integer Tracks_TRACKS_1_ID=0
integer Tracks_TRACKS_2_ID=0
integer Tracks_TRACKS_3_ID=0
integer Tracks_INC_ID=0
integer Tracks_DEC_ID=0
integer Tracks_LEFT_ID=0
integer Tracks_RIGHT_ID=0
integer Tracks_INCLENGTH_ID=0
integer Tracks_DECLENGTH_ID=0
integer Trap_DECREASE_DURATION_ID=0
integer Trap_INCREASE_DURATION_ID=0
integer Trap_DECREASE_INTERVAL_ID=0
integer Trap_INCREASE_INTERVAL_ID=0
integer Trap_DECREASE_VALUE_ID=0
integer Trap_INCREASE_VALUE_ID=0
integer Trap_POISON_ID=0
integer Trap_SHAKE_ID=0
integer Trap_SPEED_ID=0
integer Trap_INSTANT_KILL_ID=0
integer Trap_STUN_ID=0
integer Trap_KNOCKBACK_ID=0
integer Trap_KNOCKBACK_PULL_ID=0
integer Trap_KNOCKBACK_PUSH_ID=0
integer Trap_NEXT_EFFECT_ID=0
integer Trap_PREVIOUS_EFFECT_ID=0
integer Trap_START_ID=0
integer Trap_STOP_ID=0
real Trap_EVENT_RADIUS=0.
integer Trap_SPECIAL_ID=0
integer Trap_STUN_BUFF=0
integer Trap_SPEED_BUFF_NEG=0
integer Trap_SPEED_BUFF_POS=0
integer Trap_SFX_COUNT=0
string array Trap_SFX_STRINGS
integer Tree_TREE_ID=0
integer TypeCasting_typecastdata=0
real TypeCasting_R2I_PRECISION=0.
string UI_confirmation=null
string UI_goldCredit=null
integer UnitIds_shade=0
trigger UnitIndexer_onIndexTrigger=null
trigger UnitIndexer_onDeindexTrigger=null
unit array UnitIndexer_tempUnits
integer UnitIndexer_tempUnitsCount=0
integer UnitProducer_UNIT_PRODUCER_ID=0
integer UnitProducer_FIRST_PAGE=0
integer UnitProducer_SECOND_PAGE=0
integer UnitProducer_AIR_KILLER=0
integer UnitProducer_BIG_KILLER=0
integer UnitProducer_SMALL_KILLER=0
integer UnitProducer_BR_KILLER=0
integer UnitProducer_SR_KILLER=0
integer UnitProducer_TANK_KILLER=0
integer UnitProducer_OBJ_TARGET=0
integer UnitProducer_GLAIVE_KILLER=0
integer UnitProducer_T_CHANGER=0
integer UnitProducer_POINTER=0
integer UnitProducer_BOMBER=0
integer UnitProducer_KNOCKBACK=0
integer UnitProducer_FACELESS=0
integer UnitProducer_FIRE=0
integer Unitcreator_INCREASE_INTERVAL_ID=0
integer Unitcreator_DECREASE_INTERVAL_ID=0
integer Unitcreator_FIXED_ID=0
integer Unitcreator_RANDOM_ID=0
integer Unitcreator_UTYPE_TANK=0
integer Unitcreator_UTYPE_SK=0
integer Unitcreator_UTYPE_BK=0
integer Unitcreator_UTYPE_SRK=0
integer Unitcreator_UTYPE_BRK=0
integer Unitcreator_UTYPE_POINTER=0
integer Unitcreator_UTYPE_KNOCKER=0
integer Unitcreator_UTYPE_GLAIVE=0
string Unitcreator_KEY_SPAWN=null
real Vectors_ZERO2_x=0.
real Vectors_ZERO2_y=0.
real Vectors_ZERO3_x=0.
real Vectors_ZERO3_y=0.
real Vectors_ZERO3_z=0.
real Vectors_RIGHT_x=0.
real Vectors_RIGHT_y=0.
real Vectors_UP_x=0.
real Vectors_UP_y=0.
real Vectors_LEFT_x=0.
real Vectors_LEFT_y=0.
real Vectors_DOWN_x=0.
real Vectors_DOWN_y=0.
location Vectors_tempLoc=null
integer Vortex_INC_GRAV_ID=0
integer Vortex_DEC_GRAV_ID=0
real Vortex_GRAV_RADIUS_BIG=0.
real Vortex_GRAV_RADIUS_MEDIUM=0.
real Vortex_GRAV_RADIUS_SMALL=0.
integer Vortex_ZMODE_NONE=0
integer Vortex_ZMODE_CYLI=0
integer Vortex_ZMODE_HEMI=0
integer Vortex_SIZE_SMALL=0
integer Vortex_SIZE_MED=0
integer Vortex_SIZE_BIG=0
integer WaypointObjects_AND_CONNECTION_ID=0
integer WaypointObjects_CLEAR_CONNECTION_ID=0
integer WaypointObjects_DECREASE_DELAY_ID=0
integer WaypointObjects_INCREASE_DELAY_ID=0
integer WaypointObjects_NO_WISPS_ID=0
real Waypoint_INCREMENT=0.
real Waypoint_EVENT_RADIUS=0.
integer Weapon_ATTACK_MELEE=0
integer Weapon_ATTACK_RANGED=0
hashtable hashtable_compiletime=null
hashtable hashtable_compiletime_2517=null
hashtable hashtable_compiletime_2518=null
hashtable hashtable_compiletime_2519=null
hashtable hashtable_compiletime_2520=null
integer array Serializable_nextFree
integer Serializable_firstFree=0
integer Serializable_maxIndex=0
integer array Serializable_typeId
integer array OnCastListener_nextFree
integer OnCastListener_firstFree=0
integer OnCastListener_maxIndex=0
integer array OnCastListener_typeId
integer array Buff_nextFree
integer Buff_firstFree=0
integer Buff_maxIndex=0
integer array Buff_typeId
integer array CallbackSingle_nextFree
integer CallbackSingle_firstFree=0
integer CallbackSingle_maxIndex=0
integer array CallbackSingle_typeId
integer array EventListener_nextFree
integer EventListener_firstFree=0
integer EventListener_maxIndex=0
integer array EventListener_typeId
integer array BigNum_nextFree
integer BigNum_firstFree=0
integer BigNum_maxIndex=0
integer array BigNum_typeId
integer array BigNum_l_nextFree
integer BigNum_l_firstFree=0
integer BigNum_l_maxIndex=0
integer array BigNum_l_typeId
integer array BigString_nextFree
integer BigString_firstFree=0
integer BigString_maxIndex=0
integer array BigString_typeId
integer array BigSubString_nextFree
integer BigSubString_firstFree=0
integer BigSubString_maxIndex=0
integer array BigSubString_typeId
integer array ForGroupCallback_nextFree
integer ForGroupCallback_firstFree=0
integer ForGroupCallback_maxIndex=0
integer array ForGroupCallback_typeId
integer array DamageListener_nextFree
integer DamageListener_firstFree=0
integer DamageListener_maxIndex=0
integer array DamageListener_typeId
integer array BackIterator_nextFree
integer BackIterator_firstFree=0
integer BackIterator_maxIndex=0
integer array Iterator_nextFree_1043
integer Iterator_firstFree_1035=0
integer Iterator_maxIndex_1039=0
integer array Iterator_typeId_1047
integer array ChunkedString_nextFree
integer ChunkedString_firstFree=0
integer ChunkedString_maxIndex=0
integer array ChunkedString_typeId
integer array CallbackCounted_nextFree
integer CallbackCounted_firstFree=0
integer CallbackCounted_maxIndex=0
integer array CallbackCounted_typeId
integer Callback_firstFree=0
integer array Callback_typeId
integer array CallbackPeriodic_nextFree
integer CallbackPeriodic_firstFree=0
integer CallbackPeriodic_maxIndex=0
integer array CallbackPeriodic_typeId
integer array CollisionShape_nextFree
integer CollisionShape_firstFree=0
integer CollisionShape_maxIndex=0
integer array CollisionWorld_nextFree
integer CollisionWorld_firstFree=0
integer CollisionWorld_maxIndex=0
integer array ConfigValue_nextFree
integer ConfigValue_firstFree=0
integer ConfigValue_maxIndex=0
integer array ConfigValue_typeId
integer array CongaSegment_nextFree
integer CongaSegment_firstFree=0
integer CongaSegment_maxIndex=0
integer array CongaSegment_typeId
integer array CustomBar_nextFree
integer CustomBar_firstFree=0
integer CustomBar_maxIndex=0
integer array CustomBar_typeId
integer array DamageElement_nextFree
integer DamageElement_firstFree=0
integer DamageElement_maxIndex=0
integer array DamageInstance_nextFree
integer DamageInstance_firstFree=0
integer DamageInstance_maxIndex=0
integer array DamageInstance_typeId
integer array DummyDamage_nextFree
integer DummyDamage_firstFree=0
integer DummyDamage_maxIndex=0
integer array DummyDamage_typeId
integer array Encoder_nextFree
integer Encoder_firstFree=0
integer Encoder_maxIndex=0
integer array Encoder_typeId
integer array SeqCallback_nextFree
integer SeqCallback_firstFree=0
integer SeqCallback_maxIndex=0
integer array SeqCallback_typeId
integer array ForForceCallback_nextFree
integer ForForceCallback_firstFree=0
integer ForForceCallback_maxIndex=0
integer array ForForceCallback_typeId
integer array PayloadCallback_nextFree
integer PayloadCallback_firstFree=0
integer PayloadCallback_maxIndex=0
integer array PayloadCallback_typeId
integer array Iterator_nextFree
integer Iterator_firstFree=0
integer Iterator_maxIndex=0
integer array Iterator_typeId
integer array SensorListener_nextFree
integer SensorListener_firstFree=0
integer SensorListener_maxIndex=0
integer array SensorListener_typeId
integer array LinkedListPredicate_nextFree
integer LinkedListPredicate_firstFree=0
integer LinkedListPredicate_maxIndex=0
integer array LinkedListPredicate_typeId
integer array FText_nextFree
integer FText_firstFree=0
integer FText_maxIndex=0
integer array FText_typeId
integer array BackIterator_nextFree_79
integer BackIterator_firstFree_73=0
integer BackIterator_maxIndex_76=0
integer array Iterator_nextFree_1044
integer Iterator_firstFree_1036=0
integer Iterator_maxIndex_1040=0
integer array Iterator_typeId_1048
integer array File_nextFree
integer File_firstFree=0
integer File_maxIndex=0
integer array File_typeId
integer array Startmaze_nextFree
integer Startmaze_firstFree=0
integer Startmaze_maxIndex=0
integer array Startmaze_typeId
integer array Fx2_nextFree
integer Fx2_firstFree=0
integer Fx2_maxIndex=0
integer array Fx2_typeId
integer array Fx_nextFree
integer Fx_firstFree=0
integer Fx_maxIndex=0
integer array Fx_typeId
integer array GlobalShop_nextFree
integer GlobalShop_firstFree=0
integer GlobalShop_maxIndex=0
integer array HLIterator_nextFree
integer HLIterator_firstFree=0
integer HLIterator_maxIndex=0
integer array HLIterator_typeId
integer array HLItrClosure_nextFree
integer HLItrClosure_firstFree=0
integer HLItrClosure_maxIndex=0
integer array HLItrClosure_typeId
integer array HashList_nextFree
integer HashList_firstFree=0
integer HashList_maxIndex=0
integer array HashList_typeId
integer array Table_nextFree
integer Table_firstFree=0
integer Table_maxIndex=0
integer array Table_typeId
integer array JsonParser_nextFree
integer JsonParser_firstFree=0
integer JsonParser_maxIndex=0
integer array JsonParser_typeId
integer array Json_nextFree
integer Json_firstFree=0
integer Json_maxIndex=0
integer array Json_typeId
integer array Property_nextFree
integer Property_firstFree=0
integer Property_maxIndex=0
integer array Property_typeId
integer array JukeBox_nextFree
integer JukeBox_firstFree=0
integer JukeBox_maxIndex=0
integer array JukeBox_typeId
integer array JukeRequest_nextFree
integer JukeRequest_firstFree=0
integer JukeRequest_maxIndex=0
integer array JukeRequest_typeId
integer array Music_nextFree
integer Music_firstFree=0
integer Music_maxIndex=0
integer array Music_typeId
integer array Goo_nextFree
integer Goo_firstFree=0
integer Goo_maxIndex=0
integer array Goo_typeId
integer array Comparator_nextFree
integer Comparator_firstFree=0
integer Comparator_maxIndex=0
integer LLBackIterator_firstFree=0
integer array LLBackIterator_typeId
integer array LLEntry_nextFree
integer LLEntry_firstFree=0
integer LLEntry_maxIndex=0
integer array LLEntry_typeId
integer array LLIterator_nextFree
integer LLIterator_firstFree=0
integer LLIterator_maxIndex=0
integer array LLIterator_typeId
integer array LLItrClosure_nextFree
integer LLItrClosure_firstFree=0
integer LLItrClosure_maxIndex=0
integer array LLItrClosure_typeId
integer array LinkedList_nextFree
integer LinkedList_firstFree=0
integer LinkedList_maxIndex=0
integer array LinkedList_typeId
integer array MapClosure_typeId
integer array AgarData_nextFree
integer AgarData_firstFree=0
integer AgarData_maxIndex=0
integer array Minigame_nextFree
integer Minigame_firstFree=0
integer Minigame_maxIndex=0
integer array Minigame_typeId
integer array ReviveListener_nextFree
integer ReviveListener_firstFree=0
integer ReviveListener_maxIndex=0
integer array ReviveListener_typeId
integer array Board_nextFree
integer Board_firstFree=0
integer Board_maxIndex=0
integer array Board_typeId
integer array IdGenerator_nextFree
integer IdGenerator_firstFree=0
integer IdGenerator_maxIndex=0
integer array IdGenerator_typeId
integer array OrderStringFactory_nextFree
integer OrderStringFactory_firstFree=0
integer OrderStringFactory_maxIndex=0
integer array LoadListener_nextFree
integer LoadListener_firstFree=0
integer LoadListener_maxIndex=0
integer array LoadListener_typeId
integer array EscaperClsr_nextFree
integer EscaperClsr_firstFree=0
integer EscaperClsr_maxIndex=0
integer array EscaperClsr_typeId
integer array EscaperDefinition_nextFree
integer EscaperDefinition_firstFree=0
integer EscaperDefinition_maxIndex=0
integer array EscaperDefinition_typeId
integer array BackIterator_nextFree_80
integer BackIterator_firstFree_74=0
integer BackIterator_maxIndex_77=0
integer array Iterator_nextFree_1045
integer Iterator_firstFree_1037=0
integer Iterator_maxIndex_1041=0
integer array OnPlayerLeave_nextFree
integer OnPlayerLeave_firstFree=0
integer OnPlayerLeave_maxIndex=0
integer array OnPlayerLeave_typeId
integer array PlayerData_nextFree
integer PlayerData_firstFree=0
integer PlayerData_maxIndex=0
integer array PlayerData_typeId
integer array Link_nextFree
integer Link_firstFree=0
integer Link_maxIndex=0
integer array Link_typeId
integer OnEndListener_firstFree=0
integer array OnEndListener_typeId
integer OnHitListener_firstFree=0
integer array OnHitListener_typeId
integer array FogData_nextFree
integer FogData_firstFree=0
integer FogData_maxIndex=0
integer array FogData_typeId
integer array RegionData_nextFree
integer RegionData_firstFree=0
integer RegionData_maxIndex=0
integer array RegionData_typeId
integer array RevivePod_nextFree
integer RevivePod_firstFree=0
integer RevivePod_maxIndex=0
integer array RevivePod_typeId
integer array RevivePointModifier_nextFree
integer RevivePointModifier_firstFree=0
integer RevivePointModifier_maxIndex=0
integer array RevivePointModifier_typeId
integer array BufferSyncListener_nextFree
integer BufferSyncListener_firstFree=0
integer BufferSyncListener_maxIndex=0
integer array BufferSyncListener_typeId
integer array Delimiter_nextFree
integer Delimiter_firstFree=0
integer Delimiter_maxIndex=0
integer Sim3DSound_firstFree=0
integer array Sim3DSound_typeId
integer array SoundDefinition_nextFree
integer SoundDefinition_firstFree=0
integer SoundDefinition_maxIndex=0
integer array SoundDefinition_typeId
integer array SoundInstance_nextFree
integer SoundInstance_firstFree=0
integer SoundInstance_maxIndex=0
integer array SoundInstance_typeId
integer array SpinNode_nextFree
integer SpinNode_firstFree=0
integer SpinNode_maxIndex=0
integer array SpinNode_typeId
integer array StringIterator_nextFree
integer StringIterator_firstFree=0
integer StringIterator_maxIndex=0
integer array StringIterator_typeId
integer StringSyncListener_firstFree=0
integer array StringSyncListener_typeId
integer BoolSyncListener_firstFree=0
integer array BoolSyncListener_typeId
integer IntSyncListener_firstFree=0
integer array IntSyncListener_typeId
integer RealSyncListener_firstFree=0
integer array RealSyncListener_typeId
integer array SyncData_nextFree
integer SyncData_firstFree=0
integer SyncData_maxIndex=0
integer array SyncData_typeId
integer array TexterClsr_nextFree
integer TexterClsr_firstFree=0
integer TexterClsr_maxIndex=0
integer array TexterClsr_typeId
integer array UnitIndex_nextFree
integer UnitIndex_firstFree=0
integer UnitIndex_maxIndex=0
integer array UnitIndex_typeId
integer array InventoryIterator_nextFree
integer InventoryIterator_firstFree=0
integer InventoryIterator_maxIndex=0
integer array InventoryIterator_typeId
integer array WeaponListener_nextFree
integer WeaponListener_firstFree=0
integer WeaponListener_maxIndex=0
integer array Reference_integer__nextFree
integer Reference_integer__firstFree=0
integer Reference_integer__maxIndex=0
integer array Reference_integer__typeId
integer array Arcanery_arcMode
integer array Arcanery_expMode
integer array Arcanery_currentEffect
integer array this_2953
integer array SilenceBufff_arcanery
real array SilenceBufff_distance
integer array this_2963
integer array this_2964
integer array this_2965
real array pos_x
real array pos_y
effect array StaticBaseObject_noRally
effect array StaticBaseObject_disFx
boolean array StaticBaseObject_enabled
real array StaticBaseObject_rallyPoint_x
real array StaticBaseObject_rallyPoint_y
real array StaticBaseObject_rallyPoint_z
unit array StaticBaseObject_rallyUnit
real array StaticBaseObject_rallyAngle_radians
trigger array StaticBaseObject_inRangeTrig
integer array this_2908
integer array BallProjectile_ballitem
integer array BigNum_list
integer array BigNum_base
integer array BigNum_l_leaf
integer array BigNum_l_next
integer array BigString_length
integer array BigString_startoffset
integer array BigSubString_parent
integer array BigSubString_next
integer array BigSubString_start
integer array BigSubString_length
string array BigSubString_preinit
unit array Bomber_setup
boolean array Bomber_realorder
integer array this_2975
integer array this_2976
integer array this_2970
integer array this_2971
integer array this_2972
integer array this_2973
integer array this_2974
unit array Bombertower_dummy
boolean array Bombertower_skipOrder
integer array obj
integer array obj_2548
integer array this_2986
integer array this_2987
integer array this_2988
integer array this_2989
real array Boomerang_initialPos_x
real array Boomerang_initialPos_y
real array Boomerang_middleone_x
real array Boomerang_middleone_y
real array Boomerang_middletwo_x
real array Boomerang_middletwo_y
real array Boomerang_target_x
real array Boomerang_target_y
integer array Boomerang_caster
integer array Booster_boostspeed
real array BossDamager_damage
unit array BossMissile_caster
integer array SpellTarget_stype
real array tpos_x
real array tpos_y
integer array this_2914
integer array this_2915
real array tpos_x_3018
real array tpos_y_3021
integer array this_2913
real array Boss_maxHp
real array Boss_currentHP
integer array Boss_hpBar
integer array this_2912
unit array upg
unit array Buff_target
real array Buff_duration
integer array Buff_buffData_abilId
integer array Buff_buffData_buffId
boolean array Buff_done
integer array Buff_LinkedListModule_prev
integer array Buff_LinkedListModule_next
integer array Iterator_current_1031
integer array Builder_regionCount
integer array this_2921
integer array this_2922
integer array this_2923
integer array this_2924
real array orderPos_x
real array orderPos_y
integer array orderId
integer array ChunkedString_table
integer array ChunkedString_chunkSize
integer array ChunkedString_chunkCount
integer array ChunkedString_readIndex
string array ChunkedString_buffer
integer array EventListener_eventId
integer array EventListener_uid
integer array EventListener_next
integer array EventListener_prev
integer array OnCastListener_next
integer array OnCastListener_prev
integer array OnCastListener_abilId
unit array OnCastListener_eventUnit
integer array cb
timerdialog array dia
integer array w_count
integer array CallbackCounted_count
integer array CallbackCounted_maxCount
timer array CallbackCounted_t
timer array CallbackPeriodic_t
timer array CallbackSingle_t
integer array pd_2571
real array ConfigValue_value
real array ConfigValue_increment
string array ConfigValue_valueName
integer array CongaLineHead_firstSegment
integer array CongaLineHead_cmode
real array CongaLineHead_segLength
integer array this_2990
integer array CongaSegment_next
integer array CongaSegment_prev
integer array CongaSegment_target
integer array CongaSegment_head
texttag array CustomBar_t
integer array CustomBar_bg_color_red
integer array CustomBar_bg_color_green
integer array CustomBar_bg_color_blue
integer array CustomBar_bg_color_alpha
integer array CustomBar_fg_color_red
integer array CustomBar_fg_color_green
integer array CustomBar_fg_color_blue
integer array CustomBar_fg_color_alpha
real array CustomBar_position_x
real array CustomBar_position_y
real array CustomBar_position_z
string array CustomBar_txt
real array CustomBar_textsize
integer array CustomBar_lockindex
boolean array CustomBar_locked
real array CustomBar_value
integer array CustomBar_NUM_CHARS
string array CustomBar_char
string array CustomBar_ptext
real array DamageInstance_amount
boolean array DamageInstance_unreduced
attacktype array DamageInstance_nativeAttackType
damagetype array DamageInstance_nativeDamageType
weapontype array DamageInstance_nativeWeaponType
integer array DamageListener_next
integer array Decoration_scale
integer array Decoration_tid
boolean array Decoration_hasBeenChanged
integer array this_2969
integer array this_2968
unit array Door_pathing
integer array Door_col
boolean array Door_vertical
boolean array Door_opened
integer array this_2991
unit array DummyDamage_dummy
widget array DummyDamage_target
real array DummyDamage_amount
boolean array DummyDamage_attack
boolean array DummyDamage_ranged
real array DummyDamage_origin_x
real array DummyDamage_origin_y
player array DummyDamage_attacker
attacktype array DummyDamage_attackType
damagetype array DummyDamage_damageType
weapontype array DummyDamage_weaponType
unit array u
string array Encoder_charset
integer array Encoder_base
real array Encoder_digits
integer array Encoder_bignum
integer array Encoder_hash
integer array Encoder_inputhash
integer array Encoder_comparehash
integer array w_cur
integer array big
integer array this_2888
integer array onFinish
integer array w_cur_2188
integer array this_2889
integer array bs
integer array w_i
integer array onFinishString
integer array this_2890
integer array this_2891
integer array this_2892
integer array bs_2275
integer array onFinish_2550
integer array this_2893
integer array this_2894
integer array this_2895
integer array this_2896
integer array bs_2276
integer array onFinish_2551
integer array this_2897
integer array onFinishLoad
integer array this_2898
integer array this_2899
integer array this_2900
real array Entity_pos_x
real array Entity_pos_y
real array Entity_pos_z
real array Entity_vel_x
real array Entity_vel_y
real array Entity_vel_z
real array Entity_gravity
real array Entity_radius
real array Entity_radius2
real array Entity_speedFactor
player array Entity_owner
boolean array Entity_flying
boolean array Entity_done
boolean array Entity_sleeps
integer array Entity_idleSeconds
integer array Entity_DupletListModule_prev
integer array Entity_DupletListModule_next
boolean array Entity_DupletListModule_active
integer array Iterator_current
item array ItemEntity_actor
unit array UnitEntity_actor
integer array FastEscaper_portal
real array Portal_destiny_x
real array Portal_destiny_y
integer array Portal_es
integer array Portal_duration
real array Portal_lerpy
integer array Portal_targetFx
trigger array Portal_Sensor_inRangeTrig
unit array Portal_Sensor_actorRef
integer array this_2938
boolean array StrongEscaper_invulnerable
effect array StrongEscaper_shieldeffect
real array StrongEscaper_shieldPos_x
real array StrongEscaper_shieldPos_y
real array StrongEscaper_shieldtimer
integer array this_2939
real array EscaperSensorSetup_sensorHeight
trigger array EscaperSensorSetup_Sensor_inRangeTrig
unit array EscaperSensorSetup_Sensor_actorRef
integer array this_2977
integer array this_2978
integer array this_2979
integer array this_2980
real array StaticEscaperSensorSetup_sensorHeight
integer array Escaper_revmod
boolean array Escaper_sliding
boolean array Escaper_poisoned
boolean array Escaper_onLava
boolean array Escaper_camlock
integer array Escaper_deaths
effect array Escaper_lavaEffect
effect array Escaper_poisonEffect
real array Escaper_walkVel_x
real array Escaper_walkVel_y
real array Escaper_slideVelocity_x
real array Escaper_slideVelocity_y
real array Escaper_otherVel_x
real array Escaper_otherVel_y
integer array Escaper_threshold
boolean array Escaper_alive
boolean array Escaper_selectatrevive
boolean array Escaper_camOnRevive
boolean array Escaper_left
unit array Escaper_revivetomb
integer array Escaper_lastVal
integer array Escaper_orb
real array Escaper_PhysicsModule_terrainZ
real array Escaper_PhysicsModule_surfaceFriction
integer array this_2937
real array tpos_x_3019
real array tpos_y_3022
integer array this_2932
integer array this_2933
integer array this_2934
integer array this_2935
integer array this_2936
integer array OrbProjectile_e
integer array OrbProjectile_rdata
integer array condition
integer array resetCount
integer array action
boolean array Executer_canKillerTrigger
boolean array Executer_canEscaperTrigger
rect array Executer_eventRect
region array Executer_eventRegion
integer array Executer_entitiesOnPlate
integer array Executer_eventMode
integer array Executer_actionMode
boolean array Executer_ON
integer array Executer_tiletype
integer array Executer_nottiletype
integer array Executer_verticalTileSize
integer array Executer_horizontalTileSize
unit array Executer_unitToMove
integer array Executer_actionUnit
string array Executer_moveOrderString
boolean array Executer_disabled
destructable array Executer_dummy
integer array this_2955
integer array this_2954
texttag array FText_tt
boolean array FText_permanent
real array FText_timestamp
integer array FText_cb
integer array FText_LinkedListModule_prev
integer array FText_LinkedListModule_next
integer array this_2901
integer array Iterator_current_1032
boolean array Iterator_destroyOnClose
integer array Faceless_visibleDur
integer array Faceless_invisDur
integer array Faceless_color_red
integer array Faceless_color_green
integer array Faceless_color_blue
integer array Faceless_color_alpha
real array Faceless_fadeDur
integer array Faceless_mode
real array Faceless_dur
integer array this_2981
string array File_filename
boolean array Fountain_cure
integer array this_2992
integer array this_2993
integer array Fx2Entity_fx
boolean array Fx2Entity_silent
effect array Fx2_eff
integer array Fx2_tint_red
integer array Fx2_tint_green
integer array Fx2_tint_blue
integer array Fx2_tint_alpha
integer array FxEntity_fx
boolean array FxEntity_silent
unit array Fx_dummy
effect array Fx_fx
string array Fx_sfxPath
integer array Fx_col_red
integer array Fx_col_green
integer array Fx_col_blue
integer array Fx_col_alpha
integer array createNow
integer array HLIterator_i
integer array HLIterator_list
integer array HashList_size
integer array HashMap_size
integer array IterableMap_keys
boolean array IterableMap__destroyed
integer array xRef
integer array zMap
integer array xRef_3153
integer array zMap_3157
integer array ItemEntityBridge_obj
integer array ItemObject_setup
integer array ItemObject_holder
integer array JsonParser_bigInput
integer array JsonParser_currentPosition
integer array JsonParser_propStartPosition
integer array JsonParser_squareBracketLvl
integer array JsonParser_lastType
string array JsonParser_currentToken
integer array JsonParser_output
integer array JsonParser_outputList
integer array JsonParser_propName
integer array JsonParser_propVal
integer array this_2902
integer array finalCallback
integer array this_2903
integer array callback
integer array Json_properties
integer array Json_plist
integer array Property_name
integer array Property_value
integer array JukeBox_requests
integer array JukeBox_randomQueue
boolean array JukeBox_lastWasRequest
integer array JukeBox_currentMusic
integer array JukeBox_cb
integer array this_2925
player array JukeRequest_juker
integer array JukeRequest_music
integer array Music_spellid
string array Music_path
real array Music_duration
string array Music_name
image array Goo_img
real array Goo_pos_x
real array Goo_pos_y
integer array Jumper_goocounter
integer array Jumper_mode
integer array Jumper_permission
integer array Jumper_jumpForce
integer array this_2956
integer array Key_col
boolean array Key_picked
boolean array Key_followWalkable
boolean array Key_infinite
effect array Key_infiniteEff
effect array Key_returnSfx
integer array Key_effectMap
boolean array Key_ignoreNextDrop
integer array this_2967
integer array this_2966
integer array Knockbacker_kforce
integer array Knockbacker_damage
integer array this_2982
integer array this_2983
integer array itr
integer array encoder
integer array dictSize
integer array intList
integer array onFinish_2552
integer array onFinish_2553
integer array encoder_2345
integer array encoder_2346
integer array onFinish_2554
integer array encoder_2347
integer array onFinish_2555
integer array encoder_2348
integer array dictSize_2304
integer array positions
integer array onFinish_2556
integer array inc
integer array data
integer array A
integer array B
integer array intList_2530
integer array onFinish_2557
integer array onFinish_2558
integer array output
integer array onFinish_2559
integer array itr_2534
string array A_1
string array B_70
integer array output_2567
integer array onFinish_2560
integer array result
integer array LLEntry_elem
integer array LLEntry_prev
integer array LLEntry_next
integer array LLIterator_dummy
integer array LLIterator_current
integer array LLIterator_parent
boolean array LLIterator_destroyOnClose
integer array LinkedList_dummy
integer array LinkedList_size
integer array LinkedList_staticItr
integer array LinkedList_staticBackItr
integer array output_2568
integer array itr_2535
integer array predicate
integer array LobbyTeleporter_ftext
integer array LobbyTeleporter_currentPlus
boolean array LobbyTeleporter_ready
boolean array LobbyTeleporter_startmaze
real array AgarData_size
integer array MGAgar_cbs
integer array MGAgar_rdata
integer array MGAgar_flist
integer array this_2941
integer array MGRandKill_chickenTimer
integer array MGRandKill_bunnyTimer
integer array MGRandKill_coinTimer
real array MGRandKill_spawn_x
real array MGRandKill_spawn_y
integer array MGRandKill_fx
integer array this_2942
integer array this_2943
integer array this_2944
integer array this_2945
integer array MGSlide_rdata
boolean array MGSlide_goRight
integer array MGSlide_bcount
integer array MGSlide_cb
integer array this_2946
integer array this_2947
integer array MGSpacey_listener
integer array MGSpacey_klistener
integer array ShipProjectile_ship
integer array SpaceRock_level
integer array SpaceRock_hp
real array SpaceRock_radiusSq
real array Spaceship_maxSpeed
real array Spaceship_acc
real array Spaceship_xyAngle_radians
integer array Spaceship_projectiles
integer array Spaceship_mounter
integer array Spaceship_hp
integer array Fireball_caster
integer array this_2950
integer array MGWarlock_cb
integer array this_2948
integer array Warlock_mounter
integer array this_2949
integer array MinigameTeleporter_text
integer array MinigameTeleporter_currentPlus
boolean array MinigameTeleporter_inprogress
timer array Minigame_tim
timerdialog array Minigame_window
integer array this_2951
integer array this_2952
integer array pd
integer array Minion_target
real array Minion_maxHp
real array Minion_currentHP
real array Minion_spawnPoint_x
real array Minion_spawnPoint_y
integer array Minion_hpBar
integer array Minion_state
integer array this_2916
effect array fearEffect
integer array this_2917
integer array this_2918
integer array this_2919
integer array this_2920
multiboard array Board_board
hashtable array Board_mbdata
integer array IdGenerator_i1
integer array IdGenerator_i2
integer array IdGenerator_i3
integer array IdGenerator_i4
integer array MemoryAccessPedestal_tileMap
integer array MemoryAccessPedestal_entities
integer array MemoryAccessPedestal_tiles
integer array MemoryAccessPedestal_effects
integer array MemoryAccessPedestal_ttag
integer array MemoryAccessPedestal_bs
integer array MemoryAccessPedestal_parser
integer array MemoryAccessPedestal_listparser
integer array MemoryAccessPedestal_itr
integer array MemoryAccessPedestal_tileString
integer array MemoryAccessPedestal_entString
integer array MemoryAccessPedestal_currentSlotId
integer array this_3000
integer array slotId
integer array pd_2570
integer array ref
integer array ref_2610
integer array ref_2611
integer array ref_2612
integer array this_3001
integer array this_3002
integer array cb_2285
integer array this_3003
integer array this_3004
integer array itr_2536
integer array bs_2277
integer array this_3005
integer array td
integer array td_2883
integer array this_3006
integer array cb1
integer array this_3007
integer array slotId_2878
integer array itr_2537
integer array this_3008
integer array itr_2538
integer array this_3009
integer array this_3010
integer array big_2202
integer array this_3011
boolean array AirPhysicsProjectile_AirPhysicsModule_affectedByGravity
real array AirPhysicsProjectile_AirPhysicsModule_terrainZ
real array AirPhysicsProjectile_AirPhysicsModule_surfaceFriction
real array AirPhysicsProjectile_AirPhysicsModule_restitution
real array AirPhysicsProjectile_AirPhysicsModule_mass
integer array EscaperDefinition_nameTt
string array EscaperDefinition_mbicon
unit array EscaperDefinition_escaper
integer array EscaperDefinition_cb
integer array EscaperDefinition_LinkedListModule_prev
integer array EscaperDefinition_LinkedListModule_next
integer array Selector_pd
integer array this_2940
player array PlayerData_p
integer array PlayerData_id
string array PlayerData_name
string array PlayerData_mbname
string array PlayerData_icon
string array PlayerData_rank
integer array PlayerData_role
integer array PlayerData_title
integer array PlayerData_escaper
integer array PlayerData_builder
integer array PlayerData_prod
integer array PlayerData_XP
effect array PlayerData_lvlfx
effect array PlayerData_tagfx
boolean array PlayerData_localFilesEnabled
integer array PlayerData_lastExpGain
real array PlayerData_zCam
integer array PlayerData_revmod
integer array PlayerData_selector
real array angle_radians
real array Pointer_turnspeed
real array Pointer_angl_radians
boolean array Pointer_turning
integer array this_2984
integer array Link_next
integer array Link_prev
integer array Link_ltype
integer array Link_parent
integer array Link_target
lightning array Link_sfx
integer array Powernode_bounciness
integer array Powernode_firstLink
integer array this_2994
real array ShieldBuff_blockAmount
real array Projectile_xyAngle_radians
real array Projectile_startpos_x
real array Projectile_startpos_y
real array Projectile_startpos_z
boolean array Projectile_timed
boolean array Projectile_ranged
boolean array Projectile_use3DDistance
group array Projectile_hitGroup
boolean array Projectile_isPointTarget
real array Projectile_targetPoint_x
real array Projectile_targetPoint_y
real array Projectile_targetPoint_z
boolean array Projectile_killZ
real array Projectile_killBelowZ
real array Projectile_acc
real array Projectile_maxDist
real array Projectile_time
real array Projectile_maxTime
integer array Projectile_target
integer array Projectile_onHit
integer array Projectile_onEnd
integer array this
real array xmax
integer array ttype
real array xmin
fogmodifier array FogData_modifier
fogstate array FogData_state
boolean array FogData_visible
rect array FogData_r
player array FogData_p
integer array RegionData_escapers
integer array RegionData_permissions
integer array RegionData_rtype
rect array RegionData_theRect
real array RegionData_slidespeed
real array RegionData_poisonDmg
real array RegionData_lavaDmg
real array RegionData_turnSpeed
real array RegionData_gravity
boolean array RegionData_easyMode
integer array RegionData_specialAbil
boolean array RegionData_bossRegion
boolean array RegionData_allowCut
integer array RegionData_boss
integer array RevivePod_owner
real array RevivePod_time
boolean array RevivePod_wait
unit array RevivePointModifier_actor
real array RevivePointModifier_pos_x
real array RevivePointModifier_pos_y
boolean array RevivePoint_reached
integer array RevivePoint_startmaze
integer array listener
string array Delimiter_token
integer array PayloadCallback_customData
boolean array SeqCallback_done
timer array SeqCallback_ref
integer array SetupBox_rdata
integer array this_2927
integer array this_2926
real array SetupObject_time
boolean array SetupObject_enabled
unit array SetupObject_setup
integer array this_2909
integer array this_2910
integer array this_2911
unit array StaticSetupObject_setup
trigger array StaticSetupObject_inRangeTrig
integer array SoundDefinition_soundStack
string array SoundDefinition_file
integer array SoundDefinition_duration
boolean array SoundDefinition_looping
boolean array SoundDefinition_is3D
boolean array SoundDefinition_stopOnLeaveRange
integer array SoundDefinition_fadeIn
integer array SoundDefinition_fadeOut
string array SoundDefinition_eaxSetting
integer array this_2904
integer array snd
integer array this_2905
integer array snd_2880
integer array this_2906
integer array snd_2881
integer array this_2907
integer array instance
real array SoundInstance_pos_x
real array SoundInstance_pos_y
real array SoundInstance_pos_z
sound array SoundInstance_snd
integer array SoundInstance_soundDef
unit array SoundInstance_onUnit
player array SoundInstance_p
integer array SoundInstance_s3s
integer array SpinNode_next
integer array SpinNode_prev
integer array SpinNode_obj
real array SpinNode_angl
real array SpinNode_dist
integer array Spinner_firstNode
integer array Spinner_spinSpeed
integer array Spinner_cosFactor
integer array Spinner_sinFactor
boolean array Spinner_useSuperFormula
integer array this_2997
integer array this_2995
integer array this_2996
boolean array Startmaze_inited
integer array Startmaze_rdata
string array StringIterator_s
integer array StringIterator_currentpos
integer array StringIterator_stringLen
integer array listener_2540
integer array listener_2541
integer array listener_2542
integer array SyncData_slistener
integer array SyncData_blistener
player array SyncData_syncer
string array SyncData_data
integer array SyncData_buffer
integer array SyncData_syncBuffer
integer array Teleporter_mode
boolean array TerrainBlocker_silent
integer array TerrainChanger_sizeX
integer array TerrainChanger_sizeY
integer array TerrainChanger_currentTile_x
integer array TerrainChanger_currentTile_y
integer array TerrainChanger_innerTile
integer array TerrainChanger_outerTile
integer array this_2985
real array realPos_x
real array realPos_y
real array realPos_x_2593
real array realPos_y_2595
integer array TerrainModder_brushsize
integer array TerrainModder_brushshape
integer array TerrainModder_modification
boolean array TerrainModder_legit
integer array this_2928
integer array this_2929
integer array this_2930
integer array TextTagEntity_ftext
real array TextTagEntity_dur
integer array TextTagEntity_col_red
integer array TextTagEntity_col_green
integer array TextTagEntity_col_blue
integer array TextTagEntity_col_alpha
integer array cb_2284
integer array tokens
integer array tokens_3016
integer array Texter_text
boolean array Texter_hidden
integer array Texter_col_red
integer array Texter_col_green
integer array Texter_col_blue
integer array this_2957
integer array this_2958
integer array vw
integer array TileData_xoff
integer array TileData_yoff
real array TileData_pos_x
real array TileData_pos_y
effect array TileData_fx
player array TileData_owner
integer array TileData_tile
integer array Tracks_trackSpeed
unit array Tracks_setup
integer array Tracks_tsize
real array Tracks_rct_min_x
real array Tracks_rct_min_y
real array Tracks_rct_max_x
real array Tracks_rct_max_y
real array Tracks_dir_x
real array Tracks_dir_y
integer array this_2998
integer array Trap_sfxid
real array Trap_interval
real array Trap_timerreal
integer array Trap_a
real array Trap_duration
real array Trap_value
boolean array Trap_pull
integer array Trap_uptimes
integer array Trap_goocounter
integer array this_2960
integer array this_2959
destructable array Tree_dummy
unit array UnitIndex__unit
integer array this_2931
integer array InventoryIterator_count
real array UnitCreator_interval
real array UnitCreator_timerreal
integer array UnitCreator_spawnUnitType
integer array UnitCreator_delays
integer array UnitCreator_tmode
real array Vortex_vgravity
integer array Vortex_zMode
real array Vortex_radiusSq
integer array Vortex_vortexFx
integer array this_2999
integer array Wall_tId
integer array Waypoint_delay
boolean array Waypoint_wisps
integer array Waypoint_linked
boolean array Waypoint_ready
integer array this_2961
real array rallyPos_x
real array rallyPos_y
real array rallyPos_z
integer array entity
real array rallyPos_x_2587
real array rallyPos_y_2589
real array rallyPos_z_2591
integer array this_2962
integer array e
integer array e_2342
integer array e_2343
integer array Reference_val
real real_asAngleDegrees_return_radians=0.
real real_fromDeg_return_radians=0.
real real_fromRad_return_radians=0.
real real_asAngleRadians_return_radians=0.
real angle_op_plus_return_radians=0.
real angle_op_minus_return_radians=0.
real angle_op_divReal_return_radians=0.
real EventData_getSpellTargetPos_return_x=0.
real EventData_getSpellTargetPos_return_y=0.
integer bitset_set_return_val=0
integer bitset_reset_return_val=0
real BossDamager_posToGrid_return_x=0.
real BossDamager_posToGrid_return_y=0.
real vec2_op_minus_return_x=0.
real vec2_op_minus_return_y=0.
real vec2_norm_return_x=0.
real vec2_norm_return_y=0.
real calculateNormal_return_x=0.
real calculateNormal_return_y=0.
real real_op_mult_return_x=0.
real real_op_mult_return_y=0.
real vec2_op_mult_return_x=0.
real vec2_op_mult_return_y=0.
real reflectVelocity_return_x=0.
real reflectVelocity_return_y=0.
real vec2_withZ_return_x=0.
real vec2_withZ_return_y=0.
real vec2_withZ_return_z=0.
real vec3_toVec2_return_x=0.
real vec3_toVec2_return_y=0.
real unit_getPos_return_x=0.
real unit_getPos_return_y=0.
integer playercolor_toColor_return_red=0
integer playercolor_toColor_return_green=0
integer playercolor_toColor_return_blue=0
integer colorA_withoutAlpha_return_red=0
integer colorA_withoutAlpha_return_green=0
integer colorA_withoutAlpha_return_blue=0
integer color_withAlpha_return_red=0
integer color_withAlpha_return_green=0
integer color_withAlpha_return_blue=0
integer color_withAlpha_return_alpha=0
integer makeColor_return_red=0
integer makeColor_return_green=0
integer makeColor_return_blue=0
integer makeColor_return_alpha=0
integer colorA_mix_return_red=0
integer colorA_mix_return_green=0
integer colorA_mix_return_blue=0
integer colorA_mix_return_alpha=0
real dispatch_UnitEntity_Entity_UnitEntity_getPos_return_x=0.
real dispatch_UnitEntity_Entity_UnitEntity_getPos_return_y=0.
real dispatch_UnitEntity_Entity_UnitEntity_getPos_return_z=0.
real vec2_angleTo_return_radians=0.
real calculateSegmentPos_return_x=0.
real calculateSegmentPos_return_y=0.
real vec2_toVec3_return_x=0.
real vec2_toVec3_return_y=0.
real vec2_toVec3_return_z=0.
real quat_toEuler_return_x=0.
real quat_toEuler_return_y=0.
real quat_toEuler_return_z=0.
real vec2_withHeightMap_return_x=0.
real vec2_withHeightMap_return_y=0.
real vec2_withHeightMap_return_z=0.
real vec3_op_plus_return_x=0.
real vec3_op_plus_return_y=0.
real vec3_op_plus_return_z=0.
real unit_getDynamicPos_return_x=0.
real unit_getDynamicPos_return_y=0.
real unit_getDynamicPos_return_z=0.
real EventData_getOrderPos_return_x=0.
real EventData_getOrderPos_return_y=0.
real EventData_getAbilityTargetPos_return_x=0.
real EventData_getAbilityTargetPos_return_y=0.
integer EBRColor_toColor_return_red=0
integer EBRColor_toColor_return_green=0
integer EBRColor_toColor_return_blue=0
integer EBRColor_toColor_return_alpha=0
integer vec2_getQuad_return_id=0
integer vec2_getQuad_return_x=0
integer vec2_getQuad_return_y=0
real vec2_getQuad_return_botLeft_x=0.
real vec2_getQuad_return_botLeft_y=0.
real vec2_getQuad_return_z1=0.
real vec2_getQuad_return_z2=0.
real vec2_getQuad_return_z3=0.
real vec2_getQuad_return_z4=0.
real vec2_withHeightMap_return_x_3088=0.
real vec2_withHeightMap_return_y_3090=0.
real vec2_withHeightMap_return_z_3092=0.
real widget_getPos_return_x=0.
real widget_getPos_return_y=0.
real vec2_bezier3_return_x=0.
real vec2_bezier3_return_y=0.
real vec2_lerp_return_x=0.
real vec2_lerp_return_y=0.
real item_getPos_return_x=0.
real item_getPos_return_y=0.
boolean player_getDownKeys_return_up=false
boolean player_getDownKeys_return_down=false
boolean player_getDownKeys_return_left=false
boolean player_getDownKeys_return_right=false
real vec2_op_plus_return_x=0.
real vec2_op_plus_return_y=0.
real getSlopeAngle_return_radians=0.
real vec3_norm_return_x=0.
real vec3_norm_return_y=0.
real vec3_norm_return_z=0.
real vec3_op_minus_return_x=0.
real vec3_op_minus_return_y=0.
real vec3_op_minus_return_z=0.
real unit_getPos3Real_return_x=0.
real unit_getPos3Real_return_y=0.
real unit_getPos3Real_return_z=0.
real vec3_op_mult_return_x=0.
real vec3_op_mult_return_y=0.
real vec3_op_mult_return_z=0.
real vec3_toQuat_return_x=0.
real vec3_toQuat_return_y=0.
real vec3_toQuat_return_z=0.
real vec3_toQuat_return_w=0.
real angle_toQuat_return_x=0.
real angle_toQuat_return_y=0.
real angle_toQuat_return_z=0.
real angle_toQuat_return_w=0.
real rect_randomPoint_return_x=0.
real rect_randomPoint_return_y=0.
real rect_getCenter_return_x=0.
real rect_getCenter_return_y=0.
real dispatch_Entity_Entity_Entity_getPos_return_x=0.
real dispatch_Entity_Entity_Entity_getPos_return_y=0.
real dispatch_Entity_Entity_Entity_getPos_return_z=0.
integer RegionType_getTypeSet_return_regionItemId=0
integer RegionType_getTypeSet_return_walkableId=0
integer RegionType_getTypeSet_return_unwalkableId=0
integer RegionType_getTypeSet_return_smallKillerId=0
integer RegionType_getTypeSet_return_bigKillerId=0
integer RegionType_getTypeSet_return_treeId=0
integer RegionType_getTypeSet_return_smallObstacleId=0
integer RegionType_getTypeSet_return_bigObstacleId=0
integer RegionType_getTypeSet_return_bossId=0
integer RegionType_getTypeSet_return_minionId=0
integer RegionType_getTypeSet_return_highObstacleId=0
integer dispatch_RegionData_RegionData_RegionData_getTypeSet_return_regionItemId=0
integer dispatch_RegionData_RegionData_RegionData_getTypeSet_return_walkableId=0
integer dispatch_RegionData_RegionData_RegionData_getTypeSet_return_unwalkableId=0
integer dispatch_RegionData_RegionData_RegionData_getTypeSet_return_smallKillerId=0
integer dispatch_RegionData_RegionData_RegionData_getTypeSet_return_bigKillerId=0
integer dispatch_RegionData_RegionData_RegionData_getTypeSet_return_treeId=0
integer dispatch_RegionData_RegionData_RegionData_getTypeSet_return_smallObstacleId=0
integer dispatch_RegionData_RegionData_RegionData_getTypeSet_return_bigObstacleId=0
integer dispatch_RegionData_RegionData_RegionData_getTypeSet_return_bossId=0
integer dispatch_RegionData_RegionData_RegionData_getTypeSet_return_minionId=0
integer dispatch_RegionData_RegionData_RegionData_getTypeSet_return_highObstacleId=0
real dispatch_Escaper_Escaper_Escaper_getRealVel_return_x=0.
real dispatch_Escaper_Escaper_Escaper_getRealVel_return_y=0.
real dispatch_Escaper_Escaper_Escaper_getRealVel_return_z=0.
real getOffset_return_x=0.
real getOffset_return_y=0.
real vec3_op_minus_return_x_3123=0.
real vec3_op_minus_return_y_3125=0.
real vec3_op_minus_return_z_3127=0.
integer char_return_c=0
real dispatch_StaticBaseObject_BaseObject_StaticBaseObject_getRallyPoint_return_x=0.
real dispatch_StaticBaseObject_BaseObject_StaticBaseObject_getRallyPoint_return_y=0.
real dispatch_StaticBaseObject_BaseObject_StaticBaseObject_getRallyPoint_return_z=0.
integer hashtable_loadTile_return_x=0
integer hashtable_loadTile_return_y=0
integer hashtable_loadTile_return_key=0
integer hashtable_loadTile_return_currentType=0
integer hashtable_loadTile_return_lastType=0
integer hashtable_loadTile_return_modifiers_val=0
integer vec2_getEBRTile_return_x=0
integer vec2_getEBRTile_return_y=0
integer vec2_getEBRTile_return_key=0
integer vec2_getEBRTile_return_currentType=0
integer vec2_getEBRTile_return_lastType=0
integer vec2_getEBRTile_return_modifiers_val=0
integer vec3_getEBRTile_return_x=0
integer vec3_getEBRTile_return_y=0
integer vec3_getEBRTile_return_key=0
integer vec3_getEBRTile_return_currentType=0
integer vec3_getEBRTile_return_lastType=0
integer vec3_getEBRTile_return_modifiers_val=0
integer getTile_return_x=0
integer getTile_return_y=0
integer getTile_return_key=0
integer getTile_return_currentType=0
integer getTile_return_lastType=0
integer getTile_return_modifiers_val=0
real vec2_add_return_x=0.
real vec2_add_return_y=0.
real real_op_mult_return_x_2601=0.
real real_op_mult_return_y_2603=0.
real real_op_mult_return_z=0.
real vec2_getTerrainNormal_return_x=0.
real vec2_getTerrainNormal_return_y=0.
real vec2_getTerrainNormal_return_z=0.
integer tile_return_id=0
real tile_toVec2_return_x=0.
real tile_toVec2_return_y=0.
integer getColorFromString_return_red=0
integer getColorFromString_return_green=0
integer getColorFromString_return_blue=0
real vec2_toTile_return_x=0.
real vec2_toTile_return_y=0.
real unit_getFacingAngle_return_radians=0.
real vec2_withRealZ_return_x=0.
real vec2_withRealZ_return_y=0.
real vec2_withRealZ_return_z=0.
real unit_getPos3Fly_return_x=0.
real unit_getPos3Fly_return_y=0.
real unit_getPos3Fly_return_z=0.
real unit_getPos3Zero_return_x=0.
real unit_getPos3Zero_return_y=0.
real unit_getPos3Zero_return_z=0.
real unit_getPos3with_return_x=0.
real unit_getPos3with_return_y=0.
real unit_getPos3with_return_z=0.
real vec2_op_plus_return_x_3077=0.
real vec2_op_plus_return_y_3079=0.
real vec2_withTerrainZ_return_x=0.
real vec2_withTerrainZ_return_y=0.
real vec2_withTerrainZ_return_z=0.
real angle_toVec_return_x=0.
real angle_toVec_return_y=0.
real vec2_polarOffset_return_x=0.
real vec2_polarOffset_return_y=0.
real vec3_op_plus_return_x_3132=0.
real vec3_op_plus_return_y_3134=0.
real vec3_op_plus_return_z_3136=0.
real vec3_add_return_x=0.
real vec3_add_return_y=0.
real vec3_add_return_z=0.
real vec3_setLength_return_x=0.
real vec3_setLength_return_y=0.
real vec3_setLength_return_z=0.
real vec3_project_return_x=0.
real vec3_project_return_y=0.
real vec3_project_return_z=0.
real vec3_angleTo2d_return_radians=0.
real vec3_angleTo2d_return_radians_3106=0.
real vec3_normalizedPointerTo_return_x=0.
real vec3_normalizedPointerTo_return_y=0.
real vec3_normalizedPointerTo_return_z=0.
real vec3_moveTowards_return_x=0.
real vec3_moveTowards_return_y=0.
real vec3_moveTowards_return_z=0.
real vec2_getAngle_return_radians=0.
real StaticBaseObject_getRallyPoint_return_x=0.
real StaticBaseObject_getRallyPoint_return_y=0.
real StaticBaseObject_getRallyPoint_return_z=0.
real StaticBaseObject_getRallyAngle_return_radians=0.
real Entity_getPos_return_x=0.
real Entity_getPos_return_y=0.
real Entity_getPos_return_z=0.
real Entity_getVel_return_x=0.
real Entity_getVel_return_y=0.
real Entity_getVel_return_z=0.
real ItemEntity_getPos_return_x=0.
real ItemEntity_getPos_return_y=0.
real ItemEntity_getPos_return_z=0.
real UnitEntity_getPos_return_x=0.
real UnitEntity_getPos_return_y=0.
real UnitEntity_getPos_return_z=0.
integer dispatch_Fx_Fx_Fx_getColor_return_red=0
integer dispatch_Fx_Fx_Fx_getColor_return_green=0
integer dispatch_Fx_Fx_Fx_getColor_return_blue=0
integer dispatch_Fx_Fx_Fx_getColor_return_alpha=0
real Escaper_getRealVel_return_x=0.
real Escaper_getRealVel_return_y=0.
real Escaper_getRealVel_return_z=0.
real dispatch_StaticBaseObject_BaseObject_StaticBaseObject_getRallyAngle_return_radians=0.
integer Fx_getColor_return_red=0
integer Fx_getColor_return_green=0
integer Fx_getColor_return_blue=0
integer Fx_getColor_return_alpha=0
real MGAgar_getStartPosition_return_x=0.
real MGAgar_getStartPosition_return_y=0.
real MGRandKill_getStartPosition_return_x=0.
real MGRandKill_getStartPosition_return_y=0.
real MGSlide_getStartPosition_return_x=0.
real MGSlide_getStartPosition_return_y=0.
real MGSpacey_getStartPosition_return_x=0.
real MGSpacey_getStartPosition_return_y=0.
real MGWarlock_getStartPosition_return_x=0.
real MGWarlock_getStartPosition_return_y=0.
real dispatch_Minigame_Minigame_Minigame_getStartPosition_return_x=0.
real dispatch_Minigame_Minigame_Minigame_getStartPosition_return_y=0.
real dispatch_Entity_Entity_Entity_getVel_return_x=0.
real dispatch_Entity_Entity_Entity_getVel_return_y=0.
real dispatch_Entity_Entity_Entity_getVel_return_z=0.
real dispatch_Powernode_Powernode_Powernode_getBounceVec_return_x=0.
real dispatch_Powernode_Powernode_Powernode_getBounceVec_return_y=0.
real dispatch_Powernode_Powernode_Powernode_getBounceVec_return_z=0.
real Powernode_getBounceVec_return_x=0.
real Powernode_getBounceVec_return_y=0.
real Powernode_getBounceVec_return_z=0.
integer RegionData_getTypeSet_return_regionItemId=0
integer RegionData_getTypeSet_return_walkableId=0
integer RegionData_getTypeSet_return_unwalkableId=0
integer RegionData_getTypeSet_return_smallKillerId=0
integer RegionData_getTypeSet_return_bigKillerId=0
integer RegionData_getTypeSet_return_treeId=0
integer RegionData_getTypeSet_return_smallObstacleId=0
integer RegionData_getTypeSet_return_bigObstacleId=0
integer RegionData_getTypeSet_return_bossId=0
integer RegionData_getTypeSet_return_minionId=0
integer RegionData_getTypeSet_return_highObstacleId=0
string array BigString_substrings_0
string array BigString_substrings_1
string array BigString_substrings_2
string array BigString_substrings_3
string array BigString_substrings_4
string array BigString_substrings_5
string array BigString_substrings_6
string array BigString_substrings_7
string array BigString_substrings_8
string array BigString_substrings_9
string array BigString_substrings_10
string array BigString_substrings_11
string array BigString_substrings_12
string array BigString_substrings_13
string array BigString_substrings_14
string array BigString_substrings_15
string array BigString_substrings_16
string array BigString_substrings_17
string array BigString_substrings_18
string array BigString_substrings_19
string array BigString_substrings_20
string array BigString_substrings_21
string array BigString_substrings_22
string array BigString_substrings_23
string array BigString_substrings_24
integer array Jumper_goos_0
integer array Jumper_goos_1
integer array Jumper_goos_2
integer array Jumper_goos_3
integer array Jumper_goos_4
boolean array LobbyTeleporter_votes_0
boolean array LobbyTeleporter_votes_1
boolean array LobbyTeleporter_votes_2
boolean array LobbyTeleporter_votes_3
boolean array LobbyTeleporter_votes_4
boolean array LobbyTeleporter_votes_5
boolean array LobbyTeleporter_votes_6
boolean array LobbyTeleporter_votes_7
boolean array LobbyTeleporter_votes_8
boolean array LobbyTeleporter_votes_9
boolean array LobbyTeleporter_votes_10
boolean array LobbyTeleporter_votes_11
boolean array MinigameTeleporter_votes_0
boolean array MinigameTeleporter_votes_1
boolean array MinigameTeleporter_votes_2
boolean array MinigameTeleporter_votes_3
boolean array MinigameTeleporter_votes_4
boolean array MinigameTeleporter_votes_5
boolean array MinigameTeleporter_votes_6
boolean array MinigameTeleporter_votes_7
boolean array MinigameTeleporter_votes_8
boolean array MinigameTeleporter_votes_9
boolean array MinigameTeleporter_votes_10
boolean array MinigameTeleporter_votes_11
integer array PlayerData_tmods_0
integer array PlayerData_tmods_1
integer array PlayerData_tmods_2
integer array PlayerData_tmods_3
integer array RegionData_fmods_0
integer array RegionData_fmods_1
integer array RegionData_fmods_2
integer array RegionData_fmods_3
integer array RegionData_fmods_4
integer array RegionData_fmods_5
integer array RegionData_fmods_6
integer array RegionData_fmods_7
integer array RegionData_fmods_8
integer array RegionData_fmods_9
integer array RegionData_fmods_10
integer array RegionData_fmods_11
integer array Trap_goos_0
integer array Trap_goos_1
integer array Trap_goos_2
integer array Trap_goos_3
integer array Trap_goos_4
item array InventoryIterator_items_0
item array InventoryIterator_items_1
item array InventoryIterator_items_2
item array InventoryIterator_items_3
item array InventoryIterator_items_4
item array InventoryIterator_items_5
code ref_function_Trig_Untitled_Trigger_005_Actions=null
code ref_function_init_Abilities=null
code ref_function_init_AbilityIds=null
code ref_function_init_Real=null
code ref_function_init_Integer=null
code ref_function_init_BitSet=null
code ref_function_init_Angle=null
code ref_function_init_Maths=null
code ref_function_init_String=null
code ref_function_init_Vectors=null
code ref_function_init_Destructable=null
code ref_function_init_Player=null
code ref_function_init_Printing_config=null
code ref_function_init_Printing=null
code ref_function_init_MagicFunctions=null
code ref_function_init_Basics=null
code ref_function_init_GameTimer=null
code ref_function_init_ErrorHandling=null
code ref_function_init_Matrices=null
code ref_function_init_Quaternion=null
code ref_function_init_Table=null
code ref_function_init_Playercolor=null
code ref_function_init_Colors=null
code ref_function_init_Framehandle=null
code ref_function_init_Group=null
code ref_function_init_Lightning=null
code ref_function_init_WeatherEffects=null
code ref_function_init_TypeCasting=null
code ref_function_init_HashList=null
code ref_function_init_EventHelper=null
code ref_function_init_ClosureForGroups=null
code ref_function_init_LinkedList=null
code ref_function_init_ObjectIds=null
code ref_function_init_TargetsAllowed=null
code ref_function_init_AbilityObjEditing=null
code ref_function_init_TimerUtils=null
code ref_function_init_RegisterEvents=null
code ref_function_init_ClosureTimers=null
code ref_function_init_UnitIds=null
code ref_function_init_MapBounds=null
code ref_function_init_Preloader=null
code ref_function_init_ObjectIdGenerator=null
code ref_function_init_Orders=null
code ref_function_init_OnUnitEnterLeave=null
code ref_function_init_UnitIndexer=null
code ref_function_init_ClosureEvents=null
code ref_function_init_TerrainUtils=null
code ref_function_init_PhysicsConstants=null
code ref_function_init_StringUtils=null
code ref_function_init_FText=null
code ref_function_init_Frentity=null
code ref_function_init_Execute=null
code ref_function_init_Heightmap=null
code ref_function_init_Entity_config=null
code ref_function_init_Entity=null
code ref_function_init_AirPhysicsModule=null
code ref_function_init_BigString=null
code ref_function_init_BigNum=null
code ref_function_init_Encoder=null
code ref_function_init_LZW=null
code ref_function_init_Json=null
code ref_function_init_SerializeIds=null
code ref_function_init_BuilderConstants=null
code ref_function_init_SetupObject=null
code ref_function_init_Icons=null
code ref_function_init_ChannelAbilityPreset=null
code ref_function_init_BuffIds=null
code ref_function_init_Buildings=null
code ref_function_init_Doodads=null
code ref_function_init_Environment=null
code ref_function_init_ItemIds=null
code ref_function_init_Objects=null
code ref_function_init_Sounds=null
code ref_function_init_Soundsets=null
code ref_function_init_Textures=null
code ref_function_init_UI=null
code ref_function_init_Units=null
code ref_function_init_AttachmentPoints=null
code ref_function_init_BaseObject=null
code ref_function_init_GameConstants=null
code ref_function_init_TerrainData=null
code ref_function_init_PhysicsEntity=null
code ref_function_init_RevivePointModifier=null
code ref_function_init_TerrainBlocker=null
code ref_function_init_Fx2Entity=null
code ref_function_init_GroupUtils=null
code ref_function_init_Players=null
code ref_function_init_JukeBox=null
code ref_function_init_EscaperObjects=null
code ref_function_init_Escaper=null
code ref_function_init_InstantDummyCaster=null
code ref_function_init_DummyRecycler=null
code ref_function_init_DamageEvent=null
code ref_function_init_Squares=null
code ref_function_init_Buff=null
code ref_function_init_Arcanery=null
code ref_function_init_Attackspeed=null
code ref_function_init_AudioTaunts=null
code ref_function_init_BasicSpells=null
code ref_function_init_Bomber=null
code ref_function_init_Bombertower=null
code ref_function_init_Booster=null
code ref_function_init_Boots=null
code ref_function_init_MultiboardClass=null
code ref_function_init_Key=null
code ref_function_init_Tome=null
code ref_function_init_Coin=null
code ref_function_init_Builder=null
code ref_function_init_FxEntity=null
code ref_function_init_EscaperSensor=null
code ref_function_init_EscaperKillers=null
code ref_function_init_ObjectTarget=null
code ref_function_init_TerrainChanger=null
code ref_function_init_Pointer=null
code ref_function_init_Knockbacker=null
code ref_function_init_Faceless=null
code ref_function_init_UnitProducer=null
code ref_function_init_EscaperClasses=null
code ref_function_init_Simulate3dSound=null
code ref_function_init_SoundUtils=null
code ref_function_init_PickSystem=null
code ref_function_init_PlayerData=null
code ref_function_init_BossSpellTarget=null
code ref_function_init_CustomBar=null
code ref_function_init_Minion=null
code ref_function_init_Boss=null
code ref_function_init_BossDamager=null
code ref_function_init_Camerashakes=null
code ref_function_init_ChunkedString=null
code ref_function_init_CodeGenerator=null
code ref_function_init_Collision=null
code ref_function_init_SetupBox=null
code ref_function_init_ReviveManager=null
code ref_function_init_Minigame=null
code ref_function_init_KeyUtils=null
code ref_function_init_MGSpacey=null
code ref_function_init_Commands=null
code ref_function_init_MoveSpeed=null
code ref_function_init_CongaObjects=null
code ref_function_init_DebugInfo=null
code ref_function_init_Decoration=null
code ref_function_init_Door=null
code ref_function_init_EntityManagement=null
code ref_function_init_TerrainModder=null
code ref_function_init_Executer=null
code ref_function_init_SafetyChecks=null
code ref_function_init_FileIO=null
code ref_function_init_Fountain=null
code ref_function_init_Obstacle=null
code ref_function_init_LobbyTeleporter=null
code ref_function_init_MinigameTeleporter=null
code ref_function_init_Startmazes=null
code ref_function_init_GameInit=null
code ref_function_init_GameStatus=null
code ref_function_init_GlobalShop=null
code ref_function_init_HashSet=null
code ref_function_init_Revivepoint=null
code ref_function_init_Vortex=null
code ref_function_init_Powernode=null
code ref_function_init_Tracks=null
code ref_function_init_Jumper=null
code ref_function_init_Teleporter=null
code ref_function_init_WaypointObjects=null
code ref_function_init_Waypoint=null
code ref_function_init_SpinnerObjects=null
code ref_function_init_Unitcreator=null
code ref_function_init_Trap=null
code ref_function_init_ObstacleObjects=null
code ref_function_init_MGWarlock=null
code ref_function_init_RegionData=null
code ref_function_init_Tree=null
code ref_function_init_Texter=null
code ref_function_init_UnitRemover=null
code ref_function_init_PedestalObjects=null
code ref_function_init_JsonParser=null
code ref_function_init_SyncSimple=null
code ref_function_init_SaveLoadData=null
code ref_function_init_Pedestal=null
code ref_function_init_InstantBuild=null
code ref_function_init_Invisible=null
code ref_function_init_MGAgar=null
code ref_function_init_MGRandKill=null
code ref_function_init_MGSlide=null
code ref_function_init_Questlog=null
code ref_function_init_Remove=null
code ref_function_init_Startmaze=null
code ref_function_init_WeaponTypes=null
code ref_function_init_Weapon=null
code ref_function_onLoop=null
code ref_function_loopPerPlayer=null
code ref_function_code__onUnitIndex_ClosureEvents=null
code ref_function_code__onUnitDeindex_ClosureEvents=null
code ref_function_EventListener_generalEventCallback=null
code ref_function_code__Filter_ClosureForGroups=null
code ref_function_code__addAction_DebugInfo=null
code ref_function_code__startPeriodic_DebugInfo=null
code ref_function_updateActiveEntities=null
code ref_function_updateBuffs=null
code ref_function_updateInactiveEntities=null
code ref_function_code__onUnitDeindex_EntityManagement=null
code ref_function_correctRegion=null
code ref_function_executeCurrentCallback=null
code ref_function_code__startPeriodic_GameTimer=null
code ref_function_code__addAction_RegionData=null
code ref_function_code__registerPlayerUnitEvent_RegisterEvents=null
code ref_function_code__startPeriodic_ReviveManager=null
code ref_function_code__start_SeqWorker=null
code ref_function_code__start_SeqWorker_2675=null
code ref_function_code__registerPlayerUnitEvent_SetupBox=null
code ref_function_code__Condition_Startmaze=null
code ref_function_code__addAction_SyncSimple=null
code ref_function_code__EnumItemsInRect_TerrainUtils=null
code ref_function_code__onEnter_UnitIndexer=null
code ref_function_code__onLeave_UnitIndexer=null
code ref_function_Arcanery_onEnterEv=null
code ref_function_code__Arcanery_Arcanery=null
code ref_function_code__Arcanery_Arcanery_2635=null
code ref_function_StaticBaseObject_isProper=null
code ref_function_Bomber_orderSetup=null
code ref_function_Booster_orderMove=null
code ref_function_BossDamager_onInRange=null
code ref_function_code__addAction_nullTimer_ClosureEvents=null
code ref_function_code__addAction_nullTimer_ClosureEvents_2658=null
code ref_function_code__addAction_nullTimer_ClosureEvents_2659=null
code ref_function_code__registerPlayerUnitEvent_nullTimer_ClosureEvents=null
code ref_function_CallbackCounted_staticCallback=null
code ref_function_CallbackPeriodic_staticCallback=null
code ref_function_code__start_CallbackSingle_ClosureTimers=null
code ref_function_CustomBar_fadeOutCallback=null
code ref_function_Door_keyopen=null
code ref_function_code__addAction_Sensor_Portal_EscaperClasses=null
code ref_function_code__addAction_Sensor_EscaperSensorSetup_EscaperSensor=null
code ref_function_code__StaticEscaperSensorSetup_EscaperSensor=null
code ref_function_code__StaticEscaperSensorSetup_EscaperSensor_2648=null
code ref_function_code__Condition_addCondition_Executer_Executer=null
code ref_function_code__Condition_addCondition_Executer_Executer_2638=null
code ref_function_code__Executer_Executer=null
code ref_function_code__Executer_Executer_2641=null
code ref_function_Fountain_cure=null
code ref_function_Jumper_onInRange=null
code ref_function_LobbyTeleporter_checkVote=null
code ref_function_code__Filter_GroupEnumUnitsInRect_MGRandKill_MGRandKill=null
code ref_function_MinigameTeleporter_checkVote=null
code ref_function_code__start_Minigame_Minigame=null
code ref_function_code__Filter_registerEnterRegion_nullTimer_OnUnitEnterLeave=null
code ref_function_code__registerPlayerUnitEvent_nullTimer_OnUnitEnterLeave=null
code ref_function_code__ForGroup_nullTimer_OnUnitEnterLeave=null
code ref_function_code__addAction_RegionData_RegionData=null
code ref_function_RevivePoint_onReach=null
code ref_function_code__Filter_GroupEnumUnitsInRect_Startmaze_Startmaze=null
code ref_function_killD=null
code ref_function_deleteKeys=null
code ref_function_correctKeys=null
code ref_function_Teleporter_teleport=null
code ref_function_Texter_onStep=null
code ref_function_Trap_onStep=null
code ref_function_UnitRemover_removeUnit=null
code ref_function_Waypoint_onInRange=null
code ref_function_code__Waypoint_Waypoint=null
code ref_function_code__Waypoint_Waypoint_2650=null
boolean tempReturn_boolean=false
integer tempReturn_integer=0
string tempReturn_string=null
endglobals
native UnitAlive takes unit id returns boolean
function CreateAllItems takes nothing returns nothing
	call CreateItem(1227894840, 4867.9,  - 6777.6)
	call CreateItem(1227894841, 3469.9,  - 7039.9)
	call CreateItem(1227894841,  - 2696.9,  - 4345.6)
	call CreateItem(1227894841,  - 3591.5,  - 5889.7)
	call CreateItem(1227894841,  - 1866.6,  - 6296.8)
	call CreateItem(1227894841,  - 4731.9,  - 6904.0)
	call CreateItem(1227894841, 1549.5,  - 5746.7)
	call CreateItem(1227894849,  - 1202.3,  - 6407.8)
	call CreateItem(1227894849, 755.2,  - 5499.9)
	call CreateItem(1227894849, 4413.5,  - 4294.3)
	call CreateItem(1227894849, 2181.3,  - 6914.0)
	call CreateItem(1227894849, 4416.8,  - 6159.0)
	call CreateItem(1227894849,  - 3837.0,  - 4998.9)
	call CreateItem(1227894849,  - 3536.7,  - 5886.7)
	call CreateItem(1227894849,  - 3486.1,  - 4977.5)
	call CreateItem(1227894849,  - 1280.7,  - 4227.1)
	call CreateItem(1227894849, 3824.7,  - 6470.1)
	call CreateItem(1227894849,  - 2662.9,  - 6508.9)
	call CreateItem(1227894849, 2419.0,  - 5207.0)
	call CreateItem(1227894858, 6735.7,  - 7105.2)
	call CreateItem(1227895088,  - 4180.2,  - 5155.2)
	call CreateItem(1227895088, 3834.1,  - 6388.5)
	call CreateItem(1227895088, 2587.9,  - 7198.0)
	call CreateItem(1227895088, 3857.3,  - 6610.9)
	call CreateItem(1227895088, 2393.1,  - 5257.3)
	call CreateItem(1227895088, 2453.3,  - 5252.1)
	call CreateItem(1227895088,  - 147.9,  - 3929.0)
	call CreateItem(1227895088,  - 1302.0,  - 4284.5)
	call CreateItem(1227895088,  - 1245.9,  - 4207.5)
	call CreateItem(1227895088, 3825.0,  - 6017.5)
	call CreateItem(1227895088,  - 4253.4,  - 6511.4)
	call CreateItem(1227895088,  - 2328.8,  - 4286.8)
	call CreateItem(1227895088,  - 3958.8,  - 6266.4)
	call CreateItem(1227895088,  - 1935.6,  - 3928.7)
	call CreateItem(1227895088,  - 1142.1,  - 6392.7)
	call CreateItem(1227895088, 132.5,  - 4618.8)
	call CreateItem(1227895088, 6710.3,  - 7178.4)
	call CreateItem(1227895088, 4345.7,  - 4779.4)
	call CreateItem(1227895088, 726.9,  - 5479.6)
	call CreateItem(1227895088, 777.4,  - 5551.7)
	call CreateItem(1227895088,  - 3071.9,  - 7039.2)
	call CreateItem(1227895088,  - 3134.2,  - 7044.2)
	call CreateItem(1227895088, 4734.6,  - 6775.5)
	call CreateItem(1227895088, 4387.1,  - 4166.0)
	call CreateItem(1227895088, 1533.9,  - 5637.5)
	call CreateItem(1227895088,  - 1272.9,  - 6401.0)
	call CreateItem(1227895088,  - 4218.0,  - 5127.8)
	call CreateItem(1227895088, 4351.9,  - 4737.4)
	call CreateItem(1227895088, 2551.1,  - 7173.8)
	call CreateItem(1227895088, 2748.9,  - 4658.5)
	call CreateItem(1227895088,  - 1929.1,  - 3851.7)
	call CreateItem(1227895088,  - 2302.7,  - 4229.0)
	call CreateItem(1227895088,  - 147.8,  - 4619.9)
	call CreateItem(1227895088,  - 4211.2,  - 6531.3)
	call CreateItem(1227895088, 1652.8,  - 5772.4)
	call CreateItem(1227895088, 4964.5,  - 6771.4)
	call CreateItem(1227895088,  - 2535.3,  - 5737.3)
	call CreateItem(1227895088,  - 2558.1,  - 5797.3)
	call CreateItem(1227895088,  - 2400.4,  - 5515.1)
	call CreateItem(1227895088,  - 2477.1,  - 5544.9)
	call CreateItem(1227895088, 150.1,  - 4362.8)
	call CreateItem(1227895088,  - 151.9,  - 4331.0)
endfunction

function CreateNeutralPassive takes nothing returns nothing
	local player p = Player(PLAYER_NEUTRAL_PASSIVE)
	set gg_unit_sick_0012 = CreateUnit(p, 1936286571, 6982.1,  - 4352.8, 214.330)
	set gg_unit_sick_0013 = CreateUnit(p, 1936286571, 5302.9,  - 6244.3, 214.330)
	set gg_unit_sick_0014 = CreateUnit(p, 1936286571, 5150.6,  - 6244.3, 214.330)
	set gg_unit_bisk_0018 = CreateUnit(p, 1651077995, 6687.5,  - 6065.3, 151.979)
	set gg_unit_bisk_0020 = CreateUnit(p, 1651077995, 5711.5,  - 5098.9, 232.972)
	set gg_unit_knck_0033 = CreateUnit(p, 1802396523, 6229.0,  - 3870.0, 167.030)
	set gg_unit_knck_0034 = CreateUnit(p, 1802396523, 5101.7,  - 4444.1, 106.560)
	set gg_unit_sick_0036 = CreateUnit(p, 1936286571, 4334.4,  - 5872.7, 214.330)
	set gg_unit_sgrk_0038 = CreateUnit(p, 1936159339,  - 124.0,  - 4804.8, 271.648)
	set gg_unit_sgrk_0039 = CreateUnit(p, 1936159339, 118.5,  - 4815.4, 269.562)
	set gg_unit_knck_0053 = CreateUnit(p, 1802396523,  - 1842.6,  - 6153.8, 106.560)
	set gg_unit_knck_0054 = CreateUnit(p, 1802396523,  - 897.4,  - 6648.0, 106.560)
	set gg_unit_bsak_0080 = CreateUnit(p, 1651728747, 1322.0,  - 7034.5, 294.629)
	set gg_unit_bsak_0081 = CreateUnit(p, 1651728747, 2670.4,  - 5776.1, 78.346)
	set gg_unit_dims_0100 = CreateUnit(p, 1684630899,  - 186.0,  - 6150.9, 213.890)
	set gg_unit_bsak_0104 = CreateUnit(p, 1651728747, 1653.8,  - 7047.1, 258.461)
	set gg_unit_ssak_0120 = CreateUnit(p, 1936941419, 2936.1,  - 5378.4, 11.701)
	set gg_unit_ssak_0121 = CreateUnit(p, 1936941419, 3192.2,  - 4959.9, 37.530)
	set gg_unit_ssak_0122 = CreateUnit(p, 1936941419, 3888.3,  - 4974.1, 20.248)
	set gg_unit_ssak_0123 = CreateUnit(p, 1936941419, 2816.7,  - 6021.1, 345.267)
	set gg_unit_ssak_0124 = CreateUnit(p, 1936941419, 3820.3,  - 6813.3, 11.701)
	set gg_unit_ssak_0125 = CreateUnit(p, 1936941419, 3074.3,  - 6143.2, 11.701)
	set gg_unit_bsak_0127 = CreateUnit(p, 1651728747, 3682.5,  - 6428.9, 15.293)
	set gg_unit_bsak_0128 = CreateUnit(p, 1651728747, 3599.9,  - 6896.9, 221.118)
	set gg_unit_spnr_0129 = CreateUnit(p, 1936748146,  - 2568.0,  - 7165.5, 279.281)
	set gg_unit_spnr_0130 = CreateUnit(p, 1936748146,  - 2812.7,  - 6659.0, 9.635)
	set gg_unit_bgrk_0145 = CreateUnit(p, 1650946667, 622.4,  - 4978.6, 177.990)
	set gg_unit_spnr_0147 = CreateUnit(p, 1936748146,  - 3848.1,  - 6833.3, 191.355)
	set gg_unit_airk_0149 = CreateUnit(p, 1634300523,  - 1024.0,  - 4331.4, 201.480)
	set gg_unit_sgrk_0153 = CreateUnit(p, 1936159339,  - 276.7,  - 5498.4, 356.673)
	set gg_unit_glve_0156 = CreateUnit(p, 1735161445,  - 2298.9,  - 7174.0, 305.445)
	set gg_unit_spnr_0157 = CreateUnit(p, 1936748146,  - 3003.3,  - 5331.1, 71.897)
	set gg_unit_glve_0158 = CreateUnit(p, 1735161445,  - 2868.2,  - 6868.9, 160.548)
	set gg_unit_glve_0159 = CreateUnit(p, 1735161445,  - 2663.1,  - 6633.9, 160.548)
	set gg_unit_glve_0160 = CreateUnit(p, 1735161445,  - 2828.3,  - 6698.8, 160.548)
	set gg_unit_spnr_0161 = CreateUnit(p, 1936748146,  - 3149.6,  - 4615.2, 187.202)
	set gg_unit_spnr_0162 = CreateUnit(p, 1936748146,  - 2702.2,  - 3967.0, 196.672)
	set gg_unit_scik_0210 = CreateUnit(p, 1935894891,  - 4223.3,  - 6896.7, 228.358)
	set gg_unit_scik_0211 = CreateUnit(p, 1935894891,  - 4231.1,  - 7047.3, 228.358)
	set gg_unit_scik_0213 = CreateUnit(p, 1935894891,  - 2314.0,  - 5244.7, 136.430)
	set gg_unit_scik_0214 = CreateUnit(p, 1935894891,  - 2291.0,  - 5374.2, 136.430)
	set gg_unit_scik_0215 = CreateUnit(p, 1935894891,  - 3175.3,  - 4461.5, 88.805)
	call SetUnitState(gg_unit_scik_0215, UNIT_STATE_MANA, 0.)
	set gg_unit_scik_0216 = CreateUnit(p, 1935894891,  - 3278.2,  - 4652.1, 176.970)
	call SetUnitState(gg_unit_scik_0216, UNIT_STATE_MANA, 0.)
	set gg_unit_scik_0217 = CreateUnit(p, 1935894891,  - 2974.3,  - 4709.1, 11.117)
	call SetUnitState(gg_unit_scik_0217, UNIT_STATE_MANA, 0.)
	set gg_unit_scik_0218 = CreateUnit(p, 1935894891,  - 4730.5,  - 6657.7, 228.358)
	set gg_unit_scik_0219 = CreateUnit(p, 1935894891,  - 4227.5,  - 7194.6, 228.358)
	set gg_unit_bcik_0220 = CreateUnit(p, 1650682219,  - 2689.3,  - 4154.3, 173.698)
	call SetUnitState(gg_unit_bcik_0220, UNIT_STATE_MANA, 0.)
	set gg_unit_scik_0221 = CreateUnit(p, 1935894891,  - 4708.8,  - 5117.0, 214.220)
	set gg_unit_scik_0222 = CreateUnit(p, 1935894891,  - 4898.9,  - 5499.6, 214.220)
	set gg_unit_bcik_0225 = CreateUnit(p, 1650682219,  - 4128.7,  - 4544.5, 117.546)
	set gg_unit_scik_0260 = CreateUnit(p, 1935894891,  - 3855.1,  - 6773.1, 275.361)
	set gg_unit_scik_0261 = CreateUnit(p, 1935894891,  - 3893.9,  - 6569.4, 93.847)
	set gg_unit_bcik_0262 = CreateUnit(p, 1650682219,  - 3563.7,  - 6527.4, 73.303)
	set gg_unit_scik_0263 = CreateUnit(p, 1935894891,  - 3013.2,  - 6283.2, 0.670)
	set gg_unit_bcik_0266 = CreateUnit(p, 1650682219,  - 3701.0,  - 7187.8, 49.209)
	set gg_unit_scik_0267 = CreateUnit(p, 1935894891,  - 4409.7,  - 6029.0, 114.569)
	set gg_unit_scik_0268 = CreateUnit(p, 1935894891,  - 3473.7,  - 5753.8, 315.779)
	set gg_unit_scik_0269 = CreateUnit(p, 1935894891,  - 3790.4,  - 5918.8, 128.445)
	set gg_unit_scik_0270 = CreateUnit(p, 1935894891,  - 4418.6,  - 6654.2, 228.358)
	set gg_unit_scik_0271 = CreateUnit(p, 1935894891,  - 3062.3,  - 5408.0, 41.036)
	call SetUnitState(gg_unit_scik_0271, UNIT_STATE_MANA, 0.)
	set gg_unit_scik_0272 = CreateUnit(p, 1935894891,  - 2819.8,  - 5516.3, 42.306)
	call SetUnitState(gg_unit_scik_0272, UNIT_STATE_MANA, 0.)
	set gg_unit_scik_0273 = CreateUnit(p, 1935894891,  - 3194.4,  - 5523.4, 44.570)
	call SetUnitState(gg_unit_scik_0273, UNIT_STATE_MANA, 0.)
	set gg_unit_scik_0274 = CreateUnit(p, 1935894891,  - 3062.8,  - 5320.3, 324.033)
	call SetUnitState(gg_unit_scik_0274, UNIT_STATE_MANA, 0.)
	set gg_unit_scik_0275 = CreateUnit(p, 1935894891,  - 3254.9,  - 5146.0, 319.182)
	call SetUnitState(gg_unit_scik_0275, UNIT_STATE_MANA, 0.)
	set gg_unit_scik_0276 = CreateUnit(p, 1935894891,  - 2768.3,  - 5579.5, 45.251)
	call SetUnitState(gg_unit_scik_0276, UNIT_STATE_MANA, 0.)
	set gg_unit_scik_0277 = CreateUnit(p, 1935894891,  - 2935.2,  - 5294.8, 224.828)
	call SetUnitState(gg_unit_scik_0277, UNIT_STATE_MANA, 0.)
	set gg_unit_scik_0278 = CreateUnit(p, 1935894891,  - 2979.2,  - 5329.6, 222.822)
	call SetUnitState(gg_unit_scik_0278, UNIT_STATE_MANA, 0.)
	set gg_unit_bcik_0280 = CreateUnit(p, 1650682219,  - 3406.0,  - 5248.3, 117.546)
endfunction

function CreateNeutralPassiveBuildings takes nothing returns nothing
	local player p = Player(PLAYER_NEUTRAL_PASSIVE)
	set gg_unit_revp_0002 = CreateUnit(p, 1919252080, 5632.0,  - 6912.0, 270.000)
	call CreateUnit(p, 1651468643, 4608.0,  - 6976.0, 270.000)
	call CreateUnit(p, 1651468643, 6528.0,  - 7232.0, 270.000)
	call CreateUnit(p, 1651468643, 6016.0,  - 5824.0, 270.000)
	call CreateUnit(p, 1936681315, 5184.0,  - 7040.0, 270.000)
	call CreateUnit(p, 1936681315, 6144.0,  - 5824.0, 270.000)
	call CreateUnit(p, 1936681315, 6528.0,  - 5568.0, 270.000)
	call CreateUnit(p, 1936681315, 6656.0,  - 6912.0, 270.000)
	set gg_unit_dor2_0011 = CreateUnit(p, 1685025330, 5440.0,  - 5568.0, 270.000)
	call CreateUnit(p, 1936681315, 5376.0,  - 4800.0, 270.000)
	call CreateUnit(p, 1651468643, 2304.0,  - 4160.0, 270.000)
	call CreateUnit(p, 1651468643, 1536.0,  - 3776.0, 270.000)
	call CreateUnit(p, 1936681315, 2240.0,  - 3776.0, 270.000)
	call CreateUnit(p, 1651468643, 6592.0,  - 7104.0, 270.000)
	set gg_unit_revp_0022 = CreateUnit(p, 1919252080, 512.0,  - 6912.0, 270.000)
	set gg_unit_dor2_0023 = CreateUnit(p, 1685025330, 6336.0,  - 6592.0, 270.000)
	call CreateUnit(p, 1685025330, 0.0,  - 4736.0, 270.000)
	call CreateUnit(p, 1651468643, 5376.0,  - 4608.0, 270.000)
	call CreateUnit(p, 1651468643, 5760.0,  - 4864.0, 270.000)
	call CreateUnit(p, 1936679796,  - 3776.0,  - 6784.0, 270.000)
	call CreateUnit(p, 1936681315, 5760.0,  - 4800.0, 270.000)
	call CreateUnit(p, 1651468643, 6016.0,  - 4544.0, 270.000)
	call CreateUnit(p, 1936681315, 5760.0,  - 4032.0, 270.000)
	call CreateUnit(p, 1936681315, 4992.0,  - 4096.0, 270.000)
	call CreateUnit(p, 1651468643, 6656.0,  - 3968.0, 270.000)
	call CreateUnit(p, 1936681315, 4608.0,  - 5568.0, 270.000)
	call CreateUnit(p, 1936680818, 64.0,  - 6080.0, 270.000)
	call CreateUnit(p, 1651468146,  - 1408.0,  - 6976.0, 270.000)
	call CreateUnit(p, 1936680818,  - 1728.0,  - 7104.0, 270.000)
	call CreateUnit(p, 1936680818, 128.0,  - 7104.0, 270.000)
	set gg_unit_tele_0044 = CreateUnit(p, 1952803941,  - 1280.0,  - 3840.0, 270.000)
	call CreateUnit(p, 1936680818,  - 640.0,  - 4032.0, 270.000)
	call CreateUnit(p, 1936680818,  - 768.0,  - 3840.0, 270.000)
	call CreateUnit(p, 1936680818, 0.0,  - 5760.0, 270.000)
	call CreateUnit(p, 1936680818, 256.0,  - 5504.0, 270.000)
	call CreateUnit(p, 1651468146,  - 1024.0,  - 6400.0, 270.000)
	set gg_unit_arca_0050 = CreateUnit(p, 1634886497, 0.0,  - 5056.0, 270.000)
	call CreateUnit(p, 1936680818, 192.0,  - 4288.0, 270.000)
	call CreateUnit(p, 1936680818, 0.0,  - 5248.0, 270.000)
	call CreateUnit(p, 1651468643, 2176.0,  - 4160.0, 270.000)
	set gg_unit_revp_0059 = CreateUnit(p, 1919252080, 4864.0,  - 4736.0, 270.000)
	set gg_unit_tele_0061 = CreateUnit(p, 1952803941, 4352.0,  - 3968.0, 270.000)
	set gg_unit_fnt2_0065 = CreateUnit(p, 1718514738, 3456.0,  - 3968.0, 270.000)
	set gg_unit_wayp_0066 = CreateUnit(p, 2002876784, 128.0,  - 6016.0, 270.000)
	set gg_unit_fnt2_0067 = CreateUnit(p, 1718514738, 3456.0,  - 7168.0, 270.000)
	set gg_unit_wayp_0068 = CreateUnit(p, 2002876784, 128.0,  - 6144.0, 270.000)
	call CreateUnit(p, 1651468643, 2176.0,  - 4544.0, 270.000)
	call CreateUnit(p, 1936681315, 1920.0,  - 5248.0, 270.000)
	call CreateUnit(p, 1936681315, 1600.0,  - 5056.0, 270.000)
	call CreateUnit(p, 1651468643, 1984.0,  - 5824.0, 270.000)
	call CreateUnit(p, 1651468643, 1408.0,  - 5568.0, 270.000)
	set gg_unit_fnt2_0074 = CreateUnit(p, 1718514738, 3328.0,  - 5952.0, 270.000)
	call CreateUnit(p, 1848651864, 2304.0,  - 5888.0, 270.000)
	set gg_unit_exec_0076 = CreateUnit(p, 1702389091,  - 640.0,  - 4608.0, 270.000)
	call CreateUnit(p, 1848651864, 3072.0,  - 5696.0, 270.000)
	set gg_unit_wayp_0078 = CreateUnit(p, 2002876784, 0.0,  - 6144.0, 270.000)
	call CreateUnit(p, 1848651864, 3712.0,  - 6144.0, 270.000)
	call CreateUnit(p, 1848651864, 2432.0,  - 5888.0, 270.000)
	call CreateUnit(p, 1848651864, 2304.0,  - 6400.0, 270.000)
	call CreateUnit(p, 1848651864, 1984.0,  - 6272.0, 270.000)
	set gg_unit_revp_0085 = CreateUnit(p, 1919252080, 3456.0,  - 4160.0, 270.000)
	set gg_unit_dor2_0087 = CreateUnit(p, 1685025330, 2752.0,  - 4288.0, 270.000)
	call CreateUnit(p, 1848651864, 3712.0,  - 5248.0, 270.000)
	call CreateUnit(p, 1848651864, 3328.0,  - 5504.0, 270.000)
	call CreateUnit(p, 1848651864, 3648.0,  - 5504.0, 270.000)
	call CreateUnit(p, 1848651864, 2880.0,  - 5440.0, 270.000)
	call CreateUnit(p, 1848651864, 1536.0,  - 6848.0, 270.000)
	call CreateUnit(p, 1651468643, 6656.0,  - 6976.0, 270.000)
	call CreateUnit(p, 1936681315, 6528.0,  - 7168.0, 270.000)
	call CreateUnit(p, 1651468643, 5760.0,  - 5312.0, 270.000)
	call CreateUnit(p, 1848651864, 2176.0,  - 6080.0, 270.000)
	call CreateUnit(p, 1848651864, 2240.0,  - 6144.0, 270.000)
	set gg_unit_wayp_0099 = CreateUnit(p, 2002876784, 0.0,  - 6016.0, 270.000)
	set gg_unit_wayp_0101 = CreateUnit(p, 2002876784,  - 896.0,  - 4224.0, 270.000)
	set gg_unit_wayp_0102 = CreateUnit(p, 2002876784,  - 896.0,  - 3840.0, 270.000)
	call CreateUnit(p, 1936679796,  - 4288.0,  - 6592.0, 270.000)
	call CreateUnit(p, 1936679796,  - 4352.0,  - 6464.0, 270.000)
	call CreateUnit(p, 1936681315, 2048.0,  - 4160.0, 270.000)
	call CreateUnit(p, 1848651864, 1408.0,  - 4608.0, 270.000)
	call CreateUnit(p, 1848651864, 3392.0,  - 5184.0, 270.000)
	call CreateUnit(p, 1848651864, 2432.0,  - 6080.0, 270.000)
	set gg_unit_wayp_0114 = CreateUnit(p, 2002876784,  - 512.0,  - 3840.0, 270.000)
	set gg_unit_wayp_0116 = CreateUnit(p, 2002876784,  - 320.0,  - 4224.0, 270.000)
	set gg_unit_uncr_0117 = CreateUnit(p, 1970168690,  - 320.0,  - 4416.0, 270.000)
	set gg_unit_unre_0118 = CreateUnit(p, 1970172517,  - 512.0,  - 4096.0, 270.000)
	call CreateUnit(p, 1936680818,  - 768.0,  - 3776.0, 270.000)
	call CreateUnit(p, 1651468643, 1728.0,  - 5120.0, 270.000)
	call CreateUnit(p, 1848651864, 2496.0,  - 6144.0, 270.000)
	call CreateUnit(p, 1936680818,  - 704.0,  - 4352.0, 270.000)
	call CreateUnit(p, 1936680818,  - 768.0,  - 4416.0, 270.000)
	call CreateUnit(p, 1936680818,  - 832.0,  - 4352.0, 270.000)
	set gg_unit_dor2_0136 = CreateUnit(p, 1685025330, 2752.0,  - 4416.0, 270.000)
	call CreateUnit(p, 1651468643, 2560.0,  - 4096.0, 270.000)
	call CreateUnit(p, 1651468643, 2048.0,  - 4160.0, 270.000)
	call CreateUnit(p, 1651468643, 1920.0,  - 4224.0, 270.000)
	call CreateUnit(p, 1651468643, 1664.0,  - 4480.0, 270.000)
	set gg_unit_tele_0141 = CreateUnit(p, 1952803941, 2432.0,  - 6656.0, 270.000)
	call CreateUnit(p, 1936680818,  - 896.0,  - 4352.0, 270.000)
	call CreateUnit(p, 1919252080, 0.0,  - 4480.0, 270.000)
	call CreateUnit(p, 1936680818,  - 960.0,  - 4416.0, 270.000)
	set gg_unit_tele_0150 = CreateUnit(p, 1952803941,  - 6656.0,  - 5760.0, 270.000)
	set gg_unit_jump_0151 = CreateUnit(p, 1786080624, 3328.0,  - 6272.0, 270.000)
	set gg_unit_jump_0152 = CreateUnit(p, 1786080624, 3456.0,  - 6528.0, 270.000)
	call CreateUnit(p, 1651468643, 2048.0,  - 4480.0, 270.000)
	call CreateUnit(p, 1651468643, 1856.0,  - 5184.0, 270.000)
	call CreateUnit(p, 1936679796,  - 4288.0,  - 6528.0, 270.000)
	call CreateUnit(p, 1936679796,  - 4032.0,  - 6656.0, 270.000)
	call CreateUnit(p, 1651467124,  - 2752.0,  - 6464.0, 270.000)
	call CreateUnit(p, 1936679796,  - 3392.0,  - 6912.0, 270.000)
	call CreateUnit(p, 1936679796,  - 3584.0,  - 6848.0, 270.000)
	call CreateUnit(p, 1936679796,  - 3328.0,  - 7040.0, 270.000)
	call CreateUnit(p, 1936679796,  - 3520.0,  - 7168.0, 270.000)
	call CreateUnit(p, 1936679796,  - 3520.0,  - 7040.0, 270.000)
	call CreateUnit(p, 1936679796,  - 3328.0,  - 7168.0, 270.000)
	call CreateUnit(p, 1685025330,  - 2496.0,  - 4864.0, 270.000)
	call CreateUnit(p, 1651468146,  - 384.0,  - 6592.0, 270.000)
	call CreateUnit(p, 1936680818,  - 512.0,  - 7104.0, 270.000)
	call CreateUnit(p, 1936680818,  - 576.0,  - 6784.0, 270.000)
	call CreateUnit(p, 1936680818,  - 576.0,  - 7040.0, 270.000)
	call CreateUnit(p, 1936679796,  - 2496.0,  - 4224.0, 270.000)
	call CreateUnit(p, 1936679796,  - 2496.0,  - 4288.0, 270.000)
	call CreateUnit(p, 1936679796,  - 2624.0,  - 4416.0, 270.000)
	call CreateUnit(p, 1936680818,  - 704.0,  - 3904.0, 270.000)
	call CreateUnit(p, 1936680818,  - 704.0,  - 3968.0, 270.000)
	call CreateUnit(p, 1752131442,  - 1728.0,  - 5888.0, 270.000)
	call CreateUnit(p, 1752131442,  - 1600.0,  - 5888.0, 270.000)
	call CreateUnit(p, 1752131442,  - 1472.0,  - 5952.0, 270.000)
	call CreateUnit(p, 1752131442,  - 1344.0,  - 5952.0, 270.000)
	call CreateUnit(p, 1752131442,  - 1216.0,  - 5888.0, 270.000)
	call CreateUnit(p, 1752131442,  - 1088.0,  - 5824.0, 270.000)
	call CreateUnit(p, 1752131442,  - 960.0,  - 5888.0, 270.000)
	call CreateUnit(p, 1752131442,  - 832.0,  - 5952.0, 270.000)
	call CreateUnit(p, 1752131442, 128.0,  - 5632.0, 270.000)
	call CreateUnit(p, 1752131442,  - 1856.0,  - 5824.0, 270.000)
	call CreateUnit(p, 1752131442,  - 1920.0,  - 5760.0, 270.000)
	call CreateUnit(p, 1752131442,  - 1280.0,  - 4032.0, 270.000)
	call CreateUnit(p, 1936679796,  - 3840.0,  - 6080.0, 270.000)
	call CreateUnit(p, 1936680818,  - 128.0,  - 6336.0, 270.000)
	call CreateUnit(p, 1936679796,  - 4096.0,  - 4352.0, 270.000)
	call CreateUnit(p, 1936679796,  - 4800.0,  - 4096.0, 270.000)
	set gg_unit_revp_0226 = CreateUnit(p, 1919252080,  - 2432.0,  - 6144.0, 270.000)
	call CreateUnit(p, 1919252080,  - 3264.0,  - 6272.0, 270.000)
	call CreateUnit(p, 1919252080,  - 2624.0,  - 4672.0, 270.000)
	call CreateUnit(p, 1685025330,  - 4736.0,  - 4608.0, 270.000)
	set gg_unit_tele_0234 = CreateUnit(p, 1952803941,  - 4736.0,  - 5632.0, 270.000)
	call CreateUnit(p, 1651467124,  - 4416.0,  - 6144.0, 270.000)
	call CreateUnit(p, 1936679796,  - 3648.0,  - 6336.0, 270.000)
	call CreateUnit(p, 1936679796,  - 4032.0,  - 5504.0, 270.000)
	call CreateUnit(p, 1936679796,  - 4096.0,  - 5504.0, 270.000)
	call CreateUnit(p, 1936679796,  - 4160.0,  - 5568.0, 270.000)
	call CreateUnit(p, 1936679796,  - 3456.0,  - 4480.0, 270.000)
	call CreateUnit(p, 1936679796,  - 3328.0,  - 4288.0, 270.000)
	call CreateUnit(p, 1936679796,  - 3136.0,  - 3968.0, 270.000)
	call CreateUnit(p, 1936679796,  - 4416.0,  - 4416.0, 270.000)
	call CreateUnit(p, 1936679796,  - 4288.0,  - 4544.0, 270.000)
	call CreateUnit(p, 1936679796,  - 2624.0,  - 6976.0, 270.000)
	call CreateUnit(p, 1936679796,  - 4352.0,  - 6528.0, 270.000)
	call CreateUnit(p, 1936679796,  - 4672.0,  - 4992.0, 270.000)
	call CreateUnit(p, 1936679796,  - 3456.0,  - 5184.0, 270.000)
	call CreateUnit(p, 1936679796,  - 3520.0,  - 5184.0, 270.000)
	call CreateUnit(p, 1936679796,  - 3584.0,  - 5184.0, 270.000)
	call CreateUnit(p, 1936679796,  - 2944.0,  - 5824.0, 270.000)
	call CreateUnit(p, 1936680818,  - 192.0,  - 4288.0, 270.000)
	call CreateUnit(p, 1936679796,  - 4608.0,  - 6912.0, 270.000)
	call CreateUnit(p, 1936679796,  - 4608.0,  - 6976.0, 270.000)
	call CreateUnit(p, 1936679796,  - 4608.0,  - 7040.0, 270.000)
	call CreateUnit(p, 1685025330,  - 4032.0,  - 5824.0, 270.000)
	call CreateUnit(p, 1936679796,  - 3840.0,  - 6848.0, 270.000)
	call CreateUnit(p, 1651468643, 5056.0,  - 6720.0, 270.000)
	call CreateUnit(p, 1936679796,  - 3264.0,  - 7104.0, 270.000)
	call CreateUnit(p, 1936679796,  - 3456.0,  - 6784.0, 270.000)
	call CreateUnit(p, 1936679796,  - 2880.0,  - 6976.0, 270.000)
	call CreateUnit(p, 1936679796,  - 3968.0,  - 6528.0, 270.000)
	call CreateUnit(p, 1936679796,  - 3648.0,  - 5568.0, 270.000)
	call CreateUnit(p, 1936679796,  - 4160.0,  - 6144.0, 270.000)
	call CreateUnit(p, 1936680818,  - 1088.0,  - 4288.0, 270.000)
	call CreateUnit(p, 1651468643,  - 5760.0,  - 6912.0, 270.000)
	call CreateUnit(p, 1651468643,  - 6016.0,  - 6912.0, 270.000)
	call CreateUnit(p, 1651468643,  - 6016.0,  - 6656.0, 270.000)
	call CreateUnit(p, 1651468643, 5952.0,  - 6208.0, 270.000)
	call CreateUnit(p, 1651468643,  - 6272.0,  - 6912.0, 270.000)
	set gg_unit_revp_0322 = CreateUnit(p, 1919252080,  - 6016.0,  - 5760.0, 270.000)
	set gg_unit_tele_0323 = CreateUnit(p, 1952803941,  - 5248.0,  - 5632.0, 270.000)
	set gg_unit_tele_0324 = CreateUnit(p, 1952803941,  - 5248.0,  - 5888.0, 270.000)
	call CreateUnit(p, 1936679796,  - 4608.0,  - 6848.0, 270.000)
	call CreateUnit(p, 1651468643,  - 6016.0,  - 7168.0, 270.000)
	call CreateUnit(p, 1936681315,  - 6528.0,  - 6912.0, 270.000)
	call CreateUnit(p, 1936681315, 4288.0,  - 6912.0, 270.000)
	call CreateUnit(p, 1936681315,  - 6528.0,  - 7104.0, 270.000)
	call CreateUnit(p, 1651468643, 704.0, 7232.0, 270.000)
	call CreateUnit(p, 1936681315,  - 6400.0,  - 6784.0, 270.000)
	call CreateUnit(p, 1651468643, 704.0, 7872.0, 270.000)
	call CreateUnit(p, 1651468643,  - 1600.0, 7872.0, 270.000)
	call CreateUnit(p, 1651468643,  - 1600.0, 7232.0, 270.000)
	call CreateUnit(p, 1651468643,  - 448.0, 7872.0, 270.000)
	call CreateUnit(p, 1651468643,  - 448.0, 7232.0, 270.000)
	call CreateUnit(p, 1651468643, 4672.0,  - 6336.0, 270.000)
	call CreateUnit(p, 1651468643, 1600.0,  - 4736.0, 270.000)
	call CreateUnit(p, 1936681315, 1600.0,  - 4608.0, 270.000)
	call CreateUnit(p, 1651468643, 5056.0,  - 6208.0, 270.000)
	call CreateUnit(p, 1936681315, 6464.0,  - 6720.0, 270.000)
	call CreateUnit(p, 1936681315, 6400.0,  - 6784.0, 270.000)
	call CreateUnit(p, 1936681315, 1920.0,  - 4224.0, 270.000)
	call CreateUnit(p, 1936679796,  - 3648.0,  - 6272.0, 270.000)
	call CreateUnit(p, 1651468643, 6400.0,  - 6848.0, 270.000)
	call CreateUnit(p, 1936681315, 6400.0,  - 6976.0, 270.000)
	call CreateUnit(p, 1936681315, 6400.0,  - 6912.0, 270.000)
	call CreateUnit(p, 1651468643, 6208.0,  - 6272.0, 270.000)
	call CreateUnit(p, 1936681315, 6272.0,  - 6272.0, 270.000)
	call CreateUnit(p, 1651468643, 6720.0,  - 6016.0, 270.000)
	call CreateUnit(p, 1651468643, 6592.0,  - 5440.0, 270.000)
	call CreateUnit(p, 1651468643, 4480.0,  - 5632.0, 270.000)
	call CreateUnit(p, 1936681315, 5056.0,  - 4992.0, 270.000)
	call CreateUnit(p, 1651468643, 5376.0,  - 4736.0, 270.000)
	call CreateUnit(p, 1651468643, 5248.0,  - 3840.0, 270.000)
	call CreateUnit(p, 1651468643, 1728.0,  - 3968.0, 270.000)
	call CreateUnit(p, 1651468643, 1600.0,  - 3904.0, 270.000)
	call CreateUnit(p, 1936681315, 1664.0,  - 3968.0, 270.000)
	call CreateUnit(p, 1936681315, 1600.0,  - 3840.0, 270.000)
	call CreateUnit(p, 1651468643, 1408.0,  - 4416.0, 270.000)
	call CreateUnit(p, 1651468643, 2304.0,  - 4864.0, 270.000)
	call CreateUnit(p, 1651468643, 1536.0,  - 5504.0, 270.000)
	call CreateUnit(p, 1936681315, 1600.0,  - 5568.0, 270.000)
	call CreateUnit(p, 1936681315, 1600.0,  - 5504.0, 270.000)
	call CreateUnit(p, 1936681315, 1408.0,  - 5504.0, 270.000)
	call CreateUnit(p, 1634886497,  - 128.0,  - 5120.0, 270.000)
	call CreateUnit(p, 1634886497,  - 128.0,  - 5248.0, 270.000)
	call CreateUnit(p, 1634886497, 128.0,  - 5120.0, 270.000)
	call CreateUnit(p, 1634886497, 128.0,  - 5248.0, 270.000)
	call CreateUnit(p, 1634886497, 0.0,  - 4928.0, 270.000)
	call CreateUnit(p, 1936680818,  - 128.0,  - 6400.0, 270.000)
	call CreateUnit(p, 1936680818,  - 128.0,  - 6464.0, 270.000)
	call CreateUnit(p, 1651468146, 128.0,  - 6464.0, 270.000)
	call CreateUnit(p, 1651468146,  - 448.0,  - 6272.0, 270.000)
	call CreateUnit(p, 1936680818,  - 960.0,  - 7168.0, 270.000)
	call CreateUnit(p, 1936680818,  - 896.0,  - 6848.0, 270.000)
	call CreateUnit(p, 1634886497, 256.0,  - 4480.0, 270.000)
	call CreateUnit(p, 1634886497, 384.0,  - 4480.0, 270.000)
	call CreateUnit(p, 1634886497, 512.0,  - 4480.0, 270.000)
	call CreateUnit(p, 1634886497, 640.0,  - 4480.0, 270.000)
	call CreateUnit(p, 1634886497, 768.0,  - 4480.0, 270.000)
	call CreateUnit(p, 1936680818, 320.0,  - 4352.0, 270.000)
	call CreateUnit(p, 1936680818, 384.0,  - 4352.0, 270.000)
	call CreateUnit(p, 1936680818, 448.0,  - 4352.0, 270.000)
	call CreateUnit(p, 1936680818, 512.0,  - 4352.0, 270.000)
	call CreateUnit(p, 1936680818, 576.0,  - 4352.0, 270.000)
	call CreateUnit(p, 1936680818, 320.0,  - 4608.0, 270.000)
	call CreateUnit(p, 1936680818, 384.0,  - 4544.0, 270.000)
	call CreateUnit(p, 1936680818, 448.0,  - 4544.0, 270.000)
	call CreateUnit(p, 1936680818, 512.0,  - 4544.0, 270.000)
	call CreateUnit(p, 1936680818, 576.0,  - 4608.0, 270.000)
	call CreateUnit(p, 1752131442, 640.0,  - 4352.0, 270.000)
	call CreateUnit(p, 1752131442, 768.0,  - 4352.0, 270.000)
	call CreateUnit(p, 1752131442, 640.0,  - 4608.0, 270.000)
	call CreateUnit(p, 1752131442, 640.0,  - 4736.0, 270.000)
	call CreateUnit(p, 1752131442, 256.0,  - 4608.0, 270.000)
	call CreateUnit(p, 1752131442, 256.0,  - 4736.0, 270.000)
	call CreateUnit(p, 1752131442, 256.0,  - 4352.0, 270.000)
	call CreateUnit(p, 1752131442, 256.0,  - 4288.0, 270.000)
	call CreateUnit(p, 1752131442, 128.0,  - 4224.0, 270.000)
	call CreateUnit(p, 1936680818,  - 1280.0,  - 5440.0, 270.000)
	call CreateUnit(p, 1936680818,  - 1280.0,  - 5568.0, 270.000)
	call CreateUnit(p, 1936680818,  - 1216.0,  - 5504.0, 270.000)
	call CreateUnit(p, 1936680818,  - 1152.0,  - 5632.0, 270.000)
	call CreateUnit(p, 1936680818,  - 1152.0,  - 5568.0, 270.000)
	call CreateUnit(p, 1936680818,  - 1216.0,  - 5696.0, 270.000)
	call CreateUnit(p, 1718514738, 2240.0,  - 6528.0, 270.000)
	call CreateUnit(p, 1848651864, 2112.0,  - 6336.0, 270.000)
	call CreateUnit(p, 1752131442, 384.0,  - 5632.0, 270.000)
	call CreateUnit(p, 1752131442,  - 128.0,  - 5632.0, 270.000)
	call CreateUnit(p, 1936680818, 0.0,  - 5184.0, 270.000)
	call CreateUnit(p, 1936679796,  - 2816.0,  - 6592.0, 270.000)
	call CreateUnit(p, 1936679796,  - 2752.0,  - 6464.0, 270.000)
	call CreateUnit(p, 1936679796,  - 2560.0,  - 6976.0, 270.000)
	call CreateUnit(p, 1936679796,  - 2496.0,  - 6976.0, 270.000)
endfunction

function CreateBuildingsForPlayer10 takes nothing returns nothing
	local player p = Player(10)
	set gg_unit_tele_0115 = CreateUnit(p, 1952803941,  - 5888.0,  - 5184.0, 270.000)
endfunction

function CreateBuildingsForPlayer11 takes nothing returns nothing
	local player p = Player(11)
	set gg_unit_tele_0143 = CreateUnit(p, 1952803941,  - 5632.0,  - 5184.0, 270.000)
endfunction

function CreateBuildingsForPlayer8 takes nothing returns nothing
	local player p = Player(8)
	set gg_unit_tele_0058 = CreateUnit(p, 1952803941,  - 6400.0,  - 5184.0, 270.000)
endfunction

function CreateBuildingsForPlayer9 takes nothing returns nothing
	local player p = Player(9)
	set gg_unit_tele_0063 = CreateUnit(p, 1952803941,  - 6144.0,  - 5184.0, 270.000)
endfunction

function CreatePlayerBuildings takes nothing returns nothing
	call CreateBuildingsForPlayer8()
	call CreateBuildingsForPlayer9()
	call CreateBuildingsForPlayer10()
	call CreateBuildingsForPlayer11()
endfunction

function CreatePlayerUnits takes nothing returns nothing
endfunction

function CreateAllUnits takes nothing returns nothing
	call CreateNeutralPassiveBuildings()
	call CreatePlayerBuildings()
	call CreateNeutralPassive()
	call CreatePlayerUnits()
endfunction

function CreateCameras takes nothing returns nothing
	set gg_cam_Camera_001 = CreateCameraSetup()
	call CameraSetupSetField(gg_cam_Camera_001, CAMERA_FIELD_ZOFFSET, 0.0, 0.0)
	call CameraSetupSetField(gg_cam_Camera_001, CAMERA_FIELD_ROTATION, 148.3, 0.0)
	call CameraSetupSetField(gg_cam_Camera_001, CAMERA_FIELD_ANGLE_OF_ATTACK, 345.7, 0.0)
	call CameraSetupSetField(gg_cam_Camera_001, CAMERA_FIELD_TARGET_DISTANCE, 991.7, 0.0)
	call CameraSetupSetField(gg_cam_Camera_001, CAMERA_FIELD_ROLL, 0.0, 0.0)
	call CameraSetupSetField(gg_cam_Camera_001, CAMERA_FIELD_FIELD_OF_VIEW, 70.0, 0.0)
	call CameraSetupSetField(gg_cam_Camera_001, CAMERA_FIELD_FARZ, 5000.0, 0.0)
	call CameraSetupSetDestPosition(gg_cam_Camera_001,  - 6863.5, 6652.6, 0.0)
	set gg_cam_BuilderSetupCam = CreateCameraSetup()
	call CameraSetupSetField(gg_cam_BuilderSetupCam, CAMERA_FIELD_ZOFFSET, 0.0, 0.0)
	call CameraSetupSetField(gg_cam_BuilderSetupCam, CAMERA_FIELD_ROTATION, 89.8, 0.0)
	call CameraSetupSetField(gg_cam_BuilderSetupCam, CAMERA_FIELD_ANGLE_OF_ATTACK, 299.9, 0.0)
	call CameraSetupSetField(gg_cam_BuilderSetupCam, CAMERA_FIELD_TARGET_DISTANCE, 769.7, 0.0)
	call CameraSetupSetField(gg_cam_BuilderSetupCam, CAMERA_FIELD_ROLL, 0.0, 0.0)
	call CameraSetupSetField(gg_cam_BuilderSetupCam, CAMERA_FIELD_FIELD_OF_VIEW, 70.0, 0.0)
	call CameraSetupSetField(gg_cam_BuilderSetupCam, CAMERA_FIELD_FARZ, 8857.8, 0.0)
	call CameraSetupSetDestPosition(gg_cam_BuilderSetupCam,  - 4265.2, 7548.9, 0.0)
	set gg_cam_BuilderBuilderCam = CreateCameraSetup()
	call CameraSetupSetField(gg_cam_BuilderBuilderCam, CAMERA_FIELD_ZOFFSET, 0.0, 0.0)
	call CameraSetupSetField(gg_cam_BuilderBuilderCam, CAMERA_FIELD_ROTATION, 89.8, 0.0)
	call CameraSetupSetField(gg_cam_BuilderBuilderCam, CAMERA_FIELD_ANGLE_OF_ATTACK, 299.9, 0.0)
	call CameraSetupSetField(gg_cam_BuilderBuilderCam, CAMERA_FIELD_TARGET_DISTANCE, 636.2, 0.0)
	call CameraSetupSetField(gg_cam_BuilderBuilderCam, CAMERA_FIELD_ROLL, 0.0, 0.0)
	call CameraSetupSetField(gg_cam_BuilderBuilderCam, CAMERA_FIELD_FIELD_OF_VIEW, 70.0, 0.0)
	call CameraSetupSetField(gg_cam_BuilderBuilderCam, CAMERA_FIELD_FARZ, 8857.8, 0.0)
	call CameraSetupSetDestPosition(gg_cam_BuilderBuilderCam,  - 3466.2, 7555.0, 0.0)
	set gg_cam_BlackCam = CreateCameraSetup()
	call CameraSetupSetField(gg_cam_BlackCam, CAMERA_FIELD_ZOFFSET, 0.0, 0.0)
	call CameraSetupSetField(gg_cam_BlackCam, CAMERA_FIELD_ROTATION, 89.8, 0.0)
	call CameraSetupSetField(gg_cam_BlackCam, CAMERA_FIELD_ANGLE_OF_ATTACK, 269.3, 0.0)
	call CameraSetupSetField(gg_cam_BlackCam, CAMERA_FIELD_TARGET_DISTANCE, 699.8, 0.0)
	call CameraSetupSetField(gg_cam_BlackCam, CAMERA_FIELD_ROLL, 0.0, 0.0)
	call CameraSetupSetField(gg_cam_BlackCam, CAMERA_FIELD_FIELD_OF_VIEW, 20.0, 0.0)
	call CameraSetupSetField(gg_cam_BlackCam, CAMERA_FIELD_FARZ, 101.0, 0.0)
	call CameraSetupSetDestPosition(gg_cam_BlackCam,  - 2996.0, 7450.1, 0.0)
	set gg_cam_StdCam = CreateCameraSetup()
	call CameraSetupSetField(gg_cam_StdCam, CAMERA_FIELD_ZOFFSET, 0.0, 0.0)
	call CameraSetupSetField(gg_cam_StdCam, CAMERA_FIELD_ROTATION, 90.0, 0.0)
	call CameraSetupSetField(gg_cam_StdCam, CAMERA_FIELD_ANGLE_OF_ATTACK, 304.0, 0.0)
	call CameraSetupSetField(gg_cam_StdCam, CAMERA_FIELD_TARGET_DISTANCE, 1650.0, 0.0)
	call CameraSetupSetField(gg_cam_StdCam, CAMERA_FIELD_ROLL, 0.0, 0.0)
	call CameraSetupSetField(gg_cam_StdCam, CAMERA_FIELD_FIELD_OF_VIEW, 70.0, 0.0)
	call CameraSetupSetField(gg_cam_StdCam, CAMERA_FIELD_FARZ, 5000.0, 0.0)
	call CameraSetupSetDestPosition(gg_cam_StdCam,  - 5869.2,  - 6100.0, 0.0)
	set gg_cam_BuilderTilesCam = CreateCameraSetup()
	call CameraSetupSetField(gg_cam_BuilderTilesCam, CAMERA_FIELD_ZOFFSET, 0.0, 0.0)
	call CameraSetupSetField(gg_cam_BuilderTilesCam, CAMERA_FIELD_ROTATION, 90.1, 0.0)
	call CameraSetupSetField(gg_cam_BuilderTilesCam, CAMERA_FIELD_ANGLE_OF_ATTACK, 271.5, 0.0)
	call CameraSetupSetField(gg_cam_BuilderTilesCam, CAMERA_FIELD_TARGET_DISTANCE, 1024.5, 0.0)
	call CameraSetupSetField(gg_cam_BuilderTilesCam, CAMERA_FIELD_ROLL, 0.0, 0.0)
	call CameraSetupSetField(gg_cam_BuilderTilesCam, CAMERA_FIELD_FIELD_OF_VIEW, 70.0, 0.0)
	call CameraSetupSetField(gg_cam_BuilderTilesCam, CAMERA_FIELD_FARZ, 5000.0, 0.0)
	call CameraSetupSetDestPosition(gg_cam_BuilderTilesCam,  - 2631.2, 7473.1, 0.0)
	set gg_cam_spaceycam = CreateCameraSetup()
	call CameraSetupSetField(gg_cam_spaceycam, CAMERA_FIELD_ZOFFSET, 0.0, 0.0)
	call CameraSetupSetField(gg_cam_spaceycam, CAMERA_FIELD_ROTATION, 90.0, 0.0)
	call CameraSetupSetField(gg_cam_spaceycam, CAMERA_FIELD_ANGLE_OF_ATTACK, 272.3, 0.0)
	call CameraSetupSetField(gg_cam_spaceycam, CAMERA_FIELD_TARGET_DISTANCE, 1488.9, 0.0)
	call CameraSetupSetField(gg_cam_spaceycam, CAMERA_FIELD_ROLL, 0.0, 0.0)
	call CameraSetupSetField(gg_cam_spaceycam, CAMERA_FIELD_FIELD_OF_VIEW, 70.0, 0.0)
	call CameraSetupSetField(gg_cam_spaceycam, CAMERA_FIELD_FARZ, 10000.0, 0.0)
	call CameraSetupSetDestPosition(gg_cam_spaceycam,  - 2844.3, 7562.2, 0.0)
endfunction

function CreateRegions takes nothing returns nothing
	local weathereffect we
	set gg_rct_Choose = Rect( - 7488.0, 5856.0,  - 5856.0, 7488.0)
	set we = AddWeatherEffect(gg_rct_Choose, 1397647475)
	call EnableWeatherEffect(we, true)
	set gg_rct_Region_002 = Rect( - 6976.0,  - 4960.0,  - 5056.0,  - 1856.0)
	set gg_rct_Region_014 = Rect(928.0, 5184.0, 4160.0, 7104.0)
	set gg_rct_Region_015 = Rect(4160.0, 5184.0, 6976.0, 7104.0)
	set gg_rct_Region_000 = Rect( - 2112.0,  - 7328.0, 960.0,  - 3648.0)
	set gg_rct_Region_001 = Rect( - 5056.0,  - 7328.0,  - 2112.0,  - 3648.0)
	set gg_rct_Region_003 = Rect( - 5056.0,  - 3648.0,  - 2368.0,  - 1856.0)
	set gg_rct_Region_004 = Rect( - 6976.0,  - 1856.0,  - 2368.0, 704.0)
	set gg_rct_Region_005 = Rect( - 2368.0,  - 3648.0,  - 832.0, 704.0)
	set gg_rct_Region_006 = Rect( - 832.0,  - 3648.0, 1472.0,  - 1472.0)
	set gg_rct_Region_007 = Rect(1472.0,  - 3648.0, 4160.0,  - 1472.0)
	set gg_rct_Region_008 = Rect(1472.0,  - 1472.0, 4160.0, 704.0)
	set gg_rct_Region_009 = Rect( - 4288.0, 704.0,  - 1216.0, 4416.0)
	set gg_rct_Region_010 = Rect( - 1216.0, 704.0, 4160.0, 2880.0)
	set gg_rct_Region_011 = Rect(4160.0,  - 3648.0, 7040.0, 704.0)
	set gg_rct_Region_012 = Rect(4160.0, 704.0, 6976.0, 2880.0)
	set gg_rct_Region_013 = Rect( - 1216.0, 2880.0, 6976.0, 5184.0)
	set gg_rct_Region_016 = Rect( - 1216.0, 5184.0, 928.0, 7104.0)
	set gg_rct_Region_017 = Rect( - 6976.0, 704.0,  - 4288.0, 4416.0)
	set gg_rct_Region_018 = Rect(960.0,  - 7328.0, 4160.0,  - 3648.0)
	set gg_rct_Region_024 = Rect(4160.0,  - 7328.0, 7040.0,  - 3648.0)
	set gg_rct_Region_026 = Rect( - 832.0,  - 1472.0, 1472.0, 704.0)
	set gg_rct_Start = Rect( - 6976.0,  - 7328.0,  - 5056.0,  - 4960.0)
	set gg_rct_Region_023 = Rect( - 8192.0,  - 7680.0, 7648.0, 8192.0)
	set gg_rct_coingamearea = Rect( - 4928.0, 7104.0,  - 3680.0, 8000.0)
	set gg_rct_spaceygamearea = Rect( - 3584.0, 7136.0,  - 1952.0, 7936.0)
	set gg_rct_coingamebounds = Rect( - 4320.0, 7520.0,  - 4288.0, 7552.0)
	set gg_rct_spaceygamebounds = Rect( - 2720.0, 7584.0,  - 2688.0, 7616.0)
	set gg_rct_slidegamearea = Rect( - 1696.0, 7136.0, 800.0, 7936.0)
	set gg_rct_slidegamebounds = Rect( - 1024.0, 7520.0, 96.0, 7552.0)
	set gg_rct_slidegamespawn = Rect( - 1408.0, 7136.0, 544.0, 7936.0)
	set gg_rct_Region_027 = Rect( - 4928.0, 4416.0,  - 1216.0, 7104.0)
	set gg_rct_agargamearea = Rect(960.0, 7136.0, 2624.0, 7936.0)
	set gg_rct_agargamefoodspawn = Rect(1088.0, 7232.0, 2464.0, 7808.0)
	set gg_rct_agargamebounds = Rect(1760.0, 7520.0, 1792.0, 7552.0)
	set gg_rct_warlockgamearea = Rect(2656.0, 7136.0, 3872.0, 7936.0)
	set gg_rct_warlockgamebounds = Rect(3264.0, 7488.0, 3296.0, 7520.0)
endfunction

function InitTrig_Untitled_Trigger_005 takes nothing returns nothing
	set gg_trg_Untitled_Trigger_005 = CreateTrigger()
	call TriggerAddAction(gg_trg_Untitled_Trigger_005, ref_function_Trig_Untitled_Trigger_005_Actions)
endfunction

function InitCustomTriggers takes nothing returns nothing
	call InitTrig_Untitled_Trigger_005()
endfunction

function InitGlobals takes nothing returns nothing
endfunction

function InitSounds takes nothing returns nothing
	set gg_snd_ArrangedTeamInvitation = CreateSound("Sound\\Interface\\ArrangedTeamInvitation.wav", false, false, false, 10, 10, "")
	call SetSoundParamsFromLabel(gg_snd_ArrangedTeamInvitation, "ArrangedTeamInvitation")
endfunction

function Loglevel_getTag takes integer this_1 returns string
	local integer temp = this_1
	if temp == 0 then
		return "|cffADADADtrace|r"
	elseif temp == 1 then
		return "|cff2685DCdebug|r"
	elseif temp == 2 then
		return "|cffFFCC00info|r"
	elseif temp == 3 then
		return "|cffF47E3Ewarning|r"
	else
		return "|cffFB2700error|r"
	endif
endfunction

function printLog_3944 takes player showTo, integer loglvl, string msg returns nothing
	local string compositeMsg
	if Printing_config_DEBUG_LEVEL <= loglvl then
		set compositeMsg = Loglevel_getTag(loglvl) + " - " + msg
		call DisplayTimedTextToPlayer(showTo, 0., 0., Printing_DEBUG_MSG_DURATION, compositeMsg)
	endif
endfunction

function Log_error takes string msg returns nothing
	call printLog_3944(Player_localPlayer, 4, msg)
endfunction

function compileError takes string msg returns nothing
endfunction

function hashtable_hasBoolean takes hashtable this_1, integer parentKey, integer childKey returns boolean
	return HaveSavedBoolean(this_1, parentKey, childKey)
endfunction

function hashtable_hasInt takes hashtable this_1, integer parentKey, integer childKey returns boolean
	return HaveSavedInteger(this_1, parentKey, childKey)
endfunction

function hashtable_loadBoolean takes hashtable this_1, integer parentKey, integer childKey returns boolean
	return LoadBoolean(this_1, parentKey, childKey)
endfunction

function hashtable_loadInt takes hashtable this_1, integer parentKey, integer childKey returns integer
	return LoadInteger(this_1, parentKey, childKey)
endfunction

function hashtable_saveBoolean takes hashtable this_1, integer parentKey, integer childKey, boolean value returns nothing
	call SaveBoolean(this_1, parentKey, childKey, value)
endfunction

function hashtable_saveInt takes hashtable this_1, integer parentKey, integer childKey, integer value returns nothing
	call SaveInteger(this_1, parentKey, childKey, value)
endfunction

function real_toInt takes real this_1 returns integer
	return R2I(this_1)
endfunction

function string_getHash takes string this_1 returns integer
	return StringHash(this_1)
endfunction

function error takes string msg returns nothing
	local integer hash
	if MagicFunctions_compiletime then
		call compileError("ERROR: " + msg)
	else
		if  not ErrorHandling_suppressErrorMessages then
			set hash = string_getHash(msg)
			if hashtable_hasInt(ErrorHandling_HT, ErrorHandling_PRIMARY_ERROR_KEY, hash) then
				if hashtable_loadInt(ErrorHandling_HT, ErrorHandling_PRIMARY_ERROR_KEY, hash) + ErrorHandling_MUTE_ERROR_DURATION < GameTimer_currentTime then
					call Log_error(msg + "")
					call hashtable_saveInt(ErrorHandling_HT, ErrorHandling_PRIMARY_ERROR_KEY, hash, real_toInt(GameTimer_currentTime))
					call hashtable_saveBoolean(ErrorHandling_HT, ErrorHandling_PRIMARY_ERROR_KEY, hash, false)
				elseif hashtable_hasBoolean(ErrorHandling_HT, ErrorHandling_PRIMARY_ERROR_KEY, hash) then
					if  not hashtable_loadBoolean(ErrorHandling_HT, ErrorHandling_PRIMARY_ERROR_KEY, hash) then
						call Log_error("|cffFF3A29Excessive repeating errors are being omitted")
						call hashtable_saveBoolean(ErrorHandling_HT, ErrorHandling_PRIMARY_ERROR_KEY, hash, true)
					endif
				else
					call Log_error("|cffFF3A29Excessive repeating errors are being omitted")
					call hashtable_saveBoolean(ErrorHandling_HT, ErrorHandling_PRIMARY_ERROR_KEY, hash, true)
				endif
			else
				call hashtable_saveInt(ErrorHandling_HT, ErrorHandling_PRIMARY_ERROR_KEY, hash, real_toInt(GameTimer_currentTime))
				call Log_error("Message: " + msg + "")
			endif
		endif
		set ErrorHandling_lastError = msg
		call I2S(1 / 0)
	endif
endfunction

function initCompiletimeState_0 takes nothing returns nothing
	set hashtable_compiletime_2520 = InitHashtable()
	set hashtable_compiletime_2519 = InitHashtable()
	set hashtable_compiletime_2518 = InitHashtable()
	set hashtable_compiletime_2517 = InitHashtable()
	set hashtable_compiletime = InitHashtable()
	call SaveInteger(hashtable_compiletime_2519, 1, -242600650, 0)
	call SaveInteger(hashtable_compiletime_2519, 1, 1132341824, 1)
	call SaveInteger(hashtable_compiletime_2519, 1, -647782241, 2)
	call SaveInteger(hashtable_compiletime_2519, 1, -854572045, 3)
	call SaveInteger(hashtable_compiletime_2519, 1, -680649701, 4)
	call SaveInteger(hashtable_compiletime_2519, 1, -943650483, 5)
	call SaveInteger(hashtable_compiletime_2519, 1, -671760605, 6)
	call SaveInteger(hashtable_compiletime_2519, 1, 349230650, 7)
	call SaveInteger(hashtable_compiletime_2519, 1, -1894922563, 8)
	call SaveInteger(hashtable_compiletime_2519, 1, -1474492777, 9)
	call SaveInteger(hashtable_compiletime_2519, 1, -1587459251, 10)
	call SaveInteger(hashtable_compiletime_2519, 1, -1676716706, 11)
	call SaveInteger(hashtable_compiletime_2519, 1, -1559655710, 12)
	call SaveInteger(hashtable_compiletime_2519, 1, -1663695754, 13)
	call SaveInteger(hashtable_compiletime_2519, 1, 597637742, 14)
	call SaveInteger(hashtable_compiletime_2519, 1, 789744696, 15)
	call SaveStr(hashtable_compiletime_2519, 2, 0, "")
	call SaveInteger(hashtable_compiletime_2519, 7, 0, 0)
	call SaveInteger(hashtable_compiletime_2519, 7, 1, 0)
	call SaveInteger(hashtable_compiletime_2519, 7, 2, 0)
	call SaveInteger(hashtable_compiletime_2519, 7, 3, 0)
	call SaveInteger(hashtable_compiletime_2519, 7, 4, 0)
	call SaveInteger(hashtable_compiletime_2519, 7, 5, 0)
	call SaveInteger(hashtable_compiletime_2519, 7, 6, 0)
	call SaveInteger(hashtable_compiletime_2519, 7, 7, 0)
	call SaveInteger(hashtable_compiletime_2519, 7, 8, 0)
	call SaveInteger(hashtable_compiletime_2519, 7, 9, 0)
	call SaveInteger(hashtable_compiletime_2519, 7, 10, 0)
	call SaveInteger(hashtable_compiletime_2519, 7, 11, 0)
	call SaveInteger(hashtable_compiletime_2519, 7, 12, 0)
	call SaveInteger(hashtable_compiletime_2519, 7, 13, 0)
	call SaveInteger(hashtable_compiletime_2519, 7, 14, 0)
	call SaveInteger(hashtable_compiletime_2519, 7, 15, 0)
	call SaveInteger(hashtable_compiletime_2519, 7, 16, 0)
	call SaveInteger(hashtable_compiletime_2519, 7, 17, 0)
	call SaveInteger(hashtable_compiletime_2519, 7, 18, 0)
	call SaveInteger(hashtable_compiletime_2519, 7, 19, 0)
	call SaveInteger(hashtable_compiletime_2519, 7, 20, 0)
	call SaveInteger(hashtable_compiletime_2519, 7, 21, 0)
	call SaveInteger(hashtable_compiletime_2519, 7, 22, 0)
	call SaveInteger(hashtable_compiletime_2519, 7, 23, 0)
	call SaveInteger(hashtable_compiletime_2519, 7, 24, 0)
	call SaveInteger(hashtable_compiletime_2519, 7, 25, 0)
	call SaveInteger(hashtable_compiletime_2519, 7, 26, 0)
	call SaveInteger(hashtable_compiletime_2519, 7, 27, 0)
	call SaveInteger(hashtable_compiletime_2519, 7, 28, 0)
	call SaveInteger(hashtable_compiletime_2519, 7, 29, 0)
	call SaveInteger(hashtable_compiletime_2519, 7, 30, 0)
	call SaveInteger(hashtable_compiletime_2519, 7, 31, 0)
	call SaveInteger(hashtable_compiletime_2519, 7, 32, 0)
	call SaveInteger(hashtable_compiletime_2519, 7, 33, 0)
	call SaveInteger(hashtable_compiletime_2519, 7, 34, 0)
	call SaveInteger(hashtable_compiletime_2519, 7, 35, 0)
	call SaveInteger(hashtable_compiletime_2519, 7, 36, 0)
	call SaveInteger(hashtable_compiletime_2519, 7, 37, 0)
	call SaveInteger(hashtable_compiletime_2519, 7, 38, 0)
	call SaveInteger(hashtable_compiletime_2519, 7, 39, 0)
	call SaveInteger(hashtable_compiletime_2519, 7, 40, 0)
	call SaveInteger(hashtable_compiletime_2519, 7, 41, 0)
	call SaveInteger(hashtable_compiletime_2519, 7, 42, 0)
	call SaveInteger(hashtable_compiletime_2519, 7, 43, 0)
	call SaveInteger(hashtable_compiletime_2519, 7, 44, 0)
	call SaveInteger(hashtable_compiletime_2519, 7, 45, 0)
	call SaveInteger(hashtable_compiletime_2519, 7, 46, 0)
	call SaveInteger(hashtable_compiletime_2519, 7, 47, 0)
	call SaveInteger(hashtable_compiletime_2519, 7, 48, 0)
	call SaveInteger(hashtable_compiletime_2519, 7, 49, 0)
	call SaveInteger(hashtable_compiletime_2519, 7, 50, 0)
	call SaveInteger(hashtable_compiletime_2519, 7, 51, 0)
	call SaveInteger(hashtable_compiletime_2519, 7, 52, 0)
	call SaveInteger(hashtable_compiletime_2519, 7, 53, 0)
	call SaveInteger(hashtable_compiletime_2519, 7, 54, 0)
	call SaveInteger(hashtable_compiletime_2519, 7, 55, 0)
	call SaveInteger(hashtable_compiletime_2519, 7, 56, 0)
	call SaveInteger(hashtable_compiletime_2519, 7, 57, 0)
	call SaveInteger(hashtable_compiletime_2519, 7, 58, 0)
	call SaveInteger(hashtable_compiletime_2519, 7, 59, 0)
	call SaveInteger(hashtable_compiletime_2519, 7, 60, 0)
	call SaveInteger(hashtable_compiletime_2519, 7, 61, 0)
	call SaveInteger(hashtable_compiletime_2519, 7, 62, 0)
	call SaveInteger(hashtable_compiletime_2519, 7, 63, 0)
	call SaveStr(hashtable_compiletime_2519, 2, 1804483594, "air")
	call SaveStr(hashtable_compiletime_2519, 2, -1221441622, "debris")
	call SaveStr(hashtable_compiletime_2519, 2, -681966791, "ground")
	call SaveStr(hashtable_compiletime_2519, 2, -1912775212, "invulnerable")
	call SaveStr(hashtable_compiletime_2519, 2, 392811314, "item")
	call SaveStr(hashtable_compiletime_2519, 2, 124309475, "structure")
	call SaveStr(hashtable_compiletime_2519, 2, -543400682, "vulnerable")
	call SaveStr(hashtable_compiletime_2519, 2, -85648186, "ward")
	call SaveStr(hashtable_compiletime_2519, 2, -612826229, "Avul")
	call SaveStr(hashtable_compiletime_2519, 2, 1282521876, "Aloc")
	call SaveStr(hashtable_compiletime_2519, 2, -1169939221, "AM0i")
	call SaveStr(hashtable_compiletime_2519, 2, -772850843, "A01H")
	call SaveStr(hashtable_compiletime_2519, 2, -1497824038, "A01E")
	call SaveStr(hashtable_compiletime_2519, 2, -1194720164, "AM06")
	call SaveStr(hashtable_compiletime_2519, 2, 1344391533, "Aeth")
	call SaveStr(hashtable_compiletime_2519, 2, 1258890339, "I011")
	call SaveStr(hashtable_compiletime_2519, 2, 1295827329, "I00T")
	call SaveStr(hashtable_compiletime_2519, 2, 93268157, "I00Q")
	call SaveStr(hashtable_compiletime_2519, 2, -2090037533, "I00L")
	call SaveStr(hashtable_compiletime_2519, 2, -45159924, "I00P")
	call SaveStr(hashtable_compiletime_2519, 2, 350106804, "I00N")
	call SaveStr(hashtable_compiletime_2519, 2, 888273623, "I00D")
	call SaveStr(hashtable_compiletime_2519, 2, -1658272500, "I00G")
	call SaveStr(hashtable_compiletime_2519, 2, -1221664638, "I00H")
	call SaveStr(hashtable_compiletime_2519, 2, -780291422, "I00E")
	call SaveStr(hashtable_compiletime_2519, 2, 512215473, "Agho")
	call SaveStr(hashtable_compiletime_2519, 2, -369254983, "A077")
	call SaveStr(hashtable_compiletime_2519, 2, 1650982143, "A00H")
	call SaveStr(hashtable_compiletime_2519, 2, 697886914, "A078")
	call SaveStr(hashtable_compiletime_2519, 2, 634294822, "A079")
	call SaveStr(hashtable_compiletime_2519, 2, -1558492453, "A00M")
	call SaveStr(hashtable_compiletime_2519, 2, -1288628527, "A05R")
	call SaveStr(hashtable_compiletime_2519, 2, 291965116, "AM0j")
	call SaveStr(hashtable_compiletime_2519, 2, -353200626, "Awan")
	call SaveStr(hashtable_compiletime_2519, 2, -1565998585, "A08I")
	call SaveStr(hashtable_compiletime_2519, 2, 2105242099, "A01W")
	call SaveStr(hashtable_compiletime_2519, 2, 1892143652, "A00J")
	call SaveStr(hashtable_compiletime_2519, 2, -644213493, "AM04")
	call SaveStr(hashtable_compiletime_2519, 2, -1843883511, "AM1|")
	call SaveStr(hashtable_compiletime_2519, 2, 1866639999, "AM1}")
	call SaveStr(hashtable_compiletime_2519, 2, 1527925898, "AM1~")
	call SaveStr(hashtable_compiletime_2519, 2, 924503629, "AM1x")
	call SaveStr(hashtable_compiletime_2519, 2, -1581872253, "AM07")
	call SaveStr(hashtable_compiletime_2519, 2, -238183855, "ARal")
	call SaveStr(hashtable_compiletime_2519, 2, 526597858, "AM2m")
	call SaveStr(hashtable_compiletime_2519, 2, 880089072, "AM2o")
	call SaveStr(hashtable_compiletime_2519, 2, -707209618, "AM2n")
	call SaveStr(hashtable_compiletime_2519, 2, -1524852115, "AM2p")
	call SaveStr(hashtable_compiletime_2519, 2, 1005603231, "A031")
	call SaveStr(hashtable_compiletime_2519, 2, 1964544851, "A01F")
	call SaveStr(hashtable_compiletime_2519, 2, -1440657423, "A01G")
	call SaveStr(hashtable_compiletime_2519, 2, 297658214, "AM23")
	call SaveStr(hashtable_compiletime_2519, 2, -1234634056, "AM25")
	call SaveStr(hashtable_compiletime_2519, 2, -1470463957, "AM24")
	call SaveStr(hashtable_compiletime_2519, 2, -503825828, "AM2g")
	call SaveStr(hashtable_compiletime_2519, 2, -844489484, "AM02")
	call SaveStr(hashtable_compiletime_2519, 2, -514728743, "AM29")
	call SaveStr(hashtable_compiletime_2519, 2, -2139903503, "AM2a")
	call SaveStr(hashtable_compiletime_2519, 2, 1649525986, "AM2b")
	call SaveStr(hashtable_compiletime_2519, 2, 256373643, "AM2c")
	call SaveStr(hashtable_compiletime_2519, 2, 135684864, "AM2f")
	call SaveStr(hashtable_compiletime_2519, 2, 534882185, "AM28")
	call SaveStr(hashtable_compiletime_2519, 2, -1837158074, "AM2d")
	call SaveStr(hashtable_compiletime_2519, 2, 1132733691, "AM2e")
	call SaveStr(hashtable_compiletime_2519, 2, -263269125, "AM03")
	call SaveStr(hashtable_compiletime_2519, 2, 1664628870, "AM1i")
	call SaveStr(hashtable_compiletime_2519, 2, 1786733856, "AM1j")
	call SaveStr(hashtable_compiletime_2519, 2, 1528748507, "AM1l")
	call SaveStr(hashtable_compiletime_2519, 2, 218476168, "AM1m")
	call SaveStr(hashtable_compiletime_2519, 2, 1929857105, "AM1n")
	call SaveStr(hashtable_compiletime_2519, 2, 1537360851, "AM1k")
	call SaveStr(hashtable_compiletime_2519, 2, -67900494, "AM2k")
	call SaveStr(hashtable_compiletime_2519, 2, 456807374, "A066")
	call SaveStr(hashtable_compiletime_2519, 2, -2009107062, "A068")
	call SaveStr(hashtable_compiletime_2519, 2, 613790458, "A069")
	call SaveStr(hashtable_compiletime_2519, 2, 1020526311, "A067")
	call SaveStr(hashtable_compiletime_2519, 2, 1842946908, "AM19")
	call SaveStr(hashtable_compiletime_2519, 2, -913192684, "AM1a")
	call SaveStr(hashtable_compiletime_2519, 2, -637014793, "AM1b")
	call SaveStr(hashtable_compiletime_2519, 2, -1042083456, "AM1g")
	call SaveStr(hashtable_compiletime_2519, 2, 1778939548, "AM1h")
	call SaveStr(hashtable_compiletime_2519, 2, 1236068946, "AM1e")
	call SaveStr(hashtable_compiletime_2519, 2, -1621834777, "AM1f")
	call SaveStr(hashtable_compiletime_2519, 2, -1100019655, "AM1c")
	call SaveStr(hashtable_compiletime_2519, 2, 1942622032, "AM1d")
	call SaveStr(hashtable_compiletime_2519, 2, 344071233, "AM2!")
	call SaveStr(hashtable_compiletime_2519, 2, 833187919, "A04K")
	call SaveStr(hashtable_compiletime_2519, 2, -192331855, "A04J")
	call SaveStr(hashtable_compiletime_2519, 2, 820563124, "AM2|")
	call SaveStr(hashtable_compiletime_2519, 2, 1100604024, "AM3!")
	call SaveStr(hashtable_compiletime_2519, 2, -86170109, "AM2}")
	call SaveStr(hashtable_compiletime_2519, 2, 693602440, "AM2{")
	call SaveStr(hashtable_compiletime_2519, 2, 310242460, "AM2~")
	call SaveStr(hashtable_compiletime_2519, 2, 863115293, "AM2z")
	call SaveStr(hashtable_compiletime_2519, 2, 643962910, "A04S")
	call SaveStr(hashtable_compiletime_2519, 2, 1565411427, "A04T")
	call SaveStr(hashtable_compiletime_2519, 2, -1625416043, "A04L")
	call SaveStr(hashtable_compiletime_2519, 2, 491905205, "A04U")
	call SaveStr(hashtable_compiletime_2519, 2, 339344095, "A04H")
	call SaveStr(hashtable_compiletime_2519, 2, -1335094659, "A050")
	call SaveStr(hashtable_compiletime_2519, 2, 1638298493, "AM3b")
	call SaveStr(hashtable_compiletime_2519, 2, -2101390392, "AM37")
	call SaveStr(hashtable_compiletime_2519, 2, -1870641063, "AM3e")
	call SaveStr(hashtable_compiletime_2519, 2, 1069439989, "AM38")
	call SaveStr(hashtable_compiletime_2519, 2, -2118011759, "AM39")
	call SaveStr(hashtable_compiletime_2519, 2, 1884816878, "AM3a")
	call SaveStr(hashtable_compiletime_2519, 2, -1859630878, "AM3i")
	call SaveStr(hashtable_compiletime_2519, 2, 2025680314, "AM3h")
	call SaveStr(hashtable_compiletime_2519, 2, -1507824169, "AM3j")
	call SaveStr(hashtable_compiletime_2519, 2, 1377653509, "AM3k")
	call SaveStr(hashtable_compiletime_2519, 2, -49834058, "AM3l")
	call SaveStr(hashtable_compiletime_2519, 2, 1010225180, "AM3m")
	call SaveStr(hashtable_compiletime_2519, 2, -578043283, "AM3n")
	call SaveStr(hashtable_compiletime_2519, 2, -1446444796, "AM3o")
	call SaveStr(hashtable_compiletime_2519, 2, -1737968881, "AM16")
	call SaveStr(hashtable_compiletime_2519, 2, 94325311, "AM15")
	call SaveStr(hashtable_compiletime_2519, 2, 1789833636, "AM14")
	call SaveStr(hashtable_compiletime_2519, 2, 748258376, "AM13")
	call SaveStr(hashtable_compiletime_2519, 2, 1570799228, "AM12")
	call SaveStr(hashtable_compiletime_2519, 2, 621498812, "A029")
	call SaveStr(hashtable_compiletime_2519, 2, -619801316, "A08J")
	call SaveStr(hashtable_compiletime_2519, 2, 2033263624, "A03B")
	call SaveStr(hashtable_compiletime_2519, 2, -1448384611, "A03C")
	call SaveStr(hashtable_compiletime_2519, 2, -1817521397, "AM0n")
	call SaveStr(hashtable_compiletime_2519, 2, -984412248, "AM0o")
	call SaveStr(hashtable_compiletime_2519, 2, -1033093372, "AM0p")
	call SaveStr(hashtable_compiletime_2519, 2, -1839579616, "AM0q")
	call SaveStr(hashtable_compiletime_2519, 2, 1488853538, "bstr")
	call SaveStr(hashtable_compiletime_2519, 2, 167086091, "tele")
	call SaveStr(hashtable_compiletime_2519, 2, -1920712117, "jump")
	call SaveStr(hashtable_compiletime_2519, 2, 1834740118, "revp")
	call SaveStr(hashtable_compiletime_2519, 2, 677282690, "uncr")
	call SaveStr(hashtable_compiletime_2519, 2, -2117149798, "tcbl")
	call SaveStr(hashtable_compiletime_2519, 2, -495583602, "unre")
	call SaveStr(hashtable_compiletime_2519, 2, 103433443, "wayp")
	call SaveStr(hashtable_compiletime_2519, 2, 1599941458, "text")
	call SaveStr(hashtable_compiletime_2519, 2, -1751993404, "trap")
	call SaveStr(hashtable_compiletime_2519, 2, -1159692999, "exec")
	call SaveStr(hashtable_compiletime_2519, 2, 1097135779, "bmbt")
	call SaveStr(hashtable_compiletime_2519, 2, 943863536, "vrtx")
	call SaveStr(hashtable_compiletime_2519, 2, 581513006, "clhd")
	call SaveStr(hashtable_compiletime_2519, 2, -1727693848, "pwnd")
	call SaveStr(hashtable_compiletime_2519, 2, 771149923, "fnt1")
	call SaveStr(hashtable_compiletime_2519, 2, 1470805979, "trac")
	call SaveStr(hashtable_compiletime_2519, 2, -82616100, "spnr")
	call SaveStr(hashtable_compiletime_2519, 2, -612428038, "dor1")
	call SaveStr(hashtable_compiletime_2519, 2, 1911803610, "arca")
	call SaveStr(hashtable_compiletime_2519, 2, 1144624970, "x001")
	call SaveStr(hashtable_compiletime_2519, 2, -2169992, "volc")
	call SaveStr(hashtable_compiletime_2519, 2, -1717936368, "wall")
	call SaveStr(hashtable_compiletime_2519, 2, -1279189149, "vwal")
	call SaveStr(hashtable_compiletime_2519, 2, 1124533213, "hwal")
	call SaveStr(hashtable_compiletime_2519, 2, 338097942, "sobs")
	call SaveStr(hashtable_compiletime_2519, 2, -259361036, "bobs")
	call SaveStr(hashtable_compiletime_2519, 2, -149090181, "whyf")
	call SaveStr(hashtable_compiletime_2519, 2, -375264434, "tree")
	call SaveStr(hashtable_compiletime_2519, 2, 1706787410, "x002")
	call SaveStr(hashtable_compiletime_2519, 2, -539662199, "x003")
	call SaveStr(hashtable_compiletime_2519, 2, 980363664, "x004")
	call SaveStr(hashtable_compiletime_2519, 2, -1663463893, "x005")
	call SaveStr(hashtable_compiletime_2519, 2, 1166553680, "x006")
	call SaveStr(hashtable_compiletime_2519, 2, -629068231, "x007")
	call SaveStr(hashtable_compiletime_2519, 2, 2007189732, "x008")
	call SaveStr(hashtable_compiletime_2519, 2, 1665121710, "x009")
	call SaveStr(hashtable_compiletime_2519, 2, 1767621433, "x00a")
	call SaveStr(hashtable_compiletime_2519, 2, 1428759257, "x00b")
	call SaveStr(hashtable_compiletime_2519, 2, 1235592712, "x00c")
	call SaveStr(hashtable_compiletime_2519, 2, 1871587693, "A07U")
	call SaveStr(hashtable_compiletime_2519, 2, -704868420, "A07C")
	call SaveStr(hashtable_compiletime_2519, 2, -1427058972, "A05F")
	call SaveStr(hashtable_compiletime_2519, 2, 1105374383, "A05G")
	call SaveStr(hashtable_compiletime_2519, 2, 865735338, "A05H")
	call SaveStr(hashtable_compiletime_2519, 2, 670038494, "A05J")
	call SaveStr(hashtable_compiletime_2519, 2, 1513667590, "A05K")
	call SaveStr(hashtable_compiletime_2519, 2, -1224313603, "A05M")
	call SaveStr(hashtable_compiletime_2519, 2, -1734053487, "A07A")
	call SaveStr(hashtable_compiletime_2519, 2, -2019805900, "Afre")
	call SaveStr(hashtable_compiletime_2519, 2, -540326714, "AInv")
	call SaveStr(hashtable_compiletime_2519, 2, 164740461, "A08K")
	call SaveStr(hashtable_compiletime_2519, 2, 1146502594, "A00E")
	call SaveStr(hashtable_compiletime_2519, 2, 1294334697, "A02X")
	call SaveStr(hashtable_compiletime_2519, 2, 527716834, "A003")
	call SaveStr(hashtable_compiletime_2519, 2, -711918992, "A088")
	call SaveStr(hashtable_compiletime_2519, 2, 1666911357, "A06P")
	call SaveStr(hashtable_compiletime_2519, 2, -1044623057, "A08L")
	call SaveStr(hashtable_compiletime_2519, 2, -1927960237, "A008")
	call SaveStr(hashtable_compiletime_2519, 2, 1462452878, "A08Q")
	call SaveStr(hashtable_compiletime_2519, 2, 1315091114, "AM1w")
	call SaveStr(hashtable_compiletime_2519, 2, 960411499, "AM0d")
	call SaveStr(hashtable_compiletime_2519, 2, -1793228341, "A04Y")
	call SaveStr(hashtable_compiletime_2519, 2, 1353041593, "A04X")
	call SaveStr(hashtable_compiletime_2519, 2, -987963703, "A00C")
	call SaveStr(hashtable_compiletime_2519, 2, 1140568408, "A080")
	call SaveStr(hashtable_compiletime_2519, 2, -1170702542, "AM10")
	call SaveStr(hashtable_compiletime_2519, 2, 1391180112, "I012")
	call SaveStr(hashtable_compiletime_2519, 2, -1474399251, "I007")
endfunction

function initCompiletimeState takes nothing returns nothing
	call ExecuteFunc("initCompiletimeState_0")
endfunction

function alloc_SilenceBufff takes nothing returns integer
	local integer this_1
	if Buff_firstFree == 0 then
		if Buff_maxIndex < JASS_MAX_ARRAY_SIZE then
			set Buff_maxIndex = Buff_maxIndex + 1
			set this_1 = Buff_maxIndex
			set Buff_typeId[this_1] = 651
		else
			call error("Out of memory: Could not create SilenceBufff.")
			set this_1 = 0
		endif
	else
		set Buff_firstFree = Buff_firstFree - 1
		set this_1 = Buff_nextFree[Buff_firstFree]
		set Buff_typeId[this_1] = 651
	endif
	return this_1
endfunction

function unit_removeAbility takes unit this_1, integer abil returns boolean
	return UnitRemoveAbility(this_1, abil)
endfunction

function unit_setOwner takes unit this_1, player p, boolean changeColor returns nothing
	call SetUnitOwner(this_1, p, changeColor)
endfunction

function unit_setPos takes unit this_1, real pos_x_1, real pos_y_1 returns nothing
	call SetUnitPosition(this_1, pos_x_1, pos_y_1)
endfunction

function InstantDummyCaster_finish takes integer id returns nothing
	call unit_setOwner(InstantDummyCaster_caster, Basics_DUMMY_PLAYER, false)
	call unit_removeAbility(InstantDummyCaster_caster, id)
	call unit_setPos(InstantDummyCaster_caster, MapBounds_boundMax_x, MapBounds_boundMax_y)
endfunction

function unit_addAbility takes unit this_1, integer abil returns boolean
	return UnitAddAbility(this_1, abil)
endfunction

function unit_setAbilityLevel takes unit this_1, integer abilId, integer lvl returns nothing
	call SetUnitAbilityLevel(this_1, abilId, lvl)
endfunction

function unit_setState takes unit this_1, unitstate state, real value returns nothing
	call SetUnitState(this_1, state, value)
endfunction

function unit_setMana takes unit this_1, real wval returns nothing
	call unit_setState(this_1, UNIT_STATE_MANA, wval)
endfunction

function unit_setFlyHeight takes unit this_1, real height, real rate returns nothing
	call SetUnitFlyHeight(this_1, height, rate)
endfunction

function unit_setX takes unit this_1, real x returns nothing
	call SetUnitX(this_1, x)
endfunction

function unit_setY takes unit this_1, real y returns nothing
	call SetUnitY(this_1, y)
endfunction

function unit_setXYZ takes unit this_1, real pos_x_1, real pos_y_1, real pos_z returns nothing
	local unit receiver = this_1
	local unit receiver_1
	local unit receiver_2
	call unit_setX(receiver, pos_x_1)
	set receiver_1 = receiver
	call unit_setY(receiver_1, pos_y_1)
	set receiver_2 = receiver_1
	call unit_setFlyHeight(receiver_2, pos_z, 0.)
endfunction

function inBoundsXY takes real x, real y returns boolean
	return x > MapBounds_boundMin_x and x < MapBounds_boundMax_x and y > MapBounds_boundMin_y and y < MapBounds_boundMax_y
endfunction

function vec3_inBounds takes real this_x, real this_y, real this_z returns boolean
	return inBoundsXY(this_x, this_y)
endfunction

function InstantDummyCaster_prepare takes player owner, integer id, integer lvl, real pos_x_1, real pos_y_1, real pos_z returns nothing
	local unit receiver = InstantDummyCaster_caster
	local unit receiver_1
	call unit_addAbility(receiver, id)
	set receiver_1 = receiver
	call unit_setMana(receiver_1, 1000000.)
	if vec3_inBounds(pos_x_1, pos_y_1, pos_z) then
		call unit_setXYZ(InstantDummyCaster_caster, pos_x_1, pos_y_1, pos_z)
	endif
	if lvl > 1 then
		call unit_setAbilityLevel(InstantDummyCaster_caster, id, lvl)
	endif
	if owner != null then
		call unit_setOwner(InstantDummyCaster_caster, owner, false)
	endif
endfunction

function unit_getX takes unit this_1 returns real
	return GetUnitX(this_1)
endfunction

function unit_getY takes unit this_1 returns real
	return GetUnitY(this_1)
endfunction

function unit_getPos takes unit this_1 returns real
	set unit_getPos_return_x = unit_getX(this_1)
	set unit_getPos_return_y = unit_getY(this_1)
	return unit_getPos_return_x
endfunction

function unit_issueTargetOrderById takes unit this_1, integer id, widget target returns boolean
	return IssueTargetOrderById(this_1, id, target)
endfunction

function angle_degrees takes real this_radians returns real
	return this_radians * Angle_RADTODEG
endfunction

function unit_setFacing takes unit this_1, real a_radians returns nothing
	call SetUnitFacing(this_1, angle_degrees(a_radians))
endfunction

function real_asAngleRadians takes real this_1 returns real
	set real_asAngleRadians_return_radians = this_1
	return real_asAngleRadians_return_radians
endfunction

function vec2_angleTo takes real this_x, real this_y, real v_x, real v_y returns real
	set vec2_angleTo_return_radians = real_asAngleRadians(Atan2(v_y - this_y, v_x - this_x))
	return vec2_angleTo_return_radians
endfunction

function widget_getX takes widget this_1 returns real
	return GetWidgetX(this_1)
endfunction

function widget_getY takes widget this_1 returns real
	return GetWidgetY(this_1)
endfunction

function widget_getPos takes widget this_1 returns real
	set widget_getPos_return_x = widget_getX(this_1)
	set widget_getPos_return_y = widget_getY(this_1)
	return widget_getPos_return_x
endfunction

function InstantDummyCaster_castTarget takes player owner, integer abilityId, integer lvl, integer orderId_1, widget target, real casterPos_x, real casterPos_y, real casterPos_z returns boolean
	local boolean success
	call InstantDummyCaster_prepare(owner, abilityId, lvl, casterPos_x, casterPos_y, casterPos_z)
	call unit_setFacing(InstantDummyCaster_caster, vec2_angleTo(unit_getPos(InstantDummyCaster_caster), unit_getPos_return_y, widget_getPos(target), widget_getPos_return_y))
	set success = unit_issueTargetOrderById(InstantDummyCaster_caster, orderId_1, target)
	call InstantDummyCaster_finish(abilityId)
	return success
endfunction

function vec2_toVec3 takes real this_x, real this_y returns real
	set vec2_toVec3_return_x = this_x
	set vec2_toVec3_return_y = this_y
	set vec2_toVec3_return_z = 0.
	return vec2_toVec3_return_x
endfunction

function InstantDummyCaster_castTarget_744 takes player owner, integer abilityId, integer lvl, integer orderId_1, widget target returns boolean
	return InstantDummyCaster_castTarget(owner, abilityId, lvl, orderId_1, target, vec2_toVec3(GetWidgetX(target), GetWidgetY(target)), vec2_toVec3_return_y, vec2_toVec3_return_z)
endfunction

function real_squared takes real this_1 returns real
	return this_1 * this_1
endfunction

function SilenceBufff_init takes integer this_1 returns nothing
	set SilenceBufff_distance[this_1] = real_squared(256.)
endfunction

function NormalBuff_init takes integer this_1 returns nothing
endfunction

function construct_Buff_LinkedListModule takes integer this_1 returns nothing
	set Buff_LinkedListModule_size = Buff_LinkedListModule_size + 1
	if Buff_LinkedListModule_size == 1 then
		set Buff_LinkedListModule_first = this_1
		set Buff_LinkedListModule_prev[this_1] = 0
	else
		set Buff_LinkedListModule_prev[this_1] = Buff_LinkedListModule_last
		set Buff_LinkedListModule_next[Buff_LinkedListModule_last] = this_1
		set Buff_LinkedListModule_prev[Buff_LinkedListModule_first] = this_1
	endif
	set Buff_LinkedListModule_next[this_1] = 0
	set Buff_LinkedListModule_last = this_1
endfunction

function Buff_init takes integer this_1 returns nothing
	set Buff_target[this_1] = null
	set Buff_done[this_1] = false
	call construct_Buff_LinkedListModule(this_1)
endfunction

function construct_Buff takes integer this_1, real duration, integer buffData_abilId, integer buffData_buffId returns nothing
	local integer tuple_temp
	local integer tuple_temp_1
	call Buff_init(this_1)
	set Buff_duration[this_1] = duration
	set tuple_temp = buffData_abilId
	set tuple_temp_1 = buffData_buffId
	set Buff_buffData_abilId[this_1] = tuple_temp
	set Buff_buffData_buffId[this_1] = tuple_temp_1
endfunction

function construct_NormalBuff takes integer this_1, real dur, integer buffData_abilId, integer buffData_buffId returns nothing
	call construct_Buff(this_1, dur, buffData_abilId, buffData_buffId)
	call NormalBuff_init(this_1)
endfunction

function LLIterator_onDestroy takes integer this_1 returns nothing
endfunction

function dealloc_LLIterator takes integer obj_1 returns nothing
	if LLIterator_typeId[obj_1] == 0 then
		call error("Double free: object of type LLIterator")
	else
		set LLIterator_nextFree[LLIterator_firstFree] = obj_1
		set LLIterator_firstFree = LLIterator_firstFree + 1
		set LLIterator_typeId[obj_1] = 0
	endif
endfunction

function destroyLLIterator takes integer this_1 returns nothing
	call LLIterator_onDestroy(this_1)
	call dealloc_LLIterator(this_1)
endfunction

function dispatch_LLIterator_destroyLLIterator takes integer this_1 returns nothing
	if LLIterator_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling LLIterator.LLIterator")
		else
			call error("Called LLIterator.LLIterator on invalid object.")
		endif
	endif
	call destroyLLIterator(this_1)
endfunction

function LLIterator_close takes integer this_1 returns nothing
	if LLIterator_destroyOnClose[this_1] then
		call dispatch_LLIterator_destroyLLIterator(this_1)
	endif
endfunction

function LLIterator_hasNext takes integer this_1 returns boolean
	return LLEntry_next[LLIterator_current[this_1]] != LLIterator_dummy[this_1]
endfunction

function LLIterator_next takes integer this_1 returns integer
	set LLIterator_current[this_1] = LLEntry_next[LLIterator_current[this_1]]
	return LLEntry_elem[LLIterator_current[this_1]]
endfunction

function alloc_LLIterator takes nothing returns integer
	local integer this_1
	if LLIterator_firstFree == 0 then
		if LLIterator_maxIndex < JASS_MAX_ARRAY_SIZE then
			set LLIterator_maxIndex = LLIterator_maxIndex + 1
			set this_1 = LLIterator_maxIndex
			set LLIterator_typeId[this_1] = 988
		else
			call error("Out of memory: Could not create LLIterator.")
			set this_1 = 0
		endif
	else
		set LLIterator_firstFree = LLIterator_firstFree - 1
		set this_1 = LLIterator_nextFree[LLIterator_firstFree]
		set LLIterator_typeId[this_1] = 988
	endif
	return this_1
endfunction

function LLIterator_init takes integer this_1 returns nothing
	set LLIterator_destroyOnClose[this_1] = true
endfunction

function LinkedList_getDummy takes integer this_1 returns integer
	return LinkedList_dummy[this_1]
endfunction

function dispatch_LinkedList_LinkedList_LinkedList_getDummy takes integer this_1 returns integer
	local integer LinkedList_LinkedList_getDummy_result
	if LinkedList_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling LinkedList.getDummy")
		else
			call error("Called LinkedList.getDummy on invalid object.")
		endif
	endif
	set LinkedList_LinkedList_getDummy_result = LinkedList_getDummy(this_1)
	return LinkedList_LinkedList_getDummy_result
endfunction

function LLIterator_reset takes integer this_1 returns nothing
	set LLIterator_dummy[this_1] = dispatch_LinkedList_LinkedList_LinkedList_getDummy(LLIterator_parent[this_1])
	set LLIterator_current[this_1] = LLIterator_dummy[this_1]
endfunction

function dispatch_LLIterator_LinkedList_LLIterator_reset takes integer this_1 returns nothing
	if LLIterator_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling LLIterator.reset")
		else
			call error("Called LLIterator.reset on invalid object.")
		endif
	endif
	call LLIterator_reset(this_1)
endfunction

function construct_LLIterator takes integer this_1, integer parent returns nothing
	call LLIterator_init(this_1)
	set LLIterator_parent[this_1] = parent
	call dispatch_LLIterator_LinkedList_LLIterator_reset(this_1)
endfunction

function new_LLIterator takes integer parent returns integer
	local integer this_1 = alloc_LLIterator()
	call construct_LLIterator(this_1, parent)
	return this_1
endfunction

function LinkedList_iterator takes integer this_1 returns integer
	return new_LLIterator(this_1)
endfunction

function dealloc_Buff takes integer obj_1 returns nothing
	if Buff_typeId[obj_1] == 0 then
		call error("Double free: object of type Buff")
	else
		set Buff_nextFree[Buff_firstFree] = obj_1
		set Buff_firstFree = Buff_firstFree + 1
		set Buff_typeId[obj_1] = 0
	endif
endfunction

function dealloc_SilenceBufff takes integer obj_1 returns nothing
	if Buff_typeId[obj_1] == 0 then
		call error("Double free: object of type SilenceBufff")
	else
		set Buff_nextFree[Buff_firstFree] = obj_1
		set Buff_firstFree = Buff_firstFree + 1
		set Buff_typeId[obj_1] = 0
	endif
endfunction

function Buff_LinkedListModule_remove takes integer this_1 returns nothing
	set Buff_LinkedListModule_size = Buff_LinkedListModule_size - 1
	if this_1 != Buff_LinkedListModule_first then
		set Buff_LinkedListModule_next[Buff_LinkedListModule_prev[this_1]] = Buff_LinkedListModule_next[this_1]
	else
		set Buff_LinkedListModule_first = Buff_LinkedListModule_next[this_1]
	endif
	if this_1 != Buff_LinkedListModule_last then
		set Buff_LinkedListModule_prev[Buff_LinkedListModule_next[this_1]] = Buff_LinkedListModule_prev[this_1]
	else
		set Buff_LinkedListModule_last = Buff_LinkedListModule_prev[this_1]
	endif
endfunction

function dispatch_Buff_Buff_Buff_LinkedListModule_remove takes integer this_1 returns nothing
	if Buff_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling Buff.remove")
		else
			call error("Called Buff.remove on invalid object.")
		endif
	endif
	call Buff_LinkedListModule_remove(this_1)
endfunction

function Buff_onEnd takes integer this_1 returns nothing
endfunction

function dispatch_Buff_Buff_Buff_onEnd takes integer this_1 returns nothing
	if Buff_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling Buff.onEnd")
		else
			call error("Called Buff.onEnd on invalid object.")
		endif
	endif
	call Buff_onEnd(this_1)
endfunction

function dispatch_LLIterator_LinkedList_LLIterator_close takes integer this_1 returns nothing
	if LLIterator_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling LLIterator.close")
		else
			call error("Called LLIterator.close on invalid object.")
		endif
	endif
	call LLIterator_close(this_1)
endfunction

function LLEntry_onDestroy takes integer this_1 returns nothing
endfunction

function dealloc_LLEntry takes integer obj_1 returns nothing
	if LLEntry_typeId[obj_1] == 0 then
		call error("Double free: object of type LLEntry")
	else
		set LLEntry_nextFree[LLEntry_firstFree] = obj_1
		set LLEntry_firstFree = LLEntry_firstFree + 1
		set LLEntry_typeId[obj_1] = 0
	endif
endfunction

function destroyLLEntry takes integer this_1 returns nothing
	call LLEntry_onDestroy(this_1)
	call dealloc_LLEntry(this_1)
endfunction

function dispatch_LLEntry_destroyLLEntry takes integer this_1 returns nothing
	if LLEntry_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling LLEntry.LLEntry")
		else
			call error("Called LLEntry.LLEntry on invalid object.")
		endif
	endif
	call destroyLLEntry(this_1)
endfunction

function LinkedList_removeEntry takes integer this_1, integer entry returns nothing
	set LLEntry_next[LLEntry_prev[entry]] = LLEntry_next[entry]
	set LLEntry_prev[LLEntry_next[entry]] = LLEntry_prev[entry]
	call dispatch_LLEntry_destroyLLEntry(entry)
	set LinkedList_size[this_1] = LinkedList_size[this_1] - 1
endfunction

function dispatch_LinkedList_LinkedList_LinkedList_removeEntry takes integer this_1, integer entry returns nothing
	if LinkedList_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling LinkedList.removeEntry")
		else
			call error("Called LinkedList.removeEntry on invalid object.")
		endif
	endif
	call LinkedList_removeEntry(this_1, entry)
endfunction

function LLIterator_remove takes integer this_1 returns integer
	local integer removed
	if LLIterator_current[this_1] != LLIterator_dummy[this_1] then
		call dispatch_LinkedList_LinkedList_LinkedList_removeEntry(LLIterator_parent[this_1], LLIterator_current[this_1])
		set removed = LLEntry_elem[LLIterator_current[this_1]]
		set LLIterator_current[this_1] = LLEntry_prev[LLIterator_current[this_1]]
		return removed
	endif
	return 0
endfunction

function dispatch_LLIterator_LinkedList_LLIterator_remove takes integer this_1 returns integer
	local integer LinkedList_LLIterator_remove_result
	if LLIterator_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling LLIterator.remove")
		else
			call error("Called LLIterator.remove on invalid object.")
		endif
	endif
	set LinkedList_LLIterator_remove_result = LLIterator_remove(this_1)
	return LinkedList_LLIterator_remove_result
endfunction

function dispatch_LinkedList_LinkedList_LinkedList_iterator takes integer this_1 returns integer
	local integer LinkedList_LinkedList_iterator_result
	if LinkedList_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling LinkedList.iterator")
		else
			call error("Called LinkedList.iterator on invalid object.")
		endif
	endif
	set LinkedList_LinkedList_iterator_result = LinkedList_iterator(this_1)
	return LinkedList_LinkedList_iterator_result
endfunction

function unit_getUserData takes unit this_1 returns integer
	return GetUnitUserData(this_1)
endfunction

function unit_getIndex takes unit this_1 returns integer
	return unit_getUserData(this_1)
endfunction

function unit_getBuffs takes unit this_1 returns integer
	return Buff_buffMap[unit_getIndex(this_1)]
endfunction

function unit_hasBuffs takes unit this_1 returns boolean
	return Buff_buffMap[unit_getIndex(this_1)] != 0
endfunction

function cyc_NormalBuff_onDestroy takes integer funcChoice, integer this_1, unit this_2, integer bff returns nothing
	local integer itr_1
	local integer b
	local integer from
	if funcChoice == 0 then
		call cyc_NormalBuff_onDestroy(4, this_1, null, 0)
	elseif funcChoice == 1 then
		call unit_removeAbility(Buff_target[this_1], 1112437615)
		call cyc_NormalBuff_onDestroy(0, this_1, null, 0)
	elseif funcChoice == 2 then
		call cyc_NormalBuff_onDestroy(1, this_1, null, 0)
		call dealloc_SilenceBufff(this_1)
	elseif funcChoice == 3 then
		if unit_hasBuffs(this_2) then
			set itr_1 = dispatch_LinkedList_LinkedList_LinkedList_iterator(unit_getBuffs(this_2))
			set from = itr_1
			loop
				exitwhen  not LLIterator_hasNext(from)
				set b = LLIterator_next(from)
				if b == bff then
					call cyc_NormalBuff_onDestroy(8, dispatch_LLIterator_LinkedList_LLIterator_remove(itr_1), null, 0)
				endif
			endloop
			call dispatch_LLIterator_LinkedList_LLIterator_close(itr_1)
		endif
	elseif funcChoice == 4 then
		if Buff_target[this_1] != null then
			call unit_removeAbility(Buff_target[this_1], Buff_buffData_buffId[this_1])
			call cyc_NormalBuff_onDestroy(3, 0, Buff_target[this_1], this_1)
			call unit_removeAbility(Buff_target[this_1], Buff_buffData_abilId[this_1])
		endif
		set Buff_target[this_1] = null
		call dispatch_Buff_Buff_Buff_LinkedListModule_remove(this_1)
	elseif funcChoice == 5 then
		call cyc_NormalBuff_onDestroy(4, this_1, null, 0)
		call dealloc_Buff(this_1)
	elseif funcChoice == 6 then
		if Buff_typeId[this_1] == 0 then
			if this_1 == 0 then
				call error("Nullpointer exception when calling Buff.Buff")
			else
				call error("Called Buff.Buff on invalid object.")
			endif
		endif
		if Buff_typeId[this_1] <= 651 then
			if Buff_typeId[this_1] <= 650 then
				call cyc_NormalBuff_onDestroy(5, this_1, null, 0)
			else
				call cyc_NormalBuff_onDestroy(2, this_1, null, 0)
			endif
		else
			call cyc_NormalBuff_onDestroy(5, this_1, null, 0)
		endif
	elseif funcChoice == 7 then
		if  not Buff_done[this_1] then
			set Buff_done[this_1] = true
			call dispatch_Buff_Buff_Buff_onEnd(this_1)
			call cyc_NormalBuff_onDestroy(6, this_1, null, 0)
		endif
	elseif funcChoice == 8 then
		if Buff_typeId[this_1] == 0 then
			if this_1 == 0 then
				call error("Nullpointer exception when calling Buff.terminate")
			else
				call error("Called Buff.terminate on invalid object.")
			endif
		endif
		call cyc_NormalBuff_onDestroy(7, this_1, null, 0)
	endif
endfunction

function Buff_onApply takes integer this_1 returns nothing
endfunction

function dispatch_Buff_Buff_Buff_onApply takes integer this_1 returns nothing
	if Buff_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling Buff.onApply")
		else
			call error("Called Buff.onApply on invalid object.")
		endif
	endif
	call Buff_onApply(this_1)
endfunction

function unit_hasAbility takes unit this_1, integer id returns boolean
	return GetUnitAbilityLevel(this_1, id) > 0
endfunction

function Buff_refresh_160 takes integer this_1, boolean forceRefresh returns nothing
	if ( not unit_hasAbility(Buff_target[this_1], Buff_buffData_abilId[this_1])) or forceRefresh then
		call unit_addAbility(Buff_target[this_1], Buff_buffData_abilId[this_1])
	endif
endfunction

function dispatch_Buff_Buff_Buff_refresh_2737 takes integer this_1, boolean forceRefresh returns nothing
	if Buff_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling Buff.refresh")
		else
			call error("Called Buff.refresh on invalid object.")
		endif
	endif
	call Buff_refresh_160(this_1, forceRefresh)
endfunction

function Buff_refresh takes integer this_1 returns nothing
	call dispatch_Buff_Buff_Buff_refresh_2737(this_1, false)
endfunction

function dispatch_Buff_Buff_Buff_refresh takes integer this_1 returns nothing
	if Buff_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling Buff.refresh")
		else
			call error("Called Buff.refresh on invalid object.")
		endif
	endif
	call Buff_refresh(this_1)
endfunction

function alloc_LLEntry takes nothing returns integer
	local integer this_1
	if LLEntry_firstFree == 0 then
		if LLEntry_maxIndex < JASS_MAX_ARRAY_SIZE then
			set LLEntry_maxIndex = LLEntry_maxIndex + 1
			set this_1 = LLEntry_maxIndex
			set LLEntry_typeId[this_1] = 987
		else
			call error("Out of memory: Could not create LLEntry.")
			set this_1 = 0
		endif
	else
		set LLEntry_firstFree = LLEntry_firstFree - 1
		set this_1 = LLEntry_nextFree[LLEntry_firstFree]
		set LLEntry_typeId[this_1] = 987
	endif
	return this_1
endfunction

function LLEntry_init takes integer this_1 returns nothing
endfunction

function construct_LLEntry takes integer this_1, integer elem, integer prev, integer next returns nothing
	call LLEntry_init(this_1)
	set LLEntry_elem[this_1] = elem
	set LLEntry_prev[this_1] = prev
	set LLEntry_next[this_1] = next
endfunction

function new_LLEntry takes integer elem, integer prev, integer next returns integer
	local integer this_1 = alloc_LLEntry()
	call construct_LLEntry(this_1, elem, prev, next)
	return this_1
endfunction

function LinkedList_add_1 takes integer this_1, integer elems_0 returns nothing
	local integer entry = new_LLEntry(elems_0, LLEntry_prev[LinkedList_dummy[this_1]], LinkedList_dummy[this_1])
	set LLEntry_next[LLEntry_prev[LinkedList_dummy[this_1]]] = entry
	set LLEntry_prev[LinkedList_dummy[this_1]] = entry
	set LinkedList_size[this_1] = LinkedList_size[this_1] + 1
endfunction

function dispatch_LinkedList_LinkedList_LinkedList_add_1 takes integer this_1, integer elems_0 returns nothing
	if LinkedList_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling LinkedList.add")
		else
			call error("Called LinkedList.add on invalid object.")
		endif
	endif
	call LinkedList_add_1(this_1, elems_0)
endfunction

function alloc_LinkedList takes nothing returns integer
	local integer this_1
	if LinkedList_firstFree == 0 then
		if LinkedList_maxIndex < JASS_MAX_ARRAY_SIZE then
			set LinkedList_maxIndex = LinkedList_maxIndex + 1
			set this_1 = LinkedList_maxIndex
			set LinkedList_typeId[this_1] = 998
		else
			call error("Out of memory: Could not create LinkedList.")
			set this_1 = 0
		endif
	else
		set LinkedList_firstFree = LinkedList_firstFree - 1
		set this_1 = LinkedList_nextFree[LinkedList_firstFree]
		set LinkedList_typeId[this_1] = 998
	endif
	return this_1
endfunction

function LinkedList_init takes integer this_1 returns nothing
	set LinkedList_dummy[this_1] = new_LLEntry(0, 0, 0)
	set LinkedList_size[this_1] = 0
	set LinkedList_staticItr[this_1] = 0
	set LinkedList_staticBackItr[this_1] = 0
endfunction

function construct_LinkedList2 takes integer this_1 returns nothing
	call LinkedList_init(this_1)
	set LLEntry_next[LinkedList_dummy[this_1]] = LinkedList_dummy[this_1]
	set LLEntry_prev[LinkedList_dummy[this_1]] = LinkedList_dummy[this_1]
endfunction

function new_LinkedList takes nothing returns integer
	local integer this_1 = alloc_LinkedList()
	call construct_LinkedList2(this_1)
	return this_1
endfunction

function unit_addBuff takes unit this_1, integer buffObj returns nothing
	local integer receiver
	if buffObj == 0 or this_1 == null then
		call error("Cannot add null buff or null target")
	endif
	if  not unit_hasBuffs(this_1) then
		set receiver = new_LinkedList()
		call dispatch_LinkedList_LinkedList_LinkedList_add_1(receiver, buffObj)
		set Buff_buffMap[unit_getIndex(this_1)] = receiver
	else
		call dispatch_LinkedList_LinkedList_LinkedList_add_1(Buff_buffMap[unit_getIndex(this_1)], buffObj)
	endif
endfunction

function unit_isAlive takes unit this_1 returns boolean
	return UnitAlive(this_1)
endfunction

function NormalBuff_apply takes integer this_1, unit target returns nothing
	local integer iterator
	local integer bff
	if unit_isAlive(target) then
		set Buff_target[this_1] = target
		if unit_hasBuffs(target) then
			set iterator = LinkedList_iterator(unit_getBuffs(target))
			loop
				exitwhen  not LLIterator_hasNext(iterator)
				set bff = LLIterator_next(iterator)
				if Buff_typeId[bff] == Buff_typeId[this_1] then
					set Buff_duration[bff] = Buff_duration[this_1]
					set Buff_target[this_1] = null
					call cyc_NormalBuff_onDestroy(8, this_1, null, 0)
					call LLIterator_close(iterator)
					return
				endif
			endloop
			call LLIterator_close(iterator)
		endif
		call unit_addBuff(target, this_1)
		call dispatch_Buff_Buff_Buff_refresh(this_1)
		call dispatch_Buff_Buff_Buff_onApply(this_1)
	endif
endfunction

function ShieldBuff_apply takes integer this_1, unit target returns nothing
	local integer iterator
	local integer bff
	local integer sd
	if unit_isAlive(target) then
		set Buff_target[this_1] = target
		if unit_hasBuffs(target) then
			set iterator = LinkedList_iterator(unit_getBuffs(target))
			loop
				exitwhen  not LLIterator_hasNext(iterator)
				set bff = LLIterator_next(iterator)
				if Buff_typeId[bff] == Buff_typeId[this_1] and bff != this_1 then
					set sd = bff
					set Buff_duration[sd] = Buff_duration[this_1]
					set ShieldBuff_blockAmount[sd] = ShieldBuff_blockAmount[sd] + ShieldBuff_blockAmount[this_1]
					set Buff_target[this_1] = null
					call cyc_NormalBuff_onDestroy(8, this_1, null, 0)
					call LLIterator_close(iterator)
					return
				endif
			endloop
			call LLIterator_close(iterator)
		endif
		call unit_addBuff(target, this_1)
		call dispatch_Buff_Buff_Buff_refresh(this_1)
		call dispatch_Buff_Buff_Buff_onApply(this_1)
	endif
endfunction

function dispatch_NormalBuff_PresetBuffs_NormalBuff_apply takes integer this_1, unit target returns nothing
	if Buff_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling NormalBuff.apply")
		else
			call error("Called NormalBuff.apply on invalid object.")
		endif
	endif
	if Buff_typeId[this_1] <= 650 then
		if Buff_typeId[this_1] <= 649 then
			call NormalBuff_apply(this_1, target)
		else
			call ShieldBuff_apply(this_1, target)
		endif
	else
		call NormalBuff_apply(this_1, target)
	endif
endfunction

function construct_SilenceBufff takes integer this_1, integer target, integer arcanery returns nothing
	call construct_NormalBuff(this_1, 9999., Arcanery_SILENCE_BUFF_abilId, Arcanery_SILENCE_BUFF_buffId)
	call SilenceBufff_init(this_1)
	set SilenceBufff_arcanery[this_1] = arcanery
	call InstantDummyCaster_castTarget_744(Basics_DUMMY_PLAYER, Arcanery_SILENCE_ID, 1, OrderIds_soulburn, UnitEntity_actor[target])
	call dispatch_NormalBuff_PresetBuffs_NormalBuff_apply(this_1, UnitEntity_actor[target])
endfunction

function new_SilenceBufff takes integer target, integer arcanery returns integer
	local integer this_1 = alloc_SilenceBufff()
	call construct_SilenceBufff(this_1, target, arcanery)
	return this_1
endfunction

function printLog takes integer loglvl, string msg returns nothing
	call printLog_3944(Player_localPlayer, loglvl, msg)
endfunction

function unit_getBuff takes unit this_1, integer buffTypeId returns integer
	local integer iterator
	local integer b
	if unit_hasBuffs(this_1) then
		set iterator = LinkedList_iterator(unit_getBuffs(this_1))
		loop
			exitwhen  not LLIterator_hasNext(iterator)
			set b = LLIterator_next(iterator)
			if Buff_typeId[b] == buffTypeId then
				call LLIterator_close(iterator)
				return b
			endif
		endloop
		call LLIterator_close(iterator)
	endif
	return 0
endfunction

function Arcanery_onEnter takes integer this_1, integer target returns nothing
	local integer temp
	local integer b
	call printLog(1, "onEnter(target)")
	set temp = Arcanery_arcMode[this_1]
	if temp == 0 then
		set b = unit_getBuff(UnitEntity_actor[target], 651)
		if b == 0 then
			call new_SilenceBufff(target, this_1)
		else
			set SilenceBufff_arcanery[b] = this_1
		endif
	elseif temp == 1 then
		call unit_addAbility(UnitEntity_actor[target], Escaper_JUMP_SPELL)
	else
		call unit_addAbility(UnitEntity_actor[target], Escaper_ORB_SPELL)
	endif
endfunction

function dispatch_Arcanery_Arcanery_Arcanery_onEnter takes integer this_1, integer target returns nothing
	if Serializable_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling Arcanery.onEnter")
		else
			call error("Called Arcanery.onEnter on invalid object.")
		endif
	endif
	call Arcanery_onEnter(this_1, target)
endfunction

function hashtable_loadUnitHandle takes hashtable this_1, integer parentKey, integer childKey returns unit
	return LoadUnitHandle(this_1, parentKey, childKey)
endfunction

function Table_loadUnit takes integer this_1, integer parentKey returns unit
	return hashtable_loadUnitHandle(Table_ht, this_1, parentKey)
endfunction

function dispatch_Table_Table_Table_loadUnit takes integer this_1, integer parentKey returns unit
	local unit Table_Table_loadUnit_result
	if Table_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling Table.loadUnit")
		else
			call error("Called Table.loadUnit on invalid object.")
		endif
	endif
	set Table_Table_loadUnit_result = Table_loadUnit(this_1, parentKey)
	return Table_Table_loadUnit_result
endfunction

function trigger_getSource takes trigger this_1 returns unit
	return dispatch_Table_Table_Table_loadUnit(EventHelper_triggerData, GetHandleId(this_1))
endfunction

function unit_getEntity takes unit this_1 returns integer
	return Entity_entities[unit_getIndex(this_1)]
endfunction

function Arcanery_onEnterEv takes nothing returns nothing
	local integer enter = unit_getEntity(GetTriggerUnit())
	local integer obj_1 = unit_getEntity(trigger_getSource(GetTriggeringTrigger()))
	local integer instanceOfTemp = Serializable_typeId[enter]
	if instanceOfTemp >= 1163 and instanceOfTemp <= 1168 then
		call dispatch_Arcanery_Arcanery_Arcanery_onEnter(obj_1, enter)
	endif
endfunction

function Table_loadInt takes integer this_1, integer parentKey returns integer
	return hashtable_loadInt(Table_ht, this_1, parentKey)
endfunction

function dispatch_Table_Table_Table_loadInt takes integer this_1, integer parentKey returns integer
	local integer Table_Table_loadInt_result
	if Table_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling Table.loadInt")
		else
			call error("Called Table.loadInt on invalid object.")
		endif
	endif
	set Table_Table_loadInt_result = Table_loadInt(this_1, parentKey)
	return Table_Table_loadInt_result
endfunction

function handle_getTCHandleId takes handle this_1 returns integer
	return GetHandleId(this_1)
endfunction

function timer_getData takes timer this_1 returns integer
	return dispatch_Table_Table_Table_loadInt(TimerUtils_timerData, handle_getTCHandleId(this_1))
endfunction

function timer_pause takes timer this_1 returns nothing
	call PauseTimer(this_1)
endfunction

function Table_saveInt takes integer this_1, integer parentKey, integer value returns nothing
	call hashtable_saveInt(Table_ht, this_1, parentKey, value)
endfunction

function dispatch_Table_Table_Table_saveInt takes integer this_1, integer parentKey, integer value returns nothing
	if Table_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling Table.saveInt")
		else
			call error("Called Table.saveInt on invalid object.")
		endif
	endif
	call Table_saveInt(this_1, parentKey, value)
endfunction

function timer_setData takes timer this_1, integer data_1 returns nothing
	call dispatch_Table_Table_Table_saveInt(TimerUtils_timerData, handle_getTCHandleId(this_1), data_1)
endfunction

function timer_release takes timer this_1 returns nothing
	if this_1 == null then
		call error("Trying to release a null timer")
		return
	endif
	if timer_getData(this_1) == TimerUtils_HELD then
		call error("ReleaseTimer: Double free!")
		return
	endif
	call timer_setData(this_1, TimerUtils_HELD)
	call timer_pause(this_1)
	set TimerUtils_freeTimers[TimerUtils_freeTimersCount] = this_1
	set TimerUtils_freeTimersCount = TimerUtils_freeTimersCount + 1
endfunction

function Bomber_orderSetup takes nothing returns nothing
	local integer obj_1 = timer_getData(GetExpiredTimer())
	set Bomber_realorder[obj_1] = false
	call IssueImmediateOrderById(Bomber_setup[obj_1], Bomber_STOP_ORDER)
	call timer_release(GetExpiredTimer())
endfunction

function ConfigValue_get takes integer this_1 returns real
	return ConfigValue_value[this_1]
endfunction

function dispatch_ConfigValue_ConfigValue_ConfigValue_get takes integer this_1 returns real
	local real ConfigValue_ConfigValue_get_result
	if ConfigValue_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling ConfigValue.get")
		else
			call error("Called ConfigValue.get on invalid object.")
		endif
	endif
	set ConfigValue_ConfigValue_get_result = ConfigValue_get(this_1)
	return ConfigValue_ConfigValue_get_result
endfunction

function unit_setMoveSpeed takes unit this_1, real speed returns nothing
	call SetUnitMoveSpeed(this_1, speed)
endfunction

function Booster_orderMove takes nothing returns nothing
	local unit source = trigger_getSource(GetTriggeringTrigger())
	local unit u_1 = GetTriggerUnit()
	local integer e_1 = unit_getEntity(u_1)
	local integer obj_1 = unit_getEntity(source)
	local integer instanceOfTemp = Serializable_typeId[e_1]
	local integer ek
	if instanceOfTemp >= 1172 and instanceOfTemp <= 1192 then
		set ek = e_1
		call unit_setMoveSpeed(UnitEntity_actor[ek], dispatch_ConfigValue_ConfigValue_ConfigValue_get(Booster_boostspeed[obj_1]))
		call unit_setMoveSpeed(SetupObject_setup[ek], dispatch_ConfigValue_ConfigValue_ConfigValue_get(Booster_boostspeed[obj_1]))
	endif
endfunction

function Entity_getPos takes integer this_1 returns real
	set Entity_getPos_return_x = Entity_pos_x[this_1]
	set Entity_getPos_return_y = Entity_pos_y[this_1]
	set Entity_getPos_return_z = Entity_pos_z[this_1]
	return Entity_getPos_return_x
endfunction

function item_getX takes item this_1 returns real
	return GetItemX(this_1)
endfunction

function item_getY takes item this_1 returns real
	return GetItemY(this_1)
endfunction

function item_getPos takes item this_1 returns real
	set item_getPos_return_x = item_getX(this_1)
	set item_getPos_return_y = item_getY(this_1)
	return item_getPos_return_x
endfunction

function vec2_getQuad takes real this_x, real this_y returns integer
	local integer tempIndex = real_toInt(this_x - MapBounds_boundMin_x) / 128 + TerrainUtils_TILES_X * (real_toInt(this_y - MapBounds_boundMin_y) / 128)
	set vec2_getQuad_return_id = Heightmap_quads_id[tempIndex]
	set vec2_getQuad_return_x = Heightmap_quads_x[tempIndex]
	set vec2_getQuad_return_y = Heightmap_quads_y[tempIndex]
	set vec2_getQuad_return_botLeft_x = Heightmap_quads_botLeft_x[tempIndex]
	set vec2_getQuad_return_botLeft_y = Heightmap_quads_botLeft_y[tempIndex]
	set vec2_getQuad_return_z1 = Heightmap_quads_z1[tempIndex]
	set vec2_getQuad_return_z2 = Heightmap_quads_z2[tempIndex]
	set vec2_getQuad_return_z3 = Heightmap_quads_z3[tempIndex]
	set vec2_getQuad_return_z4 = Heightmap_quads_z4[tempIndex]
	return vec2_getQuad_return_id
endfunction

function vec2_op_minus takes real this_x, real this_y, real v_x, real v_y returns real
	set vec2_op_minus_return_x = this_x - v_x
	set vec2_op_minus_return_y = this_y - v_y
	return vec2_op_minus_return_x
endfunction

function vec2_getHeightMap takes real this_x, real this_y returns real
	local real quad_botLeft_x
	local real quad_botLeft_y
	local real quad_z1
	local real quad_z2
	local real quad_z3
	local real quad_z4
	local real localVec_x
	local real localVec_y
	local real normVec_x
	local real normVec_y
	local real determinant
	local real weight1
	local real weight2
	local real weight3
	local real weight1_1
	local real weight2_1
	local real weight3_1
	local real tuple_temp
	local real tuple_temp_1
	local real tuple_temp_2
	local real tuple_temp_3
	local real tuple_temp_4
	local real tuple_temp_5
	local real tuple_temp_6
	local real tuple_temp_7
	local real tuple_temp_8
	local real tuple_temp_9
	call vec2_getQuad(this_x, this_y)
	set tuple_temp = vec2_getQuad_return_botLeft_x
	set tuple_temp_1 = vec2_getQuad_return_botLeft_y
	set tuple_temp_2 = vec2_getQuad_return_z1
	set tuple_temp_3 = vec2_getQuad_return_z2
	set tuple_temp_4 = vec2_getQuad_return_z3
	set tuple_temp_5 = vec2_getQuad_return_z4
	set quad_botLeft_x = tuple_temp
	set quad_botLeft_y = tuple_temp_1
	set quad_z1 = tuple_temp_2
	set quad_z2 = tuple_temp_3
	set quad_z3 = tuple_temp_4
	set quad_z4 = tuple_temp_5
	set tuple_temp_6 = vec2_op_minus(this_x, this_y, quad_botLeft_x, quad_botLeft_y)
	set tuple_temp_7 = vec2_op_minus_return_y
	set localVec_x = tuple_temp_6
	set localVec_y = tuple_temp_7
	set tuple_temp_8 = localVec_x / 128.
	set tuple_temp_9 = localVec_y / 128.
	set normVec_x = tuple_temp_8
	set normVec_y = tuple_temp_9
	set determinant = normVec_y - 1. + normVec_x
	if determinant >= 0. then
		set weight1 = 1. - normVec_x
		set weight2 = 1. - normVec_y
		set weight3 = 1. - weight1 - weight2
		return weight1 * quad_z3 + weight2 * quad_z2 + weight3 * quad_z4
	else
		set weight1_1 = normVec_y
		set weight2_1 = normVec_x
		set weight3_1 = 1. - weight1_1 - weight2_1
		return weight1_1 * quad_z3 + weight2_1 * quad_z2 + weight3_1 * quad_z1
	endif
endfunction

function vec2_withHeightMap_4257 takes real this_x, real this_y, real zoffset returns real
	set vec2_withHeightMap_return_x_3088 = this_x
	set vec2_withHeightMap_return_y_3090 = this_y
	set vec2_withHeightMap_return_z_3092 = vec2_getHeightMap(this_x, this_y) + zoffset
	return vec2_withHeightMap_return_x_3088
endfunction

function vec2_withHeightMap takes real this_x, real this_y returns real
	set vec2_withHeightMap_return_x = vec2_withHeightMap_4257(this_x, this_y, 0.)
	set vec2_withHeightMap_return_y = vec2_withHeightMap_return_y_3090
	set vec2_withHeightMap_return_z = vec2_withHeightMap_return_z_3092
	return vec2_withHeightMap_return_x
endfunction

function ItemEntity_getPos takes integer this_1 returns real
	local real tuple_temp
	local real tuple_temp_1
	local real tuple_temp_2
	if  not Entity_DupletListModule_active[this_1] then
		set tuple_temp = vec2_withHeightMap(item_getPos(ItemEntity_actor[this_1]), item_getPos_return_y)
		set tuple_temp_1 = vec2_withHeightMap_return_y
		set tuple_temp_2 = vec2_withHeightMap_return_z
		set Entity_pos_x[this_1] = tuple_temp
		set Entity_pos_y[this_1] = tuple_temp_1
		set Entity_pos_z[this_1] = tuple_temp_2
	endif
	set ItemEntity_getPos_return_x = Entity_pos_x[this_1]
	set ItemEntity_getPos_return_y = Entity_pos_y[this_1]
	set ItemEntity_getPos_return_z = Entity_pos_z[this_1]
	return ItemEntity_getPos_return_x
endfunction

function unit_getFlyHeight takes unit this_1 returns real
	return GetUnitFlyHeight(this_1)
endfunction

function vec2_withZ takes real this_x, real this_y, real z returns real
	set vec2_withZ_return_x = this_x
	set vec2_withZ_return_y = this_y
	set vec2_withZ_return_z = z
	return vec2_withZ_return_x
endfunction

function vec3_op_plus takes real this_x, real this_y, real this_z, real v_x, real v_y, real v_z returns real
	set vec3_op_plus_return_x = this_x + v_x
	set vec3_op_plus_return_y = this_y + v_y
	set vec3_op_plus_return_z = this_z + v_z
	return vec3_op_plus_return_x
endfunction

function unit_getDynamicPos takes unit this_1 returns real
	if Frentity_DYNAMIC_Z then
		set unit_getDynamicPos_return_x = vec3_op_plus(vec2_withHeightMap(unit_getPos(this_1), unit_getPos_return_y), vec2_withHeightMap_return_y, vec2_withHeightMap_return_z, 0., 0., unit_getFlyHeight(this_1))
		set unit_getDynamicPos_return_y = vec3_op_plus_return_y
		set unit_getDynamicPos_return_z = vec3_op_plus_return_z
		return unit_getDynamicPos_return_x
	endif
	set unit_getDynamicPos_return_x = vec2_withZ(unit_getPos(this_1), unit_getPos_return_y, 0.)
	set unit_getDynamicPos_return_y = vec2_withZ_return_y
	set unit_getDynamicPos_return_z = vec2_withZ_return_z
	return unit_getDynamicPos_return_x
endfunction

function unit_getPos3Fly takes unit this_1 returns real
	set unit_getPos3Fly_return_x = unit_getX(this_1)
	set unit_getPos3Fly_return_y = unit_getY(this_1)
	set unit_getPos3Fly_return_z = unit_getFlyHeight(this_1)
	return unit_getPos3Fly_return_x
endfunction

function UnitEntity_getPos takes integer this_1 returns real
	local real tuple_temp
	local real tuple_temp_1
	local real tuple_temp_2
	local real tuple_temp_3
	local real tuple_temp_4
	local real tuple_temp_5
	if  not Entity_DupletListModule_active[this_1] then
		if Frentity_DYNAMIC_Z then
			set tuple_temp = unit_getDynamicPos(UnitEntity_actor[this_1])
			set tuple_temp_1 = unit_getDynamicPos_return_y
			set tuple_temp_2 = unit_getDynamicPos_return_z
			set Entity_pos_x[this_1] = tuple_temp
			set Entity_pos_y[this_1] = tuple_temp_1
			set Entity_pos_z[this_1] = tuple_temp_2
		else
			set tuple_temp_3 = unit_getPos3Fly(UnitEntity_actor[this_1])
			set tuple_temp_4 = unit_getPos3Fly_return_y
			set tuple_temp_5 = unit_getPos3Fly_return_z
			set Entity_pos_x[this_1] = tuple_temp_3
			set Entity_pos_y[this_1] = tuple_temp_4
			set Entity_pos_z[this_1] = tuple_temp_5
		endif
	endif
	set UnitEntity_getPos_return_x = Entity_pos_x[this_1]
	set UnitEntity_getPos_return_y = Entity_pos_y[this_1]
	set UnitEntity_getPos_return_z = Entity_pos_z[this_1]
	return UnitEntity_getPos_return_x
endfunction

function dispatch_Entity_Entity_Entity_getPos takes integer this_1 returns real
	local real Entity_Entity_getPos_result_x
	local real Entity_Entity_getPos_result_y
	local real Entity_Entity_getPos_result_z
	local real tuple_temp
	local real tuple_temp_1
	local real tuple_temp_2
	local real tuple_temp_3
	local real tuple_temp_4
	local real tuple_temp_5
	local real tuple_temp_6
	local real tuple_temp_7
	local real tuple_temp_8
	local real tuple_temp_9
	local real tuple_temp_10
	local real tuple_temp_11
	if Serializable_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling Entity.getPos")
		else
			call error("Called Entity.getPos on invalid object.")
		endif
	endif
	if Serializable_typeId[this_1] <= 1158 then
		if Serializable_typeId[this_1] <= 1151 then
			set tuple_temp = Entity_getPos(this_1)
			set tuple_temp_1 = Entity_getPos_return_y
			set tuple_temp_2 = Entity_getPos_return_z
			set Entity_Entity_getPos_result_x = tuple_temp
			set Entity_Entity_getPos_result_y = tuple_temp_1
			set Entity_Entity_getPos_result_z = tuple_temp_2
		else
			set tuple_temp_3 = ItemEntity_getPos(this_1)
			set tuple_temp_4 = ItemEntity_getPos_return_y
			set tuple_temp_5 = ItemEntity_getPos_return_z
			set Entity_Entity_getPos_result_x = tuple_temp_3
			set Entity_Entity_getPos_result_y = tuple_temp_4
			set Entity_Entity_getPos_result_z = tuple_temp_5
		endif
	elseif Serializable_typeId[this_1] <= 1159 then
		set tuple_temp_6 = Entity_getPos(this_1)
		set tuple_temp_7 = Entity_getPos_return_y
		set tuple_temp_8 = Entity_getPos_return_z
		set Entity_Entity_getPos_result_x = tuple_temp_6
		set Entity_Entity_getPos_result_y = tuple_temp_7
		set Entity_Entity_getPos_result_z = tuple_temp_8
	else
		set tuple_temp_9 = UnitEntity_getPos(this_1)
		set tuple_temp_10 = UnitEntity_getPos_return_y
		set tuple_temp_11 = UnitEntity_getPos_return_z
		set Entity_Entity_getPos_result_x = tuple_temp_9
		set Entity_Entity_getPos_result_y = tuple_temp_10
		set Entity_Entity_getPos_result_z = tuple_temp_11
	endif
	set dispatch_Entity_Entity_Entity_getPos_return_x = Entity_Entity_getPos_result_x
	set dispatch_Entity_Entity_Entity_getPos_return_y = Entity_Entity_getPos_result_y
	set dispatch_Entity_Entity_Entity_getPos_return_z = Entity_Entity_getPos_result_z
	return dispatch_Entity_Entity_Entity_getPos_return_x
endfunction

function rect_getMaxX takes rect this_1 returns real
	return GetRectMaxX(this_1)
endfunction

function rect_getMaxY takes rect this_1 returns real
	return GetRectMaxY(this_1)
endfunction

function rect_getMinX takes rect this_1 returns real
	return GetRectMinX(this_1)
endfunction

function rect_getMinY takes rect this_1 returns real
	return GetRectMinY(this_1)
endfunction

function rect_contains takes rect this_1, real r_x, real r_y returns boolean
	return r_x > rect_getMinX(this_1) and r_x < rect_getMaxX(this_1) and r_y > rect_getMinY(this_1) and r_y < rect_getMaxY(this_1)
endfunction

function getRegionData_3304 takes real pos_x_1, real pos_y_1 returns integer
	local integer i = 0
	loop
		exitwhen  not (RegionData_regions[i] != 0)
		if rect_contains(RegionData_theRect[RegionData_regions[i]], pos_x_1, pos_y_1) then
			return RegionData_regions[i]
		endif
		set i = i + 1
	endloop
	return RegionData_EMPTY_REGION
endfunction

function vec3_toVec2 takes real this_x, real this_y, real this_z returns real
	set vec3_toVec2_return_x = this_x
	set vec3_toVec2_return_y = this_y
	return vec3_toVec2_return_x
endfunction

function getRegionData takes real pos_x_1, real pos_y_1, real pos_z returns integer
	return getRegionData_3304(vec3_toVec2(pos_x_1, pos_y_1, pos_z), vec3_toVec2_return_y)
endfunction

function Entity_getCurrentRegion takes integer this_1 returns integer
	if RegionData_currentRegion[this_1] == 0 then
		set RegionData_currentRegion[this_1] = getRegionData(dispatch_Entity_Entity_Entity_getPos(this_1), dispatch_Entity_Entity_Entity_getPos_return_y, dispatch_Entity_Entity_Entity_getPos_return_z)
	endif
	return RegionData_currentRegion[this_1]
endfunction

function Log_debug takes string msg returns nothing
	call printLog_3944(Player_localPlayer, 1, msg)
endfunction

function unit_kill takes unit this_1 returns nothing
	call KillUnit(this_1)
endfunction

function Boss_onDamage takes integer this_1, integer w_escaper, real dmg returns nothing
	set Boss_currentHP[this_1] = Boss_currentHP[this_1] - dmg
	if Boss_currentHP[this_1] < 1. then
		call Log_debug("Our boss is dead")
		call unit_kill(UnitEntity_actor[this_1])
	endif
endfunction

function dispatch_Boss_Boss_Boss_onDamage takes integer this_1, integer w_escaper, real dmg returns nothing
	if Serializable_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling Boss.onDamage")
		else
			call error("Called Boss.onDamage on invalid object.")
		endif
	endif
	call Boss_onDamage(this_1, w_escaper, dmg)
endfunction

function BossDamager_damage_1 takes integer this_1, integer e_1 returns nothing
	call dispatch_Boss_Boss_Boss_onDamage(RegionData_boss[Entity_getCurrentRegion(this_1)], e_1, BossDamager_damage[this_1])
endfunction

function dispatch_BossDamager_BossDamager_BossDamager_damage takes integer this_1, integer e_1 returns nothing
	if Serializable_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling BossDamager.damage")
		else
			call error("Called BossDamager.damage on invalid object.")
		endif
	endif
	call BossDamager_damage_1(this_1, e_1)
endfunction

function BossDamager_onInRange takes nothing returns nothing
	local integer data_1 = unit_getEntity(GetTriggerUnit())
	local integer bossDamager = unit_getEntity(trigger_getSource(GetTriggeringTrigger()))
	local integer instanceOfTemp = Serializable_typeId[data_1]
	local integer edata
	if instanceOfTemp >= 1163 and instanceOfTemp <= 1168 then
		set edata = data_1
		call dispatch_BossDamager_BossDamager_BossDamager_damage(bossDamager, edata)
	endif
endfunction

function CallbackCounted_getCount takes integer this_1 returns integer
	local integer cond_result
	if CallbackCounted_count[this_1] < CallbackCounted_maxCount[this_1] then
		set cond_result = CallbackCounted_count[this_1] + 1
	else
		set cond_result = CallbackCounted_count[this_1]
	endif
	return cond_result
endfunction

function dispatch_CallbackCounted_ClosureTimers_CallbackCounted_getCount takes integer this_1 returns integer
	local integer ClosureTimers_CallbackCounted_getCount_result
	if CallbackCounted_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling CallbackCounted.getCount")
		else
			call error("Called CallbackCounted.getCount on invalid object.")
		endif
	endif
	set ClosureTimers_CallbackCounted_getCount_result = CallbackCounted_getCount(this_1)
	return ClosureTimers_CallbackCounted_getCount_result
endfunction

function CallbackCounted_isLast takes integer this_1 returns boolean
	return CallbackCounted_count[this_1] == 0
endfunction

function dispatch_CallbackCounted_ClosureTimers_CallbackCounted_isLast takes integer this_1 returns boolean
	local boolean ClosureTimers_CallbackCounted_isLast_result
	if CallbackCounted_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling CallbackCounted.isLast")
		else
			call error("Called CallbackCounted.isLast on invalid object.")
		endif
	endif
	set ClosureTimers_CallbackCounted_isLast_result = CallbackCounted_isLast(this_1)
	return ClosureTimers_CallbackCounted_isLast_result
endfunction

function CallbackCounted_progress takes integer this_1 returns real
	return 1. - CallbackCounted_count[this_1] * 1. / CallbackCounted_maxCount[this_1]
endfunction

function dispatch_CallbackCounted_ClosureTimers_CallbackCounted_progress takes integer this_1 returns real
	local real ClosureTimers_CallbackCounted_progress_result
	if CallbackCounted_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling CallbackCounted.progress")
		else
			call error("Called CallbackCounted.progress on invalid object.")
		endif
	endif
	set ClosureTimers_CallbackCounted_progress_result = CallbackCounted_progress(this_1)
	return ClosureTimers_CallbackCounted_progress_result
endfunction

function int_toString takes integer this_1 returns string
	return I2S(this_1)
endfunction

function testFail takes string msg returns nothing
endfunction

function int_assertEquals takes integer this_1, integer expected returns nothing
	if this_1 != expected then
		call testFail("Expected <" + int_toString(expected) + ">, Actual <" + int_toString(this_1) + ">")
	endif
endfunction

function real_abs takes real this_1 returns real
	local real cond_result
	if this_1 < 0. then
		set cond_result =  - this_1
	else
		set cond_result = this_1
	endif
	return cond_result
endfunction

function real_toString takes real this_1 returns string
	return R2S(this_1)
endfunction

function real_assertEquals takes real this_1, real expected, real delta returns nothing
	if real_abs(this_1 - expected) > delta then
		call testFail("Expected <" + real_toString(expected) + ">, Actual <" + real_toString(this_1) + " with delta " + real_toString(delta) + ">")
	endif
endfunction

function call_doPeriodicallyCounted_ClosureTimers takes integer this_1, integer cb_1 returns nothing
	call int_assertEquals(dispatch_CallbackCounted_ClosureTimers_CallbackCounted_getCount(cb_1), w_count[this_1])
	if dispatch_CallbackCounted_ClosureTimers_CallbackCounted_isLast(cb_1) then
		call real_assertEquals(dispatch_CallbackCounted_ClosureTimers_CallbackCounted_progress(cb_1), 1., 0.0001)
		call int_assertEquals(dispatch_CallbackCounted_ClosureTimers_CallbackCounted_getCount(cb_1), 1)
	elseif w_count[this_1] == 3 then
		call real_assertEquals(dispatch_CallbackCounted_ClosureTimers_CallbackCounted_progress(cb_1), 0.33333, 0.00001)
		call int_assertEquals(dispatch_CallbackCounted_ClosureTimers_CallbackCounted_getCount(cb_1), 3)
	elseif w_count[this_1] == 2 then
		call real_assertEquals(dispatch_CallbackCounted_ClosureTimers_CallbackCounted_progress(cb_1), 0.66666, 0.00001)
		call int_assertEquals(dispatch_CallbackCounted_ClosureTimers_CallbackCounted_getCount(cb_1), 2)
	endif
	set w_count[this_1] = w_count[this_1] - 1
endfunction

function Entity_DupletListModule_removeFromActive takes integer this_1 returns nothing
	set Entity_DupletListModule_activeSize = Entity_DupletListModule_activeSize - 1
	if this_1 != Entity_DupletListModule_firstActive then
		set Entity_DupletListModule_next[Entity_DupletListModule_prev[this_1]] = Entity_DupletListModule_next[this_1]
	else
		set Entity_DupletListModule_firstActive = Entity_DupletListModule_next[this_1]
	endif
	if this_1 != Entity_DupletListModule_lastActive then
		set Entity_DupletListModule_prev[Entity_DupletListModule_next[this_1]] = Entity_DupletListModule_prev[this_1]
	else
		set Entity_DupletListModule_lastActive = Entity_DupletListModule_prev[this_1]
	endif
	set Entity_DupletListModule_prev[this_1] = 0
	set Entity_DupletListModule_next[this_1] = 0
endfunction

function dispatch_Entity_Entity_Entity_DupletListModule_removeFromActive takes integer this_1 returns nothing
	if Serializable_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling Entity.removeFromActive")
		else
			call error("Called Entity.removeFromActive on invalid object.")
		endif
	endif
	call Entity_DupletListModule_removeFromActive(this_1)
endfunction

function Entity_DupletListModule_removeFromInactive takes integer this_1 returns nothing
	set Entity_DupletListModule_inactiveSize = Entity_DupletListModule_inactiveSize - 1
	if this_1 != Entity_DupletListModule_firstInactive then
		set Entity_DupletListModule_next[Entity_DupletListModule_prev[this_1]] = Entity_DupletListModule_next[this_1]
	else
		set Entity_DupletListModule_firstInactive = Entity_DupletListModule_next[this_1]
	endif
	if this_1 != Entity_DupletListModule_lastInactive then
		set Entity_DupletListModule_prev[Entity_DupletListModule_next[this_1]] = Entity_DupletListModule_prev[this_1]
	else
		set Entity_DupletListModule_lastInactive = Entity_DupletListModule_prev[this_1]
	endif
	set Entity_DupletListModule_prev[this_1] = 0
	set Entity_DupletListModule_next[this_1] = 0
endfunction

function dispatch_Entity_Entity_Entity_DupletListModule_removeFromInactive takes integer this_1 returns nothing
	if Serializable_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling Entity.removeFromInactive")
		else
			call error("Called Entity.removeFromInactive on invalid object.")
		endif
	endif
	call Entity_DupletListModule_removeFromInactive(this_1)
endfunction

function Entity_DupletListModule_remove takes integer this_1 returns nothing
	if Entity_DupletListModule_active[this_1] then
		set Entity_DupletListModule_active[this_1] = false
		call dispatch_Entity_Entity_Entity_DupletListModule_removeFromActive(this_1)
	else
		call dispatch_Entity_Entity_Entity_DupletListModule_removeFromInactive(this_1)
	endif
endfunction

function dispatch_Entity_Entity_Entity_DupletListModule_remove takes integer this_1 returns nothing
	if Serializable_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling Entity.remove")
		else
			call error("Called Entity.remove on invalid object.")
		endif
	endif
	call Entity_DupletListModule_remove(this_1)
endfunction

function Entity_onDestroy takes integer this_1 returns nothing
	call dispatch_Entity_Entity_Entity_DupletListModule_remove(this_1)
endfunction

function item_getUserData takes item this_1 returns integer
	return GetItemUserData(this_1)
endfunction

function item_getEntity takes item this_1 returns integer
	return item_getUserData(this_1)
endfunction

function item_getTypeId takes item this_1 returns integer
	return GetItemTypeId(this_1)
endfunction

function item_isAlive takes item this_1 returns boolean
	return item_getTypeId(this_1) != 0 and GetWidgetLife(this_1) > .405
endfunction

function item_remove takes item this_1 returns nothing
	call RemoveItem(this_1)
endfunction

function item_setUserData takes item this_1, integer data_1 returns nothing
	call SetItemUserData(this_1, data_1)
endfunction

function item_setEntity takes item this_1, integer e_1 returns nothing
	call item_setUserData(this_1, e_1)
endfunction

function ItemEntity_onDestroy takes integer this_1 returns nothing
	if item_getEntity(ItemEntity_actor[this_1]) == this_1 then
		call item_setEntity(ItemEntity_actor[this_1], 0)
		if item_isAlive(ItemEntity_actor[this_1]) then
			call item_remove(ItemEntity_actor[this_1])
		endif
	endif
	set ItemEntity_actor[this_1] = null
	call Entity_onDestroy(this_1)
endfunction

function unit_remove takes unit this_1 returns nothing
	call RemoveUnit(this_1)
endfunction

function unit_setEntity takes unit this_1, integer e_1 returns nothing
	set Entity_entities[unit_getIndex(this_1)] = e_1
endfunction

function UnitEntity_onDestroy takes integer this_1 returns nothing
	if unit_getEntity(UnitEntity_actor[this_1]) == this_1 then
		call unit_setEntity(UnitEntity_actor[this_1], 0)
		if unit_isAlive(UnitEntity_actor[this_1]) then
			if Frentity_KILL_ACTORS then
				call unit_kill(UnitEntity_actor[this_1])
			else
				call unit_remove(UnitEntity_actor[this_1])
			endif
		endif
	endif
	set UnitEntity_actor[this_1] = null
	call Entity_onDestroy(this_1)
endfunction

function dealloc_BallItem takes integer obj_1 returns nothing
	if Serializable_typeId[obj_1] == 0 then
		call error("Double free: object of type BallItem")
	else
		set Serializable_nextFree[Serializable_firstFree] = obj_1
		set Serializable_firstFree = Serializable_firstFree + 1
		set Serializable_typeId[obj_1] = 0
	endif
endfunction

function dealloc_Boots takes integer obj_1 returns nothing
	if Serializable_typeId[obj_1] == 0 then
		call error("Double free: object of type Boots")
	else
		set Serializable_nextFree[Serializable_firstFree] = obj_1
		set Serializable_firstFree = Serializable_firstFree + 1
		set Serializable_typeId[obj_1] = 0
	endif
endfunction

function dealloc_Coin takes integer obj_1 returns nothing
	if Serializable_typeId[obj_1] == 0 then
		call error("Double free: object of type Coin")
	else
		set Serializable_nextFree[Serializable_firstFree] = obj_1
		set Serializable_firstFree = Serializable_firstFree + 1
		set Serializable_typeId[obj_1] = 0
	endif
endfunction

function dealloc_ItemEntityBridge takes integer obj_1 returns nothing
	if Serializable_typeId[obj_1] == 0 then
		call error("Double free: object of type ItemEntityBridge")
	else
		set Serializable_nextFree[Serializable_firstFree] = obj_1
		set Serializable_firstFree = Serializable_firstFree + 1
		set Serializable_typeId[obj_1] = 0
	endif
endfunction

function dealloc_ItemObject takes integer obj_1 returns nothing
	if Serializable_typeId[obj_1] == 0 then
		call error("Double free: object of type ItemObject")
	else
		set Serializable_nextFree[Serializable_firstFree] = obj_1
		set Serializable_firstFree = Serializable_firstFree + 1
		set Serializable_typeId[obj_1] = 0
	endif
endfunction

function dealloc_Key takes integer obj_1 returns nothing
	if Serializable_typeId[obj_1] == 0 then
		call error("Double free: object of type Key")
	else
		set Serializable_nextFree[Serializable_firstFree] = obj_1
		set Serializable_firstFree = Serializable_firstFree + 1
		set Serializable_typeId[obj_1] = 0
	endif
endfunction

function dealloc_Tome takes integer obj_1 returns nothing
	if Serializable_typeId[obj_1] == 0 then
		call error("Double free: object of type Tome")
	else
		set Serializable_nextFree[Serializable_firstFree] = obj_1
		set Serializable_firstFree = Serializable_firstFree + 1
		set Serializable_typeId[obj_1] = 0
	endif
endfunction

function HashMap_get takes integer this_1, integer key returns integer
	return dispatch_Table_Table_Table_loadInt(this_1, key)
endfunction

function dispatch_HashMap_HashMap_HashMap_get takes integer this_1, integer key returns integer
	local integer HashMap_HashMap_get_result
	if Table_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling HashMap.get")
		else
			call error("Called HashMap.get on invalid object.")
		endif
	endif
	set HashMap_HashMap_get_result = HashMap_get(this_1, key)
	return HashMap_HashMap_get_result
endfunction

function Table_hasInt takes integer this_1, integer parentKey returns boolean
	return hashtable_hasInt(Table_ht, this_1, parentKey)
endfunction

function dispatch_Table_Table_Table_hasInt takes integer this_1, integer parentKey returns boolean
	local boolean Table_Table_hasInt_result
	if Table_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling Table.hasInt")
		else
			call error("Called Table.hasInt on invalid object.")
		endif
	endif
	set Table_Table_hasInt_result = Table_hasInt(this_1, parentKey)
	return Table_Table_hasInt_result
endfunction

function HashMap_has takes integer this_1, integer key returns boolean
	return dispatch_Table_Table_Table_hasInt(this_1, key)
endfunction

function dispatch_HashMap_HashMap_HashMap_has takes integer this_1, integer key returns boolean
	local boolean HashMap_HashMap_has_result
	if Table_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling HashMap.has")
		else
			call error("Called HashMap.has on invalid object.")
		endif
	endif
	set HashMap_HashMap_has_result = HashMap_has(this_1, key)
	return HashMap_HashMap_has_result
endfunction

function HashMap_put takes integer this_1, integer key, integer value returns nothing
	if  not dispatch_HashMap_HashMap_HashMap_has(this_1, key) then
		set HashMap_size[this_1] = HashMap_size[this_1] + 1
	endif
	call dispatch_Table_Table_Table_saveInt(this_1, key, value)
endfunction

function HashList_count takes integer this_1, integer elem returns integer
	return hashtable_loadInt(HashList_occurences, this_1, elem)
endfunction

function dispatch_HashList_HashList_HashList_count takes integer this_1, integer elem returns integer
	local integer HashList_HashList_count_result
	if HashList_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling HashList.count")
		else
			call error("Called HashList.count on invalid object.")
		endif
	endif
	set HashList_HashList_count_result = HashList_count(this_1, elem)
	return HashList_HashList_count_result
endfunction

function HashList_incrOccurences takes integer this_1, integer elem returns nothing
	call hashtable_saveInt(HashList_occurences, this_1, elem, dispatch_HashList_HashList_HashList_count(this_1, elem) + 1)
endfunction

function dispatch_HashList_HashList_HashList_incrOccurences takes integer this_1, integer elem returns nothing
	if HashList_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling HashList.incrOccurences")
		else
			call error("Called HashList.incrOccurences on invalid object.")
		endif
	endif
	call HashList_incrOccurences(this_1, elem)
endfunction

function HashList_add_1 takes integer this_1, integer elems_0 returns nothing
	call hashtable_saveInt(HashList_ht, this_1, HashList_size[this_1], elems_0)
	call dispatch_HashList_HashList_HashList_incrOccurences(this_1, elems_0)
	set HashList_size[this_1] = HashList_size[this_1] + 1
endfunction

function HashList_size_1 takes integer this_1 returns integer
	return HashList_size[this_1]
endfunction

function dispatch_HashList_HashList_HashList_size takes integer this_1 returns integer
	local integer HashList_HashList_size_result
	if HashList_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling HashList.size")
		else
			call error("Called HashList.size on invalid object.")
		endif
	endif
	set HashList_HashList_size_result = HashList_size_1(this_1)
	return HashList_HashList_size_result
endfunction

function HashSet_add_1 takes integer this_1, integer elems_0 returns nothing
	if dispatch_HashList_HashList_HashList_count(this_1, elems_0) <= 0 then
		call hashtable_saveInt(HashSet_position, this_1, elems_0, dispatch_HashList_HashList_HashList_size(this_1))
		call HashList_add_1(this_1, elems_0)
	endif
endfunction

function dispatch_HashList_HashList_HashList_add_1 takes integer this_1, integer elems_0 returns nothing
	if HashList_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling HashList.add")
		else
			call error("Called HashList.add on invalid object.")
		endif
	endif
	if HashList_typeId[this_1] <= 894 then
		call HashList_add_1(this_1, elems_0)
	else
		call HashSet_add_1(this_1, elems_0)
	endif
endfunction

function HashList_has takes integer this_1, integer elem returns boolean
	return dispatch_HashList_HashList_HashList_count(this_1, elem) > 0
endfunction

function dispatch_HashList_HashList_HashList_has takes integer this_1, integer elem returns boolean
	local boolean HashList_HashList_has_result
	if HashList_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling HashList.has")
		else
			call error("Called HashList.has on invalid object.")
		endif
	endif
	set HashList_HashList_has_result = HashList_has(this_1, elem)
	return HashList_HashList_has_result
endfunction

function IterableMap_hasKey takes integer this_1, integer key returns boolean
	return dispatch_HashList_HashList_HashList_has(IterableMap_keys[this_1], key)
endfunction

function dispatch_IterableMap_HashMap_IterableMap_hasKey takes integer this_1, integer key returns boolean
	local boolean HashMap_IterableMap_hasKey_result
	if Table_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling IterableMap.hasKey")
		else
			call error("Called IterableMap.hasKey on invalid object.")
		endif
	endif
	set HashMap_IterableMap_hasKey_result = IterableMap_hasKey(this_1, key)
	return HashMap_IterableMap_hasKey_result
endfunction

function IterableMap_put takes integer this_1, integer key, integer value returns nothing
	call HashMap_put(this_1, key, value)
	if  not dispatch_IterableMap_HashMap_IterableMap_hasKey(this_1, key) then
		call dispatch_HashList_HashList_HashList_add_1(IterableMap_keys[this_1], key)
	endif
endfunction

function dispatch_HashMap_HashMap_HashMap_put takes integer this_1, integer key, integer value returns nothing
	if Table_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling HashMap.put")
		else
			call error("Called HashMap.put on invalid object.")
		endif
	endif
	if Table_typeId[this_1] <= 1494 then
		call HashMap_put(this_1, key, value)
	else
		call IterableMap_put(this_1, key, value)
	endif
endfunction

function Table_removeInt takes integer this_1, integer parentKey returns nothing
	call RemoveSavedInteger(Table_ht, this_1, parentKey)
endfunction

function dispatch_Table_Table_Table_removeInt takes integer this_1, integer parentKey returns nothing
	if Table_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling Table.removeInt")
		else
			call error("Called Table.removeInt on invalid object.")
		endif
	endif
	call Table_removeInt(this_1, parentKey)
endfunction

function HashMap_remove takes integer this_1, integer key returns nothing
	if dispatch_HashMap_HashMap_HashMap_has(this_1, key) then
		set HashMap_size[this_1] = HashMap_size[this_1] - 1
	endif
	call dispatch_Table_Table_Table_removeInt(this_1, key)
endfunction

function HashList_decrOccurences takes integer this_1, integer elem returns nothing
	call hashtable_saveInt(HashList_occurences, this_1, elem, dispatch_HashList_HashList_HashList_count(this_1, elem) - 1)
endfunction

function dispatch_HashList_HashList_HashList_decrOccurences takes integer this_1, integer elem returns nothing
	if HashList_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling HashList.decrOccurences")
		else
			call error("Called HashList.decrOccurences on invalid object.")
		endif
	endif
	call HashList_decrOccurences(this_1, elem)
endfunction

function HashList_removeAt takes integer this_1, integer index returns integer
	local integer tmp
	local integer i
	local integer temp
	call dispatch_HashList_HashList_HashList_decrOccurences(this_1, hashtable_loadInt(HashList_ht, this_1, index))
	set tmp = hashtable_loadInt(HashList_ht, this_1, index)
	set i = index
	set temp = HashList_size[this_1]
	loop
		exitwhen i > temp
		call hashtable_saveInt(HashList_ht, this_1, i, hashtable_loadInt(HashList_ht, this_1, i + 1))
		set i = i + 1
	endloop
	set HashList_size[this_1] = HashList_size[this_1] - 1
	return tmp
endfunction

function HashList_get takes integer this_1, integer index returns integer
	return hashtable_loadInt(HashList_ht, this_1, index)
endfunction

function dispatch_HashList_HashList_HashList_get takes integer this_1, integer index returns integer
	local integer HashList_HashList_get_result
	if HashList_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling HashList.get")
		else
			call error("Called HashList.get on invalid object.")
		endif
	endif
	set HashList_HashList_get_result = HashList_get(this_1, index)
	return HashList_HashList_get_result
endfunction

function hashtable_removeInt takes hashtable this_1, integer parentKey, integer childKey returns nothing
	call RemoveSavedInteger(this_1, parentKey, childKey)
endfunction

function HashSet_removeAt takes integer this_1, integer index returns integer
	local integer i
	local integer temp
	call hashtable_removeInt(HashSet_position, this_1, dispatch_HashList_HashList_HashList_get(this_1, index))
	set i = index + 1
	set temp = dispatch_HashList_HashList_HashList_size(this_1)
	loop
		exitwhen i > temp
		call hashtable_saveInt(HashSet_position, this_1, dispatch_HashList_HashList_HashList_get(this_1, i), hashtable_loadInt(HashSet_position, this_1, dispatch_HashList_HashList_HashList_get(this_1, i)) - 1)
		set i = i + 1
	endloop
	return HashList_removeAt(this_1, index)
endfunction

function dispatch_HashList_HashList_HashList_removeAt takes integer this_1, integer index returns integer
	local integer HashList_HashList_removeAt_result
	if HashList_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling HashList.removeAt")
		else
			call error("Called HashList.removeAt on invalid object.")
		endif
	endif
	if HashList_typeId[this_1] <= 894 then
		set HashList_HashList_removeAt_result = HashList_removeAt(this_1, index)
	else
		set HashList_HashList_removeAt_result = HashSet_removeAt(this_1, index)
	endif
	return HashList_HashList_removeAt_result
endfunction

function HashList_remove takes integer this_1, integer t returns boolean
	local boolean result_1 = false
	local integer i = 0
	local integer temp = HashList_size[this_1] - 1
	loop
		exitwhen i > temp
		if t == hashtable_loadInt(HashList_ht, this_1, i) then
			set result_1 = true
			call dispatch_HashList_HashList_HashList_removeAt(this_1, i)
			exitwhen true
		endif
		set i = i + 1
	endloop
	return result_1
endfunction

function dispatch_HashSet_HashSet_HashSet_removeAt takes integer this_1, integer index returns integer
	local integer HashSet_HashSet_removeAt_result
	if HashList_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling HashSet.removeAt")
		else
			call error("Called HashSet.removeAt on invalid object.")
		endif
	endif
	set HashSet_HashSet_removeAt_result = HashSet_removeAt(this_1, index)
	return HashSet_HashSet_removeAt_result
endfunction

function HashSet_remove takes integer this_1, integer elem returns boolean
	local boolean result_1 = false
	if dispatch_HashList_HashList_HashList_count(this_1, elem) > 0 then
		call dispatch_HashSet_HashSet_HashSet_removeAt(this_1, hashtable_loadInt(HashSet_position, this_1, elem))
		set result_1 = true
	endif
	return result_1
endfunction

function dispatch_HashList_HashList_HashList_remove takes integer this_1, integer t returns boolean
	local boolean HashList_HashList_remove_result
	if HashList_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling HashList.remove")
		else
			call error("Called HashList.remove on invalid object.")
		endif
	endif
	if HashList_typeId[this_1] <= 894 then
		set HashList_HashList_remove_result = HashList_remove(this_1, t)
	else
		set HashList_HashList_remove_result = HashSet_remove(this_1, t)
	endif
	return HashList_HashList_remove_result
endfunction

function IterableMap_remove takes integer this_1, integer key returns nothing
	call HashMap_remove(this_1, key)
	if dispatch_IterableMap_HashMap_IterableMap_hasKey(this_1, key) then
		call dispatch_HashList_HashList_HashList_remove(IterableMap_keys[this_1], key)
	endif
endfunction

function dispatch_HashMap_HashMap_HashMap_remove takes integer this_1, integer key returns nothing
	if Table_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling HashMap.remove")
		else
			call error("Called HashMap.remove on invalid object.")
		endif
	endif
	if Table_typeId[this_1] <= 1494 then
		call HashMap_remove(this_1, key)
	else
		call IterableMap_remove(this_1, key)
	endif
endfunction

function OnCastListener_onDestroy takes integer this_1 returns nothing
	local integer index
	local integer listener_1
	local integer listener_2
	if OnCastListener_eventUnit[this_1] != null then
		set index = unit_getIndex(OnCastListener_eventUnit[this_1])
		set listener_1 = EventListener_castMapCasters[index]
		if listener_1 == this_1 then
			if OnCastListener_next[this_1] != 0 then
				set EventListener_castMapCasters[index] = OnCastListener_next[this_1]
			else
				set EventListener_castMapCasters[index] = 0
			endif
		elseif OnCastListener_prev[this_1] != 0 then
			set OnCastListener_next[OnCastListener_prev[this_1]] = OnCastListener_next[this_1]
		endif
	else
		set listener_2 = dispatch_HashMap_HashMap_HashMap_get(EventListener_castMap, OnCastListener_abilId[this_1])
		if listener_2 == this_1 then
			if OnCastListener_next[this_1] != 0 then
				call dispatch_HashMap_HashMap_HashMap_put(EventListener_castMap, OnCastListener_abilId[this_1], OnCastListener_next[this_1])
			else
				call dispatch_HashMap_HashMap_HashMap_remove(EventListener_castMap, OnCastListener_abilId[this_1])
			endif
		elseif OnCastListener_prev[this_1] != 0 then
			set OnCastListener_next[OnCastListener_prev[this_1]] = OnCastListener_next[this_1]
		endif
	endif
	set OnCastListener_prev[OnCastListener_next[this_1]] = OnCastListener_prev[this_1]
	set OnCastListener_next[this_1] = 0
	set OnCastListener_prev[this_1] = 0
endfunction

function dealloc_OnCastListener takes integer obj_1 returns nothing
	if OnCastListener_typeId[obj_1] == 0 then
		call error("Double free: object of type OnCastListener")
	else
		set OnCastListener_nextFree[OnCastListener_firstFree] = obj_1
		set OnCastListener_firstFree = OnCastListener_firstFree + 1
		set OnCastListener_typeId[obj_1] = 0
	endif
endfunction

function destroyOnCastListener takes integer this_1 returns nothing
	call OnCastListener_onDestroy(this_1)
	call dealloc_OnCastListener(this_1)
endfunction

function dispatch_OnCastListener_destroyOnCastListener takes integer this_1 returns nothing
	if OnCastListener_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling OnCastListener.OnCastListener")
		else
			call error("Called OnCastListener.OnCastListener on invalid object.")
		endif
	endif
	call destroyOnCastListener(this_1)
endfunction

function fireEvents takes unit u_1 returns boolean
	return  not ClosureEvents_config_fire[unit_getIndex(u_1)]
endfunction

function Log_trace takes string msg returns nothing
	call printLog_3944(Player_localPlayer, 0, msg)
endfunction

function EventListener_onDestroy takes integer this_1 returns nothing
	local integer listener_1
	local integer listener_2
	if EventListener_uid[this_1] < 0 then
		set listener_1 = EventListener_generalListenersFirsts[EventListener_eventId[this_1]]
		if listener_1 == this_1 then
			set EventListener_generalListenersFirsts[EventListener_eventId[this_1]] = EventListener_next[this_1]
		elseif EventListener_prev[this_1] != 0 then
			set EventListener_next[EventListener_prev[this_1]] = EventListener_next[this_1]
		endif
	else
		set listener_2 = EventListener_unitListenersFirsts[EventListener_uid[this_1]]
		if listener_2 == this_1 then
			set EventListener_unitListenersFirsts[EventListener_uid[this_1]] = EventListener_next[this_1]
		elseif EventListener_prev[this_1] != 0 then
			set EventListener_next[EventListener_prev[this_1]] = EventListener_next[this_1]
		endif
	endif
	if EventListener_next[this_1] != 0 then
		set EventListener_prev[EventListener_next[this_1]] = EventListener_prev[this_1]
	endif
	set EventListener_next[this_1] = 0
	set EventListener_prev[this_1] = 0
endfunction

function dealloc_EventListener takes integer obj_1 returns nothing
	if EventListener_typeId[obj_1] == 0 then
		call error("Double free: object of type EventListener")
	else
		set EventListener_nextFree[EventListener_firstFree] = obj_1
		set EventListener_firstFree = EventListener_firstFree + 1
		set EventListener_typeId[obj_1] = 0
	endif
endfunction

function destroyEventListener takes integer this_1 returns nothing
	call EventListener_onDestroy(this_1)
	call dealloc_EventListener(this_1)
endfunction

function dispatch_EventListener_destroyEventListener takes integer this_1 returns nothing
	if EventListener_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling EventListener.EventListener")
		else
			call error("Called EventListener.EventListener on invalid object.")
		endif
	endif
	call destroyEventListener(this_1)
endfunction

function unregisterEvents takes integer id returns nothing
	local integer listener_1
	local integer t
	if id > 0 then
		if EventListener_unitListenersFirsts[id] != 0 then
			call Log_trace("unregister unit has listeners. startid: " + int_toString(id))
			set listener_1 = EventListener_unitListenersFirsts[id]
			set EventListener_unitListenersFirsts[id] = 0
			loop
				exitwhen  not (listener_1 != 0)
				set t = listener_1
				set listener_1 = EventListener_next[listener_1]
				call dispatch_EventListener_destroyEventListener(t)
			endloop
		endif
	endif
endfunction

function unregisterEventsForUnit takes unit u_1 returns nothing
	local integer index
	local integer listener_1
	local integer t
	if fireEvents(u_1) then
		set index = unit_getIndex(u_1)
		call unregisterEvents(index)
		if EventListener_castMapCasters[index] != 0 then
			set listener_1 = EventListener_castMapCasters[index]
			set EventListener_castMapCasters[index] = 0
			loop
				exitwhen  not (listener_1 != 0)
				set t = listener_1
				set listener_1 = OnCastListener_next[listener_1]
				call dispatch_OnCastListener_destroyOnCastListener(t)
			endloop
		endif
	endif
endfunction

function SetupObject_onDestroy takes integer this_1 returns nothing
	set ClosureEvents_config_fire[unit_getIndex(UnitEntity_actor[this_1])] = false
	call unregisterEventsForUnit(SetupObject_setup[this_1])
	call unit_setEntity(SetupObject_setup[this_1], 0)
	call unit_remove(SetupObject_setup[this_1])
	set SetupObject_setup[this_1] = null
	call UnitEntity_onDestroy(this_1)
endfunction

function SensorListener_onDestroy takes integer this_1 returns nothing
endfunction

function dealloc_SensorListener takes integer obj_1 returns nothing
	if SensorListener_typeId[obj_1] == 0 then
		call error("Double free: object of type SensorListener")
	else
		set SensorListener_nextFree[SensorListener_firstFree] = obj_1
		set SensorListener_firstFree = SensorListener_firstFree + 1
		set SensorListener_typeId[obj_1] = 0
	endif
endfunction

function destroySensorListener takes integer this_1 returns nothing
	call SensorListener_onDestroy(this_1)
	call dealloc_SensorListener(this_1)
endfunction

function dispatch_SensorListener_destroySensorListener takes integer this_1 returns nothing
	if SensorListener_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling SensorListener.SensorListener")
		else
			call error("Called SensorListener.SensorListener on invalid object.")
		endif
	endif
	call destroySensorListener(this_1)
endfunction

function triggerToIndex takes trigger object returns integer
	return handle_getTCHandleId(object)
endfunction

function hashtable_loadTriggerHandle takes hashtable this_1, integer parentKey, integer childKey returns trigger
	return LoadTriggerHandle(this_1, parentKey, childKey)
endfunction

function Table_loadTrigger takes integer this_1, integer parentKey returns trigger
	return hashtable_loadTriggerHandle(Table_ht, this_1, parentKey)
endfunction

function dispatch_Table_Table_Table_loadTrigger takes integer this_1, integer parentKey returns trigger
	local trigger Table_Table_loadTrigger_result
	if Table_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling Table.loadTrigger")
		else
			call error("Called Table.loadTrigger on invalid object.")
		endif
	endif
	set Table_Table_loadTrigger_result = Table_loadTrigger(this_1, parentKey)
	return Table_Table_loadTrigger_result
endfunction

function Table_removeHandle takes integer this_1, integer parentKey returns nothing
	call RemoveSavedHandle(Table_ht, this_1, parentKey)
endfunction

function dispatch_Table_Table_Table_removeHandle takes integer this_1, integer parentKey returns nothing
	if Table_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling Table.removeHandle")
		else
			call error("Called Table.removeHandle on invalid object.")
		endif
	endif
	call Table_removeHandle(this_1, parentKey)
endfunction

function handle_getHandleId takes handle this_1 returns integer
	return GetHandleId(this_1)
endfunction

function trigger_destr takes trigger this_1 returns nothing
	call DestroyTrigger(this_1)
endfunction

function unit_clearRegister takes unit this_1 returns nothing
	local integer handleId = handle_getHandleId(this_1)
	local trigger t
	local integer trigHandleId
	local integer receiver
	local integer receiver_1
	if dispatch_Table_Table_Table_loadTrigger(EventHelper_triggerData, handleId) == null then
		return
	endif
	set t = dispatch_Table_Table_Table_loadTrigger(EventHelper_triggerData, handleId)
	set trigHandleId = handle_getHandleId(t)
	call trigger_destr(t)
	set receiver = EventHelper_triggerData
	call dispatch_Table_Table_Table_removeHandle(receiver, handleId)
	set receiver_1 = receiver
	call dispatch_Table_Table_Table_removeHandle(receiver_1, trigHandleId)
endfunction

function EscaperSensorSetup_onDestroy takes integer this_1 returns nothing
	if EscaperSensorSetup_Sensor_inRangeTrig[this_1] != null then
		call dispatch_SensorListener_destroySensorListener(dispatch_HashMap_HashMap_HashMap_get(EscaperSensorSetup_Sensor_sensorListeners, triggerToIndex(EscaperSensorSetup_Sensor_inRangeTrig[this_1])))
		call dispatch_HashMap_HashMap_HashMap_remove(EscaperSensorSetup_Sensor_sensorListeners, triggerToIndex(EscaperSensorSetup_Sensor_inRangeTrig[this_1]))
		call unit_clearRegister(EscaperSensorSetup_Sensor_actorRef[this_1])
		set EscaperSensorSetup_Sensor_inRangeTrig[this_1] = null
	endif
	call SetupObject_onDestroy(this_1)
endfunction

function AirKiller_onDestroy takes integer this_1 returns nothing
	call EscaperSensorSetup_onDestroy(this_1)
endfunction

function dealloc_AirKiller takes integer obj_1 returns nothing
	if Serializable_typeId[obj_1] == 0 then
		call error("Double free: object of type AirKiller")
	else
		set Serializable_nextFree[Serializable_firstFree] = obj_1
		set Serializable_firstFree = Serializable_firstFree + 1
		set Serializable_typeId[obj_1] = 0
	endif
endfunction

function destroyAirKiller takes integer this_1 returns nothing
	call AirKiller_onDestroy(this_1)
	call dealloc_AirKiller(this_1)
endfunction

function effect_destr takes effect this_1 returns nothing
	call DestroyEffect(this_1)
endfunction

function Fx2_onDestroy takes integer this_1 returns nothing
	call effect_destr(Fx2_eff[this_1])
endfunction

function dealloc_Fx2 takes integer obj_1 returns nothing
	if Fx2_typeId[obj_1] == 0 then
		call error("Double free: object of type Fx2")
	else
		set Fx2_nextFree[Fx2_firstFree] = obj_1
		set Fx2_firstFree = Fx2_firstFree + 1
		set Fx2_typeId[obj_1] = 0
	endif
endfunction

function destroyFx2 takes integer this_1 returns nothing
	call Fx2_onDestroy(this_1)
	call dealloc_Fx2(this_1)
endfunction

function dispatch_Fx2_destroyFx2 takes integer this_1 returns nothing
	if Fx2_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling Fx2.Fx2")
		else
			call error("Called Fx2.Fx2 on invalid object.")
		endif
	endif
	call destroyFx2(this_1)
endfunction

function effect_setAlpha takes effect this_1, integer alpha returns nothing
	call BlzSetSpecialEffectAlpha(this_1, alpha)
endfunction

function effect_setPos_3263 takes effect this_1, real pos_x_1, real pos_y_1 returns nothing
	call BlzSetSpecialEffectPosition(this_1, pos_x_1, pos_y_1, BlzGetLocalSpecialEffectZ(this_1))
endfunction

function Fx2Entity_onDestroy takes integer this_1 returns nothing
	if Fx2Entity_silent[this_1] then
		call effect_setAlpha(Fx2_eff[Fx2Entity_fx[this_1]], 0)
		call effect_setPos_3263(Fx2_eff[Fx2Entity_fx[this_1]], MapBounds_boundMax_x, MapBounds_boundMax_y)
	endif
	call dispatch_Fx2_destroyFx2(Fx2Entity_fx[this_1])
	call Entity_onDestroy(this_1)
endfunction

function dealloc_OnEndListener takes integer obj_1 returns nothing
	if OnEndListener_typeId[obj_1] == 0 then
		call error("Double free: object of type OnEndListener")
	else
		set OnEndListener_firstFree = OnEndListener_firstFree + 1
		set OnEndListener_typeId[obj_1] = 0
	endif
endfunction

function destroyOnEndListener takes integer this_1 returns nothing
	call dealloc_OnEndListener(this_1)
endfunction

function dispatch_OnEndListener_destroyOnEndListener takes integer this_1 returns nothing
	if OnEndListener_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling OnEndListener.OnEndListener")
		else
			call error("Called OnEndListener.OnEndListener on invalid object.")
		endif
	endif
	call destroyOnEndListener(this_1)
endfunction

function dealloc_OnHitListener takes integer obj_1 returns nothing
	if OnHitListener_typeId[obj_1] == 0 then
		call error("Double free: object of type OnHitListener")
	else
		set OnHitListener_firstFree = OnHitListener_firstFree + 1
		set OnHitListener_typeId[obj_1] = 0
	endif
endfunction

function destroyOnHitListener takes integer this_1 returns nothing
	call dealloc_OnHitListener(this_1)
endfunction

function dispatch_OnHitListener_destroyOnHitListener takes integer this_1 returns nothing
	if OnHitListener_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling OnHitListener.OnHitListener")
		else
			call error("Called OnHitListener.OnHitListener on invalid object.")
		endif
	endif
	call destroyOnHitListener(this_1)
endfunction

function group_destr takes group this_1 returns nothing
	call DestroyGroup(this_1)
endfunction

function Projectile_onDestroy takes integer this_1 returns nothing
	if Projectile_onEnd[this_1] != 0 then
		call group_destr(Projectile_hitGroup[this_1])
		call dispatch_OnEndListener_destroyOnEndListener(Projectile_onEnd[this_1])
	endif
	if Projectile_onHit[this_1] != 0 then
		call dispatch_OnHitListener_destroyOnHitListener(Projectile_onHit[this_1])
	endif
	call Fx2Entity_onDestroy(this_1)
endfunction

function AirPhysicsProjectile_onDestroy takes integer this_1 returns nothing
	call Projectile_onDestroy(this_1)
endfunction

function dealloc_AirPhysicsProjectile takes integer obj_1 returns nothing
	if Serializable_typeId[obj_1] == 0 then
		call error("Double free: object of type AirPhysicsProjectile")
	else
		set Serializable_nextFree[Serializable_firstFree] = obj_1
		set Serializable_firstFree = Serializable_firstFree + 1
		set Serializable_typeId[obj_1] = 0
	endif
endfunction

function destroyAirPhysicsProjectile takes integer this_1 returns nothing
	call AirPhysicsProjectile_onDestroy(this_1)
	call dealloc_AirPhysicsProjectile(this_1)
endfunction

function LobbyTeleporter_votes_set takes integer instanceId, integer arrayIndex, boolean value returns nothing
	if arrayIndex < 0 or arrayIndex >= 12 then
		call error("Index out of Bounds")
	elseif arrayIndex <= 5 then
		if arrayIndex <= 2 then
			if arrayIndex <= 1 then
				if arrayIndex <= 0 then
					set LobbyTeleporter_votes_0[instanceId] = value
				else
					set LobbyTeleporter_votes_1[instanceId] = value
				endif
			else
				set LobbyTeleporter_votes_2[instanceId] = value
			endif
		elseif arrayIndex <= 4 then
			if arrayIndex <= 3 then
				set LobbyTeleporter_votes_3[instanceId] = value
			else
				set LobbyTeleporter_votes_4[instanceId] = value
			endif
		else
			set LobbyTeleporter_votes_5[instanceId] = value
		endif
	elseif arrayIndex <= 8 then
		if arrayIndex <= 7 then
			if arrayIndex <= 6 then
				set LobbyTeleporter_votes_6[instanceId] = value
			else
				set LobbyTeleporter_votes_7[instanceId] = value
			endif
		else
			set LobbyTeleporter_votes_8[instanceId] = value
		endif
	elseif arrayIndex <= 10 then
		if arrayIndex <= 9 then
			set LobbyTeleporter_votes_9[instanceId] = value
		else
			set LobbyTeleporter_votes_10[instanceId] = value
		endif
	else
		set LobbyTeleporter_votes_11[instanceId] = value
	endif
endfunction

function StaticBaseObject_clearQuestionmark takes integer this_1 returns nothing
	if StaticBaseObject_noRally[this_1] != null then
		call effect_destr(StaticBaseObject_noRally[this_1])
		set StaticBaseObject_noRally[this_1] = null
	endif
endfunction

function LinkedList_size_1 takes integer this_1 returns integer
	return LinkedList_size[this_1]
endfunction

function dispatch_LinkedList_LinkedList_LinkedList_size takes integer this_1 returns integer
	local integer LinkedList_LinkedList_size_result
	if LinkedList_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling LinkedList.size")
		else
			call error("Called LinkedList.size on invalid object.")
		endif
	endif
	set LinkedList_LinkedList_size_result = LinkedList_size_1(this_1)
	return LinkedList_LinkedList_size_result
endfunction

function dispatch_UnitEntity_Entity_UnitEntity_getPos takes integer this_1 returns real
	local real Entity_UnitEntity_getPos_result_x
	local real Entity_UnitEntity_getPos_result_y
	local real Entity_UnitEntity_getPos_result_z
	local real tuple_temp
	local real tuple_temp_1
	local real tuple_temp_2
	if Serializable_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling UnitEntity.getPos")
		else
			call error("Called UnitEntity.getPos on invalid object.")
		endif
	endif
	set tuple_temp = UnitEntity_getPos(this_1)
	set tuple_temp_1 = UnitEntity_getPos_return_y
	set tuple_temp_2 = UnitEntity_getPos_return_z
	set Entity_UnitEntity_getPos_result_x = tuple_temp
	set Entity_UnitEntity_getPos_result_y = tuple_temp_1
	set Entity_UnitEntity_getPos_result_z = tuple_temp_2
	set dispatch_UnitEntity_Entity_UnitEntity_getPos_return_x = Entity_UnitEntity_getPos_result_x
	set dispatch_UnitEntity_Entity_UnitEntity_getPos_return_y = Entity_UnitEntity_getPos_result_y
	set dispatch_UnitEntity_Entity_UnitEntity_getPos_return_z = Entity_UnitEntity_getPos_result_z
	return dispatch_UnitEntity_Entity_UnitEntity_getPos_return_x
endfunction

function real_round takes real this_1 returns integer
	local integer cond_result
	if this_1 > 0. then
		set cond_result = real_toInt(this_1 + .5)
	else
		set cond_result = real_toInt(this_1 - .5)
	endif
	return cond_result
endfunction

function bezier3 takes real start, real mid, real stop, real p returns real
	return start + 2. * (mid - start) * p + (stop - 2. * mid + start) * p * p
endfunction

function string_length takes string this_1 returns integer
	return StringLength(this_1)
endfunction

function string_substring takes string this_1, integer start, integer stop returns string
	return SubString(this_1, start, stop)
endfunction

function string_indexOf takes string this_1, string s returns integer
	local integer len = string_length(s)
	local integer i = 0
	local integer temp = string_length(this_1) - len
	loop
		exitwhen i > temp
		if string_substring(this_1, i, i + len) == s then
			return i
		endif
		set i = i + 1
	endloop
	return -1
endfunction

function string_contains takes string this_1, string s returns boolean
	return string_indexOf(this_1, s) != -1
endfunction

function char takes string s returns integer
	local integer a
	if s == "/" then
		set char_return_c = 47
		return char_return_c
	elseif "\\" == s then
		set char_return_c = 92
		return char_return_c
	endif
	set a = StringUtils_s2c[string_getHash(s) / 2033480 + 1002]
	if s != StringUtils_c2s[a] then
		set char_return_c = a + 32
		return char_return_c
	endif
	set char_return_c = a
	return char_return_c
endfunction

function char_getWidth takes integer this_c returns integer
	if this_c > StringUtils_MAX_INDEX then
		return StringUtils_DEFAULT_WIDTH
	endif
	return StringUtils_width[this_c]
endfunction

function string_charAt takes string this_1, integer index returns string
	return SubString(this_1, index, index + 1)
endfunction

function string_getWidth takes string this_1 returns integer
	local integer width = 0
	local integer i = 0
	local integer temp = string_length(this_1) - 1
	loop
		exitwhen i > temp
		set width = width + char_getWidth(char(string_charAt(this_1, i)))
		set i = i + 1
	endloop
	return width
endfunction

function texttag_setPos takes texttag this_1, real pos_x_1, real pos_y_1, real pos_z returns nothing
	call SetTextTagPos(this_1, pos_x_1, pos_y_1, pos_z)
endfunction

function texttag_setText takes texttag this_1, string text, real size returns nothing
	call SetTextTagText(this_1, text, size * 0.0023)
endfunction

function vec3_op_minus_4281 takes real this_x, real this_y, real this_z, real v_x, real v_y returns real
	set vec3_op_minus_return_x_3123 = this_x - v_x
	set vec3_op_minus_return_y_3125 = this_y - v_y
	set vec3_op_minus_return_z_3127 = this_z
	return vec3_op_minus_return_x_3123
endfunction

function texttag_center takes texttag this_1, real pos_x_1, real pos_y_1, real pos_z, string message, real size returns texttag
	local string str = message
	local integer idx
	local texttag receiver
	local texttag receiver_1
	loop
		exitwhen  not string_contains(str, "|cff")
		set idx = string_indexOf(str, "|cff")
		set str = string_substring(str, 0, idx) + string_substring(str, idx + 10, string_length(str))
	endloop
	set receiver = this_1
	call texttag_setPos(receiver, vec3_op_minus_4281(pos_x_1, pos_y_1, pos_z, string_getWidth(str) / 1000. * bezier3(3.0, 8.0, 11.5, size / 25.) * 6.5, 0.), vec3_op_minus_return_y_3125, vec3_op_minus_return_z_3127)
	set receiver_1 = receiver
	call texttag_setText(receiver_1, message, size)
	return this_1
endfunction

function LobbyTeleporter_clearQuestionmark takes integer this_1 returns nothing
	local integer votesNeeded
	local integer i
	call StaticBaseObject_clearQuestionmark(this_1)
	if Entity_owner[this_1] != GameConstants_STAFF_PLAYER then
		set votesNeeded = real_round(dispatch_LinkedList_LinkedList_LinkedList_size(PlayerData_escaperPlayers) * 0.55)
		set LobbyTeleporter_ready[this_1] = true
		set LobbyTeleporter_currentPlus[this_1] = 0
		set i = 0
		loop
			exitwhen i > 11
			call LobbyTeleporter_votes_set(this_1, i, false)
			set i = i + 1
		endloop
		if LobbyTeleporter_ftext[this_1] != 0 then
			call texttag_center(FText_tt[LobbyTeleporter_ftext[this_1]], dispatch_UnitEntity_Entity_UnitEntity_getPos(this_1), dispatch_UnitEntity_Entity_UnitEntity_getPos_return_y, dispatch_UnitEntity_Entity_UnitEntity_getPos_return_z, "|cff11cc00Ready|r - [0" + "/|cffffcc00" + int_toString(votesNeeded) + "|r]", 9.)
		endif
	endif
endfunction

function dispatch_StaticBaseObject_BaseObject_StaticBaseObject_clearQuestionmark takes integer this_1 returns nothing
	if Serializable_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling StaticBaseObject.clearQuestionmark")
		else
			call error("Called StaticBaseObject.clearQuestionmark on invalid object.")
		endif
	endif
	if Serializable_typeId[this_1] <= 1201 then
		if Serializable_typeId[this_1] <= 1200 then
			call StaticBaseObject_clearQuestionmark(this_1)
		else
			call LobbyTeleporter_clearQuestionmark(this_1)
		endif
	else
		call StaticBaseObject_clearQuestionmark(this_1)
	endif
endfunction

function StaticBaseObject_onDestroy takes integer this_1 returns nothing
	call unit_clearRegister(UnitEntity_actor[this_1])
	call trigger_destr(StaticBaseObject_inRangeTrig[this_1])
	call dispatch_StaticBaseObject_BaseObject_StaticBaseObject_clearQuestionmark(this_1)
	if StaticBaseObject_disFx[this_1] != null then
		call effect_destr(StaticBaseObject_disFx[this_1])
		set StaticBaseObject_disFx[this_1] = null
	endif
	call UnitEntity_onDestroy(this_1)
endfunction

function alloc_CallbackSingle_doAfter_DummyRecycler_DummyRecycler takes nothing returns integer
	local integer this_1
	if CallbackSingle_firstFree == 0 then
		if CallbackSingle_maxIndex < JASS_MAX_ARRAY_SIZE then
			set CallbackSingle_maxIndex = CallbackSingle_maxIndex + 1
			set this_1 = CallbackSingle_maxIndex
			set CallbackSingle_typeId[this_1] = 681
		else
			call error("Out of memory: Could not create CallbackSingle_doAfter_DummyRecycler_DummyRecycler.")
			set this_1 = 0
		endif
	else
		set CallbackSingle_firstFree = CallbackSingle_firstFree - 1
		set this_1 = CallbackSingle_nextFree[CallbackSingle_firstFree]
		set CallbackSingle_typeId[this_1] = 681
	endif
	return this_1
endfunction

function CallbackSingle_init takes integer this_1 returns nothing
endfunction

function construct_CallbackSingle takes integer this_1 returns nothing
	call CallbackSingle_init(this_1)
endfunction

function getTimer takes nothing returns timer
	local timer receiver
	if TimerUtils_freeTimersCount > 0 then
		set TimerUtils_freeTimersCount = TimerUtils_freeTimersCount - 1
		call timer_setData(TimerUtils_freeTimers[TimerUtils_freeTimersCount], 0)
		return TimerUtils_freeTimers[TimerUtils_freeTimersCount]
	else
		set receiver = CreateTimer()
		call timer_setData(receiver, 0)
		return receiver
	endif
endfunction

function timer_start takes timer this_1, real time, code timerCallBack returns nothing
	call TimerStart(this_1, time, false, timerCallBack)
endfunction

function CallbackSingle_start takes integer this_1, timer whichTimer, real time returns nothing
	local timer receiver = whichTimer
	local timer receiver_1
	call timer_setData(receiver, this_1)
	set receiver_1 = receiver
	call timer_start(receiver_1, time, ref_function_code__start_CallbackSingle_ClosureTimers)
	set CallbackSingle_t[this_1] = receiver_1
endfunction

function dispatch_CallbackSingle_ClosureTimers_CallbackSingle_start takes integer this_1, timer whichTimer, real time returns nothing
	if CallbackSingle_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling CallbackSingle.start")
		else
			call error("Called CallbackSingle.start on invalid object.")
		endif
	endif
	call CallbackSingle_start(this_1, whichTimer, time)
endfunction

function timer_doAfter takes timer this_1, real timeToWait, integer cb_1 returns integer
	call dispatch_CallbackSingle_ClosureTimers_CallbackSingle_start(cb_1, this_1, timeToWait)
	return cb_1
endfunction

function doAfter takes real timeToWait, integer cb_1 returns integer
	return timer_doAfter(getTimer(), timeToWait, cb_1)
endfunction

function DummyRecycler_recycle_339 takes unit u_1, real delay returns nothing
	local real temp = delay
	local integer clVar = alloc_CallbackSingle_doAfter_DummyRecycler_DummyRecycler()
	call construct_CallbackSingle(clVar)
	set u[clVar] = u_1
	call doAfter(temp, clVar)
endfunction

function Fx_onDestroy takes integer this_1 returns nothing
	if Fx_fx[this_1] != null then
		call effect_destr(Fx_fx[this_1])
	endif
	call DummyRecycler_recycle_339(Fx_dummy[this_1], 1.)
endfunction

function dealloc_Fx takes integer obj_1 returns nothing
	if Fx_typeId[obj_1] == 0 then
		call error("Double free: object of type Fx")
	else
		set Fx_nextFree[Fx_firstFree] = obj_1
		set Fx_firstFree = Fx_firstFree + 1
		set Fx_typeId[obj_1] = 0
	endif
endfunction

function destroyFx takes integer this_1 returns nothing
	call Fx_onDestroy(this_1)
	call dealloc_Fx(this_1)
endfunction

function dispatch_Fx_destroyFx takes integer this_1 returns nothing
	if Fx_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling Fx.Fx")
		else
			call error("Called Fx.Fx on invalid object.")
		endif
	endif
	call destroyFx(this_1)
endfunction

function Arcanery_onDestroy takes integer this_1 returns nothing
	call dispatch_Fx_destroyFx(Arcanery_currentEffect[this_1])
	set Arcanery_currentEffect[this_1] = 0
	call StaticBaseObject_onDestroy(this_1)
endfunction

function dealloc_Arcanery takes integer obj_1 returns nothing
	if Serializable_typeId[obj_1] == 0 then
		call error("Double free: object of type Arcanery")
	else
		set Serializable_nextFree[Serializable_firstFree] = obj_1
		set Serializable_firstFree = Serializable_firstFree + 1
		set Serializable_typeId[obj_1] = 0
	endif
endfunction

function destroyArcanery takes integer this_1 returns nothing
	call Arcanery_onDestroy(this_1)
	call dealloc_Arcanery(this_1)
endfunction

function BallProjectile_onDestroy takes integer this_1 returns nothing
	call AirPhysicsProjectile_onDestroy(this_1)
endfunction

function dealloc_BallProjectile takes integer obj_1 returns nothing
	if Serializable_typeId[obj_1] == 0 then
		call error("Double free: object of type BallProjectile")
	else
		set Serializable_nextFree[Serializable_firstFree] = obj_1
		set Serializable_firstFree = Serializable_firstFree + 1
		set Serializable_typeId[obj_1] = 0
	endif
endfunction

function destroyBallProjectile takes integer this_1 returns nothing
	call BallProjectile_onDestroy(this_1)
	call dealloc_BallProjectile(this_1)
endfunction

function BigKiller_onDestroy takes integer this_1 returns nothing
	call EscaperSensorSetup_onDestroy(this_1)
endfunction

function dealloc_BigKiller takes integer obj_1 returns nothing
	if Serializable_typeId[obj_1] == 0 then
		call error("Double free: object of type BigKiller")
	else
		set Serializable_nextFree[Serializable_firstFree] = obj_1
		set Serializable_firstFree = Serializable_firstFree + 1
		set Serializable_typeId[obj_1] = 0
	endif
endfunction

function destroyBigKiller takes integer this_1 returns nothing
	call BigKiller_onDestroy(this_1)
	call dealloc_BigKiller(this_1)
endfunction

function StaticSetupObject_onDestroy takes integer this_1 returns nothing
	call unregisterEventsForUnit(StaticSetupObject_setup[this_1])
	call unit_clearRegister(StaticSetupObject_setup[this_1])
	call unit_setEntity(StaticSetupObject_setup[this_1], 0)
	call unit_remove(StaticSetupObject_setup[this_1])
	set StaticSetupObject_setup[this_1] = null
	if StaticSetupObject_inRangeTrig[this_1] != null then
		call trigger_destr(StaticSetupObject_inRangeTrig[this_1])
		set StaticSetupObject_inRangeTrig[this_1] = null
	endif
	call UnitEntity_onDestroy(this_1)
endfunction

function StaticEscaperSensorSetup_onDestroy takes integer this_1 returns nothing
	call StaticSetupObject_onDestroy(this_1)
endfunction

function BigObstacle_onDestroy takes integer this_1 returns nothing
	call StaticEscaperSensorSetup_onDestroy(this_1)
endfunction

function dealloc_BigObstacle takes integer obj_1 returns nothing
	if Serializable_typeId[obj_1] == 0 then
		call error("Double free: object of type BigObstacle")
	else
		set Serializable_nextFree[Serializable_firstFree] = obj_1
		set Serializable_firstFree = Serializable_firstFree + 1
		set Serializable_typeId[obj_1] = 0
	endif
endfunction

function destroyBigObstacle takes integer this_1 returns nothing
	call BigObstacle_onDestroy(this_1)
	call dealloc_BigObstacle(this_1)
endfunction

function BigRandomKiller_onDestroy takes integer this_1 returns nothing
	call EscaperSensorSetup_onDestroy(this_1)
endfunction

function dealloc_BigRandomKiller takes integer obj_1 returns nothing
	if Serializable_typeId[obj_1] == 0 then
		call error("Double free: object of type BigRandomKiller")
	else
		set Serializable_nextFree[Serializable_firstFree] = obj_1
		set Serializable_firstFree = Serializable_firstFree + 1
		set Serializable_typeId[obj_1] = 0
	endif
endfunction

function destroyBigRandomKiller takes integer this_1 returns nothing
	call BigRandomKiller_onDestroy(this_1)
	call dealloc_BigRandomKiller(this_1)
endfunction

function LinkedList_remove takes integer this_1, integer elem returns boolean
	local boolean result_1 = false
	local integer entry = LLEntry_next[LinkedList_dummy[this_1]]
	loop
		exitwhen  not (entry != LinkedList_dummy[this_1])
		if LLEntry_elem[entry] == elem then
			call dispatch_LinkedList_LinkedList_LinkedList_removeEntry(this_1, entry)
			set result_1 = true
			exitwhen true
		endif
		set entry = LLEntry_next[entry]
	endloop
	return result_1
endfunction

function dispatch_LinkedList_LinkedList_LinkedList_remove takes integer this_1, integer elem returns boolean
	local boolean LinkedList_LinkedList_remove_result
	if LinkedList_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling LinkedList.remove")
		else
			call error("Called LinkedList.remove on invalid object.")
		endif
	endif
	set LinkedList_LinkedList_remove_result = LinkedList_remove(this_1, elem)
	return LinkedList_LinkedList_remove_result
endfunction

function Escaper_onDestroy takes integer this_1 returns nothing
	call effect_destr(Escaper_lavaEffect[this_1])
	call effect_destr(Escaper_poisonEffect[this_1])
	call dispatch_LinkedList_LinkedList_LinkedList_remove(Escaper_escapers, this_1)
	call UnitEntity_onDestroy(this_1)
endfunction

function BlindEscaper_onDestroy takes integer this_1 returns nothing
	call Escaper_onDestroy(this_1)
endfunction

function dealloc_BlindEscaper takes integer obj_1 returns nothing
	if Serializable_typeId[obj_1] == 0 then
		call error("Double free: object of type BlindEscaper")
	else
		set Serializable_nextFree[Serializable_firstFree] = obj_1
		set Serializable_firstFree = Serializable_firstFree + 1
		set Serializable_typeId[obj_1] = 0
	endif
endfunction

function destroyBlindEscaper takes integer this_1 returns nothing
	call BlindEscaper_onDestroy(this_1)
	call dealloc_BlindEscaper(this_1)
endfunction

function Bomber_onDestroy takes integer this_1 returns nothing
	call unregisterEvents(unit_getIndex(Bomber_setup[this_1]))
	call unit_setEntity(Bomber_setup[this_1], 0)
	call unit_remove(Bomber_setup[this_1])
	call UnitEntity_onDestroy(this_1)
endfunction

function dealloc_Bomber takes integer obj_1 returns nothing
	if Serializable_typeId[obj_1] == 0 then
		call error("Double free: object of type Bomber")
	else
		set Serializable_nextFree[Serializable_firstFree] = obj_1
		set Serializable_firstFree = Serializable_firstFree + 1
		set Serializable_typeId[obj_1] = 0
	endif
endfunction

function destroyBomber takes integer this_1 returns nothing
	call Bomber_onDestroy(this_1)
	call dealloc_Bomber(this_1)
endfunction

function Bombertower_onDestroy takes integer this_1 returns nothing
	call unregisterEvents(unit_getIndex(Bombertower_dummy[this_1]))
	call unit_setEntity(Bombertower_dummy[this_1], 0)
	call unit_remove(Bombertower_dummy[this_1])
	call StaticBaseObject_onDestroy(this_1)
endfunction

function dealloc_Bombertower takes integer obj_1 returns nothing
	if Serializable_typeId[obj_1] == 0 then
		call error("Double free: object of type Bombertower")
	else
		set Serializable_nextFree[Serializable_firstFree] = obj_1
		set Serializable_firstFree = Serializable_firstFree + 1
		set Serializable_typeId[obj_1] = 0
	endif
endfunction

function destroyBombertower takes integer this_1 returns nothing
	call Bombertower_onDestroy(this_1)
	call dealloc_Bombertower(this_1)
endfunction

function Boomerang_onDestroy takes integer this_1 returns nothing
	call Projectile_onDestroy(this_1)
endfunction

function dealloc_Boomerang takes integer obj_1 returns nothing
	if Serializable_typeId[obj_1] == 0 then
		call error("Double free: object of type Boomerang")
	else
		set Serializable_nextFree[Serializable_firstFree] = obj_1
		set Serializable_firstFree = Serializable_firstFree + 1
		set Serializable_typeId[obj_1] = 0
	endif
endfunction

function destroyBoomerang takes integer this_1 returns nothing
	call Boomerang_onDestroy(this_1)
	call dealloc_Boomerang(this_1)
endfunction

function ConfigValue_onDestroy takes integer this_1 returns nothing
endfunction

function dealloc_ConfigValue takes integer obj_1 returns nothing
	if ConfigValue_typeId[obj_1] == 0 then
		call error("Double free: object of type ConfigValue")
	else
		set ConfigValue_nextFree[ConfigValue_firstFree] = obj_1
		set ConfigValue_firstFree = ConfigValue_firstFree + 1
		set ConfigValue_typeId[obj_1] = 0
	endif
endfunction

function destroyConfigValue takes integer this_1 returns nothing
	call ConfigValue_onDestroy(this_1)
	call dealloc_ConfigValue(this_1)
endfunction

function dispatch_ConfigValue_destroyConfigValue takes integer this_1 returns nothing
	if ConfigValue_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling ConfigValue.ConfigValue")
		else
			call error("Called ConfigValue.ConfigValue on invalid object.")
		endif
	endif
	call destroyConfigValue(this_1)
endfunction

function Booster_onDestroy takes integer this_1 returns nothing
	call dispatch_ConfigValue_destroyConfigValue(Booster_boostspeed[this_1])
	call StaticBaseObject_onDestroy(this_1)
endfunction

function dealloc_Booster takes integer obj_1 returns nothing
	if Serializable_typeId[obj_1] == 0 then
		call error("Double free: object of type Booster")
	else
		set Serializable_nextFree[Serializable_firstFree] = obj_1
		set Serializable_firstFree = Serializable_firstFree + 1
		set Serializable_typeId[obj_1] = 0
	endif
endfunction

function destroyBooster takes integer this_1 returns nothing
	call Booster_onDestroy(this_1)
	call dealloc_Booster(this_1)
endfunction

function Boss_onDestroy takes integer this_1 returns nothing
	call SetupObject_onDestroy(this_1)
endfunction

function dealloc_Boss takes integer obj_1 returns nothing
	if Serializable_typeId[obj_1] == 0 then
		call error("Double free: object of type Boss")
	else
		set Serializable_nextFree[Serializable_firstFree] = obj_1
		set Serializable_firstFree = Serializable_firstFree + 1
		set Serializable_typeId[obj_1] = 0
	endif
endfunction

function destroyBoss takes integer this_1 returns nothing
	call Boss_onDestroy(this_1)
	call dealloc_Boss(this_1)
endfunction

function BossDamager_onDestroy takes integer this_1 returns nothing
	call StaticBaseObject_onDestroy(this_1)
endfunction

function dealloc_BossDamager takes integer obj_1 returns nothing
	if Serializable_typeId[obj_1] == 0 then
		call error("Double free: object of type BossDamager")
	else
		set Serializable_nextFree[Serializable_firstFree] = obj_1
		set Serializable_firstFree = Serializable_firstFree + 1
		set Serializable_typeId[obj_1] = 0
	endif
endfunction

function destroyBossDamager takes integer this_1 returns nothing
	call BossDamager_onDestroy(this_1)
	call dealloc_BossDamager(this_1)
endfunction

function HomingProjectile_onDestroy takes integer this_1 returns nothing
	call Projectile_onDestroy(this_1)
endfunction

function BossMissile_onDestroy takes integer this_1 returns nothing
	call HomingProjectile_onDestroy(this_1)
endfunction

function dealloc_BossMissile takes integer obj_1 returns nothing
	if Serializable_typeId[obj_1] == 0 then
		call error("Double free: object of type BossMissile")
	else
		set Serializable_nextFree[Serializable_firstFree] = obj_1
		set Serializable_firstFree = Serializable_firstFree + 1
		set Serializable_typeId[obj_1] = 0
	endif
endfunction

function destroyBossMissile takes integer this_1 returns nothing
	call BossMissile_onDestroy(this_1)
	call dealloc_BossMissile(this_1)
endfunction

function Builder_onDestroy takes integer this_1 returns nothing
	call UnitEntity_onDestroy(this_1)
endfunction

function dealloc_Builder takes integer obj_1 returns nothing
	if Serializable_typeId[obj_1] == 0 then
		call error("Double free: object of type Builder")
	else
		set Serializable_nextFree[Serializable_firstFree] = obj_1
		set Serializable_firstFree = Serializable_firstFree + 1
		set Serializable_typeId[obj_1] = 0
	endif
endfunction

function destroyBuilder takes integer this_1 returns nothing
	call Builder_onDestroy(this_1)
	call dealloc_Builder(this_1)
endfunction

function CongaSegment_onDestroy takes integer this_1 returns nothing
	if CongaSegment_next[this_1] != 0 then
		set CongaSegment_prev[CongaSegment_next[this_1]] = CongaSegment_prev[this_1]
	endif
	if CongaSegment_prev[this_1] != 0 then
		set CongaSegment_next[CongaSegment_prev[this_1]] = CongaSegment_next[this_1]
	endif
	if CongaLineHead_firstSegment[CongaSegment_head[this_1]] == this_1 then
		set CongaLineHead_firstSegment[CongaSegment_head[this_1]] = CongaSegment_next[this_1]
	endif
	if ( not Entity_done[CongaSegment_target[this_1]]) and UnitEntity_actor[CongaSegment_target[this_1]] != null then
		call unit_addAbility(SetupObject_setup[CongaSegment_target[this_1]], BuilderConstants_REMOVE_OBJECT_ID)
	endif
endfunction

function dealloc_CongaSegment takes integer obj_1 returns nothing
	if CongaSegment_typeId[obj_1] == 0 then
		call error("Double free: object of type CongaSegment")
	else
		set CongaSegment_nextFree[CongaSegment_firstFree] = obj_1
		set CongaSegment_firstFree = CongaSegment_firstFree + 1
		set CongaSegment_typeId[obj_1] = 0
	endif
endfunction

function destroyCongaSegment takes integer this_1 returns nothing
	call CongaSegment_onDestroy(this_1)
	call dealloc_CongaSegment(this_1)
endfunction

function dispatch_CongaSegment_destroyCongaSegment takes integer this_1 returns nothing
	if CongaSegment_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling CongaSegment.CongaSegment")
		else
			call error("Called CongaSegment.CongaSegment on invalid object.")
		endif
	endif
	call destroyCongaSegment(this_1)
endfunction

function CongaLineHead_onDestroy takes integer this_1 returns nothing
	local integer l = CongaLineHead_firstSegment[this_1]
	local integer tmp
	loop
		exitwhen  not (l != 0)
		set tmp = l
		set l = CongaSegment_next[l]
		call dispatch_CongaSegment_destroyCongaSegment(tmp)
	endloop
	call SetupObject_onDestroy(this_1)
endfunction

function dealloc_CongaLineHead takes integer obj_1 returns nothing
	if Serializable_typeId[obj_1] == 0 then
		call error("Double free: object of type CongaLineHead")
	else
		set Serializable_nextFree[Serializable_firstFree] = obj_1
		set Serializable_firstFree = Serializable_firstFree + 1
		set Serializable_typeId[obj_1] = 0
	endif
endfunction

function destroyCongaLineHead takes integer this_1 returns nothing
	call CongaLineHead_onDestroy(this_1)
	call dealloc_CongaLineHead(this_1)
endfunction

function Decoration_onDestroy takes integer this_1 returns nothing
	call dispatch_ConfigValue_destroyConfigValue(Decoration_scale[this_1])
	call StaticSetupObject_onDestroy(this_1)
endfunction

function dealloc_Decoration takes integer obj_1 returns nothing
	if Serializable_typeId[obj_1] == 0 then
		call error("Double free: object of type Decoration")
	else
		set Serializable_nextFree[Serializable_firstFree] = obj_1
		set Serializable_firstFree = Serializable_firstFree + 1
		set Serializable_typeId[obj_1] = 0
	endif
endfunction

function destroyDecoration takes integer this_1 returns nothing
	call Decoration_onDestroy(this_1)
	call dealloc_Decoration(this_1)
endfunction

function Door_onDestroy takes integer this_1 returns nothing
	call unit_remove(Door_pathing[this_1])
	call StaticSetupObject_onDestroy(this_1)
endfunction

function dealloc_Door takes integer obj_1 returns nothing
	if Serializable_typeId[obj_1] == 0 then
		call error("Double free: object of type Door")
	else
		set Serializable_nextFree[Serializable_firstFree] = obj_1
		set Serializable_firstFree = Serializable_firstFree + 1
		set Serializable_typeId[obj_1] = 0
	endif
endfunction

function destroyDoor takes integer this_1 returns nothing
	call Door_onDestroy(this_1)
	call dealloc_Door(this_1)
endfunction

function dealloc_Entity takes integer obj_1 returns nothing
	if Serializable_typeId[obj_1] == 0 then
		call error("Double free: object of type Entity")
	else
		set Serializable_nextFree[Serializable_firstFree] = obj_1
		set Serializable_firstFree = Serializable_firstFree + 1
		set Serializable_typeId[obj_1] = 0
	endif
endfunction

function destroyEntity takes integer this_1 returns nothing
	call Entity_onDestroy(this_1)
	call dealloc_Entity(this_1)
endfunction

function dealloc_Escaper takes integer obj_1 returns nothing
	if Serializable_typeId[obj_1] == 0 then
		call error("Double free: object of type Escaper")
	else
		set Serializable_nextFree[Serializable_firstFree] = obj_1
		set Serializable_firstFree = Serializable_firstFree + 1
		set Serializable_typeId[obj_1] = 0
	endif
endfunction

function destroyEscaper takes integer this_1 returns nothing
	call Escaper_onDestroy(this_1)
	call dealloc_Escaper(this_1)
endfunction

function dealloc_EscaperSensorSetup takes integer obj_1 returns nothing
	if Serializable_typeId[obj_1] == 0 then
		call error("Double free: object of type EscaperSensorSetup")
	else
		set Serializable_nextFree[Serializable_firstFree] = obj_1
		set Serializable_firstFree = Serializable_firstFree + 1
		set Serializable_typeId[obj_1] = 0
	endif
endfunction

function destroyEscaperSensorSetup takes integer this_1 returns nothing
	call EscaperSensorSetup_onDestroy(this_1)
	call dealloc_EscaperSensorSetup(this_1)
endfunction

function LLBackIterator_onDestroy takes integer this_1 returns nothing
endfunction

function dealloc_LLBackIterator takes integer obj_1 returns nothing
	if LLBackIterator_typeId[obj_1] == 0 then
		call error("Double free: object of type LLBackIterator")
	else
		set LLBackIterator_firstFree = LLBackIterator_firstFree + 1
		set LLBackIterator_typeId[obj_1] = 0
	endif
endfunction

function destroyLLBackIterator takes integer this_1 returns nothing
	call LLBackIterator_onDestroy(this_1)
	call dealloc_LLBackIterator(this_1)
endfunction

function dispatch_LLBackIterator_destroyLLBackIterator takes integer this_1 returns nothing
	if LLBackIterator_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling LLBackIterator.LLBackIterator")
		else
			call error("Called LLBackIterator.LLBackIterator on invalid object.")
		endif
	endif
	call destroyLLBackIterator(this_1)
endfunction

function LinkedList_onDestroy takes integer this_1 returns nothing
	local integer current
	if LinkedList_staticItr[this_1] != 0 then
		call dispatch_LLIterator_destroyLLIterator(LinkedList_staticItr[this_1])
	endif
	if LinkedList_staticBackItr[this_1] != 0 then
		call dispatch_LLBackIterator_destroyLLBackIterator(LinkedList_staticBackItr[this_1])
	endif
	set current = LLEntry_next[LinkedList_dummy[this_1]]
	loop
		exitwhen  not (current != LinkedList_dummy[this_1])
		set current = LLEntry_next[current]
		call dispatch_LLEntry_destroyLLEntry(LLEntry_prev[current])
	endloop
	call dispatch_LLEntry_destroyLLEntry(LinkedList_dummy[this_1])
endfunction

function dealloc_LinkedList takes integer obj_1 returns nothing
	if LinkedList_typeId[obj_1] == 0 then
		call error("Double free: object of type LinkedList")
	else
		set LinkedList_nextFree[LinkedList_firstFree] = obj_1
		set LinkedList_firstFree = LinkedList_firstFree + 1
		set LinkedList_typeId[obj_1] = 0
	endif
endfunction

function destroyLinkedList takes integer this_1 returns nothing
	call LinkedList_onDestroy(this_1)
	call dealloc_LinkedList(this_1)
endfunction

function dispatch_LinkedList_destroyLinkedList takes integer this_1 returns nothing
	if LinkedList_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling LinkedList.LinkedList")
		else
			call error("Called LinkedList.LinkedList on invalid object.")
		endif
	endif
	call destroyLinkedList(this_1)
endfunction

function region_destr takes region this_1 returns nothing
	call RemoveRegion(this_1)
endfunction

function regionToIndex takes region object returns integer
	return handle_getTCHandleId(object)
endfunction

function region_removeRegionData takes region this_1 returns nothing
	call dispatch_HashMap_HashMap_HashMap_remove(EventHelper_regionMap, regionToIndex(this_1))
endfunction

function Executer_onDestroy takes integer this_1 returns nothing
	if Executer_eventRect[this_1] != null then
		call RemoveRect(Executer_eventRect[this_1])
	endif
	if Executer_eventRegion[this_1] != null then
		call region_removeRegionData(Executer_eventRegion[this_1])
		call region_destr(Executer_eventRegion[this_1])
	endif
	if Executer_dummy[this_1] != null then
		call RemoveDestructable(Executer_dummy[this_1])
	endif
	if Executer_entitiesOnPlate[this_1] != 0 then
		call dispatch_LinkedList_destroyLinkedList(Executer_entitiesOnPlate[this_1])
	endif
	call StaticBaseObject_onDestroy(this_1)
endfunction

function dealloc_Executer takes integer obj_1 returns nothing
	if Serializable_typeId[obj_1] == 0 then
		call error("Double free: object of type Executer")
	else
		set Serializable_nextFree[Serializable_firstFree] = obj_1
		set Serializable_firstFree = Serializable_firstFree + 1
		set Serializable_typeId[obj_1] = 0
	endif
endfunction

function destroyExecuter takes integer this_1 returns nothing
	call Executer_onDestroy(this_1)
	call dealloc_Executer(this_1)
endfunction

function Faceless_onDestroy takes integer this_1 returns nothing
	call dispatch_ConfigValue_destroyConfigValue(Faceless_visibleDur[this_1])
	call dispatch_ConfigValue_destroyConfigValue(Faceless_invisDur[this_1])
	call EscaperSensorSetup_onDestroy(this_1)
endfunction

function dealloc_Faceless takes integer obj_1 returns nothing
	if Serializable_typeId[obj_1] == 0 then
		call error("Double free: object of type Faceless")
	else
		set Serializable_nextFree[Serializable_firstFree] = obj_1
		set Serializable_firstFree = Serializable_firstFree + 1
		set Serializable_typeId[obj_1] = 0
	endif
endfunction

function destroyFaceless takes integer this_1 returns nothing
	call Faceless_onDestroy(this_1)
	call dealloc_Faceless(this_1)
endfunction

function FastEscaper_onDestroy takes integer this_1 returns nothing
	call Escaper_onDestroy(this_1)
endfunction

function dealloc_FastEscaper takes integer obj_1 returns nothing
	if Serializable_typeId[obj_1] == 0 then
		call error("Double free: object of type FastEscaper")
	else
		set Serializable_nextFree[Serializable_firstFree] = obj_1
		set Serializable_firstFree = Serializable_firstFree + 1
		set Serializable_typeId[obj_1] = 0
	endif
endfunction

function destroyFastEscaper takes integer this_1 returns nothing
	call FastEscaper_onDestroy(this_1)
	call dealloc_FastEscaper(this_1)
endfunction

function FireKiller_onDestroy takes integer this_1 returns nothing
	call EscaperSensorSetup_onDestroy(this_1)
endfunction

function dealloc_FireKiller takes integer obj_1 returns nothing
	if Serializable_typeId[obj_1] == 0 then
		call error("Double free: object of type FireKiller")
	else
		set Serializable_nextFree[Serializable_firstFree] = obj_1
		set Serializable_firstFree = Serializable_firstFree + 1
		set Serializable_typeId[obj_1] = 0
	endif
endfunction

function destroyFireKiller takes integer this_1 returns nothing
	call FireKiller_onDestroy(this_1)
	call dealloc_FireKiller(this_1)
endfunction

function Fireball_onDestroy takes integer this_1 returns nothing
	call Projectile_onDestroy(this_1)
endfunction

function dealloc_Fireball takes integer obj_1 returns nothing
	if Serializable_typeId[obj_1] == 0 then
		call error("Double free: object of type Fireball")
	else
		set Serializable_nextFree[Serializable_firstFree] = obj_1
		set Serializable_firstFree = Serializable_firstFree + 1
		set Serializable_typeId[obj_1] = 0
	endif
endfunction

function destroyFireball takes integer this_1 returns nothing
	call Fireball_onDestroy(this_1)
	call dealloc_Fireball(this_1)
endfunction

function unit_setPos_4196 takes unit this_1, real x, real y returns nothing
	call SetUnitPosition(this_1, x, y)
endfunction

function Fx_hiddenDestroy takes integer this_1 returns nothing
	call unit_setPos_4196(Fx_dummy[this_1], 2147483647., 2147483647.)
	call dispatch_Fx_destroyFx(this_1)
endfunction

function dispatch_Fx_Fx_Fx_hiddenDestroy takes integer this_1 returns nothing
	if Fx_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling Fx.hiddenDestroy")
		else
			call error("Called Fx.hiddenDestroy on invalid object.")
		endif
	endif
	call Fx_hiddenDestroy(this_1)
endfunction

function FxEntity_onDestroy takes integer this_1 returns nothing
	if FxEntity_silent[this_1] then
		call dispatch_Fx_Fx_Fx_hiddenDestroy(FxEntity_fx[this_1])
	else
		call dispatch_Fx_destroyFx(FxEntity_fx[this_1])
	endif
	call Entity_onDestroy(this_1)
endfunction

function FoodEntity_onDestroy takes integer this_1 returns nothing
	call FxEntity_onDestroy(this_1)
endfunction

function dealloc_FoodEntity takes integer obj_1 returns nothing
	if Serializable_typeId[obj_1] == 0 then
		call error("Double free: object of type FoodEntity")
	else
		set Serializable_nextFree[Serializable_firstFree] = obj_1
		set Serializable_firstFree = Serializable_firstFree + 1
		set Serializable_typeId[obj_1] = 0
	endif
endfunction

function destroyFoodEntity takes integer this_1 returns nothing
	call FoodEntity_onDestroy(this_1)
	call dealloc_FoodEntity(this_1)
endfunction

function Fountain_onDestroy takes integer this_1 returns nothing
	call StaticSetupObject_onDestroy(this_1)
endfunction

function dealloc_Fountain takes integer obj_1 returns nothing
	if Serializable_typeId[obj_1] == 0 then
		call error("Double free: object of type Fountain")
	else
		set Serializable_nextFree[Serializable_firstFree] = obj_1
		set Serializable_firstFree = Serializable_firstFree + 1
		set Serializable_typeId[obj_1] = 0
	endif
endfunction

function destroyFountain takes integer this_1 returns nothing
	call Fountain_onDestroy(this_1)
	call dealloc_Fountain(this_1)
endfunction

function dealloc_Fx2Entity takes integer obj_1 returns nothing
	if Serializable_typeId[obj_1] == 0 then
		call error("Double free: object of type Fx2Entity")
	else
		set Serializable_nextFree[Serializable_firstFree] = obj_1
		set Serializable_firstFree = Serializable_firstFree + 1
		set Serializable_typeId[obj_1] = 0
	endif
endfunction

function destroyFx2Entity takes integer this_1 returns nothing
	call Fx2Entity_onDestroy(this_1)
	call dealloc_Fx2Entity(this_1)
endfunction

function dealloc_FxEntity takes integer obj_1 returns nothing
	if Serializable_typeId[obj_1] == 0 then
		call error("Double free: object of type FxEntity")
	else
		set Serializable_nextFree[Serializable_firstFree] = obj_1
		set Serializable_firstFree = Serializable_firstFree + 1
		set Serializable_typeId[obj_1] = 0
	endif
endfunction

function destroyFxEntity takes integer this_1 returns nothing
	call FxEntity_onDestroy(this_1)
	call dealloc_FxEntity(this_1)
endfunction

function GlaiveKiller_onDestroy takes integer this_1 returns nothing
	call EscaperSensorSetup_onDestroy(this_1)
endfunction

function dealloc_GlaiveKiller takes integer obj_1 returns nothing
	if Serializable_typeId[obj_1] == 0 then
		call error("Double free: object of type GlaiveKiller")
	else
		set Serializable_nextFree[Serializable_firstFree] = obj_1
		set Serializable_firstFree = Serializable_firstFree + 1
		set Serializable_typeId[obj_1] = 0
	endif
endfunction

function destroyGlaiveKiller takes integer this_1 returns nothing
	call GlaiveKiller_onDestroy(this_1)
	call dealloc_GlaiveKiller(this_1)
endfunction

function HighObstacle_onDestroy takes integer this_1 returns nothing
	call StaticEscaperSensorSetup_onDestroy(this_1)
endfunction

function dealloc_HighObstacle takes integer obj_1 returns nothing
	if Serializable_typeId[obj_1] == 0 then
		call error("Double free: object of type HighObstacle")
	else
		set Serializable_nextFree[Serializable_firstFree] = obj_1
		set Serializable_firstFree = Serializable_firstFree + 1
		set Serializable_typeId[obj_1] = 0
	endif
endfunction

function destroyHighObstacle takes integer this_1 returns nothing
	call HighObstacle_onDestroy(this_1)
	call dealloc_HighObstacle(this_1)
endfunction

function HolyEscaper_onDestroy takes integer this_1 returns nothing
	call Escaper_onDestroy(this_1)
endfunction

function dealloc_HolyEscaper takes integer obj_1 returns nothing
	if Serializable_typeId[obj_1] == 0 then
		call error("Double free: object of type HolyEscaper")
	else
		set Serializable_nextFree[Serializable_firstFree] = obj_1
		set Serializable_firstFree = Serializable_firstFree + 1
		set Serializable_typeId[obj_1] = 0
	endif
endfunction

function destroyHolyEscaper takes integer this_1 returns nothing
	call HolyEscaper_onDestroy(this_1)
	call dealloc_HolyEscaper(this_1)
endfunction

function dealloc_HomingProjectile takes integer obj_1 returns nothing
	if Serializable_typeId[obj_1] == 0 then
		call error("Double free: object of type HomingProjectile")
	else
		set Serializable_nextFree[Serializable_firstFree] = obj_1
		set Serializable_firstFree = Serializable_firstFree + 1
		set Serializable_typeId[obj_1] = 0
	endif
endfunction

function destroyHomingProjectile takes integer this_1 returns nothing
	call HomingProjectile_onDestroy(this_1)
	call dealloc_HomingProjectile(this_1)
endfunction

function IceEscaper_onDestroy takes integer this_1 returns nothing
	call Escaper_onDestroy(this_1)
endfunction

function dealloc_IceEscaper takes integer obj_1 returns nothing
	if Serializable_typeId[obj_1] == 0 then
		call error("Double free: object of type IceEscaper")
	else
		set Serializable_nextFree[Serializable_firstFree] = obj_1
		set Serializable_firstFree = Serializable_firstFree + 1
		set Serializable_typeId[obj_1] = 0
	endif
endfunction

function destroyIceEscaper takes integer this_1 returns nothing
	call IceEscaper_onDestroy(this_1)
	call dealloc_IceEscaper(this_1)
endfunction

function dealloc_ItemEntity takes integer obj_1 returns nothing
	if Serializable_typeId[obj_1] == 0 then
		call error("Double free: object of type ItemEntity")
	else
		set Serializable_nextFree[Serializable_firstFree] = obj_1
		set Serializable_firstFree = Serializable_firstFree + 1
		set Serializable_typeId[obj_1] = 0
	endif
endfunction

function destroyItemEntity takes integer this_1 returns nothing
	call ItemEntity_onDestroy(this_1)
	call dealloc_ItemEntity(this_1)
endfunction

function Jumper_goos_get takes integer index1, integer index2 returns integer
	local integer returnVal
	if index2 < 0 or index2 >= 5 then
		call error("Index out of Bounds")
	elseif index2 <= 2 then
		if index2 <= 1 then
			if index2 <= 0 then
				set returnVal = Jumper_goos_0[index1]
			else
				set returnVal = Jumper_goos_1[index1]
			endif
		else
			set returnVal = Jumper_goos_2[index1]
		endif
	elseif index2 <= 3 then
		set returnVal = Jumper_goos_3[index1]
	else
		set returnVal = Jumper_goos_4[index1]
	endif
	return returnVal
endfunction

function int_bitAnd takes integer this_1, integer other returns integer
	return BlzBitAnd(this_1, other)
endfunction

function bitset_get takes integer this_val, integer index returns boolean
	return int_bitAnd(this_val, BitSet_pows[index]) != 0
endfunction

function ebrtile_hasModifier takes integer this_x, integer this_y, integer this_key, integer this_currentType, integer this_lastType, integer this_modifiers_val, integer modifier returns boolean
	return bitset_get(this_modifiers_val, modifier)
endfunction

function bitset_reset takes integer this_val, integer index returns integer
	set bitset_reset_return_val = int_bitAnd(this_val, BitSet_reversePows[index])
	return bitset_reset_return_val
endfunction

function ebrtile_removeModifier takes integer this_x, integer this_y, integer this_key, integer this_currentType, integer this_lastType, integer this_modifiers_val, integer modifier returns nothing
	local hashtable temp = TerrainData_tileMap
	local integer temp_1 = this_key
	local integer tuple_temp = bitset_reset(this_modifiers_val, modifier)
	local integer temp_tuple_val = tuple_temp
	call hashtable_saveInt(temp, temp_1, 3, temp_tuple_val)
endfunction

function image_remove takes image this_1 returns nothing
	if this_1 == null then
		call error("Nullpointer exeption by destroying an image")
	endif
	call DestroyImage(this_1)
endfunction

function hashtable_loadTile takes hashtable this_1, integer x, integer y returns integer
	local integer key = x * TerrainData_xCells + y
	set hashtable_loadTile_return_x = x
	set hashtable_loadTile_return_y = y
	set hashtable_loadTile_return_key = key
	set hashtable_loadTile_return_currentType = hashtable_loadInt(this_1, key, 1)
	set hashtable_loadTile_return_lastType = hashtable_loadInt(this_1, key, 2)
	set hashtable_loadTile_return_modifiers_val = hashtable_loadInt(this_1, key, 3)
	return hashtable_loadTile_return_x
endfunction

function vec2_getEBRTile takes real this_x, real this_y returns integer
	set vec2_getEBRTile_return_x = hashtable_loadTile(TerrainData_tileMap, real_round(this_x / 128.), real_round(this_y / 128.))
	set vec2_getEBRTile_return_y = hashtable_loadTile_return_y
	set vec2_getEBRTile_return_key = hashtable_loadTile_return_key
	set vec2_getEBRTile_return_currentType = hashtable_loadTile_return_currentType
	set vec2_getEBRTile_return_lastType = hashtable_loadTile_return_lastType
	set vec2_getEBRTile_return_modifiers_val = hashtable_loadTile_return_modifiers_val
	return vec2_getEBRTile_return_x
endfunction

function Goo_onDestroy takes integer this_1 returns nothing
	local integer tuple_temp = vec2_getEBRTile(Goo_pos_x[this_1], Goo_pos_y[this_1])
	local integer tuple_temp_1 = vec2_getEBRTile_return_y
	local integer tuple_temp_2 = vec2_getEBRTile_return_key
	local integer tuple_temp_3 = vec2_getEBRTile_return_currentType
	local integer tuple_temp_4 = vec2_getEBRTile_return_lastType
	local integer tuple_temp_5 = vec2_getEBRTile_return_modifiers_val
	local integer tile_x = tuple_temp
	local integer tile_y = tuple_temp_1
	local integer tile_key = tuple_temp_2
	local integer tile_currentType = tuple_temp_3
	local integer tile_lastType = tuple_temp_4
	local integer tile_modifiers_val = tuple_temp_5
	if ebrtile_hasModifier(tile_x, tile_y, tile_key, tile_currentType, tile_lastType, tile_modifiers_val, 2) then
		call ebrtile_removeModifier(tile_x, tile_y, tile_key, tile_currentType, tile_lastType, tile_modifiers_val, 2)
	endif
	if ebrtile_hasModifier(tile_x, tile_y, tile_key, tile_currentType, tile_lastType, tile_modifiers_val, 3) then
		call ebrtile_removeModifier(tile_x, tile_y, tile_key, tile_currentType, tile_lastType, tile_modifiers_val, 3)
	endif
	call image_remove(Goo_img[this_1])
endfunction

function dealloc_Goo takes integer obj_1 returns nothing
	if Goo_typeId[obj_1] == 0 then
		call error("Double free: object of type Goo")
	else
		set Goo_nextFree[Goo_firstFree] = obj_1
		set Goo_firstFree = Goo_firstFree + 1
		set Goo_typeId[obj_1] = 0
	endif
endfunction

function destroyGoo takes integer this_1 returns nothing
	call Goo_onDestroy(this_1)
	call dealloc_Goo(this_1)
endfunction

function dispatch_Goo_destroyGoo takes integer this_1 returns nothing
	if Goo_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling Goo.Goo")
		else
			call error("Called Goo.Goo on invalid object.")
		endif
	endif
	call destroyGoo(this_1)
endfunction

function Jumper_onDestroy takes integer this_1 returns nothing
	local integer i = 0
	loop
		exitwhen i > 4
		if Jumper_goos_get(this_1, i) != 0 then
			call dispatch_Goo_destroyGoo(Jumper_goos_get(this_1, i))
		endif
		set i = i + 1
	endloop
	call dispatch_ConfigValue_destroyConfigValue(Jumper_jumpForce[this_1])
	call StaticBaseObject_onDestroy(this_1)
endfunction

function dealloc_Jumper takes integer obj_1 returns nothing
	if Serializable_typeId[obj_1] == 0 then
		call error("Double free: object of type Jumper")
	else
		set Serializable_nextFree[Serializable_firstFree] = obj_1
		set Serializable_firstFree = Serializable_firstFree + 1
		set Serializable_typeId[obj_1] = 0
	endif
endfunction

function destroyJumper takes integer this_1 returns nothing
	call Jumper_onDestroy(this_1)
	call dealloc_Jumper(this_1)
endfunction

function Knockbacker_onDestroy takes integer this_1 returns nothing
	call dispatch_ConfigValue_destroyConfigValue(Knockbacker_kforce[this_1])
	call dispatch_ConfigValue_destroyConfigValue(Knockbacker_damage[this_1])
	call EscaperSensorSetup_onDestroy(this_1)
endfunction

function dealloc_Knockbacker takes integer obj_1 returns nothing
	if Serializable_typeId[obj_1] == 0 then
		call error("Double free: object of type Knockbacker")
	else
		set Serializable_nextFree[Serializable_firstFree] = obj_1
		set Serializable_firstFree = Serializable_firstFree + 1
		set Serializable_typeId[obj_1] = 0
	endif
endfunction

function destroyKnockbacker takes integer this_1 returns nothing
	call Knockbacker_onDestroy(this_1)
	call dealloc_Knockbacker(this_1)
endfunction

function FText_LinkedListModule_remove takes integer this_1 returns nothing
	set FText_LinkedListModule_size = FText_LinkedListModule_size - 1
	if this_1 != FText_LinkedListModule_first then
		set FText_LinkedListModule_next[FText_LinkedListModule_prev[this_1]] = FText_LinkedListModule_next[this_1]
	else
		set FText_LinkedListModule_first = FText_LinkedListModule_next[this_1]
	endif
	if this_1 != FText_LinkedListModule_last then
		set FText_LinkedListModule_prev[FText_LinkedListModule_next[this_1]] = FText_LinkedListModule_prev[this_1]
	else
		set FText_LinkedListModule_last = FText_LinkedListModule_prev[this_1]
	endif
endfunction

function dispatch_FText_FText_FText_LinkedListModule_remove takes integer this_1 returns nothing
	if FText_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling FText.remove")
		else
			call error("Called FText.remove on invalid object.")
		endif
	endif
	call FText_LinkedListModule_remove(this_1)
endfunction

function texttag_destr takes texttag this_1 returns nothing
	call DestroyTextTag(this_1)
endfunction

function FText_onDestroy takes integer this_1 returns nothing
	if FText_tt[this_1] != null then
		call texttag_destr(FText_tt[this_1])
		set FText_tt[this_1] = null
	endif
	call dispatch_FText_FText_FText_LinkedListModule_remove(this_1)
endfunction

function dealloc_FText takes integer obj_1 returns nothing
	if FText_typeId[obj_1] == 0 then
		call error("Double free: object of type FText")
	else
		set FText_nextFree[FText_firstFree] = obj_1
		set FText_firstFree = FText_firstFree + 1
		set FText_typeId[obj_1] = 0
	endif
endfunction

function destroyFText takes integer this_1 returns nothing
	call FText_onDestroy(this_1)
	call dealloc_FText(this_1)
endfunction

function dispatch_FText_destroyFText takes integer this_1 returns nothing
	if FText_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling FText.FText")
		else
			call error("Called FText.FText on invalid object.")
		endif
	endif
	call destroyFText(this_1)
endfunction

function texttag_setColor_4081 takes texttag this_1, integer col_red, integer col_green, integer col_blue, integer col_alpha returns nothing
	call SetTextTagColor(this_1, col_red, col_green, col_blue, col_alpha)
endfunction

function texttag_setVisibility takes texttag this_1, boolean flag returns nothing
	call SetTextTagVisibility(this_1, flag)
endfunction

function FText_recycle takes integer this_1 returns nothing
	local texttag receiver
	local texttag receiver_1
	local texttag receiver_2
	set FText_cb[this_1] = 0
	set FText_timestamp[this_1] = 0.
	if FText_permanent[this_1] then
		call dispatch_FText_destroyFText(this_1)
	else
		set receiver = FText_tt[this_1]
		call texttag_setVisibility(receiver, false)
		set receiver_1 = receiver
		call texttag_setColor_4081(receiver_1, Colors_COLOR_BLACK_red, Colors_COLOR_BLACK_green, Colors_COLOR_BLACK_blue, Colors_COLOR_BLACK_alpha)
		set receiver_2 = receiver_1
		call texttag_setText(receiver_2, "", 0.)
		call dispatch_LinkedList_LinkedList_LinkedList_add_1(FText_recylcer, this_1)
	endif
endfunction

function dispatch_FText_FText_FText_recycle takes integer this_1 returns nothing
	if FText_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling FText.recycle")
		else
			call error("Called FText.recycle on invalid object.")
		endif
	endif
	call FText_recycle(this_1)
endfunction

function LobbyTeleporter_onDestroy takes integer this_1 returns nothing
	if LobbyTeleporter_ftext[this_1] != 0 then
		call dispatch_FText_FText_FText_recycle(LobbyTeleporter_ftext[this_1])
	endif
	call StaticBaseObject_onDestroy(this_1)
endfunction

function dealloc_LobbyTeleporter takes integer obj_1 returns nothing
	if Serializable_typeId[obj_1] == 0 then
		call error("Double free: object of type LobbyTeleporter")
	else
		set Serializable_nextFree[Serializable_firstFree] = obj_1
		set Serializable_firstFree = Serializable_firstFree + 1
		set Serializable_typeId[obj_1] = 0
	endif
endfunction

function destroyLobbyTeleporter takes integer this_1 returns nothing
	call LobbyTeleporter_onDestroy(this_1)
	call dealloc_LobbyTeleporter(this_1)
endfunction

function hashtable_flushChild takes hashtable this_1, integer parentKey returns nothing
	call FlushChildHashtable(this_1, parentKey)
endfunction

function HashList_clear takes integer this_1 returns nothing
	call hashtable_flushChild(HashList_ht, this_1)
	call hashtable_flushChild(HashList_occurences, this_1)
	set HashList_size[this_1] = 0
endfunction

function HashSet_clear takes integer this_1 returns nothing
	call HashList_clear(this_1)
	call hashtable_flushChild(HashSet_position, this_1)
endfunction

function dispatch_HashList_HashList_HashList_clear takes integer this_1 returns nothing
	if HashList_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling HashList.clear")
		else
			call error("Called HashList.clear on invalid object.")
		endif
	endif
	if HashList_typeId[this_1] <= 894 then
		call HashList_clear(this_1)
	else
		call HashSet_clear(this_1)
	endif
endfunction

function HashList_onDestroy takes integer this_1 returns nothing
	call dispatch_HashList_HashList_HashList_clear(this_1)
endfunction

function dealloc_HashList takes integer obj_1 returns nothing
	if HashList_typeId[obj_1] == 0 then
		call error("Double free: object of type HashList")
	else
		set HashList_nextFree[HashList_firstFree] = obj_1
		set HashList_firstFree = HashList_firstFree + 1
		set HashList_typeId[obj_1] = 0
	endif
endfunction

function destroyHashList takes integer this_1 returns nothing
	call HashList_onDestroy(this_1)
	call dealloc_HashList(this_1)
endfunction

function HashSet_onDestroy takes integer this_1 returns nothing
	call hashtable_flushChild(HashSet_position, this_1)
	call HashList_onDestroy(this_1)
endfunction

function dealloc_HashSet takes integer obj_1 returns nothing
	if HashList_typeId[obj_1] == 0 then
		call error("Double free: object of type HashSet")
	else
		set HashList_nextFree[HashList_firstFree] = obj_1
		set HashList_firstFree = HashList_firstFree + 1
		set HashList_typeId[obj_1] = 0
	endif
endfunction

function destroyHashSet takes integer this_1 returns nothing
	call HashSet_onDestroy(this_1)
	call dealloc_HashSet(this_1)
endfunction

function dispatch_HashList_destroyHashList takes integer this_1 returns nothing
	if HashList_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling HashList.HashList")
		else
			call error("Called HashList.HashList on invalid object.")
		endif
	endif
	if HashList_typeId[this_1] <= 894 then
		call destroyHashList(this_1)
	else
		call destroyHashSet(this_1)
	endif
endfunction

function Table_flush takes integer this_1 returns nothing
	call hashtable_flushChild(Table_ht, this_1)
endfunction

function HashMap_flush takes integer this_1 returns nothing
	set HashMap_size[this_1] = 0
	call Table_flush(this_1)
endfunction

function IterableMap_flush takes integer this_1 returns nothing
	if  not IterableMap__destroyed[this_1] then
		call dispatch_HashList_HashList_HashList_clear(IterableMap_keys[this_1])
	endif
	call HashMap_flush(this_1)
endfunction

function dispatch_Table_Table_Table_flush takes integer this_1 returns nothing
	if Table_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling Table.flush")
		else
			call error("Called Table.flush on invalid object.")
		endif
	endif
	if Table_typeId[this_1] <= 1494 then
		if Table_typeId[this_1] <= 1493 then
			call Table_flush(this_1)
		else
			call HashMap_flush(this_1)
		endif
	else
		call IterableMap_flush(this_1)
	endif
endfunction

function Table_onDestroy takes integer this_1 returns nothing
	call dispatch_Table_Table_Table_flush(this_1)
endfunction

function HashMap_onDestroy takes integer this_1 returns nothing
	call Table_onDestroy(this_1)
endfunction

function dealloc_HashMap takes integer obj_1 returns nothing
	if Table_typeId[obj_1] == 0 then
		call error("Double free: object of type HashMap")
	else
		set Table_nextFree[Table_firstFree] = obj_1
		set Table_firstFree = Table_firstFree + 1
		set Table_typeId[obj_1] = 0
	endif
endfunction

function destroyHashMap takes integer this_1 returns nothing
	call HashMap_onDestroy(this_1)
	call dealloc_HashMap(this_1)
endfunction

function IterableMap_onDestroy takes integer this_1 returns nothing
	call dispatch_HashList_destroyHashList(IterableMap_keys[this_1])
	set IterableMap__destroyed[this_1] = true
	call HashMap_onDestroy(this_1)
endfunction

function dealloc_IterableMap takes integer obj_1 returns nothing
	if Table_typeId[obj_1] == 0 then
		call error("Double free: object of type IterableMap")
	else
		set Table_nextFree[Table_firstFree] = obj_1
		set Table_firstFree = Table_firstFree + 1
		set Table_typeId[obj_1] = 0
	endif
endfunction

function destroyIterableMap takes integer this_1 returns nothing
	call IterableMap_onDestroy(this_1)
	call dealloc_IterableMap(this_1)
endfunction

function dispatch_HashMap_destroyHashMap takes integer this_1 returns nothing
	if Table_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling HashMap.HashMap")
		else
			call error("Called HashMap.HashMap on invalid object.")
		endif
	endif
	if Table_typeId[this_1] <= 1494 then
		call destroyHashMap(this_1)
	else
		call destroyIterableMap(this_1)
	endif
endfunction

function BigString_onDestroy takes integer this_1 returns nothing
	set BigString_length[this_1] = -1
endfunction

function dealloc_BigString takes integer obj_1 returns nothing
	if BigString_typeId[obj_1] == 0 then
		call error("Double free: object of type BigString")
	else
		set BigString_nextFree[BigString_firstFree] = obj_1
		set BigString_firstFree = BigString_firstFree + 1
		set BigString_typeId[obj_1] = 0
	endif
endfunction

function destroyBigString takes integer this_1 returns nothing
	call BigString_onDestroy(this_1)
	call dealloc_BigString(this_1)
endfunction

function dispatch_BigString_destroyBigString takes integer this_1 returns nothing
	if BigString_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling BigString.BigString")
		else
			call error("Called BigString.BigString on invalid object.")
		endif
	endif
	call destroyBigString(this_1)
endfunction

function BigSubString_onDestroy takes integer this_1 returns nothing
	set BigSubString_length[this_1] = -1
endfunction

function dealloc_BigSubString takes integer obj_1 returns nothing
	if BigSubString_typeId[obj_1] == 0 then
		call error("Double free: object of type BigSubString")
	else
		set BigSubString_nextFree[BigSubString_firstFree] = obj_1
		set BigSubString_firstFree = BigSubString_firstFree + 1
		set BigSubString_typeId[obj_1] = 0
	endif
endfunction

function destroyBigSubString takes integer this_1 returns nothing
	call BigSubString_onDestroy(this_1)
	call dealloc_BigSubString(this_1)
endfunction

function dispatch_BigSubString_destroyBigSubString takes integer this_1 returns nothing
	if BigSubString_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling BigSubString.BigSubString")
		else
			call error("Called BigSubString.BigSubString on invalid object.")
		endif
	endif
	call destroyBigSubString(this_1)
endfunction

function construct_LLIterator2 takes integer this_1, integer parent, boolean destroyOnClose returns nothing
	call LLIterator_init(this_1)
	set LLIterator_parent[this_1] = parent
	call dispatch_LLIterator_LinkedList_LLIterator_reset(this_1)
	set LLIterator_destroyOnClose[this_1] = destroyOnClose
endfunction

function new_LLIterator_3709 takes integer parent, boolean destroyOnClose returns integer
	local integer this_1 = alloc_LLIterator()
	call construct_LLIterator2(this_1, parent, destroyOnClose)
	return this_1
endfunction

function LinkedList_staticItr_1 takes integer this_1 returns integer
	if LinkedList_staticItr[this_1] == 0 then
		set LinkedList_staticItr[this_1] = new_LLIterator_3709(this_1, false)
	endif
	call dispatch_LLIterator_LinkedList_LLIterator_reset(LinkedList_staticItr[this_1])
	return LinkedList_staticItr[this_1]
endfunction

function dispatch_LinkedList_LinkedList_LinkedList_staticItr takes integer this_1 returns integer
	local integer LinkedList_LinkedList_staticItr_result
	if LinkedList_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling LinkedList.staticItr")
		else
			call error("Called LinkedList.staticItr on invalid object.")
		endif
	endif
	set LinkedList_LinkedList_staticItr_result = LinkedList_staticItr_1(this_1)
	return LinkedList_LinkedList_staticItr_result
endfunction

function Property_onDestroy takes integer this_1 returns nothing
	if BigSubString_length[Property_name[this_1]] >= 0 then
		call dispatch_BigSubString_destroyBigSubString(Property_name[this_1])
		set Property_name[this_1] = 0
	endif
	if BigSubString_length[Property_value[this_1]] >= 0 then
		call dispatch_BigSubString_destroyBigSubString(Property_value[this_1])
		set Property_value[this_1] = 0
	endif
endfunction

function dealloc_Property takes integer obj_1 returns nothing
	if Property_typeId[obj_1] == 0 then
		call error("Double free: object of type Property")
	else
		set Property_nextFree[Property_firstFree] = obj_1
		set Property_firstFree = Property_firstFree + 1
		set Property_typeId[obj_1] = 0
	endif
endfunction

function destroyProperty takes integer this_1 returns nothing
	call Property_onDestroy(this_1)
	call dealloc_Property(this_1)
endfunction

function dispatch_Property_destroyProperty takes integer this_1 returns nothing
	if Property_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling Property.Property")
		else
			call error("Called Property.Property on invalid object.")
		endif
	endif
	call destroyProperty(this_1)
endfunction

function Json_onDestroy takes integer this_1 returns nothing
	local integer p
	local integer from
	call dispatch_HashMap_destroyHashMap(Json_properties[this_1])
	set from = dispatch_LinkedList_LinkedList_LinkedList_staticItr(Json_plist[this_1])
	loop
		exitwhen  not LLIterator_hasNext(from)
		set p = LLIterator_next(from)
		call dispatch_Property_destroyProperty(p)
	endloop
	call dispatch_LinkedList_destroyLinkedList(Json_plist[this_1])
endfunction

function dealloc_Json takes integer obj_1 returns nothing
	if Json_typeId[obj_1] == 0 then
		call error("Double free: object of type Json")
	else
		set Json_nextFree[Json_firstFree] = obj_1
		set Json_firstFree = Json_firstFree + 1
		set Json_typeId[obj_1] = 0
	endif
endfunction

function destroyJson takes integer this_1 returns nothing
	call Json_onDestroy(this_1)
	call dealloc_Json(this_1)
endfunction

function dispatch_Json_destroyJson takes integer this_1 returns nothing
	if Json_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling Json.Json")
		else
			call error("Called Json.Json on invalid object.")
		endif
	endif
	call destroyJson(this_1)
endfunction

function JsonParser_onDestroy takes integer this_1 returns nothing
	local integer bss
	local integer from
	if JsonParser_bigInput[this_1] != 0 then
		call dispatch_BigString_destroyBigString(JsonParser_bigInput[this_1])
	endif
	if JsonParser_output[this_1] != 0 then
		call dispatch_Json_destroyJson(JsonParser_output[this_1])
	endif
	if JsonParser_outputList[this_1] != 0 then
		set from = dispatch_LinkedList_LinkedList_LinkedList_staticItr(JsonParser_outputList[this_1])
		loop
			exitwhen  not LLIterator_hasNext(from)
			set bss = LLIterator_next(from)
			call dispatch_BigSubString_destroyBigSubString(bss)
		endloop
		call dispatch_LinkedList_destroyLinkedList(JsonParser_outputList[this_1])
	endif
endfunction

function dealloc_JsonParser takes integer obj_1 returns nothing
	if JsonParser_typeId[obj_1] == 0 then
		call error("Double free: object of type JsonParser")
	else
		set JsonParser_nextFree[JsonParser_firstFree] = obj_1
		set JsonParser_firstFree = JsonParser_firstFree + 1
		set JsonParser_typeId[obj_1] = 0
	endif
endfunction

function destroyJsonParser takes integer this_1 returns nothing
	call JsonParser_onDestroy(this_1)
	call dealloc_JsonParser(this_1)
endfunction

function dispatch_JsonParser_destroyJsonParser takes integer this_1 returns nothing
	if JsonParser_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling JsonParser.JsonParser")
		else
			call error("Called JsonParser.JsonParser on invalid object.")
		endif
	endif
	call destroyJsonParser(this_1)
endfunction

function TileData_onDestroy takes integer this_1 returns nothing
	if TileData_fx[this_1] != null then
		call effect_destr(TileData_fx[this_1])
	endif
endfunction

function dealloc_TileData takes integer obj_1 returns nothing
	if Serializable_typeId[obj_1] == 0 then
		call error("Double free: object of type TileData")
	else
		set Serializable_nextFree[Serializable_firstFree] = obj_1
		set Serializable_firstFree = Serializable_firstFree + 1
		set Serializable_typeId[obj_1] = 0
	endif
endfunction

function destroyTileData takes integer this_1 returns nothing
	call TileData_onDestroy(this_1)
	call dealloc_TileData(this_1)
endfunction

function dispatch_TileData_destroyTileData takes integer this_1 returns nothing
	if Serializable_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling TileData.TileData")
		else
			call error("Called TileData.TileData on invalid object.")
		endif
	endif
	call destroyTileData(this_1)
endfunction

function MemoryAccessPedestal_onDestroy takes integer this_1 returns nothing
	local integer from = dispatch_LinkedList_LinkedList_LinkedList_staticItr(MemoryAccessPedestal_tiles[this_1])
	local integer t
	loop
		exitwhen  not LLIterator_hasNext(from)
		set t = LLIterator_next(from)
		call dispatch_TileData_destroyTileData(t)
	endloop
	call dispatch_HashMap_destroyHashMap(MemoryAccessPedestal_effects[this_1])
	call dispatch_HashList_destroyHashList(MemoryAccessPedestal_entities[this_1])
	call dispatch_LinkedList_destroyLinkedList(MemoryAccessPedestal_tiles[this_1])
	call dispatch_FText_FText_FText_recycle(MemoryAccessPedestal_ttag[this_1])
	call dispatch_JsonParser_destroyJsonParser(MemoryAccessPedestal_parser[this_1])
	call dispatch_JsonParser_destroyJsonParser(MemoryAccessPedestal_listparser[this_1])
	call StaticBaseObject_onDestroy(this_1)
endfunction

function dealloc_MemoryAccessPedestal takes integer obj_1 returns nothing
	if Serializable_typeId[obj_1] == 0 then
		call error("Double free: object of type MemoryAccessPedestal")
	else
		set Serializable_nextFree[Serializable_firstFree] = obj_1
		set Serializable_firstFree = Serializable_firstFree + 1
		set Serializable_typeId[obj_1] = 0
	endif
endfunction

function destroyMemoryAccessPedestal takes integer this_1 returns nothing
	call MemoryAccessPedestal_onDestroy(this_1)
	call dealloc_MemoryAccessPedestal(this_1)
endfunction

function MinigameTeleporter_onDestroy takes integer this_1 returns nothing
	call StaticBaseObject_onDestroy(this_1)
endfunction

function dealloc_MinigameTeleporter takes integer obj_1 returns nothing
	if Serializable_typeId[obj_1] == 0 then
		call error("Double free: object of type MinigameTeleporter")
	else
		set Serializable_nextFree[Serializable_firstFree] = obj_1
		set Serializable_firstFree = Serializable_firstFree + 1
		set Serializable_typeId[obj_1] = 0
	endif
endfunction

function destroyMinigameTeleporter takes integer this_1 returns nothing
	call MinigameTeleporter_onDestroy(this_1)
	call dealloc_MinigameTeleporter(this_1)
endfunction

function CustomBar_unlock takes integer this_1 returns nothing
	if  not CustomBar_locked[this_1] then
		return
	endif
	set CustomBar_count = CustomBar_count - 1
	if CustomBar_count == 0 then
		call PauseTimer(CustomBar_animationTimer)
	endif
	set CustomBar_bars[CustomBar_lockindex[this_1]] = CustomBar_bars[CustomBar_count]
	set CustomBar_lockindex[CustomBar_bars[CustomBar_count]] = CustomBar_lockindex[this_1]
	set CustomBar_locked[this_1] = false
endfunction

function dispatch_CustomBar_CustomBar_CustomBar_unlock takes integer this_1 returns nothing
	if CustomBar_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling CustomBar.unlock")
		else
			call error("Called CustomBar.unlock on invalid object.")
		endif
	endif
	call CustomBar_unlock(this_1)
endfunction

function CustomBar_onDestroy takes integer this_1 returns nothing
	if CustomBar_t[this_1] != null then
		call DestroyTextTag(CustomBar_t[this_1])
	endif
	if CustomBar_locked[this_1] then
		call dispatch_CustomBar_CustomBar_CustomBar_unlock(this_1)
	endif
endfunction

function dealloc_CustomBar takes integer obj_1 returns nothing
	if CustomBar_typeId[obj_1] == 0 then
		call error("Double free: object of type CustomBar")
	else
		set CustomBar_nextFree[CustomBar_firstFree] = obj_1
		set CustomBar_firstFree = CustomBar_firstFree + 1
		set CustomBar_typeId[obj_1] = 0
	endif
endfunction

function destroyCustomBar takes integer this_1 returns nothing
	call CustomBar_onDestroy(this_1)
	call dealloc_CustomBar(this_1)
endfunction

function dispatch_CustomBar_destroyCustomBar takes integer this_1 returns nothing
	if CustomBar_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling CustomBar.CustomBar")
		else
			call error("Called CustomBar.CustomBar on invalid object.")
		endif
	endif
	call destroyCustomBar(this_1)
endfunction

function Minion_onDestroy takes integer this_1 returns nothing
	call dispatch_CustomBar_destroyCustomBar(Minion_hpBar[this_1])
	call EscaperSensorSetup_onDestroy(this_1)
endfunction

function dealloc_Minion takes integer obj_1 returns nothing
	if Serializable_typeId[obj_1] == 0 then
		call error("Double free: object of type Minion")
	else
		set Serializable_nextFree[Serializable_firstFree] = obj_1
		set Serializable_firstFree = Serializable_firstFree + 1
		set Serializable_typeId[obj_1] = 0
	endif
endfunction

function destroyMinion takes integer this_1 returns nothing
	call Minion_onDestroy(this_1)
	call dealloc_Minion(this_1)
endfunction

function ObjectTarget_onDestroy takes integer this_1 returns nothing
	call SetupObject_onDestroy(this_1)
endfunction

function dealloc_ObjectTarget takes integer obj_1 returns nothing
	if Serializable_typeId[obj_1] == 0 then
		call error("Double free: object of type ObjectTarget")
	else
		set Serializable_nextFree[Serializable_firstFree] = obj_1
		set Serializable_firstFree = Serializable_firstFree + 1
		set Serializable_typeId[obj_1] = 0
	endif
endfunction

function destroyObjectTarget takes integer this_1 returns nothing
	call ObjectTarget_onDestroy(this_1)
	call dealloc_ObjectTarget(this_1)
endfunction

function OrbProjectile_onDestroy takes integer this_1 returns nothing
	local unit receiver
	local unit receiver_1
	set Escaper_orb[OrbProjectile_e[this_1]] = 0
	set receiver = UnitEntity_actor[OrbProjectile_e[this_1]]
	call unit_removeAbility(receiver, Escaper_JAUNT_SPELL)
	set receiver_1 = receiver
	call unit_addAbility(receiver_1, RegionData_specialAbil[Entity_getCurrentRegion(OrbProjectile_e[this_1])])
	call Projectile_onDestroy(this_1)
endfunction

function dealloc_OrbProjectile takes integer obj_1 returns nothing
	if Serializable_typeId[obj_1] == 0 then
		call error("Double free: object of type OrbProjectile")
	else
		set Serializable_nextFree[Serializable_firstFree] = obj_1
		set Serializable_firstFree = Serializable_firstFree + 1
		set Serializable_typeId[obj_1] = 0
	endif
endfunction

function destroyOrbProjectile takes integer this_1 returns nothing
	call OrbProjectile_onDestroy(this_1)
	call dealloc_OrbProjectile(this_1)
endfunction

function Pointer_onDestroy takes integer this_1 returns nothing
	call EscaperSensorSetup_onDestroy(this_1)
endfunction

function dealloc_Pointer takes integer obj_1 returns nothing
	if Serializable_typeId[obj_1] == 0 then
		call error("Double free: object of type Pointer")
	else
		set Serializable_nextFree[Serializable_firstFree] = obj_1
		set Serializable_firstFree = Serializable_firstFree + 1
		set Serializable_typeId[obj_1] = 0
	endif
endfunction

function destroyPointer takes integer this_1 returns nothing
	call Pointer_onDestroy(this_1)
	call dealloc_Pointer(this_1)
endfunction

function Portal_onDestroy takes integer this_1 returns nothing
	set FastEscaper_portal[Portal_es[this_1]] = 0
	if Portal_targetFx[this_1] != 0 then
		call dispatch_Fx_Fx_Fx_hiddenDestroy(Portal_targetFx[this_1])
		set Portal_targetFx[this_1] = 0
	endif
	if Portal_Sensor_inRangeTrig[this_1] != null then
		call dispatch_SensorListener_destroySensorListener(dispatch_HashMap_HashMap_HashMap_get(Portal_Sensor_sensorListeners, triggerToIndex(Portal_Sensor_inRangeTrig[this_1])))
		call dispatch_HashMap_HashMap_HashMap_remove(Portal_Sensor_sensorListeners, triggerToIndex(Portal_Sensor_inRangeTrig[this_1]))
		call unit_clearRegister(Portal_Sensor_actorRef[this_1])
		set Portal_Sensor_inRangeTrig[this_1] = null
	endif
	call FxEntity_onDestroy(this_1)
endfunction

function dealloc_Portal takes integer obj_1 returns nothing
	if Serializable_typeId[obj_1] == 0 then
		call error("Double free: object of type Portal")
	else
		set Serializable_nextFree[Serializable_firstFree] = obj_1
		set Serializable_firstFree = Serializable_firstFree + 1
		set Serializable_typeId[obj_1] = 0
	endif
endfunction

function destroyPortal takes integer this_1 returns nothing
	call Portal_onDestroy(this_1)
	call dealloc_Portal(this_1)
endfunction

function Link_onDestroy takes integer this_1 returns nothing
	if Link_prev[this_1] != 0 then
		set Link_next[Link_prev[this_1]] = Link_next[this_1]
	endif
	if Link_next[this_1] != 0 then
		set Link_prev[Link_next[this_1]] = Link_prev[this_1]
	endif
	if Powernode_firstLink[Link_parent[this_1]] == this_1 then
		set Powernode_firstLink[Link_parent[this_1]] = Link_next[this_1]
	endif
	call DestroyLightning(Link_sfx[this_1])
endfunction

function dealloc_Link takes integer obj_1 returns nothing
	if Link_typeId[obj_1] == 0 then
		call error("Double free: object of type Link")
	else
		set Link_nextFree[Link_firstFree] = obj_1
		set Link_firstFree = Link_firstFree + 1
		set Link_typeId[obj_1] = 0
	endif
endfunction

function destroyLink takes integer this_1 returns nothing
	call Link_onDestroy(this_1)
	call dealloc_Link(this_1)
endfunction

function dispatch_Link_destroyLink takes integer this_1 returns nothing
	if Link_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling Link.Link")
		else
			call error("Called Link.Link on invalid object.")
		endif
	endif
	call destroyLink(this_1)
endfunction

function Powernode_onDestroy takes integer this_1 returns nothing
	local integer l = Powernode_firstLink[this_1]
	local integer tmp
	loop
		exitwhen  not (l != 0)
		set tmp = l
		set l = Link_next[l]
		call dispatch_Link_destroyLink(tmp)
	endloop
	call dispatch_ConfigValue_destroyConfigValue(Powernode_bounciness[this_1])
	call SetupObject_onDestroy(this_1)
endfunction

function dealloc_Powernode takes integer obj_1 returns nothing
	if Serializable_typeId[obj_1] == 0 then
		call error("Double free: object of type Powernode")
	else
		set Serializable_nextFree[Serializable_firstFree] = obj_1
		set Serializable_firstFree = Serializable_firstFree + 1
		set Serializable_typeId[obj_1] = 0
	endif
endfunction

function destroyPowernode takes integer this_1 returns nothing
	call Powernode_onDestroy(this_1)
	call dealloc_Powernode(this_1)
endfunction

function dealloc_Projectile takes integer obj_1 returns nothing
	if Serializable_typeId[obj_1] == 0 then
		call error("Double free: object of type Projectile")
	else
		set Serializable_nextFree[Serializable_firstFree] = obj_1
		set Serializable_firstFree = Serializable_firstFree + 1
		set Serializable_typeId[obj_1] = 0
	endif
endfunction

function destroyProjectile takes integer this_1 returns nothing
	call Projectile_onDestroy(this_1)
	call dealloc_Projectile(this_1)
endfunction

function vec3_getEBRTile takes real this_x, real this_y, real this_z returns integer
	set vec3_getEBRTile_return_x = vec2_getEBRTile(vec3_toVec2(this_x, this_y, this_z), vec3_toVec2_return_y)
	set vec3_getEBRTile_return_y = vec2_getEBRTile_return_y
	set vec3_getEBRTile_return_key = vec2_getEBRTile_return_key
	set vec3_getEBRTile_return_currentType = vec2_getEBRTile_return_currentType
	set vec3_getEBRTile_return_lastType = vec2_getEBRTile_return_lastType
	set vec3_getEBRTile_return_modifiers_val = vec2_getEBRTile_return_modifiers_val
	return vec3_getEBRTile_return_x
endfunction

function RevivePoint_onDestroy takes integer this_1 returns nothing
	call ebrtile_removeModifier(vec3_getEBRTile(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1]), vec3_getEBRTile_return_y, vec3_getEBRTile_return_key, vec3_getEBRTile_return_currentType, vec3_getEBRTile_return_lastType, vec3_getEBRTile_return_modifiers_val, 4)
	call StaticSetupObject_onDestroy(this_1)
endfunction

function dealloc_RevivePoint takes integer obj_1 returns nothing
	if Serializable_typeId[obj_1] == 0 then
		call error("Double free: object of type RevivePoint")
	else
		set Serializable_nextFree[Serializable_firstFree] = obj_1
		set Serializable_firstFree = Serializable_firstFree + 1
		set Serializable_typeId[obj_1] = 0
	endif
endfunction

function destroyRevivePoint takes integer this_1 returns nothing
	call RevivePoint_onDestroy(this_1)
	call dealloc_RevivePoint(this_1)
endfunction

function Selector_onDestroy takes integer this_1 returns nothing
	set PlayerData_selector[Selector_pd[this_1]] = 0
	call UnitEntity_onDestroy(this_1)
endfunction

function dealloc_Selector takes integer obj_1 returns nothing
	if Serializable_typeId[obj_1] == 0 then
		call error("Double free: object of type Selector")
	else
		set Serializable_nextFree[Serializable_firstFree] = obj_1
		set Serializable_firstFree = Serializable_firstFree + 1
		set Serializable_typeId[obj_1] = 0
	endif
endfunction

function destroySelector takes integer this_1 returns nothing
	call Selector_onDestroy(this_1)
	call dealloc_Selector(this_1)
endfunction

function SetupBox_onDestroy takes integer this_1 returns nothing
	call UnitEntity_onDestroy(this_1)
endfunction

function dealloc_SetupBox takes integer obj_1 returns nothing
	if Serializable_typeId[obj_1] == 0 then
		call error("Double free: object of type SetupBox")
	else
		set Serializable_nextFree[Serializable_firstFree] = obj_1
		set Serializable_firstFree = Serializable_firstFree + 1
		set Serializable_typeId[obj_1] = 0
	endif
endfunction

function destroySetupBox takes integer this_1 returns nothing
	call SetupBox_onDestroy(this_1)
	call dealloc_SetupBox(this_1)
endfunction

function dealloc_SetupObject takes integer obj_1 returns nothing
	if Serializable_typeId[obj_1] == 0 then
		call error("Double free: object of type SetupObject")
	else
		set Serializable_nextFree[Serializable_firstFree] = obj_1
		set Serializable_firstFree = Serializable_firstFree + 1
		set Serializable_typeId[obj_1] = 0
	endif
endfunction

function destroySetupObject takes integer this_1 returns nothing
	call SetupObject_onDestroy(this_1)
	call dealloc_SetupObject(this_1)
endfunction

function ShipProjectile_onDestroy takes integer this_1 returns nothing
	call dispatch_LinkedList_LinkedList_LinkedList_remove(Spaceship_projectiles[ShipProjectile_ship[this_1]], this_1)
	call Projectile_onDestroy(this_1)
endfunction

function dealloc_ShipProjectile takes integer obj_1 returns nothing
	if Serializable_typeId[obj_1] == 0 then
		call error("Double free: object of type ShipProjectile")
	else
		set Serializable_nextFree[Serializable_firstFree] = obj_1
		set Serializable_firstFree = Serializable_firstFree + 1
		set Serializable_typeId[obj_1] = 0
	endif
endfunction

function destroyShipProjectile takes integer this_1 returns nothing
	call ShipProjectile_onDestroy(this_1)
	call dealloc_ShipProjectile(this_1)
endfunction

function SmallKiller_onDestroy takes integer this_1 returns nothing
	call EscaperSensorSetup_onDestroy(this_1)
endfunction

function dealloc_SmallKiller takes integer obj_1 returns nothing
	if Serializable_typeId[obj_1] == 0 then
		call error("Double free: object of type SmallKiller")
	else
		set Serializable_nextFree[Serializable_firstFree] = obj_1
		set Serializable_firstFree = Serializable_firstFree + 1
		set Serializable_typeId[obj_1] = 0
	endif
endfunction

function destroySmallKiller takes integer this_1 returns nothing
	call SmallKiller_onDestroy(this_1)
	call dealloc_SmallKiller(this_1)
endfunction

function SmallObstacle_onDestroy takes integer this_1 returns nothing
	call StaticEscaperSensorSetup_onDestroy(this_1)
endfunction

function dealloc_SmallObstacle takes integer obj_1 returns nothing
	if Serializable_typeId[obj_1] == 0 then
		call error("Double free: object of type SmallObstacle")
	else
		set Serializable_nextFree[Serializable_firstFree] = obj_1
		set Serializable_firstFree = Serializable_firstFree + 1
		set Serializable_typeId[obj_1] = 0
	endif
endfunction

function destroySmallObstacle takes integer this_1 returns nothing
	call SmallObstacle_onDestroy(this_1)
	call dealloc_SmallObstacle(this_1)
endfunction

function SmallRandomKiller_onDestroy takes integer this_1 returns nothing
	call EscaperSensorSetup_onDestroy(this_1)
endfunction

function dealloc_SmallRandomKiller takes integer obj_1 returns nothing
	if Serializable_typeId[obj_1] == 0 then
		call error("Double free: object of type SmallRandomKiller")
	else
		set Serializable_nextFree[Serializable_firstFree] = obj_1
		set Serializable_firstFree = Serializable_firstFree + 1
		set Serializable_typeId[obj_1] = 0
	endif
endfunction

function destroySmallRandomKiller takes integer this_1 returns nothing
	call SmallRandomKiller_onDestroy(this_1)
	call dealloc_SmallRandomKiller(this_1)
endfunction

function alloc_SpaceRock takes nothing returns integer
	local integer this_1
	if Serializable_firstFree == 0 then
		if Serializable_maxIndex < JASS_MAX_ARRAY_SIZE then
			set Serializable_maxIndex = Serializable_maxIndex + 1
			set this_1 = Serializable_maxIndex
			set Serializable_typeId[this_1] = 1148
		else
			call error("Out of memory: Could not create SpaceRock.")
			set this_1 = 0
		endif
	else
		set Serializable_firstFree = Serializable_firstFree - 1
		set this_1 = Serializable_nextFree[Serializable_firstFree]
		set Serializable_typeId[this_1] = 1148
	endif
	return this_1
endfunction

function SpaceRock_init takes integer this_1 returns nothing
endfunction

function Fx2Entity_init takes integer this_1 returns nothing
	set Fx2Entity_silent[this_1] = false
endfunction

function Entity_DupletListModule_addToActive takes integer this_1 returns nothing
	set Entity_DupletListModule_activeSize = Entity_DupletListModule_activeSize + 1
	if Entity_DupletListModule_activeSize == 1 then
		set Entity_DupletListModule_firstActive = this_1
		set Entity_DupletListModule_prev[this_1] = 0
	else
		set Entity_DupletListModule_prev[this_1] = Entity_DupletListModule_lastActive
		set Entity_DupletListModule_next[Entity_DupletListModule_lastActive] = this_1
		set Entity_DupletListModule_prev[Entity_DupletListModule_firstActive] = this_1
	endif
	set Entity_DupletListModule_next[this_1] = 0
	set Entity_DupletListModule_lastActive = this_1
endfunction

function dispatch_Entity_Entity_Entity_DupletListModule_addToActive takes integer this_1 returns nothing
	if Serializable_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling Entity.addToActive")
		else
			call error("Called Entity.addToActive on invalid object.")
		endif
	endif
	call Entity_DupletListModule_addToActive(this_1)
endfunction

function construct_Entity_DupletListModule takes integer this_1 returns nothing
	call dispatch_Entity_Entity_Entity_DupletListModule_addToActive(this_1)
endfunction

function Entity_init takes integer this_1 returns nothing
	set Entity_DupletListModule_active[this_1] = true
	set Entity_gravity[this_1] = PhysicsConstants_defaultGravity
	set Entity_speedFactor[this_1] = 1.
	set Entity_flying[this_1] = false
	set Entity_done[this_1] = false
	set Entity_sleeps[this_1] = true
	set Entity_idleSeconds[this_1] = 0
	call construct_Entity_DupletListModule(this_1)
endfunction

function Entity_setFlying takes integer this_1, boolean flag returns nothing
	set Entity_flying[this_1] = flag
endfunction

function Entity_DupletListModule_activate takes integer this_1 returns nothing
	if  not Entity_DupletListModule_active[this_1] then
		set Entity_DupletListModule_active[this_1] = true
		call dispatch_Entity_Entity_Entity_DupletListModule_removeFromInactive(this_1)
		call dispatch_Entity_Entity_Entity_DupletListModule_addToActive(this_1)
	endif
endfunction

function alloc_Iterator_1821 takes nothing returns integer
	local integer this_1
	if Iterator_firstFree_1036 == 0 then
		if Iterator_maxIndex_1040 < JASS_MAX_ARRAY_SIZE then
			set Iterator_maxIndex_1040 = Iterator_maxIndex_1040 + 1
			set this_1 = Iterator_maxIndex_1040
			set Iterator_typeId_1048[this_1] = 980
		else
			call error("Out of memory: Could not create Iterator.")
			set this_1 = 0
		endif
	else
		set Iterator_firstFree_1036 = Iterator_firstFree_1036 - 1
		set this_1 = Iterator_nextFree_1044[Iterator_firstFree_1036]
		set Iterator_typeId_1048[this_1] = 980
	endif
	return this_1
endfunction

function Iterator_init_803 takes integer this_1 returns nothing
	set Iterator_current_1032[this_1] = FText_LinkedListModule_first
endfunction

function construct_Iterator_2227 takes integer this_1, boolean destroyOnClose returns nothing
	call Iterator_init_803(this_1)
	set Iterator_destroyOnClose[this_1] = destroyOnClose
endfunction

function new_Iterator_3696 takes boolean destroyOnClose returns integer
	local integer this_1 = alloc_Iterator_1821()
	call construct_Iterator_2227(this_1, destroyOnClose)
	return this_1
endfunction

function FText_LinkedListModule_iterator takes nothing returns integer
	return new_Iterator_3696(true)
endfunction

function Iterator_onDestroy takes integer this_1 returns nothing
endfunction

function dealloc_Iterator takes integer obj_1 returns nothing
	if Iterator_typeId_1048[obj_1] == 0 then
		call error("Double free: object of type Iterator")
	else
		set Iterator_nextFree_1044[Iterator_firstFree_1036] = obj_1
		set Iterator_firstFree_1036 = Iterator_firstFree_1036 + 1
		set Iterator_typeId_1048[obj_1] = 0
	endif
endfunction

function destroyIterator takes integer this_1 returns nothing
	call Iterator_onDestroy(this_1)
	call dealloc_Iterator(this_1)
endfunction

function dispatch_Iterator_destroyIterator takes integer this_1 returns nothing
	if Iterator_typeId_1048[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling Iterator.Iterator")
		else
			call error("Called Iterator.Iterator on invalid object.")
		endif
	endif
	call destroyIterator(this_1)
endfunction

function Iterator_close takes integer this_1 returns nothing
	if Iterator_destroyOnClose[this_1] then
		call dispatch_Iterator_destroyIterator(this_1)
	endif
endfunction

function Iterator_hasNext_800 takes integer this_1 returns boolean
	return Iterator_current_1032[this_1] != 0
endfunction

function Iterator_next_807 takes integer this_1 returns integer
	local integer res = Iterator_current_1032[this_1]
	set Iterator_current_1032[this_1] = FText_LinkedListModule_next[Iterator_current_1032[this_1]]
	return res
endfunction

function alloc_CallbackSingle_doAfter_FText_FText takes nothing returns integer
	local integer this_1
	if CallbackSingle_firstFree == 0 then
		if CallbackSingle_maxIndex < JASS_MAX_ARRAY_SIZE then
			set CallbackSingle_maxIndex = CallbackSingle_maxIndex + 1
			set this_1 = CallbackSingle_maxIndex
			set CallbackSingle_typeId[this_1] = 683
		else
			call error("Out of memory: Could not create CallbackSingle_doAfter_FText_FText.")
			set this_1 = 0
		endif
	else
		set CallbackSingle_firstFree = CallbackSingle_firstFree - 1
		set this_1 = CallbackSingle_nextFree[CallbackSingle_firstFree]
		set CallbackSingle_typeId[this_1] = 683
	endif
	return this_1
endfunction

function CallbackSingle_onDestroy takes integer this_1 returns nothing
	call timer_release(CallbackSingle_t[this_1])
endfunction

function dealloc_CallbackSingle takes integer obj_1 returns nothing
	if CallbackSingle_typeId[obj_1] == 0 then
		call error("Double free: object of type CallbackSingle")
	else
		set CallbackSingle_nextFree[CallbackSingle_firstFree] = obj_1
		set CallbackSingle_firstFree = CallbackSingle_firstFree + 1
		set CallbackSingle_typeId[obj_1] = 0
	endif
endfunction

function destroyCallbackSingle takes integer this_1 returns nothing
	call CallbackSingle_onDestroy(this_1)
	call dealloc_CallbackSingle(this_1)
endfunction

function dispatch_CallbackSingle_destroyCallbackSingle takes integer this_1 returns nothing
	if CallbackSingle_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling CallbackSingle.CallbackSingle")
		else
			call error("Called CallbackSingle.CallbackSingle on invalid object.")
		endif
	endif
	call destroyCallbackSingle(this_1)
endfunction

function timer_getElapsed takes timer this_1 returns real
	return TimerGetElapsed(this_1)
endfunction

function getElapsedGameTime takes nothing returns real
	return timer_getElapsed(GameTimer_gameTimer)
endfunction

function texttag_setLifespan takes texttag this_1, real span returns nothing
	call SetTextTagLifespan(this_1, span)
endfunction

function texttag_setVelocity takes texttag this_1, real xvel, real yvel returns nothing
	call SetTextTagVelocity(this_1, xvel, yvel)
endfunction

function FText_setDynamic takes integer this_1, real vel_x, real vel_y, real lifespan returns nothing
	local texttag receiver = FText_tt[this_1]
	local texttag receiver_1
	local integer clVar
	local real temp
	call texttag_setVelocity(receiver, vel_x, vel_y)
	set receiver_1 = receiver
	call texttag_setLifespan(receiver_1, lifespan)
	set FText_timestamp[this_1] = getElapsedGameTime()
	if FText_cb[this_1] != 0 then
		call dispatch_CallbackSingle_destroyCallbackSingle(FText_cb[this_1])
	endif
	set temp = lifespan - 0.025
	set clVar = alloc_CallbackSingle_doAfter_FText_FText()
	call construct_CallbackSingle(clVar)
	set this_2901[clVar] = this_1
	set FText_cb[this_1] = doAfter(temp, clVar)
endfunction

function dispatch_FText_FText_FText_setDynamic takes integer this_1, real vel_x, real vel_y, real lifespan returns nothing
	if FText_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling FText.setDynamic")
		else
			call error("Called FText.setDynamic on invalid object.")
		endif
	endif
	call FText_setDynamic(this_1, vel_x, vel_y, lifespan)
endfunction

function FText_setPermanent takes integer this_1 returns nothing
	set FText_permanent[this_1] = true
	if FText_cb[this_1] != 0 then
		call dispatch_CallbackSingle_destroyCallbackSingle(FText_cb[this_1])
		set FText_cb[this_1] = 0
	endif
endfunction

function dispatch_FText_FText_FText_setPermanent takes integer this_1 returns nothing
	if FText_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling FText.setPermanent")
		else
			call error("Called FText.setPermanent on invalid object.")
		endif
	endif
	call FText_setPermanent(this_1)
endfunction

function texttag_setAge takes texttag this_1, real age returns nothing
	call SetTextTagAge(this_1, age)
endfunction

function texttag_setFadepoint takes texttag this_1, real fadepoint returns nothing
	call SetTextTagFadepoint(this_1, fadepoint)
endfunction

function FText_setup takes integer this_1, string text, real pos_x_1, real pos_y_1, real pos_z, real size returns nothing
	local texttag receiver = FText_tt[this_1]
	local texttag receiver_1
	local texttag receiver_2
	local texttag receiver_3
	local texttag receiver_4
	local texttag receiver_5
	local texttag receiver_6
	call texttag_setText(receiver, text, size)
	set receiver_1 = receiver
	call texttag_setPos(receiver_1, pos_x_1, pos_y_1, pos_z)
	set receiver_2 = receiver_1
	call texttag_setAge(receiver_2, 0.)
	set receiver_3 = receiver_2
	call texttag_setVisibility(receiver_3, true)
	set receiver_4 = receiver_3
	call texttag_setVelocity(receiver_4, Vectors_ZERO2_x, Vectors_ZERO2_y)
	set receiver_5 = receiver_4
	call texttag_setFadepoint(receiver_5, .45)
	set receiver_6 = receiver_5
	call texttag_setLifespan(receiver_6, Real_REAL_MAX)
endfunction

function dispatch_FText_FText_FText_setup takes integer this_1, string text, real pos_x_1, real pos_y_1, real pos_z, real size returns nothing
	if FText_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling FText.setup")
		else
			call error("Called FText.setup on invalid object.")
		endif
	endif
	call FText_setup(this_1, text, pos_x_1, pos_y_1, pos_z, size)
endfunction

function LinkedList_dequeue takes integer this_1 returns integer
	local integer top = LLEntry_next[LinkedList_dummy[this_1]]
	local integer result_1 = 0
	if top != LinkedList_dummy[this_1] then
		set result_1 = LLEntry_elem[top]
		call dispatch_LinkedList_LinkedList_LinkedList_removeEntry(this_1, top)
	endif
	return result_1
endfunction

function dispatch_LinkedList_LinkedList_LinkedList_dequeue takes integer this_1 returns integer
	local integer LinkedList_LinkedList_dequeue_result
	if LinkedList_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling LinkedList.dequeue")
		else
			call error("Called LinkedList.dequeue on invalid object.")
		endif
	endif
	set LinkedList_LinkedList_dequeue_result = LinkedList_dequeue(this_1)
	return LinkedList_LinkedList_dequeue_result
endfunction

function alloc_FText takes nothing returns integer
	local integer this_1
	if FText_firstFree == 0 then
		if FText_maxIndex < JASS_MAX_ARRAY_SIZE then
			set FText_maxIndex = FText_maxIndex + 1
			set this_1 = FText_maxIndex
			set FText_typeId[this_1] = 832
		else
			call error("Out of memory: Could not create FText.")
			set this_1 = 0
		endif
	else
		set FText_firstFree = FText_firstFree - 1
		set this_1 = FText_nextFree[FText_firstFree]
		set FText_typeId[this_1] = 832
	endif
	return this_1
endfunction

function construct_FText_LinkedListModule takes integer this_1 returns nothing
	set FText_LinkedListModule_size = FText_LinkedListModule_size + 1
	if FText_LinkedListModule_size == 1 then
		set FText_LinkedListModule_first = this_1
		set FText_LinkedListModule_prev[this_1] = 0
	else
		set FText_LinkedListModule_prev[this_1] = FText_LinkedListModule_last
		set FText_LinkedListModule_next[FText_LinkedListModule_last] = this_1
		set FText_LinkedListModule_prev[FText_LinkedListModule_first] = this_1
	endif
	set FText_LinkedListModule_next[this_1] = 0
	set FText_LinkedListModule_last = this_1
endfunction

function FText_init takes integer this_1 returns nothing
	set FText_tt[this_1] = CreateTextTag()
	set FText_permanent[this_1] = false
	set FText_timestamp[this_1] = 0.
	set FText_cb[this_1] = 0
	call construct_FText_LinkedListModule(this_1)
endfunction

function texttag_setPermanent takes texttag this_1, boolean flag returns nothing
	call SetTextTagPermanent(this_1, flag)
endfunction

function construct_FText takes integer this_1 returns nothing
	local texttag receiver
	call FText_init(this_1)
	set receiver = FText_tt[this_1]
	call texttag_setPermanent(receiver, true)
endfunction

function new_FText takes nothing returns integer
	local integer this_1 = alloc_FText()
	call construct_FText(this_1)
	return this_1
endfunction

function createFText_2348 takes real pos_x_1, real pos_y_1, real pos_z, string text, real size, real lifespan, real vel_x, real vel_y, integer col_red, integer col_green, integer col_blue, integer col_alpha returns integer
	local boolean permanent = lifespan <= 0.
	local integer ftext = 0
	local integer iterator
	local integer etext
	local integer receiver
	local integer receiver_1
	local integer receiver_2
	if dispatch_LinkedList_LinkedList_LinkedList_size(FText_recylcer) > 0 then
		set ftext = dispatch_LinkedList_LinkedList_LinkedList_dequeue(FText_recylcer)
	elseif FText_LinkedListModule_size < 100 then
		set ftext = new_FText()
	else
		set iterator = FText_LinkedListModule_iterator()
		loop
			exitwhen  not Iterator_hasNext_800(iterator)
			set etext = Iterator_next_807(iterator)
			if ( not FText_permanent[etext]) and ftext == 0 or FText_timestamp[etext] < FText_timestamp[ftext] then
				set ftext = etext
			endif
		endloop
		call Iterator_close(iterator)
		if ftext == 0 then
			call error("You have reached the maximum possible permanent texttags")
		endif
	endif
	set receiver = ftext
	call dispatch_FText_FText_FText_setup(receiver, text, pos_x_1, pos_y_1, pos_z, size)
	call texttag_setColor_4081(FText_tt[ftext], col_red, col_green, col_blue, col_alpha)
	if permanent then
		set receiver_1 = ftext
		call dispatch_FText_FText_FText_setPermanent(receiver_1)
	else
		set receiver_2 = ftext
		call dispatch_FText_FText_FText_setDynamic(receiver_2, vel_x, vel_y, lifespan)
	endif
	return ftext
endfunction

function createFText_2347 takes real pos_x_1, real pos_y_1, real pos_z, string text, real size, real lifespan, real vel_x, real vel_y, integer col_red, integer col_green, integer col_blue, integer col_alpha, player p returns integer
	local integer ft = createFText_2348(pos_x_1, pos_y_1, pos_z, text, size, lifespan, vel_x, vel_y, col_red, col_green, col_blue, col_alpha)
	call texttag_setVisibility(FText_tt[ft], GetLocalPlayer() == p)
	return ft
endfunction

function createFText_2346 takes real pos_x_1, real pos_y_1, real pos_z, real vel_x, real vel_y, string text, real size, real lifespan, integer col_red, integer col_green, integer col_blue, integer col_alpha, player p returns integer
	return createFText_2347(pos_x_1, pos_y_1, pos_z, text, size, lifespan, vel_x, vel_y, col_red, col_green, col_blue, col_alpha, p)
endfunction

function Texter_show takes integer this_1 returns nothing
	call texttag_setVisibility(FText_tt[Texter_text[this_1]], true)
	set Texter_hidden[this_1] = false
	call createFText_2346(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1], 0., 0.05, "Shown", 10., 2., 255, 255, 255, 0, Entity_owner[this_1])
endfunction

function dispatch_Texter_Texter_Texter_show takes integer this_1 returns nothing
	if Serializable_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling Texter.show")
		else
			call error("Called Texter.show on invalid object.")
		endif
	endif
	call Texter_show(this_1)
endfunction

function Texter_activate takes integer this_1 returns nothing
	call dispatch_Texter_Texter_Texter_show(this_1)
endfunction

function dispatch_Entity_Entity_Entity_DupletListModule_activate takes integer this_1 returns nothing
	if Serializable_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling Entity.activate")
		else
			call error("Called Entity.activate on invalid object.")
		endif
	endif
	if Serializable_typeId[this_1] <= 1206 then
		if Serializable_typeId[this_1] <= 1205 then
			call Entity_DupletListModule_activate(this_1)
		else
			call Texter_activate(this_1)
		endif
	else
		call Entity_DupletListModule_activate(this_1)
	endif
endfunction

function Entity_setVel takes integer this_1, real vel_x, real vel_y, real vel_z returns nothing
	local real tuple_temp = vel_x
	local real tuple_temp_1 = vel_y
	local real tuple_temp_2 = vel_z
	set Entity_vel_x[this_1] = tuple_temp
	set Entity_vel_y[this_1] = tuple_temp_1
	set Entity_vel_z[this_1] = tuple_temp_2
	call dispatch_Entity_Entity_Entity_DupletListModule_activate(this_1)
endfunction

function dispatch_Entity_Entity_Entity_setVel takes integer this_1, real vel_x, real vel_y, real vel_z returns nothing
	if Serializable_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling Entity.setVel")
		else
			call error("Called Entity.setVel on invalid object.")
		endif
	endif
	call Entity_setVel(this_1, vel_x, vel_y, vel_z)
endfunction

function EscaperSensorSetup_setFlying takes integer this_1, boolean flag returns nothing
	if Entity_flying[this_1] and ( not flag) then
		call dispatch_Entity_Entity_Entity_setVel(this_1, Vectors_ZERO3_x, Vectors_ZERO3_y, Vectors_ZERO3_z)
	endif
	call Entity_setFlying(this_1, flag)
endfunction

function StaticEscaperSensorSetup_setFlying takes integer this_1, boolean flag returns nothing
	if Entity_flying[this_1] and ( not flag) then
		call dispatch_Entity_Entity_Entity_setVel(this_1, Vectors_ZERO3_x, Vectors_ZERO3_y, Vectors_ZERO3_z)
	endif
	call Entity_setFlying(this_1, flag)
endfunction

function dispatch_Entity_Entity_Entity_setFlying takes integer this_1, boolean flag returns nothing
	if Serializable_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling Entity.setFlying")
		else
			call error("Called Entity.setFlying on invalid object.")
		endif
	endif
	if Serializable_typeId[this_1] <= 1216 then
		if Serializable_typeId[this_1] <= 1187 then
			if Serializable_typeId[this_1] <= 1174 then
				call Entity_setFlying(this_1, flag)
			else
				call EscaperSensorSetup_setFlying(this_1, flag)
			endif
		else
			call Entity_setFlying(this_1, flag)
		endif
	elseif Serializable_typeId[this_1] <= 1221 then
		call StaticEscaperSensorSetup_setFlying(this_1, flag)
	else
		call Entity_setFlying(this_1, flag)
	endif
endfunction

function vec3_getHeightMap takes real this_x, real this_y, real this_z returns real
	return vec2_getHeightMap(vec3_toVec2(this_x, this_y, this_z), vec3_toVec2_return_y)
endfunction

function Entity_setupEntity takes integer this_1, real pos_x_1, real pos_y_1, real pos_z, real vel_x, real vel_y, real vel_z, player owner, real radius returns nothing
	local real tuple_temp = pos_x_1
	local real tuple_temp_1 = pos_y_1
	local real tuple_temp_2 = pos_z
	local real cond_result
	local real temp
	local real tuple_temp_3
	local real tuple_temp_4
	local real tuple_temp_5
	set Entity_pos_x[this_1] = tuple_temp
	set Entity_pos_y[this_1] = tuple_temp_1
	set Entity_pos_z[this_1] = tuple_temp_2
	set tuple_temp_3 = vel_x
	set tuple_temp_4 = vel_y
	set tuple_temp_5 = vel_z
	set Entity_vel_x[this_1] = tuple_temp_3
	set Entity_vel_y[this_1] = tuple_temp_4
	set Entity_vel_z[this_1] = tuple_temp_5
	set Entity_owner[this_1] = owner
	set Entity_radius[this_1] = radius
	set Entity_radius2[this_1] = radius * radius
	set temp = pos_z
	if Frentity_DYNAMIC_Z then
		set cond_result = vec3_getHeightMap(pos_x_1, pos_y_1, pos_z)
	else
		set cond_result = 0.
	endif
	if temp > cond_result then
		call dispatch_Entity_Entity_Entity_setFlying(this_1, true)
	endif
	set DebugInfo_allocationsPerSecond = DebugInfo_allocationsPerSecond + 1
endfunction

function dispatch_Entity_Entity_Entity_setupEntity takes integer this_1, real pos_x_1, real pos_y_1, real pos_z, real vel_x, real vel_y, real vel_z, player owner, real radius returns nothing
	if Serializable_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling Entity.setupEntity")
		else
			call error("Called Entity.setupEntity on invalid object.")
		endif
	endif
	call Entity_setupEntity(this_1, pos_x_1, pos_y_1, pos_z, vel_x, vel_y, vel_z, owner, radius)
endfunction

function construct_Entity5 takes integer this_1, player owner, real pos_x_1, real pos_y_1, real pos_z, real radius returns nothing
	call Entity_init(this_1)
	call dispatch_Entity_Entity_Entity_setupEntity(this_1, pos_x_1, pos_y_1, pos_z, Vectors_ZERO3_x, Vectors_ZERO3_y, Vectors_ZERO3_z, owner, radius)
endfunction

function angle_cos takes real this_radians returns real
	return Cos(this_radians)
endfunction

function angle_op_divReal takes real this_radians, real scalar returns real
	set angle_op_divReal_return_radians = this_radians / scalar
	return angle_op_divReal_return_radians
endfunction

function angle_sin takes real this_radians returns real
	return Sin(this_radians)
endfunction

function vec3_length takes real this_x, real this_y, real this_z returns real
	return SquareRoot(this_x * this_x + this_y * this_y + this_z * this_z)
endfunction

function vec3_norm takes real this_x, real this_y, real this_z returns real
	local real len = vec3_length(this_x, this_y, this_z)
	local real x = 0.
	local real y = 0.
	local real z = 0.
	if len != 0.0 then
		set x = this_x / len
		set y = this_y / len
		set z = this_z / len
	endif
	set vec3_norm_return_x = x
	set vec3_norm_return_y = y
	set vec3_norm_return_z = z
	return vec3_norm_return_x
endfunction

function vec3_toQuat takes real this_x, real this_y, real this_z, real angl_radians returns real
	local real tuple_temp = vec3_norm(this_x, this_y, this_z)
	local real tuple_temp_1 = vec3_norm_return_y
	local real tuple_temp_2 = vec3_norm_return_z
	local real v_x = tuple_temp
	local real v_y = tuple_temp_1
	local real v_z = tuple_temp_2
	local real sin = angle_sin(angle_op_divReal(angl_radians, 2))
	set vec3_toQuat_return_x = v_x * sin
	set vec3_toQuat_return_y = v_y * sin
	set vec3_toQuat_return_z = v_z * sin
	set vec3_toQuat_return_w = angle_cos(angle_op_divReal(angl_radians, 2))
	return vec3_toQuat_return_x
endfunction

function angle_toQuat takes real this_radians, real axis_x, real axis_y, real axis_z returns real
	set angle_toQuat_return_x = vec3_toQuat(axis_x, axis_y, axis_z, this_radians)
	set angle_toQuat_return_y = vec3_toQuat_return_y
	set angle_toQuat_return_z = vec3_toQuat_return_z
	set angle_toQuat_return_w = vec3_toQuat_return_w
	return angle_toQuat_return_x
endfunction

function quat_getGimbalPole takes real this_x, real this_y, real this_z, real this_w returns integer
	local real pole = this_x * this_z - this_y * this_w
	local integer cond_result
	local integer cond_result_1
	if pole > 0.5 - Quaternion_EPSILON then
		set cond_result_1 = 1
	else
		if pole < Quaternion_EPSILON - 0.5 then
			set cond_result = -1
		else
			set cond_result = 0
		endif
		set cond_result_1 = cond_result
	endif
	return cond_result_1
endfunction

function quat_toEuler takes real this_x, real this_y, real this_z, real this_w returns real
	local integer temp = quat_getGimbalPole(this_x, this_y, this_z, this_w)
	local real yaw
	local real pitch
	local real roll
	local real cos
	local real sin
	if temp == 1 then
		set cos = 2. * this_x * this_z + 2. * this_y * this_w
		set sin = 2. * this_y * this_z - 2. * this_x * this_w
		set yaw = Atan2( - sin,  - cos)
		set pitch =  - (Maths_PI / 2.)
		set roll = 0.
	elseif temp == -1 then
		set cos = 2. * this_x * this_z + 2. * this_y * this_w
		set sin = 2. * this_y * this_z - 2. * this_x * this_w
		set yaw = Atan2(sin, cos)
		set pitch = Maths_PI / 2.
		set roll = 0.
	else
		set cos = 1. - 2. * this_y * this_y - 2. * this_z * this_z
		set sin = 2. * this_x * this_y + 2. * this_z * this_w
		set yaw = Atan2(sin, cos)
		set pitch =  - Asin(2. * this_x * this_z - 2. * this_y * this_w)
		set cos = 1. - 2. * this_x * this_x - 2. * this_y * this_y
		set sin = 2. * this_y * this_z + 2. * this_x * this_w
		set roll = Atan2(sin, cos)
	endif
	set quat_toEuler_return_x = roll
	set quat_toEuler_return_y = pitch
	set quat_toEuler_return_z = yaw
	return quat_toEuler_return_x
endfunction

function effect_setOrientation takes effect this_1, real quaternion_x, real quaternion_y, real quaternion_z, real quaternion_w returns nothing
	local real tuple_temp = quat_toEuler(quaternion_x, quaternion_y, quaternion_z, quaternion_w)
	local real tuple_temp_1 = quat_toEuler_return_y
	local real tuple_temp_2 = quat_toEuler_return_z
	local real euler_x = tuple_temp
	local real euler_y = tuple_temp_1
	local real euler_z = tuple_temp_2
	call BlzSetSpecialEffectOrientation(this_1, euler_z, euler_y, euler_x)
endfunction

function Fx2_setOrientation takes integer this_1, real orientation_x, real orientation_y, real orientation_z, real orientation_w returns nothing
	call effect_setOrientation(Fx2_eff[this_1], orientation_x, orientation_y, orientation_z, orientation_w)
endfunction

function dispatch_Fx2_Fx2_Fx2_setOrientation takes integer this_1, real orientation_x, real orientation_y, real orientation_z, real orientation_w returns nothing
	if Fx2_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling Fx2.setOrientation")
		else
			call error("Called Fx2.setOrientation on invalid object.")
		endif
	endif
	call Fx2_setOrientation(this_1, orientation_x, orientation_y, orientation_z, orientation_w)
endfunction

function alloc_Fx2 takes nothing returns integer
	local integer this_1
	if Fx2_firstFree == 0 then
		if Fx2_maxIndex < JASS_MAX_ARRAY_SIZE then
			set Fx2_maxIndex = Fx2_maxIndex + 1
			set this_1 = Fx2_maxIndex
			set Fx2_typeId[this_1] = 888
		else
			call error("Out of memory: Could not create Fx2.")
			set this_1 = 0
		endif
	else
		set Fx2_firstFree = Fx2_firstFree - 1
		set this_1 = Fx2_nextFree[Fx2_firstFree]
		set Fx2_typeId[this_1] = 888
	endif
	return this_1
endfunction

function Fx2_init takes integer this_1 returns nothing
	local integer tuple_temp = Colors_COLOR_WHITE_red
	local integer tuple_temp_1 = Colors_COLOR_WHITE_green
	local integer tuple_temp_2 = Colors_COLOR_WHITE_blue
	local integer tuple_temp_3 = Colors_COLOR_WHITE_alpha
	set Fx2_tint_red[this_1] = tuple_temp
	set Fx2_tint_green[this_1] = tuple_temp_1
	set Fx2_tint_blue[this_1] = tuple_temp_2
	set Fx2_tint_alpha[this_1] = tuple_temp_3
endfunction

function effect_setPos takes effect this_1, real pos_x_1, real pos_y_1, real pos_z returns nothing
	call BlzSetSpecialEffectPosition(this_1, pos_x_1, pos_y_1, pos_z)
endfunction

function addEffect_1565 takes string path, real pos_x_1, real pos_y_1, real pos_z returns effect
	local effect receiver = AddSpecialEffect(path, pos_x_1, pos_y_1)
	call effect_setPos(receiver, pos_x_1, pos_y_1, pos_z)
	return receiver
endfunction

function construct_Fx2 takes integer this_1, real pos_x_1, real pos_y_1, real pos_z, string path returns nothing
	call Fx2_init(this_1)
	set Fx2_eff[this_1] = addEffect_1565(path, pos_x_1, pos_y_1, pos_z)
endfunction

function new_Fx2 takes real pos_x_1, real pos_y_1, real pos_z, string path returns integer
	local integer this_1 = alloc_Fx2()
	call construct_Fx2(this_1, pos_x_1, pos_y_1, pos_z, path)
	return this_1
endfunction

function Fx2Entity_setupFx takes integer this_1, real xyAngle_radians, string sfxpath returns nothing
	set Fx2Entity_fx[this_1] = new_Fx2(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1], sfxpath)
	call dispatch_Fx2_Fx2_Fx2_setOrientation(Fx2Entity_fx[this_1], angle_toQuat(xyAngle_radians, 0., 0., 1.), angle_toQuat_return_y, angle_toQuat_return_z, angle_toQuat_return_w)
endfunction

function dispatch_Fx2Entity_Fx2Entity_Fx2Entity_setupFx takes integer this_1, real xyAngle_radians, string sfxpath returns nothing
	if Serializable_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling Fx2Entity.setupFx")
		else
			call error("Called Fx2Entity.setupFx on invalid object.")
		endif
	endif
	call Fx2Entity_setupFx(this_1, xyAngle_radians, sfxpath)
endfunction

function construct_Fx2Entity2 takes integer this_1, player owner, real pos_x_1, real pos_y_1, real pos_z, real xyAngle_radians, string sfxpath returns nothing
	call construct_Entity5(this_1, owner, pos_x_1, pos_y_1, pos_z, Entity_radius[this_1])
	call Fx2Entity_init(this_1)
	call dispatch_Fx2Entity_Fx2Entity_Fx2Entity_setupFx(this_1, xyAngle_radians, sfxpath)
endfunction

function effect_setScale takes effect this_1, real scale returns nothing
	call BlzSetSpecialEffectScale(this_1, scale)
endfunction

function getRockAsset takes integer level returns string
	local integer temp = level
	if temp == 4 then
		return Abilities_ancientProtectorMissile
	elseif temp == 3 then
		return Abilities_demolisherMissile
	elseif temp == 2 then
		return Abilities_rockBoltMissile
	elseif temp == 1 then
		return Abilities_makuraMissile
	endif
	return ""
endfunction

function vec2_getAngle takes real this_x, real this_y returns real
	set vec2_getAngle_return_radians = Atan2(this_y, this_x)
	return vec2_getAngle_return_radians
endfunction

function vec2_op_mult takes real this_x, real this_y, real factor returns real
	set vec2_op_mult_return_x = this_x * factor
	set vec2_op_mult_return_y = this_y * factor
	return vec2_op_mult_return_x
endfunction

function construct_SpaceRock takes integer this_1, real position_x, real position_y, real velocity_x, real velocity_y, integer level returns nothing
	local real tuple_temp
	local real tuple_temp_1
	local real tuple_temp_2
	call construct_Fx2Entity2(this_1, GameConstants_STAFF_PLAYER, vec2_withZ(position_x, position_y, 48.), vec2_withZ_return_y, vec2_withZ_return_z, vec2_getAngle(velocity_x, velocity_y), getRockAsset(level))
	call SpaceRock_init(this_1)
	call effect_setScale(Fx2_eff[Fx2Entity_fx[this_1]], 1. + level * 0.25)
	set SpaceRock_radiusSq[this_1] = real_squared(26. + level * 6.)
	set tuple_temp = vec2_toVec3(vec2_op_mult(velocity_x, velocity_y, (5 - level) * 0.85), vec2_op_mult_return_y)
	set tuple_temp_1 = vec2_toVec3_return_y
	set tuple_temp_2 = vec2_toVec3_return_z
	set Entity_vel_x[this_1] = tuple_temp
	set Entity_vel_y[this_1] = tuple_temp_1
	set Entity_vel_z[this_1] = tuple_temp_2
	set SpaceRock_level[this_1] = level
	set SpaceRock_hp[this_1] = level
	set Entity_sleeps[this_1] = false
	call dispatch_LinkedList_LinkedList_LinkedList_add_1(MGSpacey_rocks, this_1)
endfunction

function new_SpaceRock takes real position_x, real position_y, real velocity_x, real velocity_y, integer level returns integer
	local integer this_1 = alloc_SpaceRock()
	call construct_SpaceRock(this_1, position_x, position_y, velocity_x, velocity_y, level)
	return this_1
endfunction

function SpaceRock_onDestroy takes integer this_1 returns nothing
	local integer i
	if SpaceRock_level[this_1] > 1 then
		set i = 0
		loop
			exitwhen i > 2
			call new_SpaceRock(vec3_toVec2(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1]), vec3_toVec2_return_y, GetRandomReal(-2., 2.), GetRandomReal(-2., 2.), SpaceRock_level[this_1] - 1)
			set i = i + 1
		endloop
	endif
	call Fx2Entity_onDestroy(this_1)
endfunction

function dealloc_SpaceRock takes integer obj_1 returns nothing
	if Serializable_typeId[obj_1] == 0 then
		call error("Double free: object of type SpaceRock")
	else
		set Serializable_nextFree[Serializable_firstFree] = obj_1
		set Serializable_firstFree = Serializable_firstFree + 1
		set Serializable_typeId[obj_1] = 0
	endif
endfunction

function destroySpaceRock takes integer this_1 returns nothing
	call SpaceRock_onDestroy(this_1)
	call dealloc_SpaceRock(this_1)
endfunction

function unit_show takes unit this_1 returns nothing
	call ShowUnit(this_1, true)
endfunction

function unit_unpause takes unit this_1 returns nothing
	call PauseUnit(this_1, false)
endfunction

function Spaceship_onDestroy takes integer this_1 returns nothing
	local unit receiver
	local unit receiver_1
	if Spaceship_mounter[this_1] != 0 and ( not Entity_done[Spaceship_mounter[this_1]]) then
		set Escaper_alive[Spaceship_mounter[this_1]] = true
		if unit_isAlive(UnitEntity_actor[Spaceship_mounter[this_1]]) then
			set receiver = UnitEntity_actor[Spaceship_mounter[this_1]]
			call unit_unpause(receiver)
			set receiver_1 = receiver
			call unit_show(receiver_1)
		endif
	endif
	call UnitEntity_onDestroy(this_1)
endfunction

function dealloc_Spaceship takes integer obj_1 returns nothing
	if Serializable_typeId[obj_1] == 0 then
		call error("Double free: object of type Spaceship")
	else
		set Serializable_nextFree[Serializable_firstFree] = obj_1
		set Serializable_firstFree = Serializable_firstFree + 1
		set Serializable_typeId[obj_1] = 0
	endif
endfunction

function destroySpaceship takes integer this_1 returns nothing
	call Spaceship_onDestroy(this_1)
	call dealloc_Spaceship(this_1)
endfunction

function player_getId takes player this_1 returns integer
	return GetPlayerId(this_1)
endfunction

function SpellTarget_onDestroy takes integer this_1 returns nothing
	call dispatch_LinkedList_LinkedList_LinkedList_remove(dispatch_HashMap_HashMap_HashMap_get(BossSpellTarget_targets, player_getId(Entity_owner[this_1])), this_1)
	call SetupObject_onDestroy(this_1)
endfunction

function dealloc_SpellTarget takes integer obj_1 returns nothing
	if Serializable_typeId[obj_1] == 0 then
		call error("Double free: object of type SpellTarget")
	else
		set Serializable_nextFree[Serializable_firstFree] = obj_1
		set Serializable_firstFree = Serializable_firstFree + 1
		set Serializable_typeId[obj_1] = 0
	endif
endfunction

function destroySpellTarget takes integer this_1 returns nothing
	call SpellTarget_onDestroy(this_1)
	call dealloc_SpellTarget(this_1)
endfunction

function SpinNode_onDestroy takes integer this_1 returns nothing
	if SpinNode_next[this_1] != 0 then
		set SpinNode_prev[SpinNode_next[this_1]] = SpinNode_prev[this_1]
	endif
	if SpinNode_prev[this_1] != 0 then
		set SpinNode_next[SpinNode_prev[this_1]] = SpinNode_next[this_1]
	endif
	if ( not Entity_done[SpinNode_obj[this_1]]) and UnitEntity_actor[SpinNode_obj[this_1]] != null then
		call unit_addAbility(SetupObject_setup[SpinNode_obj[this_1]], BuilderConstants_REMOVE_OBJECT_ID)
	endif
endfunction

function dealloc_SpinNode takes integer obj_1 returns nothing
	if SpinNode_typeId[obj_1] == 0 then
		call error("Double free: object of type SpinNode")
	else
		set SpinNode_nextFree[SpinNode_firstFree] = obj_1
		set SpinNode_firstFree = SpinNode_firstFree + 1
		set SpinNode_typeId[obj_1] = 0
	endif
endfunction

function destroySpinNode takes integer this_1 returns nothing
	call SpinNode_onDestroy(this_1)
	call dealloc_SpinNode(this_1)
endfunction

function dispatch_SpinNode_destroySpinNode takes integer this_1 returns nothing
	if SpinNode_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling SpinNode.SpinNode")
		else
			call error("Called SpinNode.SpinNode on invalid object.")
		endif
	endif
	call destroySpinNode(this_1)
endfunction

function Spinner_onDestroy takes integer this_1 returns nothing
	local integer node = Spinner_firstNode[this_1]
	local integer tmp
	set Spinner_firstNode[this_1] = 0
	loop
		exitwhen  not (node != 0)
		set tmp = node
		set node = SpinNode_next[node]
		call dispatch_SpinNode_destroySpinNode(tmp)
	endloop
	call dispatch_ConfigValue_destroyConfigValue(Spinner_cosFactor[this_1])
	call dispatch_ConfigValue_destroyConfigValue(Spinner_sinFactor[this_1])
	call dispatch_ConfigValue_destroyConfigValue(Spinner_spinSpeed[this_1])
	call SetupObject_onDestroy(this_1)
endfunction

function dealloc_Spinner takes integer obj_1 returns nothing
	if Serializable_typeId[obj_1] == 0 then
		call error("Double free: object of type Spinner")
	else
		set Serializable_nextFree[Serializable_firstFree] = obj_1
		set Serializable_firstFree = Serializable_firstFree + 1
		set Serializable_typeId[obj_1] = 0
	endif
endfunction

function destroySpinner takes integer this_1 returns nothing
	call Spinner_onDestroy(this_1)
	call dealloc_Spinner(this_1)
endfunction

function dealloc_StaticBaseObject takes integer obj_1 returns nothing
	if Serializable_typeId[obj_1] == 0 then
		call error("Double free: object of type StaticBaseObject")
	else
		set Serializable_nextFree[Serializable_firstFree] = obj_1
		set Serializable_firstFree = Serializable_firstFree + 1
		set Serializable_typeId[obj_1] = 0
	endif
endfunction

function destroyStaticBaseObject takes integer this_1 returns nothing
	call StaticBaseObject_onDestroy(this_1)
	call dealloc_StaticBaseObject(this_1)
endfunction

function dealloc_StaticEscaperSensorSetup takes integer obj_1 returns nothing
	if Serializable_typeId[obj_1] == 0 then
		call error("Double free: object of type StaticEscaperSensorSetup")
	else
		set Serializable_nextFree[Serializable_firstFree] = obj_1
		set Serializable_firstFree = Serializable_firstFree + 1
		set Serializable_typeId[obj_1] = 0
	endif
endfunction

function destroyStaticEscaperSensorSetup takes integer this_1 returns nothing
	call StaticEscaperSensorSetup_onDestroy(this_1)
	call dealloc_StaticEscaperSensorSetup(this_1)
endfunction

function dealloc_StaticSetupObject takes integer obj_1 returns nothing
	if Serializable_typeId[obj_1] == 0 then
		call error("Double free: object of type StaticSetupObject")
	else
		set Serializable_nextFree[Serializable_firstFree] = obj_1
		set Serializable_firstFree = Serializable_firstFree + 1
		set Serializable_typeId[obj_1] = 0
	endif
endfunction

function destroyStaticSetupObject takes integer this_1 returns nothing
	call StaticSetupObject_onDestroy(this_1)
	call dealloc_StaticSetupObject(this_1)
endfunction

function StrongEscaper_onDestroy takes integer this_1 returns nothing
	call Escaper_onDestroy(this_1)
endfunction

function dealloc_StrongEscaper takes integer obj_1 returns nothing
	if Serializable_typeId[obj_1] == 0 then
		call error("Double free: object of type StrongEscaper")
	else
		set Serializable_nextFree[Serializable_firstFree] = obj_1
		set Serializable_firstFree = Serializable_firstFree + 1
		set Serializable_typeId[obj_1] = 0
	endif
endfunction

function destroyStrongEscaper takes integer this_1 returns nothing
	call StrongEscaper_onDestroy(this_1)
	call dealloc_StrongEscaper(this_1)
endfunction

function TankKiller_onDestroy takes integer this_1 returns nothing
	call EscaperSensorSetup_onDestroy(this_1)
endfunction

function dealloc_TankKiller takes integer obj_1 returns nothing
	if Serializable_typeId[obj_1] == 0 then
		call error("Double free: object of type TankKiller")
	else
		set Serializable_nextFree[Serializable_firstFree] = obj_1
		set Serializable_firstFree = Serializable_firstFree + 1
		set Serializable_typeId[obj_1] = 0
	endif
endfunction

function destroyTankKiller takes integer this_1 returns nothing
	call TankKiller_onDestroy(this_1)
	call dealloc_TankKiller(this_1)
endfunction

function Teleporter_onDestroy takes integer this_1 returns nothing
	call StaticBaseObject_onDestroy(this_1)
endfunction

function dealloc_Teleporter takes integer obj_1 returns nothing
	if Serializable_typeId[obj_1] == 0 then
		call error("Double free: object of type Teleporter")
	else
		set Serializable_nextFree[Serializable_firstFree] = obj_1
		set Serializable_firstFree = Serializable_firstFree + 1
		set Serializable_typeId[obj_1] = 0
	endif
endfunction

function destroyTeleporter takes integer this_1 returns nothing
	call Teleporter_onDestroy(this_1)
	call dealloc_Teleporter(this_1)
endfunction

function TerrainBlocker_onDestroy takes integer this_1 returns nothing
	if  not TerrainBlocker_silent[this_1] then
		call ebrtile_removeModifier(vec3_getEBRTile(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1]), vec3_getEBRTile_return_y, vec3_getEBRTile_return_key, vec3_getEBRTile_return_currentType, vec3_getEBRTile_return_lastType, vec3_getEBRTile_return_modifiers_val, 1)
	endif
	call StaticBaseObject_onDestroy(this_1)
endfunction

function dealloc_TerrainBlocker takes integer obj_1 returns nothing
	if Serializable_typeId[obj_1] == 0 then
		call error("Double free: object of type TerrainBlocker")
	else
		set Serializable_nextFree[Serializable_firstFree] = obj_1
		set Serializable_firstFree = Serializable_firstFree + 1
		set Serializable_typeId[obj_1] = 0
	endif
endfunction

function destroyTerrainBlocker takes integer this_1 returns nothing
	call TerrainBlocker_onDestroy(this_1)
	call dealloc_TerrainBlocker(this_1)
endfunction

function TerrainChanger_onDestroy takes integer this_1 returns nothing
	call dispatch_ConfigValue_destroyConfigValue(TerrainChanger_sizeX[this_1])
	call dispatch_ConfigValue_destroyConfigValue(TerrainChanger_sizeY[this_1])
	call SetupObject_onDestroy(this_1)
endfunction

function dealloc_TerrainChanger takes integer obj_1 returns nothing
	if Serializable_typeId[obj_1] == 0 then
		call error("Double free: object of type TerrainChanger")
	else
		set Serializable_nextFree[Serializable_firstFree] = obj_1
		set Serializable_firstFree = Serializable_firstFree + 1
		set Serializable_typeId[obj_1] = 0
	endif
endfunction

function destroyTerrainChanger takes integer this_1 returns nothing
	call TerrainChanger_onDestroy(this_1)
	call dealloc_TerrainChanger(this_1)
endfunction

function TerrainModder_onDestroy takes integer this_1 returns nothing
	if  not TerrainModder_legit[this_1] then
		call error("Shouldn't happen ok.")
	endif
	call UnitEntity_onDestroy(this_1)
endfunction

function dealloc_TerrainModder takes integer obj_1 returns nothing
	if Serializable_typeId[obj_1] == 0 then
		call error("Double free: object of type TerrainModder")
	else
		set Serializable_nextFree[Serializable_firstFree] = obj_1
		set Serializable_firstFree = Serializable_firstFree + 1
		set Serializable_typeId[obj_1] = 0
	endif
endfunction

function destroyTerrainModder takes integer this_1 returns nothing
	call TerrainModder_onDestroy(this_1)
	call dealloc_TerrainModder(this_1)
endfunction

function Texter_onDestroy takes integer this_1 returns nothing
	call dispatch_FText_destroyFText(Texter_text[this_1])
	call StaticBaseObject_onDestroy(this_1)
endfunction

function dealloc_Texter takes integer obj_1 returns nothing
	if Serializable_typeId[obj_1] == 0 then
		call error("Double free: object of type Texter")
	else
		set Serializable_nextFree[Serializable_firstFree] = obj_1
		set Serializable_firstFree = Serializable_firstFree + 1
		set Serializable_typeId[obj_1] = 0
	endif
endfunction

function destroyTexter takes integer this_1 returns nothing
	call Texter_onDestroy(this_1)
	call dealloc_Texter(this_1)
endfunction

function Tracks_onDestroy takes integer this_1 returns nothing
	call unit_setEntity(Tracks_setup[this_1], 0)
	call unit_remove(Tracks_setup[this_1])
	call dispatch_ConfigValue_destroyConfigValue(Tracks_trackSpeed[this_1])
	call UnitEntity_onDestroy(this_1)
endfunction

function dealloc_Tracks takes integer obj_1 returns nothing
	if Serializable_typeId[obj_1] == 0 then
		call error("Double free: object of type Tracks")
	else
		set Serializable_nextFree[Serializable_firstFree] = obj_1
		set Serializable_firstFree = Serializable_firstFree + 1
		set Serializable_typeId[obj_1] = 0
	endif
endfunction

function destroyTracks takes integer this_1 returns nothing
	call Tracks_onDestroy(this_1)
	call dealloc_Tracks(this_1)
endfunction

function Trap_goos_get takes integer index1, integer index2 returns integer
	local integer returnVal
	if index2 < 0 or index2 >= 5 then
		call error("Index out of Bounds")
	elseif index2 <= 2 then
		if index2 <= 1 then
			if index2 <= 0 then
				set returnVal = Trap_goos_0[index1]
			else
				set returnVal = Trap_goos_1[index1]
			endif
		else
			set returnVal = Trap_goos_2[index1]
		endif
	elseif index2 <= 3 then
		set returnVal = Trap_goos_3[index1]
	else
		set returnVal = Trap_goos_4[index1]
	endif
	return returnVal
endfunction

function Trap_goos_set takes integer instanceId, integer arrayIndex, integer value returns nothing
	if arrayIndex < 0 or arrayIndex >= 5 then
		call error("Index out of Bounds")
	elseif arrayIndex <= 2 then
		if arrayIndex <= 1 then
			if arrayIndex <= 0 then
				set Trap_goos_0[instanceId] = value
			else
				set Trap_goos_1[instanceId] = value
			endif
		else
			set Trap_goos_2[instanceId] = value
		endif
	elseif arrayIndex <= 3 then
		set Trap_goos_3[instanceId] = value
	else
		set Trap_goos_4[instanceId] = value
	endif
endfunction

function Trap_onDestroy takes integer this_1 returns nothing
	local integer i = 0
	loop
		exitwhen i > 4
		if Trap_goos_get(this_1, i) != 0 then
			call dispatch_Goo_destroyGoo(Trap_goos_get(this_1, i))
			call Trap_goos_set(this_1, i, 0)
		endif
		set i = i + 1
	endloop
	call StaticBaseObject_onDestroy(this_1)
endfunction

function dealloc_Trap takes integer obj_1 returns nothing
	if Serializable_typeId[obj_1] == 0 then
		call error("Double free: object of type Trap")
	else
		set Serializable_nextFree[Serializable_firstFree] = obj_1
		set Serializable_firstFree = Serializable_firstFree + 1
		set Serializable_typeId[obj_1] = 0
	endif
endfunction

function destroyTrap takes integer this_1 returns nothing
	call Trap_onDestroy(this_1)
	call dealloc_Trap(this_1)
endfunction

function destructable_remove takes destructable this_1 returns nothing
	call RemoveDestructable(this_1)
endfunction

function Tree_onDestroy takes integer this_1 returns nothing
	call destructable_remove(Tree_dummy[this_1])
	call UnitEntity_onDestroy(this_1)
endfunction

function dealloc_Tree takes integer obj_1 returns nothing
	if Serializable_typeId[obj_1] == 0 then
		call error("Double free: object of type Tree")
	else
		set Serializable_nextFree[Serializable_firstFree] = obj_1
		set Serializable_firstFree = Serializable_firstFree + 1
		set Serializable_typeId[obj_1] = 0
	endif
endfunction

function destroyTree takes integer this_1 returns nothing
	call Tree_onDestroy(this_1)
	call dealloc_Tree(this_1)
endfunction

function UnitCreator_onDestroy takes integer this_1 returns nothing
	call dispatch_LinkedList_destroyLinkedList(UnitCreator_delays[this_1])
	call StaticBaseObject_onDestroy(this_1)
endfunction

function dealloc_UnitCreator takes integer obj_1 returns nothing
	if Serializable_typeId[obj_1] == 0 then
		call error("Double free: object of type UnitCreator")
	else
		set Serializable_nextFree[Serializable_firstFree] = obj_1
		set Serializable_firstFree = Serializable_firstFree + 1
		set Serializable_typeId[obj_1] = 0
	endif
endfunction

function destroyUnitCreator takes integer this_1 returns nothing
	call UnitCreator_onDestroy(this_1)
	call dealloc_UnitCreator(this_1)
endfunction

function dealloc_UnitEntity takes integer obj_1 returns nothing
	if Serializable_typeId[obj_1] == 0 then
		call error("Double free: object of type UnitEntity")
	else
		set Serializable_nextFree[Serializable_firstFree] = obj_1
		set Serializable_firstFree = Serializable_firstFree + 1
		set Serializable_typeId[obj_1] = 0
	endif
endfunction

function destroyUnitEntity takes integer this_1 returns nothing
	call UnitEntity_onDestroy(this_1)
	call dealloc_UnitEntity(this_1)
endfunction

function UnitProducer_onDestroy takes integer this_1 returns nothing
	call StaticBaseObject_onDestroy(this_1)
endfunction

function dealloc_UnitProducer takes integer obj_1 returns nothing
	if Serializable_typeId[obj_1] == 0 then
		call error("Double free: object of type UnitProducer")
	else
		set Serializable_nextFree[Serializable_firstFree] = obj_1
		set Serializable_firstFree = Serializable_firstFree + 1
		set Serializable_typeId[obj_1] = 0
	endif
endfunction

function destroyUnitProducer takes integer this_1 returns nothing
	call UnitProducer_onDestroy(this_1)
	call dealloc_UnitProducer(this_1)
endfunction

function UnitRemover_onDestroy takes integer this_1 returns nothing
	call StaticBaseObject_onDestroy(this_1)
endfunction

function dealloc_UnitRemover takes integer obj_1 returns nothing
	if Serializable_typeId[obj_1] == 0 then
		call error("Double free: object of type UnitRemover")
	else
		set Serializable_nextFree[Serializable_firstFree] = obj_1
		set Serializable_firstFree = Serializable_firstFree + 1
		set Serializable_typeId[obj_1] = 0
	endif
endfunction

function destroyUnitRemover takes integer this_1 returns nothing
	call UnitRemover_onDestroy(this_1)
	call dealloc_UnitRemover(this_1)
endfunction

function VolcanoObstacle_onDestroy takes integer this_1 returns nothing
	call StaticEscaperSensorSetup_onDestroy(this_1)
endfunction

function dealloc_VolcanoObstacle takes integer obj_1 returns nothing
	if Serializable_typeId[obj_1] == 0 then
		call error("Double free: object of type VolcanoObstacle")
	else
		set Serializable_nextFree[Serializable_firstFree] = obj_1
		set Serializable_firstFree = Serializable_firstFree + 1
		set Serializable_typeId[obj_1] = 0
	endif
endfunction

function destroyVolcanoObstacle takes integer this_1 returns nothing
	call VolcanoObstacle_onDestroy(this_1)
	call dealloc_VolcanoObstacle(this_1)
endfunction

function Vortex_onDestroy takes integer this_1 returns nothing
	call dispatch_Fx_Fx_Fx_hiddenDestroy(Vortex_vortexFx[this_1])
	call UnitEntity_onDestroy(this_1)
endfunction

function dealloc_Vortex takes integer obj_1 returns nothing
	if Serializable_typeId[obj_1] == 0 then
		call error("Double free: object of type Vortex")
	else
		set Serializable_nextFree[Serializable_firstFree] = obj_1
		set Serializable_firstFree = Serializable_firstFree + 1
		set Serializable_typeId[obj_1] = 0
	endif
endfunction

function destroyVortex takes integer this_1 returns nothing
	call Vortex_onDestroy(this_1)
	call dealloc_Vortex(this_1)
endfunction

function Wall_onDestroy takes integer this_1 returns nothing
	call StaticSetupObject_onDestroy(this_1)
endfunction

function dealloc_Wall takes integer obj_1 returns nothing
	if Serializable_typeId[obj_1] == 0 then
		call error("Double free: object of type Wall")
	else
		set Serializable_nextFree[Serializable_firstFree] = obj_1
		set Serializable_firstFree = Serializable_firstFree + 1
		set Serializable_typeId[obj_1] = 0
	endif
endfunction

function destroyWall takes integer this_1 returns nothing
	call Wall_onDestroy(this_1)
	call dealloc_Wall(this_1)
endfunction

function Warlock_onDestroy takes integer this_1 returns nothing
	local unit receiver
	local unit receiver_1
	if Warlock_mounter[this_1] != 0 and ( not Entity_done[Warlock_mounter[this_1]]) then
		set Escaper_alive[Warlock_mounter[this_1]] = true
		if unit_isAlive(UnitEntity_actor[Warlock_mounter[this_1]]) then
			set receiver = UnitEntity_actor[Warlock_mounter[this_1]]
			call unit_unpause(receiver)
			set receiver_1 = receiver
			call unit_show(receiver_1)
		endif
	endif
	call UnitEntity_onDestroy(this_1)
endfunction

function dealloc_Warlock takes integer obj_1 returns nothing
	if Serializable_typeId[obj_1] == 0 then
		call error("Double free: object of type Warlock")
	else
		set Serializable_nextFree[Serializable_firstFree] = obj_1
		set Serializable_firstFree = Serializable_firstFree + 1
		set Serializable_typeId[obj_1] = 0
	endif
endfunction

function destroyWarlock takes integer this_1 returns nothing
	call Warlock_onDestroy(this_1)
	call dealloc_Warlock(this_1)
endfunction

function HLIterator_onDestroy takes integer this_1 returns nothing
endfunction

function dealloc_HLIterator takes integer obj_1 returns nothing
	if HLIterator_typeId[obj_1] == 0 then
		call error("Double free: object of type HLIterator")
	else
		set HLIterator_nextFree[HLIterator_firstFree] = obj_1
		set HLIterator_firstFree = HLIterator_firstFree + 1
		set HLIterator_typeId[obj_1] = 0
	endif
endfunction

function destroyHLIterator takes integer this_1 returns nothing
	call HLIterator_onDestroy(this_1)
	call dealloc_HLIterator(this_1)
endfunction

function dispatch_HLIterator_destroyHLIterator takes integer this_1 returns nothing
	if HLIterator_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling HLIterator.HLIterator")
		else
			call error("Called HLIterator.HLIterator on invalid object.")
		endif
	endif
	call destroyHLIterator(this_1)
endfunction

function HLIterator_close takes integer this_1 returns nothing
	call dispatch_HLIterator_destroyHLIterator(this_1)
endfunction

function HLIterator_hasNext takes integer this_1 returns boolean
	return HLIterator_i[this_1] < dispatch_HashList_HashList_HashList_size(HLIterator_list[this_1])
endfunction

function HLIterator_next takes integer this_1 returns integer
	set HLIterator_i[this_1] = HLIterator_i[this_1] + 1
	return dispatch_HashList_HashList_HashList_get(HLIterator_list[this_1], HLIterator_i[this_1] - 1)
endfunction

function alloc_HLIterator takes nothing returns integer
	local integer this_1
	if HLIterator_firstFree == 0 then
		if HLIterator_maxIndex < JASS_MAX_ARRAY_SIZE then
			set HLIterator_maxIndex = HLIterator_maxIndex + 1
			set this_1 = HLIterator_maxIndex
			set HLIterator_typeId[this_1] = 891
		else
			call error("Out of memory: Could not create HLIterator.")
			set this_1 = 0
		endif
	else
		set HLIterator_firstFree = HLIterator_firstFree - 1
		set this_1 = HLIterator_nextFree[HLIterator_firstFree]
		set HLIterator_typeId[this_1] = 891
	endif
	return this_1
endfunction

function HLIterator_init takes integer this_1 returns nothing
	set HLIterator_i[this_1] = 0
endfunction

function construct_HLIterator takes integer this_1, integer list returns nothing
	call HLIterator_init(this_1)
	set HLIterator_list[this_1] = list
endfunction

function new_HLIterator takes integer list returns integer
	local integer this_1 = alloc_HLIterator()
	call construct_HLIterator(this_1, list)
	return this_1
endfunction

function HashList_iterator takes integer this_1 returns integer
	return new_HLIterator(this_1)
endfunction

function dispatch_HashSet_HashSet_HashSet_remove takes integer this_1, integer elem returns boolean
	local boolean HashSet_HashSet_remove_result
	if HashList_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling HashSet.remove")
		else
			call error("Called HashSet.remove on invalid object.")
		endif
	endif
	set HashSet_HashSet_remove_result = HashSet_remove(this_1, elem)
	return HashSet_HashSet_remove_result
endfunction

function dispatch_HashSet_destroyHashSet takes integer this_1 returns nothing
	if HashList_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling HashSet.HashSet")
		else
			call error("Called HashSet.HashSet on invalid object.")
		endif
	endif
	call destroyHashSet(this_1)
endfunction

function Waypoint_onDestroy takes integer this_1 returns nothing
	local integer iterator
	local integer link
	if Waypoint_linked[this_1] != 0 then
		set iterator = HashList_iterator(Waypoint_linked[this_1])
		loop
			exitwhen  not HLIterator_hasNext(iterator)
			set link = HLIterator_next(iterator)
			if Waypoint_linked[link] != 0 then
				call dispatch_HashSet_HashSet_HashSet_remove(Waypoint_linked[link], this_1)
			endif
		endloop
		call HLIterator_close(iterator)
		call dispatch_HashSet_destroyHashSet(Waypoint_linked[this_1])
		set Waypoint_linked[this_1] = 0
	endif
	call StaticBaseObject_onDestroy(this_1)
endfunction

function dealloc_Waypoint takes integer obj_1 returns nothing
	if Serializable_typeId[obj_1] == 0 then
		call error("Double free: object of type Waypoint")
	else
		set Serializable_nextFree[Serializable_firstFree] = obj_1
		set Serializable_firstFree = Serializable_firstFree + 1
		set Serializable_typeId[obj_1] = 0
	endif
endfunction

function destroyWaypoint takes integer this_1 returns nothing
	call Waypoint_onDestroy(this_1)
	call dealloc_Waypoint(this_1)
endfunction

function dispatch_IterableMap_destroyIterableMap takes integer this_1 returns nothing
	if Table_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling IterableMap.IterableMap")
		else
			call error("Called IterableMap.IterableMap on invalid object.")
		endif
	endif
	call destroyIterableMap(this_1)
endfunction

function InventoryIterator_onDestroy takes integer this_1 returns nothing
endfunction

function dealloc_InventoryIterator takes integer obj_1 returns nothing
	if InventoryIterator_typeId[obj_1] == 0 then
		call error("Double free: object of type InventoryIterator")
	else
		set InventoryIterator_nextFree[InventoryIterator_firstFree] = obj_1
		set InventoryIterator_firstFree = InventoryIterator_firstFree + 1
		set InventoryIterator_typeId[obj_1] = 0
	endif
endfunction

function destroyInventoryIterator takes integer this_1 returns nothing
	call InventoryIterator_onDestroy(this_1)
	call dealloc_InventoryIterator(this_1)
endfunction

function dispatch_InventoryIterator_destroyInventoryIterator takes integer this_1 returns nothing
	if InventoryIterator_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling InventoryIterator.InventoryIterator")
		else
			call error("Called InventoryIterator.InventoryIterator on invalid object.")
		endif
	endif
	call destroyInventoryIterator(this_1)
endfunction

function InventoryIterator_close takes integer this_1 returns nothing
	call dispatch_InventoryIterator_destroyInventoryIterator(this_1)
endfunction

function InventoryIterator_hasNext takes integer this_1 returns boolean
	return InventoryIterator_count[this_1] > 0
endfunction

function InventoryIterator_iterator takes integer this_1 returns integer
	return this_1
endfunction

function InventoryIterator_items_get takes integer index1, integer index2 returns item
	local item returnVal
	if index2 < 0 or index2 >= 6 then
		call error("Index out of Bounds")
	elseif index2 <= 2 then
		if index2 <= 1 then
			if index2 <= 0 then
				set returnVal = InventoryIterator_items_0[index1]
			else
				set returnVal = InventoryIterator_items_1[index1]
			endif
		else
			set returnVal = InventoryIterator_items_2[index1]
		endif
	elseif index2 <= 4 then
		if index2 <= 3 then
			set returnVal = InventoryIterator_items_3[index1]
		else
			set returnVal = InventoryIterator_items_4[index1]
		endif
	else
		set returnVal = InventoryIterator_items_5[index1]
	endif
	return returnVal
endfunction

function InventoryIterator_items_set takes integer instanceId, integer arrayIndex, item value returns nothing
	if arrayIndex < 0 or arrayIndex >= 6 then
		call error("Index out of Bounds")
	elseif arrayIndex <= 2 then
		if arrayIndex <= 1 then
			if arrayIndex <= 0 then
				set InventoryIterator_items_0[instanceId] = value
			else
				set InventoryIterator_items_1[instanceId] = value
			endif
		else
			set InventoryIterator_items_2[instanceId] = value
		endif
	elseif arrayIndex <= 4 then
		if arrayIndex <= 3 then
			set InventoryIterator_items_3[instanceId] = value
		else
			set InventoryIterator_items_4[instanceId] = value
		endif
	else
		set InventoryIterator_items_5[instanceId] = value
	endif
endfunction

function InventoryIterator_next takes integer this_1 returns item
	local item i
	set InventoryIterator_count[this_1] = InventoryIterator_count[this_1] - 1
	set i = InventoryIterator_items_get(this_1, InventoryIterator_count[this_1])
	call InventoryIterator_items_set(this_1, InventoryIterator_count[this_1], null)
	return i
endfunction

function dispatch_HashList_HashList_HashList_iterator takes integer this_1 returns integer
	local integer HashList_HashList_iterator_result
	if HashList_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling HashList.iterator")
		else
			call error("Called HashList.iterator on invalid object.")
		endif
	endif
	set HashList_HashList_iterator_result = HashList_iterator(this_1)
	return HashList_HashList_iterator_result
endfunction

function IterableMap_iterator takes integer this_1 returns integer
	return dispatch_HashList_HashList_HashList_iterator(IterableMap_keys[this_1])
endfunction

function hashtable_loadEffectHandle takes hashtable this_1, integer parentKey, integer childKey returns effect
	return LoadEffectHandle(this_1, parentKey, childKey)
endfunction

function Table_loadEffect takes integer this_1, integer parentKey returns effect
	return hashtable_loadEffectHandle(Table_ht, this_1, parentKey)
endfunction

function dispatch_Table_Table_Table_loadEffect takes integer this_1, integer parentKey returns effect
	local effect Table_Table_loadEffect_result
	if Table_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling Table.loadEffect")
		else
			call error("Called Table.loadEffect on invalid object.")
		endif
	endif
	set Table_Table_loadEffect_result = Table_loadEffect(this_1, parentKey)
	return Table_Table_loadEffect_result
endfunction

function hashtable_saveFogStateHandle takes hashtable this_1, integer parentKey, integer childKey, fogstate value returns nothing
	call SaveFogStateHandle(this_1, parentKey, childKey, value)
endfunction

function Table_saveFogState takes integer this_1, integer parentKey, fogstate value returns nothing
	call hashtable_saveFogStateHandle(Table_ht, this_1, parentKey, value)
endfunction

function dispatch_Table_Table_Table_saveFogState takes integer this_1, integer parentKey, fogstate value returns nothing
	if Table_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling Table.saveFogState")
		else
			call error("Called Table.saveFogState on invalid object.")
		endif
	endif
	call Table_saveFogState(this_1, parentKey, value)
endfunction

function effectFromIndex takes integer index returns effect
	call dispatch_Table_Table_Table_saveFogState(TypeCasting_typecastdata, 0, ConvertFogState(index))
	return dispatch_Table_Table_Table_loadEffect(TypeCasting_typecastdata, 0)
endfunction

function alloc_InventoryIterator takes nothing returns integer
	local integer this_1
	if InventoryIterator_firstFree == 0 then
		if InventoryIterator_maxIndex < JASS_MAX_ARRAY_SIZE then
			set InventoryIterator_maxIndex = InventoryIterator_maxIndex + 1
			set this_1 = InventoryIterator_maxIndex
			set InventoryIterator_typeId[this_1] = 976
		else
			call error("Out of memory: Could not create InventoryIterator.")
			set this_1 = 0
		endif
	else
		set InventoryIterator_firstFree = InventoryIterator_firstFree - 1
		set this_1 = InventoryIterator_nextFree[InventoryIterator_firstFree]
		set InventoryIterator_typeId[this_1] = 976
	endif
	return this_1
endfunction

function InventoryIterator_init takes integer this_1 returns nothing
	set InventoryIterator_count[this_1] = 0
endfunction

function construct_InventoryIterator takes integer this_1, unit u_1 returns nothing
	local integer slot
	local item i
	call InventoryIterator_init(this_1)
	set slot = UnitInventorySize(u_1) - 1
	loop
		exitwhen slot < 0
		set i = UnitItemInSlot(u_1, slot)
		if i != null then
			call InventoryIterator_items_set(this_1, InventoryIterator_count[this_1], i)
			set InventoryIterator_count[this_1] = InventoryIterator_count[this_1] + 1
		endif
		set slot = slot - 1
	endloop
endfunction

function new_InventoryIterator takes unit u_1 returns integer
	local integer this_1 = alloc_InventoryIterator()
	call construct_InventoryIterator(this_1, u_1)
	return this_1
endfunction

function unit_inventory takes unit this_1 returns integer
	return new_InventoryIterator(this_1)
endfunction

function Key_clearKeys takes integer this_1 returns nothing
	local integer iterator = IterableMap_iterator(Key_effectMap[this_1])
	local integer escaper
	local integer iterator_1
	local item itm
	local item receiver
	local item receiver_1
	loop
		exitwhen  not HLIterator_hasNext(iterator)
		set escaper = HLIterator_next(iterator)
		set iterator_1 = InventoryIterator_iterator(unit_inventory(UnitEntity_actor[escaper]))
		loop
			exitwhen  not InventoryIterator_hasNext(iterator_1)
			set itm = InventoryIterator_next(iterator_1)
			if item_getEntity(itm) == this_1 then
				set receiver = itm
				call item_setEntity(receiver, 0)
				set receiver_1 = receiver
				call item_remove(receiver_1)
			endif
		endloop
		call InventoryIterator_close(iterator_1)
		call effect_destr(effectFromIndex(dispatch_HashMap_HashMap_HashMap_get(Key_effectMap[this_1], escaper)))
	endloop
	call HLIterator_close(iterator)
endfunction

function dispatch_Key_Key_Key_clearKeys takes integer this_1 returns nothing
	if Serializable_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling Key.clearKeys")
		else
			call error("Called Key.clearKeys on invalid object.")
		endif
	endif
	call Key_clearKeys(this_1)
endfunction

function dispatch_OnEndListener_Projectile_OnEndListener_run takes integer this_1 returns nothing
endfunction

function printTimedToPlayer takes string msg, real duration, player p returns nothing
	call DisplayTimedTextToPlayer(p, 0., 0., duration, msg)
endfunction

function cyc_RevivePoint_terminate takes integer funcChoice, integer this_1 returns nothing
	if funcChoice == 0 then
		if Revivepoint_currentRevive != this_1 then
			call Log_debug("Delete")
			call cyc_RevivePoint_terminate(17, this_1)
		else
			call printTimedToPlayer("|cffcc3333You cannot remove the currently active Revivepoint", 5., Entity_owner[this_1])
		endif
	elseif funcChoice == 1 then
		if  not Entity_done[this_1] then
			if Projectile_onEnd[this_1] != 0 then
				call dispatch_OnEndListener_Projectile_OnEndListener_run(Projectile_onEnd[this_1])
			endif
			call cyc_RevivePoint_terminate(17, this_1)
		endif
	elseif funcChoice == 2 then
		call cyc_RevivePoint_terminate(18, ItemEntityBridge_obj[this_1])
		call UnitEntity_onDestroy(this_1)
	elseif funcChoice == 3 then
		call cyc_RevivePoint_terminate(2, this_1)
		call dealloc_ItemEntityBridge(this_1)
	elseif funcChoice == 4 then
		call cyc_RevivePoint_terminate(14, this_1)
	elseif funcChoice == 5 then
		call cyc_RevivePoint_terminate(4, this_1)
		call dealloc_Tome(this_1)
	elseif funcChoice == 6 then
		call dispatch_Key_Key_Key_clearKeys(this_1)
		call dispatch_IterableMap_destroyIterableMap(Key_effectMap[this_1])
		set ItemObject_holder[this_1] = 0
		if Key_returnSfx[this_1] != null then
			call effect_destr(Key_returnSfx[this_1])
		endif
		if Key_infiniteEff[this_1] != null then
			call effect_destr(Key_infiniteEff[this_1])
		endif
		call cyc_RevivePoint_terminate(14, this_1)
	elseif funcChoice == 7 then
		call cyc_RevivePoint_terminate(6, this_1)
		call dealloc_Key(this_1)
	elseif funcChoice == 8 then
		call cyc_RevivePoint_terminate(14, this_1)
	elseif funcChoice == 9 then
		call cyc_RevivePoint_terminate(8, this_1)
		call dealloc_Coin(this_1)
	elseif funcChoice == 10 then
		call cyc_RevivePoint_terminate(14, this_1)
	elseif funcChoice == 11 then
		call cyc_RevivePoint_terminate(10, this_1)
		call dealloc_Boots(this_1)
	elseif funcChoice == 12 then
		call cyc_RevivePoint_terminate(14, this_1)
	elseif funcChoice == 13 then
		call cyc_RevivePoint_terminate(12, this_1)
		call dealloc_BallItem(this_1)
	elseif funcChoice == 14 then
		call cyc_RevivePoint_terminate(18, ItemObject_setup[this_1])
		call ItemEntity_onDestroy(this_1)
	elseif funcChoice == 15 then
		call cyc_RevivePoint_terminate(14, this_1)
		call dealloc_ItemObject(this_1)
	elseif funcChoice == 16 then
		if Serializable_typeId[this_1] == 0 then
			if this_1 == 0 then
				call error("Nullpointer exception when calling Entity.Entity")
			else
				call error("Called Entity.Entity on invalid object.")
			endif
		endif
		if Serializable_typeId[this_1] <= 1182 then
			if Serializable_typeId[this_1] <= 1159 then
				if Serializable_typeId[this_1] <= 1148 then
					if Serializable_typeId[this_1] <= 1142 then
						if Serializable_typeId[this_1] <= 1139 then
							if Serializable_typeId[this_1] <= 1138 then
								if Serializable_typeId[this_1] <= 1137 then
									call destroyEntity(this_1)
								else
									call destroyFx2Entity(this_1)
								endif
							else
								call destroyProjectile(this_1)
							endif
						elseif Serializable_typeId[this_1] <= 1141 then
							if Serializable_typeId[this_1] <= 1140 then
								call destroyAirPhysicsProjectile(this_1)
							else
								call destroyBallProjectile(this_1)
							endif
						else
							call destroyBoomerang(this_1)
						endif
					elseif Serializable_typeId[this_1] <= 1145 then
						if Serializable_typeId[this_1] <= 1144 then
							if Serializable_typeId[this_1] <= 1143 then
								call destroyFireball(this_1)
							else
								call destroyHomingProjectile(this_1)
							endif
						else
							call destroyBossMissile(this_1)
						endif
					elseif Serializable_typeId[this_1] <= 1147 then
						if Serializable_typeId[this_1] <= 1146 then
							call destroyOrbProjectile(this_1)
						else
							call destroyShipProjectile(this_1)
						endif
					else
						call destroySpaceRock(this_1)
					endif
				elseif Serializable_typeId[this_1] <= 1154 then
					if Serializable_typeId[this_1] <= 1151 then
						if Serializable_typeId[this_1] <= 1150 then
							if Serializable_typeId[this_1] <= 1149 then
								call destroyFxEntity(this_1)
							else
								call destroyFoodEntity(this_1)
							endif
						else
							call destroyPortal(this_1)
						endif
					elseif Serializable_typeId[this_1] <= 1153 then
						if Serializable_typeId[this_1] <= 1152 then
							call destroyItemEntity(this_1)
						else
							call cyc_RevivePoint_terminate(15, this_1)
						endif
					else
						call cyc_RevivePoint_terminate(13, this_1)
					endif
				elseif Serializable_typeId[this_1] <= 1157 then
					if Serializable_typeId[this_1] <= 1156 then
						if Serializable_typeId[this_1] <= 1155 then
							call cyc_RevivePoint_terminate(11, this_1)
						else
							call cyc_RevivePoint_terminate(9, this_1)
						endif
					else
						call cyc_RevivePoint_terminate(7, this_1)
					endif
				elseif Serializable_typeId[this_1] <= 1158 then
					call cyc_RevivePoint_terminate(5, this_1)
				else
					call destroyEntity(this_1)
				endif
			elseif Serializable_typeId[this_1] <= 1171 then
				if Serializable_typeId[this_1] <= 1165 then
					if Serializable_typeId[this_1] <= 1162 then
						if Serializable_typeId[this_1] <= 1161 then
							if Serializable_typeId[this_1] <= 1160 then
								call destroyUnitEntity(this_1)
							else
								call destroyBomber(this_1)
							endif
						else
							call destroyBuilder(this_1)
						endif
					elseif Serializable_typeId[this_1] <= 1164 then
						if Serializable_typeId[this_1] <= 1163 then
							call destroyEscaper(this_1)
						else
							call destroyBlindEscaper(this_1)
						endif
					else
						call destroyFastEscaper(this_1)
					endif
				elseif Serializable_typeId[this_1] <= 1168 then
					if Serializable_typeId[this_1] <= 1167 then
						if Serializable_typeId[this_1] <= 1166 then
							call destroyHolyEscaper(this_1)
						else
							call destroyIceEscaper(this_1)
						endif
					else
						call destroyStrongEscaper(this_1)
					endif
				elseif Serializable_typeId[this_1] <= 1170 then
					if Serializable_typeId[this_1] <= 1169 then
						call cyc_RevivePoint_terminate(3, this_1)
					else
						call destroySelector(this_1)
					endif
				else
					call destroySetupBox(this_1)
				endif
			elseif Serializable_typeId[this_1] <= 1177 then
				if Serializable_typeId[this_1] <= 1174 then
					if Serializable_typeId[this_1] <= 1173 then
						if Serializable_typeId[this_1] <= 1172 then
							call destroySetupObject(this_1)
						else
							call destroyBoss(this_1)
						endif
					else
						call destroyCongaLineHead(this_1)
					endif
				elseif Serializable_typeId[this_1] <= 1176 then
					if Serializable_typeId[this_1] <= 1175 then
						call destroyEscaperSensorSetup(this_1)
					else
						call destroyAirKiller(this_1)
					endif
				else
					call destroyBigKiller(this_1)
				endif
			elseif Serializable_typeId[this_1] <= 1180 then
				if Serializable_typeId[this_1] <= 1179 then
					if Serializable_typeId[this_1] <= 1178 then
						call destroyBigRandomKiller(this_1)
					else
						call destroyFaceless(this_1)
					endif
				else
					call destroyFireKiller(this_1)
				endif
			elseif Serializable_typeId[this_1] <= 1181 then
				call destroyGlaiveKiller(this_1)
			else
				call destroyKnockbacker(this_1)
			endif
		elseif Serializable_typeId[this_1] <= 1205 then
			if Serializable_typeId[this_1] <= 1194 then
				if Serializable_typeId[this_1] <= 1188 then
					if Serializable_typeId[this_1] <= 1185 then
						if Serializable_typeId[this_1] <= 1184 then
							if Serializable_typeId[this_1] <= 1183 then
								call destroyMinion(this_1)
							else
								call destroyPointer(this_1)
							endif
						else
							call destroySmallKiller(this_1)
						endif
					elseif Serializable_typeId[this_1] <= 1187 then
						if Serializable_typeId[this_1] <= 1186 then
							call destroySmallRandomKiller(this_1)
						else
							call destroyTankKiller(this_1)
						endif
					else
						call destroyObjectTarget(this_1)
					endif
				elseif Serializable_typeId[this_1] <= 1191 then
					if Serializable_typeId[this_1] <= 1190 then
						if Serializable_typeId[this_1] <= 1189 then
							call destroyPowernode(this_1)
						else
							call destroySpellTarget(this_1)
						endif
					else
						call destroySpinner(this_1)
					endif
				elseif Serializable_typeId[this_1] <= 1193 then
					if Serializable_typeId[this_1] <= 1192 then
						call destroyTerrainChanger(this_1)
					else
						call destroySpaceship(this_1)
					endif
				else
					call destroyStaticBaseObject(this_1)
				endif
			elseif Serializable_typeId[this_1] <= 1200 then
				if Serializable_typeId[this_1] <= 1197 then
					if Serializable_typeId[this_1] <= 1196 then
						if Serializable_typeId[this_1] <= 1195 then
							call destroyArcanery(this_1)
						else
							call destroyBombertower(this_1)
						endif
					else
						call destroyBooster(this_1)
					endif
				elseif Serializable_typeId[this_1] <= 1199 then
					if Serializable_typeId[this_1] <= 1198 then
						call destroyBossDamager(this_1)
					else
						call destroyExecuter(this_1)
					endif
				else
					call destroyJumper(this_1)
				endif
			elseif Serializable_typeId[this_1] <= 1203 then
				if Serializable_typeId[this_1] <= 1202 then
					if Serializable_typeId[this_1] <= 1201 then
						call destroyLobbyTeleporter(this_1)
					else
						call destroyMemoryAccessPedestal(this_1)
					endif
				else
					call destroyMinigameTeleporter(this_1)
				endif
			elseif Serializable_typeId[this_1] <= 1204 then
				call destroyTeleporter(this_1)
			else
				call destroyTerrainBlocker(this_1)
			endif
		elseif Serializable_typeId[this_1] <= 1216 then
			if Serializable_typeId[this_1] <= 1211 then
				if Serializable_typeId[this_1] <= 1208 then
					if Serializable_typeId[this_1] <= 1207 then
						if Serializable_typeId[this_1] <= 1206 then
							call destroyTexter(this_1)
						else
							call destroyTrap(this_1)
						endif
					else
						call destroyUnitCreator(this_1)
					endif
				elseif Serializable_typeId[this_1] <= 1210 then
					if Serializable_typeId[this_1] <= 1209 then
						call destroyUnitProducer(this_1)
					else
						call destroyUnitRemover(this_1)
					endif
				else
					call destroyWaypoint(this_1)
				endif
			elseif Serializable_typeId[this_1] <= 1214 then
				if Serializable_typeId[this_1] <= 1213 then
					if Serializable_typeId[this_1] <= 1212 then
						call destroyStaticSetupObject(this_1)
					else
						call destroyDecoration(this_1)
					endif
				else
					call destroyDoor(this_1)
				endif
			elseif Serializable_typeId[this_1] <= 1215 then
				call destroyFountain(this_1)
			else
				call destroyRevivePoint(this_1)
			endif
		elseif Serializable_typeId[this_1] <= 1222 then
			if Serializable_typeId[this_1] <= 1219 then
				if Serializable_typeId[this_1] <= 1218 then
					if Serializable_typeId[this_1] <= 1217 then
						call destroyStaticEscaperSensorSetup(this_1)
					else
						call destroyBigObstacle(this_1)
					endif
				else
					call destroyHighObstacle(this_1)
				endif
			elseif Serializable_typeId[this_1] <= 1221 then
				if Serializable_typeId[this_1] <= 1220 then
					call destroySmallObstacle(this_1)
				else
					call destroyVolcanoObstacle(this_1)
				endif
			else
				call destroyWall(this_1)
			endif
		elseif Serializable_typeId[this_1] <= 1225 then
			if Serializable_typeId[this_1] <= 1224 then
				if Serializable_typeId[this_1] <= 1223 then
					call destroyTerrainModder(this_1)
				else
					call destroyTracks(this_1)
				endif
			else
				call destroyTree(this_1)
			endif
		elseif Serializable_typeId[this_1] <= 1226 then
			call destroyVortex(this_1)
		else
			call destroyWarlock(this_1)
		endif
	elseif funcChoice == 17 then
		if  not Entity_done[this_1] then
			set Entity_done[this_1] = true
			call cyc_RevivePoint_terminate(16, this_1)
		endif
	elseif funcChoice == 18 then
		if Serializable_typeId[this_1] == 0 then
			if this_1 == 0 then
				call error("Nullpointer exception when calling Entity.terminate")
			else
				call error("Called Entity.terminate on invalid object.")
			endif
		endif
		if Serializable_typeId[this_1] <= 1215 then
			if Serializable_typeId[this_1] <= 1147 then
				if Serializable_typeId[this_1] <= 1138 then
					call cyc_RevivePoint_terminate(17, this_1)
				else
					call cyc_RevivePoint_terminate(1, this_1)
				endif
			else
				call cyc_RevivePoint_terminate(17, this_1)
			endif
		elseif Serializable_typeId[this_1] <= 1216 then
			call cyc_RevivePoint_terminate(0, this_1)
		else
			call cyc_RevivePoint_terminate(17, this_1)
		endif
	endif
endfunction

function CallbackCounted_onDestroy takes integer this_1 returns nothing
	call timer_release(CallbackCounted_t[this_1])
endfunction

function dealloc_CallbackCounted takes integer obj_1 returns nothing
	if CallbackCounted_typeId[obj_1] == 0 then
		call error("Double free: object of type CallbackCounted")
	else
		set CallbackCounted_nextFree[CallbackCounted_firstFree] = obj_1
		set CallbackCounted_firstFree = CallbackCounted_firstFree + 1
		set CallbackCounted_typeId[obj_1] = 0
	endif
endfunction

function destroyCallbackCounted takes integer this_1 returns nothing
	call CallbackCounted_onDestroy(this_1)
	call dealloc_CallbackCounted(this_1)
endfunction

function dispatch_CallbackCounted_destroyCallbackCounted takes integer this_1 returns nothing
	if CallbackCounted_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling CallbackCounted.CallbackCounted")
		else
			call error("Called CallbackCounted.CallbackCounted on invalid object.")
		endif
	endif
	call destroyCallbackCounted(this_1)
endfunction

function HashMap_size_1 takes integer this_1 returns integer
	return HashMap_size[this_1]
endfunction

function IterableMap_size takes integer this_1 returns integer
	return dispatch_HashList_HashList_HashList_size(IterableMap_keys[this_1])
endfunction

function dispatch_HashMap_HashMap_HashMap_size takes integer this_1 returns integer
	local integer HashMap_HashMap_size_result
	if Table_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling HashMap.size")
		else
			call error("Called HashMap.size on invalid object.")
		endif
	endif
	if Table_typeId[this_1] <= 1494 then
		set HashMap_HashMap_size_result = HashMap_size_1(this_1)
	else
		set HashMap_HashMap_size_result = IterableMap_size(this_1)
	endif
	return HashMap_HashMap_size_result
endfunction

function Entity_setCurrentRegion takes integer this_1 returns integer
	set RegionData_currentRegion[this_1] = getRegionData(dispatch_Entity_Entity_Entity_getPos(this_1), dispatch_Entity_Entity_Entity_getPos_return_y, dispatch_Entity_Entity_Entity_getPos_return_z)
	return RegionData_currentRegion[this_1]
endfunction

function alloc_CallbackSingle_doAfter_Minigame_Minigame_1621 takes nothing returns integer
	local integer this_1
	if CallbackSingle_firstFree == 0 then
		if CallbackSingle_maxIndex < JASS_MAX_ARRAY_SIZE then
			set CallbackSingle_maxIndex = CallbackSingle_maxIndex + 1
			set this_1 = CallbackSingle_maxIndex
			set CallbackSingle_typeId[this_1] = 694
		else
			call error("Out of memory: Could not create CallbackSingle_doAfter_Minigame_Minigame.")
			set this_1 = 0
		endif
	else
		set CallbackSingle_firstFree = CallbackSingle_firstFree - 1
		set this_1 = CallbackSingle_nextFree[CallbackSingle_firstFree]
		set CallbackSingle_typeId[this_1] = 694
	endif
	return this_1
endfunction

function alloc_CallbackSingle_doAfter_Minigame_Minigame takes nothing returns integer
	local integer this_1
	if CallbackSingle_firstFree == 0 then
		if CallbackSingle_maxIndex < JASS_MAX_ARRAY_SIZE then
			set CallbackSingle_maxIndex = CallbackSingle_maxIndex + 1
			set this_1 = CallbackSingle_maxIndex
			set CallbackSingle_typeId[this_1] = 693
		else
			call error("Out of memory: Could not create CallbackSingle_doAfter_Minigame_Minigame.")
			set this_1 = 0
		endif
	else
		set CallbackSingle_firstFree = CallbackSingle_firstFree - 1
		set this_1 = CallbackSingle_nextFree[CallbackSingle_firstFree]
		set CallbackSingle_typeId[this_1] = 693
	endif
	return this_1
endfunction

function RegionData_fmods_get takes integer index1, integer index2 returns integer
	local integer returnVal
	if index2 < 0 or index2 >= 12 then
		call error("Index out of Bounds")
	elseif index2 <= 5 then
		if index2 <= 2 then
			if index2 <= 1 then
				if index2 <= 0 then
					set returnVal = RegionData_fmods_0[index1]
				else
					set returnVal = RegionData_fmods_1[index1]
				endif
			else
				set returnVal = RegionData_fmods_2[index1]
			endif
		elseif index2 <= 4 then
			if index2 <= 3 then
				set returnVal = RegionData_fmods_3[index1]
			else
				set returnVal = RegionData_fmods_4[index1]
			endif
		else
			set returnVal = RegionData_fmods_5[index1]
		endif
	elseif index2 <= 8 then
		if index2 <= 7 then
			if index2 <= 6 then
				set returnVal = RegionData_fmods_6[index1]
			else
				set returnVal = RegionData_fmods_7[index1]
			endif
		else
			set returnVal = RegionData_fmods_8[index1]
		endif
	elseif index2 <= 10 then
		if index2 <= 9 then
			set returnVal = RegionData_fmods_9[index1]
		else
			set returnVal = RegionData_fmods_10[index1]
		endif
	else
		set returnVal = RegionData_fmods_11[index1]
	endif
	return returnVal
endfunction

function RegionData_fmods_set takes integer instanceId, integer arrayIndex, integer value returns nothing
	if arrayIndex < 0 or arrayIndex >= 12 then
		call error("Index out of Bounds")
	elseif arrayIndex <= 5 then
		if arrayIndex <= 2 then
			if arrayIndex <= 1 then
				if arrayIndex <= 0 then
					set RegionData_fmods_0[instanceId] = value
				else
					set RegionData_fmods_1[instanceId] = value
				endif
			else
				set RegionData_fmods_2[instanceId] = value
			endif
		elseif arrayIndex <= 4 then
			if arrayIndex <= 3 then
				set RegionData_fmods_3[instanceId] = value
			else
				set RegionData_fmods_4[instanceId] = value
			endif
		else
			set RegionData_fmods_5[instanceId] = value
		endif
	elseif arrayIndex <= 8 then
		if arrayIndex <= 7 then
			if arrayIndex <= 6 then
				set RegionData_fmods_6[instanceId] = value
			else
				set RegionData_fmods_7[instanceId] = value
			endif
		else
			set RegionData_fmods_8[instanceId] = value
		endif
	elseif arrayIndex <= 10 then
		if arrayIndex <= 9 then
			set RegionData_fmods_9[instanceId] = value
		else
			set RegionData_fmods_10[instanceId] = value
		endif
	else
		set RegionData_fmods_11[instanceId] = value
	endif
endfunction

function FogData_changeFog takes integer this_1, fogstate fstate returns nothing
	if FogData_state[this_1] != fstate then
		set FogData_state[this_1] = fstate
		if FogData_modifier[this_1] != null then
			call DestroyFogModifier(FogData_modifier[this_1])
		endif
		set FogData_modifier[this_1] = CreateFogModifierRect(FogData_p[this_1], FogData_state[this_1], FogData_r[this_1], false, false)
		call FogModifierStart(FogData_modifier[this_1])
	endif
endfunction

function dispatch_FogData_RegionData_FogData_changeFog takes integer this_1, fogstate fstate returns nothing
	if FogData_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling FogData.changeFog")
		else
			call error("Called FogData.changeFog on invalid object.")
		endif
	endif
	call FogData_changeFog(this_1, fstate)
endfunction

function alloc_FogData takes nothing returns integer
	local integer this_1
	if FogData_firstFree == 0 then
		if FogData_maxIndex < JASS_MAX_ARRAY_SIZE then
			set FogData_maxIndex = FogData_maxIndex + 1
			set this_1 = FogData_maxIndex
			set FogData_typeId[this_1] = 834
		else
			call error("Out of memory: Could not create FogData.")
			set this_1 = 0
		endif
	else
		set FogData_firstFree = FogData_firstFree - 1
		set this_1 = FogData_nextFree[FogData_firstFree]
		set FogData_typeId[this_1] = 834
	endif
	return this_1
endfunction

function FogData_init takes integer this_1 returns nothing
endfunction

function isBuilderPlayer takes player p returns boolean
	return PlayerData_role[PlayerData_pData[player_getId(p)]] == 0
endfunction

function construct_FogData takes integer this_1, player p, rect r returns nothing
	call FogData_init(this_1)
	set FogData_r[this_1] = r
	set FogData_p[this_1] = p
	set FogData_visible[this_1] = isBuilderPlayer(p)
	if FogData_visible[this_1] then
		call dispatch_FogData_RegionData_FogData_changeFog(this_1, FOG_OF_WAR_VISIBLE)
	else
		call dispatch_FogData_RegionData_FogData_changeFog(this_1, FOG_OF_WAR_MASKED)
	endif
endfunction

function new_FogData takes player p, rect r returns integer
	local integer this_1 = alloc_FogData()
	call construct_FogData(this_1, p, r)
	return this_1
endfunction

function RegionData_hideRegion takes integer this_1, player p returns nothing
	local integer id = player_getId(p)
	if RegionData_fmods_get(this_1, id) == 0 then
		call RegionData_fmods_set(this_1, id, new_FogData(p, RegionData_theRect[this_1]))
	endif
	call dispatch_FogData_RegionData_FogData_changeFog(RegionData_fmods_get(this_1, id), FOG_OF_WAR_MASKED)
endfunction

function dispatch_RegionData_RegionData_RegionData_hideRegion takes integer this_1, player p returns nothing
	if RegionData_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling RegionData.hideRegion")
		else
			call error("Called RegionData.hideRegion on invalid object.")
		endif
	endif
	call RegionData_hideRegion(this_1, p)
endfunction

function onAllDead_Minigame_Minigame takes integer this_1 returns nothing
	local integer from = dispatch_LinkedList_LinkedList_LinkedList_staticItr(PlayerData_escaperPlayers)
	local integer pd_1
	local integer clVar
	loop
		exitwhen  not LLIterator_hasNext(from)
		set pd_1 = LLIterator_next(from)
		if PlayerData_escaper[pd_1] != 0 then
			call dispatch_RegionData_RegionData_RegionData_hideRegion(Entity_getCurrentRegion(PlayerData_escaper[pd_1]), PlayerData_p[pd_1])
		endif
		call printTimedToPlayer("All Escapers have died!", 10., PlayerData_p[pd_1])
	endloop
	set clVar = alloc_CallbackSingle_doAfter_Minigame_Minigame()
	call construct_CallbackSingle(clVar)
	set this_2952[clVar] = this_2951[this_1]
	call doAfter(2., clVar)
	set ReviveManager_waitForListener = 0
endfunction

function dispatch_ReviveListener_ReviveManager_ReviveListener_onAllDead takes integer this_1 returns nothing
	if ReviveListener_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling ReviveListener.onAllDead")
		else
			call error("Called ReviveListener.onAllDead on invalid object.")
		endif
	endif
	call onAllDead_Minigame_Minigame(this_1)
endfunction

function checkSharedRevive takes nothing returns nothing
	local integer i
	if ReviveManager_waitForCount >= dispatch_LinkedList_LinkedList_LinkedList_size(PlayerData_escaperPlayers) then
		set ReviveManager_waitForCount = 0
		call dispatch_ReviveListener_ReviveManager_ReviveListener_onAllDead(ReviveManager_waitForListener)
		set ReviveManager_waitForListener = 0
		set i = 0
		loop
			exitwhen i > 11
			set RevivePod_wait[ReviveManager_pods[i]] = false
			set i = i + 1
		endloop
	endif
endfunction

function UnitEntity_setNewActor takes integer this_1, unit u_1 returns nothing
	if u_1 == null or ( not unit_isAlive(u_1)) or unit_getEntity(u_1) != 0 then
		call error("invalid actor replacement")
	endif
	call unit_setEntity(UnitEntity_actor[this_1], 0)
	call unit_remove(UnitEntity_actor[this_1])
	set UnitEntity_actor[this_1] = u_1
	call unit_setEntity(UnitEntity_actor[this_1], this_1)
endfunction

function createUnit takes player p, integer unitId, real pos_x_1, real pos_y_1, real facing_radians returns unit
	return CreateUnit(p, unitId, pos_x_1, pos_y_1, angle_degrees(facing_radians))
endfunction

function Escaper_setLava takes integer this_1, boolean add returns nothing
	if add and ( not Escaper_onLava[this_1]) then
		set Escaper_lavaEffect[this_1] = AddSpecialEffectTarget(Escaper_LAVA_EFFECT, UnitEntity_actor[this_1], "origin")
		set Escaper_onLava[this_1] = true
	elseif ( not add) and Escaper_onLava[this_1] then
		call effect_destr(Escaper_lavaEffect[this_1])
		set Escaper_onLava[this_1] = false
	endif
endfunction

function dispatch_Escaper_Escaper_Escaper_setLava takes integer this_1, boolean add returns nothing
	if Serializable_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling Escaper.setLava")
		else
			call error("Called Escaper.setLava on invalid object.")
		endif
	endif
	call Escaper_setLava(this_1, add)
endfunction

function Escaper_setPoison takes integer this_1, boolean add returns nothing
	if add and ( not Escaper_poisoned[this_1]) then
		set Escaper_poisonEffect[this_1] = AddSpecialEffectTarget(Escaper_POISON_EFFECT, UnitEntity_actor[this_1], "chest")
		set Escaper_poisoned[this_1] = true
	elseif ( not add) and Escaper_poisoned[this_1] then
		call effect_destr(Escaper_poisonEffect[this_1])
		set Escaper_poisoned[this_1] = false
	endif
endfunction

function dispatch_Escaper_Escaper_Escaper_setPoison takes integer this_1, boolean add returns nothing
	if Serializable_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling Escaper.setPoison")
		else
			call error("Called Escaper.setPoison on invalid object.")
		endif
	endif
	call Escaper_setPoison(this_1, add)
endfunction

function Entity_addVel takes integer this_1, real vel_x, real vel_y, real vel_z returns nothing
	local real tuple_temp = vec3_op_plus(Entity_vel_x[this_1], Entity_vel_y[this_1], Entity_vel_z[this_1], vel_x, vel_y, vel_z)
	local real tuple_temp_1 = vec3_op_plus_return_y
	local real tuple_temp_2 = vec3_op_plus_return_z
	set Entity_vel_x[this_1] = tuple_temp
	set Entity_vel_y[this_1] = tuple_temp_1
	set Entity_vel_z[this_1] = tuple_temp_2
	call dispatch_Entity_Entity_Entity_DupletListModule_activate(this_1)
endfunction

function dispatch_Entity_Entity_Entity_addVel takes integer this_1, real vel_x, real vel_y, real vel_z returns nothing
	if Serializable_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling Entity.addVel")
		else
			call error("Called Entity.addVel on invalid object.")
		endif
	endif
	call Entity_addVel(this_1, vel_x, vel_y, vel_z)
endfunction

function vec3_op_plus_4284 takes real this_x, real this_y, real this_z, real v_x, real v_y returns real
	set vec3_op_plus_return_x_3132 = this_x + v_x
	set vec3_op_plus_return_y_3134 = this_y + v_y
	set vec3_op_plus_return_z_3136 = this_z
	return vec3_op_plus_return_x_3132
endfunction

function Escaper_getRealVel takes integer this_1 returns real
	set Escaper_getRealVel_return_x = vec3_op_plus_4284(vec3_op_plus_4284(vec3_op_plus_4284(Entity_vel_x[this_1], Entity_vel_y[this_1], Entity_vel_z[this_1], Escaper_slideVelocity_x[this_1], Escaper_slideVelocity_y[this_1]), vec3_op_plus_return_y_3134, vec3_op_plus_return_z_3136, Escaper_otherVel_x[this_1], Escaper_otherVel_y[this_1]), vec3_op_plus_return_y_3134, vec3_op_plus_return_z_3136, Escaper_walkVel_x[this_1], Escaper_walkVel_y[this_1])
	set Escaper_getRealVel_return_y = vec3_op_plus_return_y_3134
	set Escaper_getRealVel_return_z = vec3_op_plus_return_z_3136
	return Escaper_getRealVel_return_x
endfunction

function dispatch_Escaper_Escaper_Escaper_getRealVel takes integer this_1 returns real
	local real Escaper_Escaper_getRealVel_result_x
	local real Escaper_Escaper_getRealVel_result_y
	local real Escaper_Escaper_getRealVel_result_z
	local real tuple_temp
	local real tuple_temp_1
	local real tuple_temp_2
	if Serializable_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling Escaper.getRealVel")
		else
			call error("Called Escaper.getRealVel on invalid object.")
		endif
	endif
	set tuple_temp = Escaper_getRealVel(this_1)
	set tuple_temp_1 = Escaper_getRealVel_return_y
	set tuple_temp_2 = Escaper_getRealVel_return_z
	set Escaper_Escaper_getRealVel_result_x = tuple_temp
	set Escaper_Escaper_getRealVel_result_y = tuple_temp_1
	set Escaper_Escaper_getRealVel_result_z = tuple_temp_2
	set dispatch_Escaper_Escaper_Escaper_getRealVel_return_x = Escaper_Escaper_getRealVel_result_x
	set dispatch_Escaper_Escaper_Escaper_getRealVel_return_y = Escaper_Escaper_getRealVel_result_y
	set dispatch_Escaper_Escaper_Escaper_getRealVel_return_z = Escaper_Escaper_getRealVel_result_z
	return dispatch_Escaper_Escaper_Escaper_getRealVel_return_x
endfunction

function unit_setPosFly takes unit this_1, real pos_x_1, real pos_y_1, real pos_z returns nothing
	call unit_setPos_4196(this_1, pos_x_1, pos_y_1)
	call unit_setFlyHeight(this_1, pos_z, 0.)
endfunction

function SetupObject_setPos takes integer this_1, real pos_x_1, real pos_y_1, real pos_z returns nothing
	local real tuple_temp = pos_x_1
	local real tuple_temp_1 = pos_y_1
	local real tuple_temp_2 = pos_z
	set Entity_pos_x[this_1] = tuple_temp
	set Entity_pos_y[this_1] = tuple_temp_1
	set Entity_pos_z[this_1] = tuple_temp_2
	call unit_setPosFly(SetupObject_setup[this_1], pos_x_1, pos_y_1, pos_z)
	call unit_setPosFly(UnitEntity_actor[this_1], pos_x_1, pos_y_1, pos_z)
endfunction

function Entity_setPos takes integer this_1, real pos_x_1, real pos_y_1, real pos_z returns nothing
	local real tuple_temp = pos_x_1
	local real tuple_temp_1 = pos_y_1
	local real tuple_temp_2 = pos_z
	set Entity_pos_x[this_1] = tuple_temp
	set Entity_pos_y[this_1] = tuple_temp_1
	set Entity_pos_z[this_1] = tuple_temp_2
	if pos_z > vec3_getHeightMap(pos_x_1, pos_y_1, pos_z) and Entity_gravity[this_1] != 0. then
		call dispatch_Entity_Entity_Entity_DupletListModule_activate(this_1)
	endif
endfunction

function vec3_getTerrainZ takes real this_x, real this_y, real this_z returns real
	call MoveLocation(Vectors_tempLoc, this_x, this_y)
	return GetLocationZ(Vectors_tempLoc)
endfunction

function unit_setPosReal takes unit this_1, real pos_x_1, real pos_y_1, real pos_z returns nothing
	call unit_setPos_4196(this_1, pos_x_1, pos_y_1)
	call unit_setFlyHeight(this_1, pos_z - vec3_getTerrainZ(pos_x_1, pos_y_1, pos_z), 0.)
endfunction

function UnitEntity_setPos takes integer this_1, real tpos_x_1, real tpos_y_1, real tpos_z returns nothing
	call Entity_setPos(this_1, tpos_x_1, tpos_y_1, tpos_z)
	if Frentity_DYNAMIC_Z then
		call unit_setPosReal(UnitEntity_actor[this_1], Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1])
	else
		call unit_setPos(UnitEntity_actor[this_1], vec3_toVec2(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1]), vec3_toVec2_return_y)
	endif
endfunction

function dispatch_UnitEntity_Entity_UnitEntity_setPos takes integer this_1, real tpos_x_1, real tpos_y_1, real tpos_z returns nothing
	if Serializable_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling UnitEntity.setPos")
		else
			call error("Called UnitEntity.setPos on invalid object.")
		endif
	endif
	if Serializable_typeId[this_1] <= 1192 then
		if Serializable_typeId[this_1] <= 1171 then
			call UnitEntity_setPos(this_1, tpos_x_1, tpos_y_1, tpos_z)
		else
			call SetupObject_setPos(this_1, tpos_x_1, tpos_y_1, tpos_z)
		endif
	else
		call UnitEntity_setPos(this_1, tpos_x_1, tpos_y_1, tpos_z)
	endif
endfunction

function angle_radians_1 takes real this_radians returns real
	return this_radians
endfunction

function effect_setYaw takes effect this_1, real yaw_radians returns nothing
	call BlzSetSpecialEffectYaw(this_1, angle_radians_1(yaw_radians))
endfunction

function flashEffect_3285 takes string path, real pos_x_1, real pos_y_1, real pos_z, real scale, real yaw_radians returns nothing
	local effect receiver = addEffect_1565(path, pos_x_1, pos_y_1, pos_z)
	local effect receiver_1
	local effect receiver_2
	call effect_setScale(receiver, scale)
	set receiver_1 = receiver
	call effect_setYaw(receiver_1, yaw_radians)
	set receiver_2 = receiver_1
	call effect_destr(receiver_2)
endfunction

function real_fromDeg takes real this_1 returns real
	set real_fromDeg_return_radians = this_1 * Angle_DEGTORAD
	return real_fromDeg_return_radians
endfunction

function flashEffect_3283 takes string path, real pos_x_1, real pos_y_1, real pos_z, real scale returns nothing
	call flashEffect_3285(path, pos_x_1, pos_y_1, pos_z, scale, real_fromDeg(GetRandomReal(0., 359.)))
endfunction

function flashEffect takes string path, real pos_x_1, real pos_y_1, real pos_z returns nothing
	call flashEffect_3283(path, pos_x_1, pos_y_1, pos_z, 1.0)
endfunction

function alloc_RevivePod takes nothing returns integer
	local integer this_1
	if RevivePod_firstFree == 0 then
		if RevivePod_maxIndex < JASS_MAX_ARRAY_SIZE then
			set RevivePod_maxIndex = RevivePod_maxIndex + 1
			set this_1 = RevivePod_maxIndex
			set RevivePod_typeId[this_1] = 1115
		else
			call error("Out of memory: Could not create RevivePod.")
			set this_1 = 0
		endif
	else
		set RevivePod_firstFree = RevivePod_firstFree - 1
		set this_1 = RevivePod_nextFree[RevivePod_firstFree]
		set RevivePod_typeId[this_1] = 1115
	endif
	return this_1
endfunction

function RevivePod_init takes integer this_1 returns nothing
endfunction

function construct_RevivePod takes integer this_1, integer owner, real time, boolean wait returns nothing
	call RevivePod_init(this_1)
	set RevivePod_owner[this_1] = owner
	set RevivePod_time[this_1] = time
	set RevivePod_wait[this_1] = wait
endfunction

function new_RevivePod takes integer owner, real time, boolean wait returns integer
	local integer this_1 = alloc_RevivePod()
	call construct_RevivePod(this_1, owner, time, wait)
	return this_1
endfunction

function manageTimedRevive takes integer e_1, real time returns nothing
	local integer id = player_getId(Entity_owner[e_1])
	if ReviveManager_pods[id] == 0 then
		set ReviveManager_pods[id] = new_RevivePod(PlayerData_pData[id], time, false)
	endif
endfunction

function manageWaitForRevive takes integer e_1 returns nothing
	local integer id = player_getId(Entity_owner[e_1])
	if ReviveManager_pods[id] == 0 then
		set ReviveManager_pods[id] = new_RevivePod(PlayerData_pData[id], 0., true)
		if ReviveManager_waitForListener != 0 then
			set ReviveManager_waitForCount = ReviveManager_waitForCount + 1
		endif
	endif
endfunction

function manageRevive takes integer e_1 returns nothing
	local integer temp
	if isBuilderPlayer(Entity_owner[e_1]) then
		call manageTimedRevive(e_1, ReviveManager_TIMER_PERIOD)
	endif
	set temp = ReviveManager_revMode
	if temp == 0 then
		call manageTimedRevive(e_1, 2.75)
	elseif temp == 1 then
	else
		call manageWaitForRevive(e_1)
	endif
endfunction

function unit_damageTarget_4137 takes unit this_1, widget target, real amount returns nothing
	call UnitDamageTarget(this_1, target, amount, false, false, ATTACK_TYPE_CHAOS, DAMAGE_TYPE_UNIVERSAL, WEAPON_TYPE_WHOKNOWS)
endfunction

function vec3_angleTo2d_4263 takes real this_x, real this_y, real this_z, real v_x, real v_y, real v_z returns real
	set vec3_angleTo2d_return_radians_3106 = real_asAngleRadians(Atan2(v_y - this_y, v_x - this_x))
	return vec3_angleTo2d_return_radians_3106
endfunction

function vec3_op_minus takes real this_x, real this_y, real this_z, real v_x, real v_y, real v_z returns real
	set vec3_op_minus_return_x = this_x - v_x
	set vec3_op_minus_return_y = this_y - v_y
	set vec3_op_minus_return_z = this_z - v_z
	return vec3_op_minus_return_x
endfunction

function vec3_op_mult takes real this_x, real this_y, real this_z, real factor returns real
	set vec3_op_mult_return_x = this_x * factor
	set vec3_op_mult_return_y = this_y * factor
	set vec3_op_mult_return_z = this_z * factor
	return vec3_op_mult_return_x
endfunction

function widget_getLife takes widget this_1 returns real
	return GetWidgetLife(this_1)
endfunction

function widget_isAliveTrick takes widget this_1 returns boolean
	return .405 < widget_getLife(this_1)
endfunction

function Escaper_kill_414 takes integer this_1, integer killer, integer kmode returns nothing
	local real vel_x
	local real vel_y
	local real vel_z
	local real ang_radians
	local real cond_result
	local unit temp
	local unit temp_1
	local real tuple_temp
	local real tuple_temp_1
	local real tuple_temp_2
	local real tuple_temp_3
	if Escaper_alive[this_1] then
		if RegionData_easyMode[Entity_getCurrentRegion(this_1)] then
			call dispatch_UnitEntity_Entity_UnitEntity_setPos(this_1, vec3_op_minus(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1], vec3_op_mult(dispatch_Escaper_Escaper_Escaper_getRealVel(this_1), dispatch_Escaper_Escaper_Escaper_getRealVel_return_y, dispatch_Escaper_Escaper_Escaper_getRealVel_return_z, 1.05), vec3_op_mult_return_y, vec3_op_mult_return_z), vec3_op_minus_return_y, vec3_op_minus_return_z)
			set tuple_temp = dispatch_Escaper_Escaper_Escaper_getRealVel(this_1)
			set tuple_temp_1 = dispatch_Escaper_Escaper_Escaper_getRealVel_return_y
			set tuple_temp_2 = dispatch_Escaper_Escaper_Escaper_getRealVel_return_z
			set vel_x = tuple_temp
			set vel_y = tuple_temp_1
			set vel_z = tuple_temp_2
			if killer != 0 then
				set tuple_temp_3 = vec3_angleTo2d_4263(dispatch_UnitEntity_Entity_UnitEntity_getPos(killer), dispatch_UnitEntity_Entity_UnitEntity_getPos_return_y, dispatch_UnitEntity_Entity_UnitEntity_getPos_return_z, Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1])
				set ang_radians = tuple_temp_3
				call dispatch_Entity_Entity_Entity_addVel(this_1, angle_cos(ang_radians) * (10. + vec3_length(vel_x, vel_y, vel_z)), angle_sin(ang_radians) * (10. + vec3_length(vel_x, vel_y, vel_z)), 0.)
				call dispatch_UnitEntity_Entity_UnitEntity_setPos(this_1, vec3_op_plus(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1], vel_x, vel_y, vel_z), vec3_op_plus_return_y, vec3_op_plus_return_z)
			else
				call dispatch_Entity_Entity_Entity_setVel(this_1, vec3_op_mult(dispatch_Escaper_Escaper_Escaper_getRealVel(this_1), dispatch_Escaper_Escaper_Escaper_getRealVel_return_y, dispatch_Escaper_Escaper_Escaper_getRealVel_return_z,  - 1.75), vec3_op_mult_return_y, vec3_op_mult_return_z)
			endif
			call flashEffect(Abilities_boltImpact, Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1])
			call unit_damageTarget_4137(UnitEntity_actor[this_1], UnitEntity_actor[this_1], 85.)
		elseif widget_isAliveTrick(UnitEntity_actor[this_1]) then
			set temp = UnitEntity_actor[this_1]
			set temp_1 = UnitEntity_actor[this_1]
			if killer == 0 and ( not (kmode == 0)) then
				set cond_result = 195.
			else
				set cond_result = 1000.
			endif
			call unit_damageTarget_4137(temp, temp_1, cond_result)
		endif
		if Escaper_alive[this_1] and ( not widget_isAliveTrick(UnitEntity_actor[this_1])) then
			set Escaper_alive[this_1] = false
			set Escaper_deaths[this_1] = Escaper_deaths[this_1] + 1
			call manageRevive(this_1)
			call dispatch_Escaper_Escaper_Escaper_setPoison(this_1, false)
			call dispatch_Escaper_Escaper_Escaper_setLava(this_1, false)
			set Entity_flying[this_1] = false
			set Escaper_sliding[this_1] = false
		endif
	endif
endfunction

function StrongEscaper_kill takes integer this_1, integer entity_1, integer kmode returns nothing
	local integer instanceOfTemp
	local boolean andLeft
	if ( not StrongEscaper_invulnerable[this_1]) or entity_1 == 0 then
		set andLeft = true
	else
		set instanceOfTemp = Serializable_typeId[entity_1]
		set andLeft = instanceOfTemp >= 1217 and instanceOfTemp <= 1221
	endif
	if andLeft or kmode == 0 then
		call Escaper_kill_414(this_1, 0, 0)
	else
		call effect_destr(addEffect_1565(Abilities_spellShieldCaster, Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1]))
	endif
endfunction

function dispatch_Escaper_Escaper_Escaper_kill_2854 takes integer this_1, integer killer, integer kmode returns nothing
	if Serializable_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling Escaper.kill")
		else
			call error("Called Escaper.kill on invalid object.")
		endif
	endif
	if Serializable_typeId[this_1] <= 1167 then
		call Escaper_kill_414(this_1, killer, kmode)
	else
		call StrongEscaper_kill(this_1, killer, kmode)
	endif
endfunction

function Escaper_kill takes integer this_1, integer killer returns nothing
	call dispatch_Escaper_Escaper_Escaper_kill_2854(this_1, killer, 2)
endfunction

function dispatch_Escaper_Escaper_Escaper_kill takes integer this_1, integer killer returns nothing
	if Serializable_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling Escaper.kill")
		else
			call error("Called Escaper.kill on invalid object.")
		endif
	endif
	call Escaper_kill(this_1, killer)
endfunction

function inPlayableXY takes real x, real y returns boolean
	return x > MapBounds_playableMin_x and x < MapBounds_playableMax_x and y > MapBounds_playableMin_y and y < MapBounds_playableMax_y
endfunction

function vec3_inPlayable takes real this_x, real this_y, real this_z returns boolean
	return inPlayableXY(this_x, this_y)
endfunction

function Escaper_setXY takes integer this_1, real tpos_x_1, real tpos_y_1, real tpos_z returns nothing
	local real tuple_temp
	local real tuple_temp_1
	local real tuple_temp_2
	if vec3_inPlayable(tpos_x_1, tpos_y_1, tpos_z) then
		set tuple_temp = tpos_x_1
		set tuple_temp_1 = tpos_y_1
		set tuple_temp_2 = tpos_z
		set Entity_pos_x[this_1] = tuple_temp
		set Entity_pos_y[this_1] = tuple_temp_1
		set Entity_pos_z[this_1] = tuple_temp_2
		call unit_setXYZ(UnitEntity_actor[this_1], Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1])
	else
		call dispatch_UnitEntity_Entity_UnitEntity_setPos(this_1, vec2_toVec3(Escaper_currentRevivepoint_x, Escaper_currentRevivepoint_y), vec2_toVec3_return_y, vec2_toVec3_return_z)
		call dispatch_Escaper_Escaper_Escaper_kill(this_1, 0)
	endif
endfunction

function dispatch_Escaper_Escaper_Escaper_setXY takes integer this_1, real tpos_x_1, real tpos_y_1, real tpos_z returns nothing
	if Serializable_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling Escaper.setXY")
		else
			call error("Called Escaper.setXY on invalid object.")
		endif
	endif
	call Escaper_setXY(this_1, tpos_x_1, tpos_y_1, tpos_z)
endfunction

function Escaper_stop takes integer this_1 returns nothing
	local real tuple_temp
	local real tuple_temp_1
	local real tuple_temp_2
	local real tuple_temp_3
	local real tuple_temp_4
	local real tuple_temp_5
	local real tuple_temp_6
	set Escaper_sliding[this_1] = false
	set tuple_temp = 0.
	set tuple_temp_1 = 0.
	set Escaper_slideVelocity_x[this_1] = tuple_temp
	set Escaper_slideVelocity_y[this_1] = tuple_temp_1
	set tuple_temp_2 = 0.
	set tuple_temp_3 = 0.
	set tuple_temp_4 = 0.
	set Entity_vel_x[this_1] = tuple_temp_2
	set Entity_vel_y[this_1] = tuple_temp_3
	set Entity_vel_z[this_1] = tuple_temp_4
	set tuple_temp_5 = 0.
	set tuple_temp_6 = 0.
	set Escaper_otherVel_x[this_1] = tuple_temp_5
	set Escaper_otherVel_y[this_1] = tuple_temp_6
endfunction

function dispatch_Escaper_Escaper_Escaper_stop takes integer this_1 returns nothing
	if Serializable_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling Escaper.stop")
		else
			call error("Called Escaper.stop on invalid object.")
		endif
	endif
	call Escaper_stop(this_1)
endfunction

function RegionData_addEscaper takes integer this_1, integer e_1 returns nothing
	call dispatch_LinkedList_LinkedList_LinkedList_add_1(RegionData_escapers[this_1], e_1)
endfunction

function dispatch_RegionData_RegionData_RegionData_addEscaper takes integer this_1, integer e_1 returns nothing
	if RegionData_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling RegionData.addEscaper")
		else
			call error("Called RegionData.addEscaper on invalid object.")
		endif
	endif
	call RegionData_addEscaper(this_1, e_1)
endfunction

function RegionData_removeEscaper takes integer this_1, integer e_1 returns nothing
	call dispatch_LinkedList_LinkedList_LinkedList_remove(RegionData_escapers[this_1], e_1)
endfunction

function dispatch_RegionData_RegionData_RegionData_removeEscaper takes integer this_1, integer e_1 returns nothing
	if RegionData_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling RegionData.removeEscaper")
		else
			call error("Called RegionData.removeEscaper on invalid object.")
		endif
	endif
	call RegionData_removeEscaper(this_1, e_1)
endfunction

function isEscaperPlayer takes player p returns boolean
	return PlayerData_role[PlayerData_pData[player_getId(p)]] == 1
endfunction

function unit_getOwner takes unit this_1 returns player
	return GetOwningPlayer(this_1)
endfunction

function unit_setTurnSpeed takes unit this_1, real speed returns nothing
	call SetUnitTurnSpeed(this_1, speed)
endfunction

function Escaper_updateRegionData takes integer this_1 returns nothing
	local integer currentReg = Entity_getCurrentRegion(this_1)
	local integer newReg = Entity_setCurrentRegion(this_1)
	if newReg != 0 and newReg != currentReg then
		call dispatch_RegionData_RegionData_RegionData_removeEscaper(currentReg, this_1)
		call dispatch_RegionData_RegionData_RegionData_addEscaper(newReg, this_1)
		set Entity_gravity[this_1] = RegionData_gravity[newReg]
		call unit_removeAbility(UnitEntity_actor[this_1], RegionData_specialAbil[currentReg])
		if RegionData_specialAbil[newReg] > 0 then
			call unit_addAbility(UnitEntity_actor[this_1], RegionData_specialAbil[newReg])
			if isEscaperPlayer(unit_getOwner(UnitEntity_actor[this_1])) then
				call printTimedToPlayer("|cffFFCC00>> |rYou were granted a |cff0884BDspecial ability |rin this region |r(use with hotkey |cffFFCC00T|r)", 10., unit_getOwner(UnitEntity_actor[this_1]))
			endif
		else
			call unit_removeAbility(UnitEntity_actor[this_1], Escaper_JUMP_SPELL)
			call unit_removeAbility(UnitEntity_actor[this_1], Escaper_ORB_SPELL)
		endif
		call unit_setTurnSpeed(UnitEntity_actor[this_1], RegionData_turnSpeed[newReg])
	endif
endfunction

function dispatch_Escaper_Escaper_Escaper_updateRegionData takes integer this_1 returns nothing
	if Serializable_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling Escaper.updateRegionData")
		else
			call error("Called Escaper.updateRegionData on invalid object.")
		endif
	endif
	call Escaper_updateRegionData(this_1)
endfunction

function player_panCamToTimed takes player this_1, unit u_1, real time returns nothing
	if Player_localPlayer == this_1 then
		call PanCameraToTimed(unit_getX(u_1), unit_getY(u_1), time)
	endif
endfunction

function vec2_getTerrainZ takes real this_x, real this_y returns real
	call MoveLocation(Vectors_tempLoc, this_x, this_y)
	return GetLocationZ(Vectors_tempLoc)
endfunction

function vec2_withRealZ takes real this_x, real this_y, unit u_1 returns real
	set vec2_withRealZ_return_x = this_x
	set vec2_withRealZ_return_y = this_y
	set vec2_withRealZ_return_z = vec2_getTerrainZ(this_x, this_y) + unit_getFlyHeight(u_1)
	return vec2_withRealZ_return_x
endfunction

function unit_getPos3Real takes unit this_1 returns real
	set unit_getPos3Real_return_x = vec2_withRealZ(unit_getPos(this_1), unit_getPos_return_y, this_1)
	set unit_getPos3Real_return_y = vec2_withRealZ_return_y
	set unit_getPos3Real_return_z = vec2_withRealZ_return_z
	return unit_getPos3Real_return_x
endfunction

function unit_setPropWindow takes unit this_1, real value_radians returns nothing
	call SetUnitPropWindow(this_1, angle_radians_1(value_radians))
endfunction

function Escaper_revive takes integer this_1 returns nothing
	local real rev_x
	local real rev_y
	local real tuple_temp
	local real tuple_temp_1
	if  not Escaper_alive[this_1] then
		call dispatch_Escaper_Escaper_Escaper_stop(this_1)
		set tuple_temp = Escaper_currentRevivepoint_x
		set tuple_temp_1 = Escaper_currentRevivepoint_y
		set rev_x = tuple_temp
		set rev_y = tuple_temp_1
		if Escaper_revmod[this_1] == 0 then
			if UnitEntity_actor[this_1] == null then
				call printLog(4, "why this happening :(")
				call UnitEntity_setNewActor(this_1, createUnit(Entity_owner[this_1], 1, rev_x, rev_y, 0.))
			else
				call ReviveHero(UnitEntity_actor[this_1], rev_x, rev_y, false)
			endif
			call dispatch_Escaper_Escaper_Escaper_setXY(this_1, rev_x, rev_y, 32.)
		else
			if UnitEntity_actor[this_1] == null then
				call UnitEntity_setNewActor(this_1, createUnit(Entity_owner[this_1], 1, RevivePointModifier_pos_x[Escaper_revmod[this_1]], RevivePointModifier_pos_y[Escaper_revmod[this_1]], 0.))
			else
				call ReviveHero(UnitEntity_actor[this_1], RevivePointModifier_pos_x[Escaper_revmod[this_1]], RevivePointModifier_pos_y[Escaper_revmod[this_1]], false)
			endif
			call dispatch_Escaper_Escaper_Escaper_setXY(this_1, RevivePointModifier_pos_x[Escaper_revmod[this_1]], RevivePointModifier_pos_y[Escaper_revmod[this_1]], 32.)
		endif
		set Escaper_alive[this_1] = true
		call unit_setPropWindow(UnitEntity_actor[this_1], real_fromDeg(60.))
		call dispatch_Escaper_Escaper_Escaper_updateRegionData(this_1)
		call dispatch_Escaper_Escaper_Escaper_setPoison(this_1, false)
		call dispatch_Escaper_Escaper_Escaper_setLava(this_1, false)
		if Escaper_left[this_1] then
			call cyc_RevivePoint_terminate(18, this_1)
			return
		endif
		call CameraClearNoiseForPlayer(Entity_owner[this_1])
		if Player_localPlayer == Entity_owner[this_1] then
			if Escaper_selectatrevive[this_1] and Escaper_revivetomb[this_1] == null and ( not Escaper_camlock[this_1]) then
				call PanCameraToTimed(rev_x, rev_y, 0.)
			endif
			if Escaper_camOnRevive[this_1] then
				call ClearSelection()
				call SelectUnit(UnitEntity_actor[this_1], true)
			endif
		endif
		if Escaper_camlock[this_1] then
			call SetCameraTargetControllerNoZForPlayer(Entity_owner[this_1], UnitEntity_actor[this_1], 0., 0., true)
		endif
		if Escaper_revivetomb[this_1] != null then
			call dispatch_UnitEntity_Entity_UnitEntity_setPos(this_1, unit_getPos3Real(Escaper_revivetomb[this_1]), unit_getPos3Real_return_y, unit_getPos3Real_return_z)
			if Escaper_selectatrevive[this_1] and ( not Escaper_camlock[this_1]) then
				call player_panCamToTimed(Entity_owner[this_1], Escaper_revivetomb[this_1], 0.)
			endif
			call unit_remove(Escaper_revivetomb[this_1])
			set Escaper_revivetomb[this_1] = null
		endif
		if RegionData_specialAbil[Entity_getCurrentRegion(this_1)] > 0 then
			call unit_addAbility(UnitEntity_actor[this_1], RegionData_specialAbil[Entity_getCurrentRegion(this_1)])
		else
			call unit_removeAbility(UnitEntity_actor[this_1], Escaper_JUMP_SPELL)
			call unit_removeAbility(UnitEntity_actor[this_1], Escaper_ORB_SPELL)
		endif
	endif
endfunction

function dispatch_Escaper_Escaper_Escaper_revive takes integer this_1 returns nothing
	if Serializable_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling Escaper.revive")
		else
			call error("Called Escaper.revive on invalid object.")
		endif
	endif
	call Escaper_revive(this_1)
endfunction

function RevivePod_onDestroy takes integer this_1 returns nothing
endfunction

function dealloc_RevivePod takes integer obj_1 returns nothing
	if RevivePod_typeId[obj_1] == 0 then
		call error("Double free: object of type RevivePod")
	else
		set RevivePod_nextFree[RevivePod_firstFree] = obj_1
		set RevivePod_firstFree = RevivePod_firstFree + 1
		set RevivePod_typeId[obj_1] = 0
	endif
endfunction

function destroyRevivePod takes integer this_1 returns nothing
	call RevivePod_onDestroy(this_1)
	call dealloc_RevivePod(this_1)
endfunction

function dispatch_RevivePod_destroyRevivePod takes integer this_1 returns nothing
	if RevivePod_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling RevivePod.RevivePod")
		else
			call error("Called RevivePod.RevivePod on invalid object.")
		endif
	endif
	call destroyRevivePod(this_1)
endfunction

function update takes nothing returns nothing
	local integer i
	local integer pod
	if ReviveManager_revMode == 2 then
		call checkSharedRevive()
	endif
	set i = 0
	loop
		exitwhen i > 11
		set pod = ReviveManager_pods[i]
		if pod != 0 then
			if  not RevivePod_wait[pod] then
				set RevivePod_time[pod] = RevivePod_time[pod] - ReviveManager_TIMER_PERIOD
				if RevivePod_time[pod] <= 0. then
					if PlayerData_escaper[RevivePod_owner[pod]] != 0 and ( not Escaper_alive[PlayerData_escaper[RevivePod_owner[pod]]]) then
						call dispatch_Escaper_Escaper_Escaper_revive(PlayerData_escaper[RevivePod_owner[pod]])
					endif
					call dispatch_RevivePod_destroyRevivePod(pod)
					set ReviveManager_pods[i] = 0
				endif
			endif
		endif
		set i = i + 1
	endloop
endfunction

function changeRevMode takes integer rMode returns nothing
	local integer i
	set ReviveManager_waitForCount = 0
	set i = 0
	loop
		exitwhen i > 11
		set RevivePod_time[ReviveManager_pods[i]] = 0.
		set RevivePod_wait[ReviveManager_pods[i]] = false
		set i = i + 1
	endloop
	set ReviveManager_revMode = rMode
	call update()
endfunction

function MinigameTeleporter_votes_set takes integer instanceId, integer arrayIndex, boolean value returns nothing
	if arrayIndex < 0 or arrayIndex >= 12 then
		call error("Index out of Bounds")
	elseif arrayIndex <= 5 then
		if arrayIndex <= 2 then
			if arrayIndex <= 1 then
				if arrayIndex <= 0 then
					set MinigameTeleporter_votes_0[instanceId] = value
				else
					set MinigameTeleporter_votes_1[instanceId] = value
				endif
			else
				set MinigameTeleporter_votes_2[instanceId] = value
			endif
		elseif arrayIndex <= 4 then
			if arrayIndex <= 3 then
				set MinigameTeleporter_votes_3[instanceId] = value
			else
				set MinigameTeleporter_votes_4[instanceId] = value
			endif
		else
			set MinigameTeleporter_votes_5[instanceId] = value
		endif
	elseif arrayIndex <= 8 then
		if arrayIndex <= 7 then
			if arrayIndex <= 6 then
				set MinigameTeleporter_votes_6[instanceId] = value
			else
				set MinigameTeleporter_votes_7[instanceId] = value
			endif
		else
			set MinigameTeleporter_votes_8[instanceId] = value
		endif
	elseif arrayIndex <= 10 then
		if arrayIndex <= 9 then
			set MinigameTeleporter_votes_9[instanceId] = value
		else
			set MinigameTeleporter_votes_10[instanceId] = value
		endif
	else
		set MinigameTeleporter_votes_11[instanceId] = value
	endif
endfunction

function MinigameTeleporter_reset takes integer this_1 returns nothing
	local integer i
	set MinigameTeleporter_inprogress[this_1] = false
	set i = 0
	loop
		exitwhen i > 11
		call MinigameTeleporter_votes_set(this_1, i, false)
		set i = i + 1
	endloop
	set MinigameTeleporter_currentPlus[this_1] = 0
	call texttag_center(FText_tt[MinigameTeleporter_text[this_1]], dispatch_UnitEntity_Entity_UnitEntity_getPos(this_1), dispatch_UnitEntity_Entity_UnitEntity_getPos_return_y, dispatch_UnitEntity_Entity_UnitEntity_getPos_return_z, "|cffffcc00Vote for minigame", 10.)
endfunction

function dispatch_MinigameTeleporter_MinigameTeleporter_MinigameTeleporter_reset takes integer this_1 returns nothing
	if Serializable_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling MinigameTeleporter.reset")
		else
			call error("Called MinigameTeleporter.reset on invalid object.")
		endif
	endif
	call MinigameTeleporter_reset(this_1)
endfunction

function alloc_ForGroupCallback_forUnitsInRect_MGAgar_MGAgar takes nothing returns integer
	local integer this_1
	if ForGroupCallback_firstFree == 0 then
		if ForGroupCallback_maxIndex < JASS_MAX_ARRAY_SIZE then
			set ForGroupCallback_maxIndex = ForGroupCallback_maxIndex + 1
			set this_1 = ForGroupCallback_maxIndex
			set ForGroupCallback_typeId[this_1] = 873
		else
			call error("Out of memory: Could not create ForGroupCallback_forUnitsInRect_MGAgar_MGAgar.")
			set this_1 = 0
		endif
	else
		set ForGroupCallback_firstFree = ForGroupCallback_firstFree - 1
		set this_1 = ForGroupCallback_nextFree[ForGroupCallback_firstFree]
		set ForGroupCallback_typeId[this_1] = 873
	endif
	return this_1
endfunction

function LinkedList_clear takes integer this_1 returns nothing
	local integer current = LLEntry_next[LinkedList_dummy[this_1]]
	loop
		exitwhen  not (current != LinkedList_dummy[this_1])
		set current = LLEntry_next[current]
		call dispatch_LLEntry_destroyLLEntry(LLEntry_prev[current])
	endloop
	set LLEntry_next[LinkedList_dummy[this_1]] = LinkedList_dummy[this_1]
	set LLEntry_prev[LinkedList_dummy[this_1]] = LinkedList_dummy[this_1]
	set LinkedList_size[this_1] = 0
endfunction

function dispatch_LinkedList_LinkedList_LinkedList_clear takes integer this_1 returns nothing
	if LinkedList_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling LinkedList.clear")
		else
			call error("Called LinkedList.clear on invalid object.")
		endif
	endif
	call LinkedList_clear(this_1)
endfunction

function dealloc_ForGroupCallback takes integer obj_1 returns nothing
	if ForGroupCallback_typeId[obj_1] == 0 then
		call error("Double free: object of type ForGroupCallback")
	else
		set ForGroupCallback_nextFree[ForGroupCallback_firstFree] = obj_1
		set ForGroupCallback_firstFree = ForGroupCallback_firstFree + 1
		set ForGroupCallback_typeId[obj_1] = 0
	endif
endfunction

function destroyForGroupCallback takes integer this_1 returns nothing
	call dealloc_ForGroupCallback(this_1)
endfunction

function dispatch_ForGroupCallback_destroyForGroupCallback takes integer this_1 returns nothing
	if ForGroupCallback_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling ForGroupCallback.ForGroupCallback")
		else
			call error("Called ForGroupCallback.ForGroupCallback on invalid object.")
		endif
	endif
	call destroyForGroupCallback(this_1)
endfunction

function group_clear takes group this_1 returns nothing
	call GroupClear(this_1)
endfunction

function popCallback takes nothing returns nothing
	call group_clear(ClosureForGroups_DUMMY_GROUP)
	set ClosureForGroups_tempCallbacksCount = ClosureForGroups_tempCallbacksCount - 1
	call dispatch_ForGroupCallback_destroyForGroupCallback(ClosureForGroups_tempCallbacks[ClosureForGroups_tempCallbacksCount])
endfunction

function pushCallback takes integer c returns nothing
	set ClosureForGroups_tempCallbacks[ClosureForGroups_tempCallbacksCount] = c
	set ClosureForGroups_tempCallbacksCount = ClosureForGroups_tempCallbacksCount + 1
	set ClosureForGroups_iterCount = 0
	set ClosureForGroups_maxCount = Integer_INT_MAX
endfunction

function forUnitsInRect takes rect r, integer c returns nothing
	call pushCallback(c)
	call GroupEnumUnitsInRect(ClosureForGroups_DUMMY_GROUP, r, ClosureForGroups_filter)
	call popCallback()
endfunction

function unit_getDefaultMovespeed takes unit this_1 returns real
	return GetUnitDefaultMoveSpeed(this_1)
endfunction

function unit_setScale takes unit this_1, real scale returns nothing
	call SetUnitScale(this_1, scale, scale, scale)
endfunction

function MGAgar_onEnd takes integer this_1 returns nothing
	local integer iterator = LinkedList_iterator(PlayerData_escaperPlayers)
	local integer pd_1
	local unit receiver
	local unit receiver_1
	local unit receiver_2
	local unit receiver_3
	local integer iterator_1
	local integer food
	local integer clVar
	local rect temp
	loop
		exitwhen  not LLIterator_hasNext(iterator)
		set pd_1 = LLIterator_next(iterator)
		set Escaper_alive[PlayerData_escaper[pd_1]] = true
		if PlayerData_escaper[pd_1] != 0 and Escaper_alive[PlayerData_escaper[pd_1]] then
			set receiver = UnitEntity_actor[PlayerData_escaper[pd_1]]
			call unit_setScale(receiver, 1.0)
			set receiver_1 = receiver
			call unit_setMoveSpeed(receiver_1, unit_getDefaultMovespeed(UnitEntity_actor[PlayerData_escaper[pd_1]]))
			set receiver_2 = receiver_1
			call unit_show(receiver_2)
			set receiver_3 = receiver_2
			call unit_unpause(receiver_3)
		endif
	endloop
	call LLIterator_close(iterator)
	set iterator_1 = LinkedList_iterator(MGAgar_flist[this_1])
	loop
		exitwhen  not LLIterator_hasNext(iterator_1)
		set food = LLIterator_next(iterator_1)
		call cyc_RevivePoint_terminate(18, food)
	endloop
	call LLIterator_close(iterator_1)
	set temp = RegionData_theRect[MGAgar_rdata[this_1]]
	set clVar = alloc_ForGroupCallback_forUnitsInRect_MGAgar_MGAgar()
	call forUnitsInRect(temp, clVar)
	call dispatch_LinkedList_LinkedList_LinkedList_clear(MGAgar_flist[this_1])
	if MGAgar_cbs[this_1] != 0 then
		call dispatch_CallbackCounted_destroyCallbackCounted(MGAgar_cbs[this_1])
	endif
endfunction

function CallbackPeriodic_onDestroy takes integer this_1 returns nothing
	call timer_release(CallbackPeriodic_t[this_1])
endfunction

function dealloc_CallbackPeriodic takes integer obj_1 returns nothing
	if CallbackPeriodic_typeId[obj_1] == 0 then
		call error("Double free: object of type CallbackPeriodic")
	else
		set CallbackPeriodic_nextFree[CallbackPeriodic_firstFree] = obj_1
		set CallbackPeriodic_firstFree = CallbackPeriodic_firstFree + 1
		set CallbackPeriodic_typeId[obj_1] = 0
	endif
endfunction

function destroyCallbackPeriodic takes integer this_1 returns nothing
	call CallbackPeriodic_onDestroy(this_1)
	call dealloc_CallbackPeriodic(this_1)
endfunction

function dispatch_CallbackPeriodic_destroyCallbackPeriodic takes integer this_1 returns nothing
	if CallbackPeriodic_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling CallbackPeriodic.CallbackPeriodic")
		else
			call error("Called CallbackPeriodic.CallbackPeriodic on invalid object.")
		endif
	endif
	call destroyCallbackPeriodic(this_1)
endfunction

function group_hasNext takes group this_1 returns boolean
	return FirstOfGroup(this_1) != null
endfunction

function group_next takes group this_1 returns unit
	local unit iterUnit = FirstOfGroup(this_1)
	call GroupRemoveUnit(this_1, iterUnit)
	return iterUnit
endfunction

function MGRandKill_onEnd takes integer this_1 returns nothing
	local unit obj_1
	local group from
	if MGRandKill_fx[this_1] != 0 then
		call dispatch_CallbackPeriodic_destroyCallbackPeriodic(MGRandKill_chickenTimer[this_1])
		call dispatch_CallbackPeriodic_destroyCallbackPeriodic(MGRandKill_bunnyTimer[this_1])
		call dispatch_CallbackPeriodic_destroyCallbackPeriodic(MGRandKill_coinTimer[this_1])
		call GroupEnumUnitsInRect(Group_ENUM_GROUP, gg_rct_coingamearea, Filter(ref_function_code__Filter_GroupEnumUnitsInRect_MGRandKill_MGRandKill))
		set from = Group_ENUM_GROUP
		loop
			exitwhen  not group_hasNext(from)
			set obj_1 = group_next(from)
			call Log_debug("onEnd Terminate")
			if unit_getEntity(obj_1) != 0 then
				call cyc_RevivePoint_terminate(18, unit_getEntity(obj_1))
			endif
		endloop
		call dispatch_Fx2_destroyFx2(MGRandKill_fx[this_1])
		set MGRandKill_fx[this_1] = 0
	endif
endfunction

function alloc_ForGroupCallback_forUnitsInRect_MGSlide_MGSlide_1792 takes nothing returns integer
	local integer this_1
	if ForGroupCallback_firstFree == 0 then
		if ForGroupCallback_maxIndex < JASS_MAX_ARRAY_SIZE then
			set ForGroupCallback_maxIndex = ForGroupCallback_maxIndex + 1
			set this_1 = ForGroupCallback_maxIndex
			set ForGroupCallback_typeId[this_1] = 875
		else
			call error("Out of memory: Could not create ForGroupCallback_forUnitsInRect_MGSlide_MGSlide.")
			set this_1 = 0
		endif
	else
		set ForGroupCallback_firstFree = ForGroupCallback_firstFree - 1
		set this_1 = ForGroupCallback_nextFree[ForGroupCallback_firstFree]
		set ForGroupCallback_typeId[this_1] = 875
	endif
	return this_1
endfunction

function MGSlide_onEnd takes integer this_1 returns nothing
	local rect temp = RegionData_theRect[MGSlide_rdata[this_1]]
	local integer clVar = alloc_ForGroupCallback_forUnitsInRect_MGSlide_MGSlide_1792()
	call forUnitsInRect(temp, clVar)
	call dispatch_CallbackPeriodic_destroyCallbackPeriodic(MGSlide_cb[this_1])
endfunction

function alloc_ForForceCallback_execute_MGSpacey_MGSpacey takes nothing returns integer
	local integer this_1
	if ForForceCallback_firstFree == 0 then
		if ForForceCallback_maxIndex < JASS_MAX_ARRAY_SIZE then
			set ForForceCallback_maxIndex = ForForceCallback_maxIndex + 1
			set this_1 = ForForceCallback_maxIndex
			set ForForceCallback_typeId[this_1] = 844
		else
			call error("Out of memory: Could not create ForForceCallback_execute_MGSpacey_MGSpacey.")
			set this_1 = 0
		endif
	else
		set ForForceCallback_firstFree = ForForceCallback_firstFree - 1
		set this_1 = ForForceCallback_nextFree[ForForceCallback_firstFree]
		set ForForceCallback_typeId[this_1] = 844
	endif
	return this_1
endfunction

function alloc_ForForceCallback_execute_MGSpacey_MGSpacey_1767 takes nothing returns integer
	local integer this_1
	if ForForceCallback_firstFree == 0 then
		if ForForceCallback_maxIndex < JASS_MAX_ARRAY_SIZE then
			set ForForceCallback_maxIndex = ForForceCallback_maxIndex + 1
			set this_1 = ForForceCallback_maxIndex
			set ForForceCallback_typeId[this_1] = 845
		else
			call error("Out of memory: Could not create ForForceCallback_execute_MGSpacey_MGSpacey.")
			set this_1 = 0
		endif
	else
		set ForForceCallback_firstFree = ForForceCallback_firstFree - 1
		set this_1 = ForForceCallback_nextFree[ForForceCallback_firstFree]
		set ForForceCallback_typeId[this_1] = 845
	endif
	return this_1
endfunction

function force_forEach takes force this_1, code callback_1 returns nothing
	call ForForce(this_1, callback_1)
endfunction

function isLastCallbackSuccessful takes nothing returns boolean
	return Execute_tempCallbacksSuccess[Execute_tempCallbacksCount]
endfunction

function dealloc_ForForceCallback takes integer obj_1 returns nothing
	if ForForceCallback_typeId[obj_1] == 0 then
		call error("Double free: object of type ForForceCallback")
	else
		set ForForceCallback_nextFree[ForForceCallback_firstFree] = obj_1
		set ForForceCallback_firstFree = ForForceCallback_firstFree + 1
		set ForForceCallback_typeId[obj_1] = 0
	endif
endfunction

function destroyForForceCallback takes integer this_1 returns nothing
	call dealloc_ForForceCallback(this_1)
endfunction

function dispatch_ForForceCallback_destroyForForceCallback takes integer this_1 returns nothing
	if ForForceCallback_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling ForForceCallback.ForForceCallback")
		else
			call error("Called ForForceCallback.ForForceCallback on invalid object.")
		endif
	endif
	call destroyForForceCallback(this_1)
endfunction

function popCallback_3935 takes nothing returns nothing
	set Execute_tempCallbacksCount = Execute_tempCallbacksCount - 1
	call dispatch_ForForceCallback_destroyForForceCallback(Execute_tempCallbacks[Execute_tempCallbacksCount])
endfunction

function pushCallback_3949 takes integer c returns nothing
	set Execute_tempCallbacks[Execute_tempCallbacksCount] = c
	set Execute_tempCallbacksSuccess[Execute_tempCallbacksCount] = false
	set Execute_tempCallbacksCount = Execute_tempCallbacksCount + 1
endfunction

function try takes integer c returns boolean
	local boolean suppressErrors
	call pushCallback_3949(c)
	set suppressErrors = ErrorHandling_suppressErrorMessages
	set ErrorHandling_suppressErrorMessages = true
	call force_forEach(Execute_executeForce, ref_function_executeCurrentCallback)
	set ErrorHandling_suppressErrorMessages = suppressErrors
	call popCallback_3935()
	return isLastCallbackSuccessful()
endfunction

function execute takes integer c returns nothing
	if  not try(c) then
		call error("execute: thread has crashed. caused by:\n| - " + ErrorHandling_lastError)
	endif
endfunction

function removeKeyListener takes integer listener_1 returns nothing
	if KeyUtils_firstKeyListener == listener_1 then
		set KeyUtils_firstKeyListener = 0
	endif
	call dispatch_EventListener_destroyEventListener(listener_1)
endfunction

function MGSpacey_onEnd takes integer this_1 returns nothing
	local integer clVar
	local integer clVar_1
	if MGSpacey_listener[this_1] != 0 then
		call dispatch_EventListener_destroyEventListener(MGSpacey_listener[this_1])
	endif
	if MGSpacey_klistener[this_1] != 0 then
		call removeKeyListener(MGSpacey_klistener[this_1])
	endif
	set clVar = alloc_ForForceCallback_execute_MGSpacey_MGSpacey()
	call execute(clVar)
	set clVar_1 = alloc_ForForceCallback_execute_MGSpacey_MGSpacey_1767()
	call execute(clVar_1)
endfunction

function alloc_ForForceCallback_execute_MGWarlock_MGWarlock takes nothing returns integer
	local integer this_1
	if ForForceCallback_firstFree == 0 then
		if ForForceCallback_maxIndex < JASS_MAX_ARRAY_SIZE then
			set ForForceCallback_maxIndex = ForForceCallback_maxIndex + 1
			set this_1 = ForForceCallback_maxIndex
			set ForForceCallback_typeId[this_1] = 846
		else
			call error("Out of memory: Could not create ForForceCallback_execute_MGWarlock_MGWarlock.")
			set this_1 = 0
		endif
	else
		set ForForceCallback_firstFree = ForForceCallback_firstFree - 1
		set this_1 = ForForceCallback_nextFree[ForForceCallback_firstFree]
		set ForForceCallback_typeId[this_1] = 846
	endif
	return this_1
endfunction

function MGWarlock_onEnd takes integer this_1 returns nothing
	local integer clVar = alloc_ForForceCallback_execute_MGWarlock_MGWarlock()
	call execute(clVar)
	call dispatch_CallbackPeriodic_destroyCallbackPeriodic(MGWarlock_cb[this_1])
endfunction

function dispatch_Minigame_Minigame_Minigame_onEnd takes integer this_1 returns nothing
	if Minigame_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling Minigame.onEnd")
		else
			call error("Called Minigame.onEnd on invalid object.")
		endif
	endif
	if Minigame_typeId[this_1] <= 1014 then
		if Minigame_typeId[this_1] <= 1013 then
			if Minigame_typeId[this_1] <= 1012 then
				call MGAgar_onEnd(this_1)
			else
				call MGRandKill_onEnd(this_1)
			endif
		else
			call MGSlide_onEnd(this_1)
		endif
	elseif Minigame_typeId[this_1] <= 1015 then
		call MGSpacey_onEnd(this_1)
	else
		call MGWarlock_onEnd(this_1)
	endif
endfunction

function Minigame_reset takes integer this_1 returns nothing
	local integer pd_1
	local integer from
	local integer clVar
	if Minigame_tim[this_1] != null then
		call timer_release(Minigame_tim[this_1])
		set Minigame_tim[this_1] = null
		call DestroyTimerDialog(Minigame_window[this_1])
		set from = dispatch_LinkedList_LinkedList_LinkedList_staticItr(PlayerData_escaperPlayers)
		loop
			exitwhen  not LLIterator_hasNext(from)
			set pd_1 = LLIterator_next(from)
			if PlayerData_escaper[pd_1] != 0 then
				if  not Escaper_alive[PlayerData_escaper[pd_1]] then
					call dispatch_Escaper_Escaper_Escaper_revive(PlayerData_escaper[pd_1])
				endif
				call dispatch_UnitEntity_Entity_UnitEntity_setPos(PlayerData_escaper[pd_1], vec2_toVec3(RegionData_LOUNGE_x, RegionData_LOUNGE_y), vec2_toVec3_return_y, vec2_toVec3_return_z)
				call Entity_setCurrentRegion(PlayerData_escaper[pd_1])
			endif
			call SetCameraBoundsToRectForPlayerBJ(PlayerData_p[pd_1], gg_rct_Region_023)
			set clVar = alloc_CallbackSingle_doAfter_Minigame_Minigame_1621()
			call construct_CallbackSingle(clVar)
			set pd[clVar] = pd_1
			call doAfter(1., clVar)
			if  not Escaper_camlock[PlayerData_escaper[pd_1]] then
				call ResetToGameCameraForPlayer(PlayerData_p[pd_1], 1.)
			endif
			call printTimedToPlayer("Minigame ended!", 10., PlayerData_p[pd_1])
		endloop
		call changeRevMode(0)
		call dispatch_Minigame_Minigame_Minigame_onEnd(this_1)
		call dispatch_MinigameTeleporter_MinigameTeleporter_MinigameTeleporter_reset(MinigameTeleporter_MINI_TP)
	endif
endfunction

function dispatch_Minigame_Minigame_Minigame_reset takes integer this_1 returns nothing
	if Minigame_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling Minigame.reset")
		else
			call error("Called Minigame.reset on invalid object.")
		endif
	endif
	call Minigame_reset(this_1)
endfunction

function max_2_3590 takes real numbers_0, real numbers_1 returns real
	local real maxNumber = Real_REAL_MIN
	local real cond_result
	if numbers_0 > maxNumber then
		set cond_result = numbers_0
	else
		set cond_result = maxNumber
	endif
	set maxNumber = cond_result
	if numbers_1 > maxNumber then
		set cond_result = numbers_1
	else
		set cond_result = maxNumber
	endif
	set maxNumber = cond_result
	return maxNumber
endfunction

function alloc_FoodEntity takes nothing returns integer
	local integer this_1
	if Serializable_firstFree == 0 then
		if Serializable_maxIndex < JASS_MAX_ARRAY_SIZE then
			set Serializable_maxIndex = Serializable_maxIndex + 1
			set this_1 = Serializable_maxIndex
			set Serializable_typeId[this_1] = 1150
		else
			call error("Out of memory: Could not create FoodEntity.")
			set this_1 = 0
		endif
	else
		set Serializable_firstFree = Serializable_firstFree - 1
		set this_1 = Serializable_nextFree[Serializable_firstFree]
		set Serializable_typeId[this_1] = 1150
	endif
	return this_1
endfunction

function FoodEntity_init takes integer this_1 returns nothing
endfunction

function FxEntity_init takes integer this_1 returns nothing
	set FxEntity_silent[this_1] = false
endfunction

function widget_addEffect takes widget this_1, string modelName, string attachment returns effect
	return AddSpecialEffectTarget(modelName, this_1, attachment)
endfunction

function Fx_setFx takes integer this_1, string newpath returns nothing
	if Fx_fx[this_1] != null then
		call effect_destr(Fx_fx[this_1])
	endif
	if newpath == "" then
		set Fx_fx[this_1] = null
	else
		set Fx_fx[this_1] = widget_addEffect(Fx_dummy[this_1], newpath, "origin")
	endif
	set Fx_sfxPath[this_1] = newpath
endfunction

function dispatch_Fx_Fx_Fx_setFx takes integer this_1, string newpath returns nothing
	if Fx_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling Fx.setFx")
		else
			call error("Called Fx.setFx on invalid object.")
		endif
	endif
	call Fx_setFx(this_1, newpath)
endfunction

function Fx_setOwner takes integer this_1, player p, boolean changeColor returns nothing
	if Fx_fx[this_1] != null then
		call effect_destr(Fx_fx[this_1])
		set Fx_fx[this_1] = null
	endif
	call dispatch_Fx_Fx_Fx_setFx(this_1, Fx_sfxPath[this_1])
	call unit_setOwner(Fx_dummy[this_1], p, changeColor)
endfunction

function dispatch_Fx_Fx_Fx_setOwner takes integer this_1, player p, boolean changeColor returns nothing
	if Fx_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling Fx.setOwner")
		else
			call error("Called Fx.setOwner on invalid object.")
		endif
	endif
	call Fx_setOwner(this_1, p, changeColor)
endfunction

function alloc_Fx takes nothing returns integer
	local integer this_1
	if Fx_firstFree == 0 then
		if Fx_maxIndex < JASS_MAX_ARRAY_SIZE then
			set Fx_maxIndex = Fx_maxIndex + 1
			set this_1 = Fx_maxIndex
			set Fx_typeId[this_1] = 887
		else
			call error("Out of memory: Could not create Fx.")
			set this_1 = 0
		endif
	else
		set Fx_firstFree = Fx_firstFree - 1
		set this_1 = Fx_nextFree[Fx_firstFree]
		set Fx_typeId[this_1] = 887
	endif
	return this_1
endfunction

function unit_setXY takes unit this_1, real pos_x_1, real pos_y_1 returns nothing
	local unit receiver = this_1
	local unit receiver_1
	call unit_setX(receiver, pos_x_1)
	set receiver_1 = receiver
	call unit_setY(receiver_1, pos_y_1)
endfunction

function createDummy takes real pos_x_1, real pos_y_1, real facing_radians returns unit
	local unit u_1 = createUnit(Basics_DUMMY_PLAYER, DummyRecycler_DUMMY_UNIT_ID, pos_x_1, pos_y_1, facing_radians)
	local unit receiver = u_1
	local unit receiver_1
	local unit receiver_2
	local unit receiver_3
	local unit receiver_4
	local unit receiver_5
	call unit_addAbility(receiver, Basics_HEIGHT_ENABLER)
	set receiver_1 = receiver
	call unit_removeAbility(receiver_1, Basics_HEIGHT_ENABLER)
	set receiver_2 = receiver_1
	call unit_addAbility(receiver_2, DummyRecycler_ROOT_ENABLER)
	set receiver_3 = receiver_2
	call unit_removeAbility(receiver_3, DummyRecycler_ROOT_ENABLER)
	set receiver_4 = receiver_3
	call unit_setXY(receiver_4, pos_x_1, pos_y_1)
	set receiver_5 = receiver_4
	call unit_setFacing(receiver_5, facing_radians)
	return u_1
endfunction

function unitFromIndex takes integer index returns unit
	call dispatch_Table_Table_Table_saveFogState(TypeCasting_typecastdata, 0, ConvertFogState(index))
	return dispatch_Table_Table_Table_loadUnit(TypeCasting_typecastdata, 0)
endfunction

function DummyRecycler_get takes real pos_x_1, real pos_y_1, real a_radians returns unit
	local integer angleIndex = ModuloInteger(real_round(ModuloReal(angle_degrees(a_radians), 360.) / DummyRecycler_ANGLE_DEGREE), DummyRecycler_DIFFERENT_ANGLES)
	local unit receiver
	local unit receiver_1
	if dispatch_LinkedList_LinkedList_LinkedList_size(DummyRecycler_angleQueues[angleIndex]) > 0 then
		set receiver = unitFromIndex(dispatch_LinkedList_LinkedList_LinkedList_dequeue(DummyRecycler_angleQueues[angleIndex]))
		call unit_setXY(receiver, pos_x_1, pos_y_1)
		set receiver_1 = receiver
		call unit_unpause(receiver_1)
		return receiver_1
	else
		return createDummy(pos_x_1, pos_y_1, a_radians)
	endif
endfunction

function Fx_init takes integer this_1 returns nothing
	local integer tuple_temp
	local integer tuple_temp_1
	local integer tuple_temp_2
	local integer tuple_temp_3
	set Fx_dummy[this_1] = null
	set Fx_fx[this_1] = null
	set Fx_sfxPath[this_1] = ""
	set tuple_temp = 255
	set tuple_temp_1 = 255
	set tuple_temp_2 = 255
	set tuple_temp_3 = 255
	set Fx_col_red[this_1] = tuple_temp
	set Fx_col_green[this_1] = tuple_temp_1
	set Fx_col_blue[this_1] = tuple_temp_2
	set Fx_col_alpha[this_1] = tuple_temp_3
endfunction

function Fx_getDummy takes integer this_1 returns unit
	return Fx_dummy[this_1]
endfunction

function dispatch_Fx_Fx_Fx_getDummy takes integer this_1 returns unit
	local unit Fx_Fx_getDummy_result
	if Fx_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling Fx.getDummy")
		else
			call error("Called Fx.getDummy on invalid object.")
		endif
	endif
	set Fx_Fx_getDummy_result = Fx_getDummy(this_1)
	return Fx_Fx_getDummy_result
endfunction

function unit_setColor takes unit this_1, playercolor c returns nothing
	call SetUnitColor(this_1, c)
endfunction

function Fx_setPlayerColor takes integer this_1, playercolor pc returns nothing
	call unit_setColor(dispatch_Fx_Fx_Fx_getDummy(this_1), pc)
endfunction

function dispatch_Fx_Fx_Fx_setPlayerColor takes integer this_1, playercolor pc returns nothing
	if Fx_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling Fx.setPlayerColor")
		else
			call error("Called Fx.setPlayerColor on invalid object.")
		endif
	endif
	call Fx_setPlayerColor(this_1, pc)
endfunction

function Fx_setZ takes integer this_1, real z returns nothing
	call unit_setFlyHeight(Fx_dummy[this_1], z, 0.)
endfunction

function dispatch_Fx_Fx_Fx_setZ takes integer this_1, real z returns nothing
	if Fx_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling Fx.setZ")
		else
			call error("Called Fx.setZ on invalid object.")
		endif
	endif
	call Fx_setZ(this_1, z)
endfunction

function construct_Fx8 takes integer this_1, playercolor pc, real pos_x_1, real pos_y_1, real pos_z, real facing_radians, string fxpath returns nothing
	call Fx_init(this_1)
	set Fx_dummy[this_1] = DummyRecycler_get(vec3_toVec2(pos_x_1, pos_y_1, pos_z), vec3_toVec2_return_y, facing_radians)
	call dispatch_Fx_Fx_Fx_setFx(this_1, fxpath)
	call dispatch_Fx_Fx_Fx_setZ(this_1, pos_z)
	call dispatch_Fx_Fx_Fx_setPlayerColor(this_1, pc)
endfunction

function new_Fx_3675 takes playercolor pc, real pos_x_1, real pos_y_1, real pos_z, real facing_radians, string fxpath returns integer
	local integer this_1 = alloc_Fx()
	call construct_Fx8(this_1, pc, pos_x_1, pos_y_1, pos_z, facing_radians, fxpath)
	return this_1
endfunction

function player_getColor takes player this_1 returns playercolor
	return GetPlayerColor(this_1)
endfunction

function FxEntity_setupFx takes integer this_1, real xyAngle_radians, string sfxpath returns nothing
	set FxEntity_fx[this_1] = new_Fx_3675(player_getColor(Entity_owner[this_1]), Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1], xyAngle_radians, sfxpath)
	call dispatch_Fx_Fx_Fx_setOwner(FxEntity_fx[this_1], Entity_owner[this_1], true)
endfunction

function dispatch_FxEntity_FxEntity_FxEntity_setupFx takes integer this_1, real xyAngle_radians, string sfxpath returns nothing
	if Serializable_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling FxEntity.setupFx")
		else
			call error("Called FxEntity.setupFx on invalid object.")
		endif
	endif
	call FxEntity_setupFx(this_1, xyAngle_radians, sfxpath)
endfunction

function construct_FxEntity2 takes integer this_1, player owner, real pos_x_1, real pos_y_1, real pos_z, real xyAngle_radians, string sfxpath returns nothing
	call construct_Entity5(this_1, owner, pos_x_1, pos_y_1, pos_z, Entity_radius[this_1])
	call FxEntity_init(this_1)
	call dispatch_FxEntity_FxEntity_FxEntity_setupFx(this_1, xyAngle_radians, sfxpath)
endfunction

function rect_randomPoint takes rect this_1 returns real
	set rect_randomPoint_return_x = GetRandomReal(rect_getMinX(this_1), rect_getMaxX(this_1))
	set rect_randomPoint_return_y = GetRandomReal(rect_getMinY(this_1), rect_getMaxY(this_1))
	return rect_randomPoint_return_x
endfunction

function int_toPlayerColor takes integer this_1 returns playercolor
	return Playercolor_LOOKUP[this_1]
endfunction

function string_toLowerCase takes string this_1 returns string
	return StringCase(this_1, false)
endfunction

function string_toPlayerColor takes string this_1 returns playercolor
	local playercolor pc = null
	local integer i = 0
	local integer temp = Colors_MAX_PLAYER_COLORS
	loop
		exitwhen i > temp
		if string_toLowerCase(this_1) == Colors_PLAYER_COLOR_NAMES[i] then
			set pc = int_toPlayerColor(i)
			exitwhen true
		endif
		set i = i + 1
	endloop
	return pc
endfunction

function construct_FoodEntity takes integer this_1 returns nothing
	call construct_FxEntity2(this_1, GameConstants_STAFF_PLAYER, vec2_toVec3(rect_randomPoint(gg_rct_agargamefoodspawn), rect_randomPoint_return_y), vec2_toVec3_return_y, vec2_toVec3_return_z, 0., "models\\tcBox.mdl")
	call FoodEntity_init(this_1)
	call dispatch_Fx_Fx_Fx_setPlayerColor(FxEntity_fx[this_1], string_toPlayerColor(Colors_PLAYER_COLOR_NAMES[GetRandomInt(0, 22)]))
endfunction

function new_FoodEntity takes nothing returns integer
	local integer this_1 = alloc_FoodEntity()
	call construct_FoodEntity(this_1)
	return this_1
endfunction

function toHex takes integer number returns string
	local integer firstpart = number / 16
	local integer secondpart = number - firstpart * 16
	return Colors_hexs[firstpart] + Colors_hexs[secondpart]
endfunction

function color_toColorString takes integer this_red, integer this_green, integer this_blue returns string
	return "|cff" + toHex(this_red) + toHex(this_green) + toHex(this_blue)
endfunction

function player_getName_3916 takes player this_1, boolean removeHash returns string
	local string cond_result
	if removeHash then
		set cond_result = string_substring(GetPlayerName(this_1), 0, string_indexOf(GetPlayerName(this_1), "#"))
	else
		set cond_result = GetPlayerName(this_1)
	endif
	return cond_result
endfunction

function colorA_withoutAlpha takes integer this_red, integer this_green, integer this_blue, integer this_alpha returns integer
	set colorA_withoutAlpha_return_red = this_red
	set colorA_withoutAlpha_return_green = this_green
	set colorA_withoutAlpha_return_blue = this_blue
	return colorA_withoutAlpha_return_red
endfunction

function playercolor_toInt takes playercolor this_1 returns integer
	local integer value = 0
	local integer i = 0
	local integer temp = bj_MAX_PLAYER_SLOTS - 1
	loop
		exitwhen i > temp
		if Playercolor_LOOKUP[i] == this_1 then
			set value = i
			exitwhen true
		endif
		set i = i + 1
	endloop
	return value
endfunction

function playercolor_toColor takes playercolor this_1 returns integer
	local integer cond_result_red
	local integer cond_result_green
	local integer cond_result_blue
	local integer tempIndex
	local integer tuple_temp
	local integer tuple_temp_1
	local integer tuple_temp_2
	local integer tuple_temp_3
	local integer tuple_temp_4
	local integer tuple_temp_5
	if playercolor_toInt(this_1) <= Colors_MAX_PLAYER_COLORS then
		set tempIndex = playercolor_toInt(this_1)
		set tuple_temp = Colors_PLAYER_COLORS_red[tempIndex]
		set tuple_temp_1 = Colors_PLAYER_COLORS_green[tempIndex]
		set tuple_temp_2 = Colors_PLAYER_COLORS_blue[tempIndex]
		set cond_result_red = tuple_temp
		set cond_result_green = tuple_temp_1
		set cond_result_blue = tuple_temp_2
	else
		set tuple_temp_3 = colorA_withoutAlpha(Colors_COLOR_BLACK_red, Colors_COLOR_BLACK_green, Colors_COLOR_BLACK_blue, Colors_COLOR_BLACK_alpha)
		set tuple_temp_4 = colorA_withoutAlpha_return_green
		set tuple_temp_5 = colorA_withoutAlpha_return_blue
		set cond_result_red = tuple_temp_3
		set cond_result_green = tuple_temp_4
		set cond_result_blue = tuple_temp_5
	endif
	set playercolor_toColor_return_red = cond_result_red
	set playercolor_toColor_return_green = cond_result_green
	set playercolor_toColor_return_blue = cond_result_blue
	return playercolor_toColor_return_red
endfunction

function player_getNameColored takes player this_1, boolean removeHash returns string
	return color_toColorString(playercolor_toColor(player_getColor(this_1)), playercolor_toColor_return_green, playercolor_toColor_return_blue) + player_getName_3916(this_1, removeHash) + "|r"
endfunction

function unit_hide takes unit this_1 returns nothing
	call ShowUnit(this_1, false)
endfunction

function unit_pause takes unit this_1 returns nothing
	call PauseUnit(this_1, true)
endfunction

function vec3_distanceTo2dSq takes real this_x, real this_y, real this_z, real v_x, real v_y returns real
	return real_squared(v_x - this_x) + real_squared(v_y - this_y)
endfunction

function call_doPeriodicallyCounted_MGAgar_MGAgar takes integer this_1, integer cb_1 returns nothing
	local integer iterator
	local integer pd_1
	local integer adata
	local integer iterator_1
	local integer pd2
	local integer bdata
	local unit receiver
	local unit receiver_1
	local integer itr_1
	local integer fe
	local integer from
	local integer iterator_2
	local integer pdi
	if ModuloInteger(dispatch_CallbackCounted_ClosureTimers_CallbackCounted_getCount(cb_1), 11) == 0 then
		call dispatch_LinkedList_LinkedList_LinkedList_add_1(MGAgar_flist[this_2941[this_1]], new_FoodEntity())
	endif
	if ModuloInteger(dispatch_CallbackCounted_ClosureTimers_CallbackCounted_getCount(cb_1), 7) == 0 then
		call dispatch_LinkedList_LinkedList_LinkedList_add_1(MGAgar_flist[this_2941[this_1]], new_FoodEntity())
	endif
	set iterator = LinkedList_iterator(PlayerData_escaperPlayers)
	loop
		exitwhen  not LLIterator_hasNext(iterator)
		set pd_1 = LLIterator_next(iterator)
		if PlayerData_escaper[pd_1] != 0 and Escaper_alive[PlayerData_escaper[pd_1]] then
			set adata = dispatch_HashMap_HashMap_HashMap_get(MGAgar_map, PlayerData_escaper[pd_1])
			set iterator_1 = LinkedList_iterator(PlayerData_escaperPlayers)
			loop
				exitwhen  not LLIterator_hasNext(iterator_1)
				set pd2 = LLIterator_next(iterator_1)
				set bdata = dispatch_HashMap_HashMap_HashMap_get(MGAgar_map, PlayerData_escaper[pd2])
				if vec3_distanceTo2dSq(Entity_pos_x[PlayerData_escaper[pd2]], Entity_pos_y[PlayerData_escaper[pd2]], Entity_pos_z[PlayerData_escaper[pd2]], vec3_toVec2(dispatch_UnitEntity_Entity_UnitEntity_getPos(PlayerData_escaper[pd_1]), dispatch_UnitEntity_Entity_UnitEntity_getPos_return_y, dispatch_UnitEntity_Entity_UnitEntity_getPos_return_z), vec3_toVec2_return_y) < real_squared(32. + 6. * AgarData_size[adata]) and AgarData_size[adata] > AgarData_size[bdata] + 1. then
					set AgarData_size[adata] = AgarData_size[adata] + AgarData_size[bdata]
					set Escaper_alive[PlayerData_escaper[pd2]] = false
					set receiver = UnitEntity_actor[PlayerData_escaper[pd2]]
					call unit_pause(receiver)
					set receiver_1 = receiver
					call unit_hide(receiver_1)
					call dispatch_HashMap_HashMap_HashMap_remove(MGAgar_map, PlayerData_escaper[pd2])
				endif
			endloop
			call LLIterator_close(iterator_1)
			set itr_1 = dispatch_LinkedList_LinkedList_LinkedList_staticItr(MGAgar_flist[this_2941[this_1]])
			set from = itr_1
			loop
				exitwhen  not LLIterator_hasNext(from)
				set fe = LLIterator_next(from)
				if ( not Entity_done[fe]) and vec3_distanceTo2dSq(Entity_pos_x[fe], Entity_pos_y[fe], Entity_pos_z[fe], vec3_toVec2(dispatch_UnitEntity_Entity_UnitEntity_getPos(PlayerData_escaper[pd_1]), dispatch_UnitEntity_Entity_UnitEntity_getPos_return_y, dispatch_UnitEntity_Entity_UnitEntity_getPos_return_z), vec3_toVec2_return_y) < real_squared(32. + 6. * AgarData_size[adata]) then
					call cyc_RevivePoint_terminate(18, fe)
					call dispatch_LLIterator_LinkedList_LLIterator_remove(itr_1)
					set AgarData_size[adata] = AgarData_size[adata] + 1.
				endif
			endloop
			call unit_setScale(UnitEntity_actor[PlayerData_escaper[pd_1]], 0.2 + 0.15 * AgarData_size[adata])
			call unit_setMoveSpeed(UnitEntity_actor[PlayerData_escaper[pd_1]], max_2_3590(75., 235. - 3. * AgarData_size[adata]))
		endif
	endloop
	call LLIterator_close(iterator)
	if dispatch_HashMap_HashMap_HashMap_size(MGAgar_map) == 1 then
		set iterator_2 = LinkedList_iterator(PlayerData_escaperPlayers)
		loop
			exitwhen  not LLIterator_hasNext(iterator_2)
			set pdi = LLIterator_next(iterator_2)
			if PlayerData_escaper[pdi] != 0 then
				call dispatch_RegionData_RegionData_RegionData_hideRegion(Entity_getCurrentRegion(PlayerData_escaper[pdi]), PlayerData_p[pdi])
			endif
			call printTimedToPlayer(player_getNameColored(PlayerData_p[pdi], true) + " has won!", 10., PlayerData_p[pdi])
		endloop
		call LLIterator_close(iterator_2)
		call dispatch_CallbackCounted_destroyCallbackCounted(MGAgar_cbs[this_2941[this_1]])
		set MGAgar_cbs[this_2941[this_1]] = 0
		call dispatch_Minigame_Minigame_Minigame_reset(this_2941[this_1])
	endif
endfunction

function createFText_2345 takes real pos_x_1, real pos_y_1, real pos_z, string text, real size, real lifespan, real vel_x, real vel_y returns integer
	return createFText_2348(pos_x_1, pos_y_1, pos_z, text, size, lifespan, vel_x, vel_y, Colors_COLOR_WHITE_red, Colors_COLOR_WHITE_green, Colors_COLOR_WHITE_blue, Colors_COLOR_WHITE_alpha)
endfunction

function call_doPeriodicallyCounted_MGSlide_MGSlide takes integer this_1, integer cb_1 returns nothing
	local real cond_result_x
	local real cond_result_y
	local real tuple_temp
	local real tuple_temp_1
	local real tuple_temp_2
	local real tuple_temp_3
	if MGSlide_goRight[this_2947[this_1]] then
		set tuple_temp = MGSlide_RIGHT_SPOT_x
		set tuple_temp_1 = MGSlide_RIGHT_SPOT_y
		set cond_result_x = tuple_temp
		set cond_result_y = tuple_temp_1
	else
		set tuple_temp_2 = MGSlide_LEFT_SPOT_x
		set tuple_temp_3 = MGSlide_LEFT_SPOT_y
		set cond_result_x = tuple_temp_2
		set cond_result_y = tuple_temp_3
	endif
	call createFText_2345(vec2_toVec3(cond_result_x, cond_result_y), vec2_toVec3_return_y, vec2_toVec3_return_z, int_toString(dispatch_CallbackCounted_ClosureTimers_CallbackCounted_getCount(cb_1)), 12., 2., 0., 0.03)
endfunction

function dispatch_CallbackCounted_ClosureTimers_CallbackCounted_call takes integer this_1, integer cb_1 returns nothing
	if CallbackCounted_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling CallbackCounted.call")
		else
			call error("Called CallbackCounted.call on invalid object.")
		endif
	endif
	if CallbackCounted_typeId[this_1] <= 661 then
		if CallbackCounted_typeId[this_1] <= 660 then
			call call_doPeriodicallyCounted_ClosureTimers(this_1, cb_1)
		else
			call call_doPeriodicallyCounted_MGAgar_MGAgar(this_1, cb_1)
		endif
	else
		call call_doPeriodicallyCounted_MGSlide_MGSlide(this_1, cb_1)
	endif
endfunction

function CallbackCounted_callAndCount takes integer this_1 returns nothing
	if CallbackCounted_count[this_1] > 0 then
		set CallbackCounted_count[this_1] = CallbackCounted_count[this_1] - 1
		call dispatch_CallbackCounted_ClosureTimers_CallbackCounted_call(this_1, this_1)
	else
		call dispatch_CallbackCounted_destroyCallbackCounted(this_1)
	endif
endfunction

function dispatch_CallbackCounted_ClosureTimers_CallbackCounted_callAndCount takes integer this_1 returns nothing
	if CallbackCounted_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling CallbackCounted.callAndCount")
		else
			call error("Called CallbackCounted.callAndCount on invalid object.")
		endif
	endif
	call CallbackCounted_callAndCount(this_1)
endfunction

function CallbackCounted_staticCallback takes nothing returns nothing
	call dispatch_CallbackCounted_ClosureTimers_CallbackCounted_callAndCount(timer_getData(GetExpiredTimer()))
endfunction

function alloc_SmallRandomKiller takes nothing returns integer
	local integer this_1
	if Serializable_firstFree == 0 then
		if Serializable_maxIndex < JASS_MAX_ARRAY_SIZE then
			set Serializable_maxIndex = Serializable_maxIndex + 1
			set this_1 = Serializable_maxIndex
			set Serializable_typeId[this_1] = 1186
		else
			call error("Out of memory: Could not create SmallRandomKiller.")
			set this_1 = 0
		endif
	else
		set Serializable_firstFree = Serializable_firstFree - 1
		set this_1 = Serializable_nextFree[Serializable_firstFree]
		set Serializable_typeId[this_1] = 1186
	endif
	return this_1
endfunction

function SmallRandomKiller_init takes integer this_1 returns nothing
endfunction

function construct_EscaperSensorSetup_Sensor takes integer this_1 returns nothing
endfunction

function EscaperSensorSetup_init takes integer this_1 returns nothing
	set EscaperSensorSetup_Sensor_inRangeTrig[this_1] = null
	set EscaperSensorSetup_Sensor_actorRef[this_1] = null
	set EscaperSensorSetup_sensorHeight[this_1] = 32.
	call construct_EscaperSensorSetup_Sensor(this_1)
endfunction

function alloc_SensorListener_addSensorListener_EscaperSensorSetup_EscaperSensor_1890 takes nothing returns integer
	local integer this_1
	if SensorListener_firstFree == 0 then
		if SensorListener_maxIndex < JASS_MAX_ARRAY_SIZE then
			set SensorListener_maxIndex = SensorListener_maxIndex + 1
			set this_1 = SensorListener_maxIndex
			set SensorListener_typeId[this_1] = 1122
		else
			call error("Out of memory: Could not create SensorListener_addSensorListener_EscaperSensorSetup_EscaperSensor.")
			set this_1 = 0
		endif
	else
		set SensorListener_firstFree = SensorListener_firstFree - 1
		set this_1 = SensorListener_nextFree[SensorListener_firstFree]
		set SensorListener_typeId[this_1] = 1122
	endif
	return this_1
endfunction

function SensorListener_init takes integer this_1 returns nothing
endfunction

function construct_SensorListener takes integer this_1 returns nothing
	call SensorListener_init(this_1)
endfunction

function Log_warn takes string msg returns nothing
	call printLog_3944(Player_localPlayer, 3, msg)
endfunction

function eventid_isKeyboardEvent takes eventid this_1 returns boolean
	local integer eventId = handle_getHandleId(this_1)
	return (eventId >= 261 and eventId <= 268) or eventId == 17
endfunction

function eventid_isMouseEvent takes eventid this_1 returns boolean
	local integer eventId = handle_getHandleId(this_1)
	return eventId >= 305 and eventId <= 307
endfunction

function eventid_isPlayerunitEvent takes eventid this_1 returns boolean
	local integer eventId = handle_getHandleId(this_1)
	return (eventId >= 18 and eventId <= 51) or (eventId >= 269 and eventId <= 277) or eventId == 315 or eventId == 308
endfunction

function trigger_addAction takes trigger this_1, code actionFunc returns triggeraction
	return TriggerAddAction(this_1, actionFunc)
endfunction

function trigger_addCondition takes trigger this_1, boolexpr condition_1 returns triggercondition
	return TriggerAddCondition(this_1, condition_1)
endfunction

function trigger_registerPlayerUnitEvent takes trigger this_1, player whichPlayer, playerunitevent whichPlayerUnitEvent, boolexpr filter returns event
	return TriggerRegisterPlayerUnitEvent(this_1, whichPlayer, whichPlayerUnitEvent, filter)
endfunction

function registerPlayerUnitEvent_3996 takes playerunitevent p, code filter, code condition_1, code action_1 returns nothing
	local integer hid = handle_getHandleId(p)
	local integer k
	local filterfunc cond_result
	local trigger temp
	local player temp_1
	local playerunitevent temp_2
	if RegisterEvents_t[hid] == null then
		set RegisterEvents_t[hid] = CreateTrigger()
		set k = bj_MAX_PLAYER_SLOTS - 1
		loop
			exitwhen k < 0
			set temp = RegisterEvents_t[hid]
			set temp_1 = Player_players[k]
			set temp_2 = p
			if filter != null then
				set cond_result = Filter(filter)
			else
				set cond_result = null
			endif
			call trigger_registerPlayerUnitEvent(temp, temp_1, temp_2, cond_result)
			set k = k - 1
		endloop
	endif
	if condition_1 != null then
		call trigger_addCondition(RegisterEvents_t[hid], Filter(condition_1))
	endif
	if action_1 != null then
		call trigger_addAction(RegisterEvents_t[hid], action_1)
	endif
endfunction

function registerPlayerUnitEvent takes playerunitevent p, code c returns nothing
	call registerPlayerUnitEvent_3996(p, null, c, null)
endfunction

function trigger_registerPlayerEvent takes trigger this_1, player whichPlayer, playerevent whichPlayerEvent returns event
	return TriggerRegisterPlayerEvent(this_1, whichPlayer, whichPlayerEvent)
endfunction

function registerEventId takes eventid evnt returns integer
	local integer eventId = handle_getHandleId(evnt)
	local integer i
	local integer temp
	local trigger receiver
	local trigger receiver_1
	local trigger receiver_2
	set ClosureEvents_eventTypeCounter = ClosureEvents_eventTypeCounter + 1
	set ClosureEvents_eventidToIndex[eventId] = ClosureEvents_eventTypeCounter
	if eventid_isPlayerunitEvent(evnt) then
		call registerPlayerUnitEvent(ConvertPlayerUnitEvent(eventId), ref_function_EventListener_generalEventCallback)
	elseif evnt != EVENT_UNIT_DAMAGED and evnt != EVENT_PLAYER_LEAVE and evnt != ClosureEvents_EVENT_PLAYER_CHAT_FILTER and ( not eventid_isKeyboardEvent(evnt)) and ( not eventid_isMouseEvent(evnt)) then
		call error("registering handleid: " + int_toString(eventId) + " non-playerunitevent. Except EVENT_UNIT_DAMAGED and EVENT_PLAYER_LEAVE these are not supported right now.")
	endif
	if eventid_isMouseEvent(evnt) and ( not EventListener_useMouseEvents) then
		set EventListener_useMouseEvents = true
		set i = 0
		set temp = bj_MAX_PLAYERS - 1
		loop
			exitwhen i > temp
			set receiver = ClosureEvents_keyTrig
			call trigger_registerPlayerEvent(receiver, Player_players[i], EVENT_PLAYER_MOUSE_UP)
			set receiver_1 = receiver
			call trigger_registerPlayerEvent(receiver_1, Player_players[i], EVENT_PLAYER_MOUSE_DOWN)
			set receiver_2 = receiver_1
			call trigger_registerPlayerEvent(receiver_2, Player_players[i], EVENT_PLAYER_MOUSE_MOVE)
			set i = i + 1
		endloop
	endif
	return ClosureEvents_eventTypeCounter
endfunction

function eventid_toIntId takes eventid this_1 returns integer
	local integer id = ClosureEvents_eventidToIndex[handle_getHandleId(this_1)]
	if id == 0 then
		set id = registerEventId(this_1)
	endif
	return id
endfunction

function EventListener_add_436 takes unit u_1, eventid eventId, integer listener_1 returns integer
	local integer uid = unit_getIndex(u_1)
	if uid <= 0 then
		call Log_warn("Attempting to register event listener for a unit that is not indexed by UnitIndexer. " + "If this happens during initialization, consider registering the EventListener in a callback to nullTimer() instead.")
		return listener_1
	endif
	set EventListener_eventId[listener_1] = eventid_toIntId(eventId)
	set EventListener_uid[listener_1] = uid
	if EventListener_unitListenersFirsts[uid] != 0 then
		set EventListener_prev[EventListener_unitListenersFirsts[uid]] = listener_1
		set EventListener_next[listener_1] = EventListener_unitListenersFirsts[uid]
	endif
	set EventListener_unitListenersFirsts[uid] = listener_1
	return listener_1
endfunction

function SetupObject_init takes integer this_1 returns nothing
	set SetupObject_time[this_1] = GetRandomReal(30., 45.)
	set SetupObject_enabled[this_1] = true
endfunction

function alloc_EventListener_add_SetupObject_SetupObject takes nothing returns integer
	local integer this_1
	if EventListener_firstFree == 0 then
		if EventListener_maxIndex < JASS_MAX_ARRAY_SIZE then
			set EventListener_maxIndex = EventListener_maxIndex + 1
			set this_1 = EventListener_maxIndex
			set EventListener_typeId[this_1] = 812
		else
			call error("Out of memory: Could not create EventListener_add_SetupObject_SetupObject.")
			set this_1 = 0
		endif
	else
		set EventListener_firstFree = EventListener_firstFree - 1
		set this_1 = EventListener_nextFree[EventListener_firstFree]
		set EventListener_typeId[this_1] = 812
	endif
	return this_1
endfunction

function alloc_EventListener_add_SetupObject_SetupObject_1731 takes nothing returns integer
	local integer this_1
	if EventListener_firstFree == 0 then
		if EventListener_maxIndex < JASS_MAX_ARRAY_SIZE then
			set EventListener_maxIndex = EventListener_maxIndex + 1
			set this_1 = EventListener_maxIndex
			set EventListener_typeId[this_1] = 813
		else
			call error("Out of memory: Could not create EventListener_add_SetupObject_SetupObject.")
			set this_1 = 0
		endif
	else
		set EventListener_firstFree = EventListener_firstFree - 1
		set this_1 = EventListener_nextFree[EventListener_firstFree]
		set EventListener_typeId[this_1] = 813
	endif
	return this_1
endfunction

function alloc_EventListener_add_SetupObject_SetupObject_1732 takes nothing returns integer
	local integer this_1
	if EventListener_firstFree == 0 then
		if EventListener_maxIndex < JASS_MAX_ARRAY_SIZE then
			set EventListener_maxIndex = EventListener_maxIndex + 1
			set this_1 = EventListener_maxIndex
			set EventListener_typeId[this_1] = 814
		else
			call error("Out of memory: Could not create EventListener_add_SetupObject_SetupObject.")
			set this_1 = 0
		endif
	else
		set EventListener_firstFree = EventListener_firstFree - 1
		set this_1 = EventListener_nextFree[EventListener_firstFree]
		set EventListener_typeId[this_1] = 814
	endif
	return this_1
endfunction

function EventListener_init takes integer this_1 returns nothing
	set EventListener_eventId[this_1] = 0
	set EventListener_uid[this_1] = -1
	set EventListener_next[this_1] = 0
	set EventListener_prev[this_1] = 0
endfunction

function construct_EventListener takes integer this_1 returns nothing
	call EventListener_init(this_1)
endfunction

function UnitEntity_init takes integer this_1 returns nothing
	set UnitEntity_actor[this_1] = null
endfunction

function unit_setXYZReal takes unit this_1, real pos_x_1, real pos_y_1, real pos_z returns nothing
	call SetUnitX(this_1, pos_x_1)
	call SetUnitY(this_1, pos_y_1)
	call SetUnitFlyHeight(this_1, pos_z - vec3_getTerrainZ(pos_x_1, pos_y_1, pos_z), 0.)
endfunction

function UnitEntity_setupUnitEntity takes integer this_1, unit actor returns nothing
	local unit receiver
	local unit receiver_1
	local unit receiver_2
	local real tuple_temp
	local real tuple_temp_1
	local real tuple_temp_2
	local real tuple_temp_3
	local real tuple_temp_4
	local real tuple_temp_5
	set UnitEntity_actor[this_1] = actor
	call dispatch_UnitEntity_Entity_UnitEntity_getPos(this_1)
	if  not unit_isAlive(actor) then
		call cyc_RevivePoint_terminate(18, this_1)
		call error("Trying to assign entity to unit that is not alive")
	elseif unit_getEntity(actor) != 0 then
		call cyc_RevivePoint_terminate(18, this_1)
		call error("Trying to assign entity to unit that already has an entity")
	endif
	set receiver = actor
	call unit_setEntity(receiver, this_1)
	set receiver_1 = receiver
	call unit_addAbility(receiver_1, Basics_HEIGHT_ENABLER)
	set receiver_2 = receiver_1
	call unit_removeAbility(receiver_2, Basics_HEIGHT_ENABLER)
	if Frentity_DYNAMIC_Z then
		set tuple_temp = unit_getDynamicPos(actor)
		set tuple_temp_1 = unit_getDynamicPos_return_y
		set tuple_temp_2 = unit_getDynamicPos_return_z
		set Entity_pos_x[this_1] = tuple_temp
		set Entity_pos_y[this_1] = tuple_temp_1
		set Entity_pos_z[this_1] = tuple_temp_2
		call unit_setXYZReal(actor, Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1])
	else
		set tuple_temp_3 = unit_getPos3Fly(actor)
		set tuple_temp_4 = unit_getPos3Fly_return_y
		set tuple_temp_5 = unit_getPos3Fly_return_z
		set Entity_pos_x[this_1] = tuple_temp_3
		set Entity_pos_y[this_1] = tuple_temp_4
		set Entity_pos_z[this_1] = tuple_temp_5
		call unit_setXYZ(actor, Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1])
	endif
endfunction

function dispatch_UnitEntity_Entity_UnitEntity_setupUnitEntity takes integer this_1, unit actor returns nothing
	if Serializable_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling UnitEntity.setupUnitEntity")
		else
			call error("Called UnitEntity.setupUnitEntity on invalid object.")
		endif
	endif
	call UnitEntity_setupUnitEntity(this_1, actor)
endfunction

function construct_UnitEntity takes integer this_1, unit actor returns nothing
	call construct_Entity5(this_1, unit_getOwner(actor), unit_getDynamicPos(actor), unit_getDynamicPos_return_y, unit_getDynamicPos_return_z, 0.)
	call UnitEntity_init(this_1)
	call dispatch_UnitEntity_Entity_UnitEntity_setupUnitEntity(this_1, actor)
endfunction

function unit_setPathing takes unit this_1, boolean value returns nothing
	call SetUnitPathing(this_1, value)
endfunction

function construct_SetupObject takes integer this_1, unit actor, unit setup, real radius returns nothing
	local unit receiver
	local unit receiver_1
	local unit receiver_2
	local unit receiver_3
	local unit receiver_4
	local unit receiver_5
	local unit receiver_6
	local unit receiver_7
	local unit receiver_8
	local unit receiver_9
	local integer clVar
	local integer clVar_1
	local integer clVar_2
	local unit temp
	local playerunitevent temp_1
	local unit temp_2
	local playerunitevent temp_3
	local unit temp_4
	local playerunitevent temp_5
	call construct_UnitEntity(this_1, actor)
	call SetupObject_init(this_1)
	set SetupObject_setup[this_1] = setup
	set Entity_radius[this_1] = radius
	set ClosureEvents_config_fire[unit_getIndex(actor)] = true
	set receiver = actor
	call unit_setEntity(receiver, this_1)
	set receiver_1 = receiver
	call unit_addAbility(receiver_1, Basics_LOCUST_ID)
	set receiver_2 = receiver_1
	call unit_removeAbility(receiver_2, BuilderConstants_REMOVE_OBJECT_ID)
	set receiver_3 = receiver_2
	call unit_setPathing(receiver_3, true)
	set receiver_4 = setup
	call unit_setEntity(receiver_4, this_1)
	set receiver_5 = receiver_4
	call unit_setXY(receiver_5, unit_getPos(actor), unit_getPos_return_y)
	set receiver_6 = receiver_5
	call unit_addAbility(receiver_6, Basics_GHOST_INVIS_ID)
	set receiver_7 = receiver_6
	call unit_addAbility(receiver_7, BuilderConstants_REMOVE_OBJECT_ID)
	set receiver_8 = receiver_7
	call unit_addAbility(receiver_8, Basics_HEIGHT_ENABLER)
	set receiver_9 = receiver_8
	call unit_removeAbility(receiver_9, Basics_HEIGHT_ENABLER)
	call Entity_setCurrentRegion(this_1)
	set temp = setup
	set temp_1 = EVENT_PLAYER_UNIT_ISSUED_ORDER
	set clVar = alloc_EventListener_add_SetupObject_SetupObject()
	call construct_EventListener(clVar)
	set this_2909[clVar] = this_1
	call EventListener_add_436(temp, temp_1, clVar)
	set temp_2 = setup
	set temp_3 = EVENT_PLAYER_UNIT_ISSUED_POINT_ORDER
	set clVar_1 = alloc_EventListener_add_SetupObject_SetupObject_1731()
	call construct_EventListener(clVar_1)
	set this_2910[clVar_1] = this_1
	call EventListener_add_436(temp_2, temp_3, clVar_1)
	set temp_4 = setup
	set temp_5 = EVENT_PLAYER_UNIT_ISSUED_TARGET_ORDER
	set clVar_2 = alloc_EventListener_add_SetupObject_SetupObject_1732()
	call construct_EventListener(clVar_2)
	set this_2911[clVar_2] = this_1
	call EventListener_add_436(temp_4, temp_5, clVar_2)
endfunction

function createUnit_2356 takes player p, integer unitId, real pos_x_1, real pos_y_1, real pos_z, real facing_radians returns unit
	local unit u_1 = CreateUnit(p, unitId, pos_x_1, pos_y_1, angle_degrees(facing_radians))
	call unit_setFlyHeight(u_1, pos_z, 0.)
	return u_1
endfunction

function FxEntity_getDummy takes integer this_1 returns unit
	return dispatch_Fx_Fx_Fx_getDummy(FxEntity_fx[this_1])
endfunction

function dispatch_FxEntity_FxEntity_FxEntity_getDummy takes integer this_1 returns unit
	local unit FxEntity_FxEntity_getDummy_result
	if Serializable_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling FxEntity.getDummy")
		else
			call error("Called FxEntity.getDummy on invalid object.")
		endif
	endif
	set FxEntity_FxEntity_getDummy_result = FxEntity_getDummy(this_1)
	return FxEntity_FxEntity_getDummy_result
endfunction

function hashtable_saveTriggerHandle takes hashtable this_1, integer parentKey, integer childKey, trigger value returns nothing
	call SaveTriggerHandle(this_1, parentKey, childKey, value)
endfunction

function Table_saveTrigger takes integer this_1, integer parentKey, trigger value returns nothing
	call hashtable_saveTriggerHandle(Table_ht, this_1, parentKey, value)
endfunction

function dispatch_Table_Table_Table_saveTrigger takes integer this_1, integer parentKey, trigger value returns nothing
	if Table_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling Table.saveTrigger")
		else
			call error("Called Table.saveTrigger on invalid object.")
		endif
	endif
	call Table_saveTrigger(this_1, parentKey, value)
endfunction

function hashtable_saveUnitHandle takes hashtable this_1, integer parentKey, integer childKey, unit value returns nothing
	call SaveUnitHandle(this_1, parentKey, childKey, value)
endfunction

function Table_saveUnit takes integer this_1, integer parentKey, unit value returns nothing
	call hashtable_saveUnitHandle(Table_ht, this_1, parentKey, value)
endfunction

function dispatch_Table_Table_Table_saveUnit takes integer this_1, integer parentKey, unit value returns nothing
	if Table_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling Table.saveUnit")
		else
			call error("Called Table.saveUnit on invalid object.")
		endif
	endif
	call Table_saveUnit(this_1, parentKey, value)
endfunction

function trigger_registerUnitInRangeSource takes trigger this_1, unit whichUnit, real range, boolexpr filter returns event
	local integer receiver = EventHelper_triggerData
	local integer receiver_1
	call dispatch_Table_Table_Table_saveUnit(receiver, handle_getHandleId(this_1), whichUnit)
	set receiver_1 = receiver
	call dispatch_Table_Table_Table_saveTrigger(receiver_1, handle_getHandleId(whichUnit), this_1)
	return TriggerRegisterUnitInRange(this_1, whichUnit, range, filter)
endfunction

function EscaperSensorSetup_Sensor_addSensorListener takes integer this_1, integer e_1, integer listener_1 returns nothing
	local integer instanceOfTemp
	local integer instanceOfTemp_1
	if listener_1 == 0 then
		call error("Trying to add null listener")
	endif
	set EscaperSensorSetup_Sensor_inRangeTrig[this_1] = CreateTrigger()
	set instanceOfTemp = Serializable_typeId[e_1]
	if instanceOfTemp >= 1160 and instanceOfTemp <= 1227 then
		set EscaperSensorSetup_Sensor_actorRef[this_1] = UnitEntity_actor[e_1]
	else
		set instanceOfTemp_1 = Serializable_typeId[e_1]
		if instanceOfTemp_1 >= 1149 and instanceOfTemp_1 <= 1151 then
			set EscaperSensorSetup_Sensor_actorRef[this_1] = dispatch_FxEntity_FxEntity_FxEntity_getDummy(e_1)
		endif
	endif
	call trigger_registerUnitInRangeSource(EscaperSensorSetup_Sensor_inRangeTrig[this_1], EscaperSensorSetup_Sensor_actorRef[this_1], Entity_radius[e_1], null)
	call dispatch_HashMap_HashMap_HashMap_put(EscaperSensorSetup_Sensor_sensorListeners, triggerToIndex(EscaperSensorSetup_Sensor_inRangeTrig[this_1]), listener_1)
	call trigger_addAction(EscaperSensorSetup_Sensor_inRangeTrig[this_1], ref_function_code__addAction_Sensor_EscaperSensorSetup_EscaperSensor)
endfunction

function dispatch_EscaperSensorSetup_EscaperSensor_EscaperSensorSetup_Sensor_addSensorListener takes integer this_1, integer e_1, integer listener_1 returns nothing
	if Serializable_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling EscaperSensorSetup.addSensorListener")
		else
			call error("Called EscaperSensorSetup.addSensorListener on invalid object.")
		endif
	endif
	call EscaperSensorSetup_Sensor_addSensorListener(this_1, e_1, listener_1)
endfunction

function construct_EscaperSensorSetup3 takes integer this_1, real pos_x_1, real pos_y_1, real pos_z, player owner, integer unitId, real radius, real sensorHeight returns nothing
	local integer temp = this_1
	local unit receiver = createUnit_2356(owner, unitId, pos_x_1, pos_y_1, pos_z, 0.)
	local integer clVar
	local integer temp_1
	local integer temp_2
	call unit_addAbility(receiver, Basics_LOCUST_ID)
	call construct_SetupObject(temp, receiver, createUnit_2356(owner, unitId, pos_x_1, pos_y_1, pos_z, 0.), radius)
	call EscaperSensorSetup_init(this_1)
	set EscaperSensorSetup_sensorHeight[this_1] = sensorHeight
	set temp_1 = this_1
	set temp_2 = this_1
	set clVar = alloc_SensorListener_addSensorListener_EscaperSensorSetup_EscaperSensor_1890()
	call construct_SensorListener(clVar)
	set this_2979[clVar] = this_1
	call dispatch_EscaperSensorSetup_EscaperSensor_EscaperSensorSetup_Sensor_addSensorListener(temp_1, temp_2, clVar)
endfunction

function SmallRandomKiller_setupRandKiller takes integer this_1 returns nothing
	call unit_removeAbility(UnitEntity_actor[this_1], AbilityIds_wander)
endfunction

function dispatch_SmallRandomKiller_EscaperKillers_SmallRandomKiller_setupRandKiller takes integer this_1 returns nothing
	if Serializable_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling SmallRandomKiller.setupRandKiller")
		else
			call error("Called SmallRandomKiller.setupRandKiller on invalid object.")
		endif
	endif
	call SmallRandomKiller_setupRandKiller(this_1)
endfunction

function construct_SmallRandomKiller2 takes integer this_1, real pos_x_1, real pos_y_1, player owner returns nothing
	call construct_EscaperSensorSetup3(this_1, vec2_toVec3(pos_x_1, pos_y_1), vec2_toVec3_return_y, vec2_toVec3_return_z, owner, EscaperKillers_SMALL_RANDOM_KILLER_ID, EscaperKillers_COLL_SIZE_SRK, EscaperKillers_COLL_SIZE_SRK)
	call SmallRandomKiller_init(this_1)
	call dispatch_SmallRandomKiller_EscaperKillers_SmallRandomKiller_setupRandKiller(this_1)
endfunction

function new_SmallRandomKiller_3748 takes real pos_x_1, real pos_y_1, player owner returns integer
	local integer this_1 = alloc_SmallRandomKiller()
	call construct_SmallRandomKiller2(this_1, pos_x_1, pos_y_1, owner)
	return this_1
endfunction

function call_doPeriodically_MGRandKill_MGRandKill takes integer this_1, integer cb_1 returns nothing
	call new_SmallRandomKiller_3748(MGRandKill_spawn_x[this_2943[this_1]], MGRandKill_spawn_y[this_2943[this_1]], GameConstants_STAFF_PLAYER)
endfunction

function alloc_BigRandomKiller takes nothing returns integer
	local integer this_1
	if Serializable_firstFree == 0 then
		if Serializable_maxIndex < JASS_MAX_ARRAY_SIZE then
			set Serializable_maxIndex = Serializable_maxIndex + 1
			set this_1 = Serializable_maxIndex
			set Serializable_typeId[this_1] = 1178
		else
			call error("Out of memory: Could not create BigRandomKiller.")
			set this_1 = 0
		endif
	else
		set Serializable_firstFree = Serializable_firstFree - 1
		set this_1 = Serializable_nextFree[Serializable_firstFree]
		set Serializable_typeId[this_1] = 1178
	endif
	return this_1
endfunction

function BigRandomKiller_init takes integer this_1 returns nothing
endfunction

function BigRandomKiller_setupRandKiller takes integer this_1 returns nothing
	call unit_removeAbility(UnitEntity_actor[this_1], AbilityIds_wander)
endfunction

function dispatch_BigRandomKiller_EscaperKillers_BigRandomKiller_setupRandKiller takes integer this_1 returns nothing
	if Serializable_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling BigRandomKiller.setupRandKiller")
		else
			call error("Called BigRandomKiller.setupRandKiller on invalid object.")
		endif
	endif
	call BigRandomKiller_setupRandKiller(this_1)
endfunction

function construct_BigRandomKiller2 takes integer this_1, real pos_x_1, real pos_y_1, player owner returns nothing
	call construct_EscaperSensorSetup3(this_1, vec2_toVec3(pos_x_1, pos_y_1), vec2_toVec3_return_y, vec2_toVec3_return_z, owner, EscaperKillers_BIG_RANDOM_KILLER_ID, EscaperKillers_COLL_SIZE_BRK, EscaperKillers_COLL_SIZE_BRK)
	call BigRandomKiller_init(this_1)
	call dispatch_BigRandomKiller_EscaperKillers_BigRandomKiller_setupRandKiller(this_1)
endfunction

function new_BigRandomKiller_3625 takes real pos_x_1, real pos_y_1, player owner returns integer
	local integer this_1 = alloc_BigRandomKiller()
	call construct_BigRandomKiller2(this_1, pos_x_1, pos_y_1, owner)
	return this_1
endfunction

function call_doPeriodically_MGRandKill_MGRandKill_2007 takes integer this_1, integer cb_1 returns nothing
	call new_BigRandomKiller_3625(MGRandKill_spawn_x[this_2944[this_1]], MGRandKill_spawn_y[this_2944[this_1]], GameConstants_STAFF_PLAYER)
endfunction

function MGRandKill_getGameRect takes integer this_1 returns rect
	return gg_rct_coingamearea
endfunction

function dispatch_MGRandKill_MGRandKill_MGRandKill_getGameRect takes integer this_1 returns rect
	local rect MGRandKill_MGRandKill_getGameRect_result
	if Minigame_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling MGRandKill.getGameRect")
		else
			call error("Called MGRandKill.getGameRect on invalid object.")
		endif
	endif
	set MGRandKill_MGRandKill_getGameRect_result = MGRandKill_getGameRect(this_1)
	return MGRandKill_MGRandKill_getGameRect_result
endfunction

function alloc_Coin takes nothing returns integer
	local integer this_1
	if Serializable_firstFree == 0 then
		if Serializable_maxIndex < JASS_MAX_ARRAY_SIZE then
			set Serializable_maxIndex = Serializable_maxIndex + 1
			set this_1 = Serializable_maxIndex
			set Serializable_typeId[this_1] = 1156
		else
			call error("Out of memory: Could not create Coin.")
			set this_1 = 0
		endif
	else
		set Serializable_firstFree = Serializable_firstFree - 1
		set this_1 = Serializable_nextFree[Serializable_firstFree]
		set Serializable_typeId[this_1] = 1156
	endif
	return this_1
endfunction

function Coin_init takes integer this_1 returns nothing
endfunction

function ItemObject_init takes integer this_1 returns nothing
	set ItemObject_holder[this_1] = 0
endfunction

function ItemEntity_init takes integer this_1 returns nothing
	set ItemEntity_actor[this_1] = null
endfunction

function construct_Entity3 takes integer this_1, player owner, real pos_x_1, real pos_y_1 returns nothing
	call Entity_init(this_1)
	call dispatch_Entity_Entity_Entity_setupEntity(this_1, vec2_toVec3(pos_x_1, pos_y_1), vec2_toVec3_return_y, vec2_toVec3_return_z, Vectors_ZERO3_x, Vectors_ZERO3_y, Vectors_ZERO3_z, owner, 0.)
endfunction

function construct_ItemEntity2 takes integer this_1, item actor, player owner returns nothing
	call construct_Entity3(this_1, owner, item_getPos(actor), item_getPos_return_y)
	call ItemEntity_init(this_1)
	set ItemEntity_actor[this_1] = actor
	call item_setEntity(actor, this_1)
endfunction

function alloc_ItemEntityBridge takes nothing returns integer
	local integer this_1
	if Serializable_firstFree == 0 then
		if Serializable_maxIndex < JASS_MAX_ARRAY_SIZE then
			set Serializable_maxIndex = Serializable_maxIndex + 1
			set this_1 = Serializable_maxIndex
			set Serializable_typeId[this_1] = 1169
		else
			call error("Out of memory: Could not create ItemEntityBridge.")
			set this_1 = 0
		endif
	else
		set Serializable_firstFree = Serializable_firstFree - 1
		set this_1 = Serializable_nextFree[Serializable_firstFree]
		set Serializable_typeId[this_1] = 1169
	endif
	return this_1
endfunction

function ItemEntityBridge_init takes integer this_1 returns nothing
endfunction

function construct_ItemEntityBridge takes integer this_1, unit setup, integer obj_1, real pos_x_1, real pos_y_1 returns nothing
	local unit receiver
	local unit receiver_1
	call construct_UnitEntity(this_1, setup)
	call ItemEntityBridge_init(this_1)
	set ItemEntityBridge_obj[this_1] = obj_1
	set receiver = UnitEntity_actor[this_1]
	call unit_addAbility(receiver, Basics_GHOST_VIS_ID)
	set receiver_1 = receiver
	call unit_setXY(receiver_1, pos_x_1, pos_y_1)
endfunction

function new_ItemEntityBridge takes unit setup, integer obj_1, real pos_x_1, real pos_y_1 returns integer
	local integer this_1 = alloc_ItemEntityBridge()
	call construct_ItemEntityBridge(this_1, setup, obj_1, pos_x_1, pos_y_1)
	return this_1
endfunction

function construct_ItemObject takes integer this_1, real pos_x_1, real pos_y_1, item i, unit setup returns nothing
	call construct_ItemEntity2(this_1, i, unit_getOwner(setup))
	call ItemObject_init(this_1)
	set ItemObject_setup[this_1] = new_ItemEntityBridge(setup, this_1, pos_x_1, pos_y_1)
endfunction

function construct_Coin takes integer this_1, real pos_x_1, real pos_y_1, player owner returns nothing
	call construct_ItemObject(this_1, pos_x_1, pos_y_1, CreateItem(BuilderConstants_COIN_ID, pos_x_1, pos_y_1), CreateUnit(owner, Coin_COIN_DUMMY_ID, pos_x_1, pos_y_1, 0.))
	call Coin_init(this_1)
endfunction

function new_Coin takes real pos_x_1, real pos_y_1, player owner returns integer
	local integer this_1 = alloc_Coin()
	call construct_Coin(this_1, pos_x_1, pos_y_1, owner)
	return this_1
endfunction

function call_doPeriodically_MGRandKill_MGRandKill_2008 takes integer this_1, integer cb_1 returns nothing
	local integer i = 0
	local integer temp = real_toInt(timer_getElapsed(Minigame_tim[this_2945[this_1]]) / 20. + 2.)
	loop
		exitwhen i > temp
		call new_Coin(rect_randomPoint(dispatch_MGRandKill_MGRandKill_MGRandKill_getGameRect(this_2945[this_1])), rect_randomPoint_return_y, GameConstants_STAFF_PLAYER)
		set i = i + 1
	endloop
endfunction

function alloc_CallbackCounted_doPeriodicallyCounted_MGSlide_MGSlide takes nothing returns integer
	local integer this_1
	if CallbackCounted_firstFree == 0 then
		if CallbackCounted_maxIndex < JASS_MAX_ARRAY_SIZE then
			set CallbackCounted_maxIndex = CallbackCounted_maxIndex + 1
			set this_1 = CallbackCounted_maxIndex
			set CallbackCounted_typeId[this_1] = 662
		else
			call error("Out of memory: Could not create CallbackCounted_doPeriodicallyCounted_MGSlide_MGSlide.")
			set this_1 = 0
		endif
	else
		set CallbackCounted_firstFree = CallbackCounted_firstFree - 1
		set this_1 = CallbackCounted_nextFree[CallbackCounted_firstFree]
		set CallbackCounted_typeId[this_1] = 662
	endif
	return this_1
endfunction

function alloc_ForGroupCallback_forUnitsInRect_MGSlide_MGSlide takes nothing returns integer
	local integer this_1
	if ForGroupCallback_firstFree == 0 then
		if ForGroupCallback_maxIndex < JASS_MAX_ARRAY_SIZE then
			set ForGroupCallback_maxIndex = ForGroupCallback_maxIndex + 1
			set this_1 = ForGroupCallback_maxIndex
			set ForGroupCallback_typeId[this_1] = 874
		else
			call error("Out of memory: Could not create ForGroupCallback_forUnitsInRect_MGSlide_MGSlide.")
			set this_1 = 0
		endif
	else
		set ForGroupCallback_firstFree = ForGroupCallback_firstFree - 1
		set this_1 = ForGroupCallback_nextFree[ForGroupCallback_firstFree]
		set ForGroupCallback_typeId[this_1] = 874
	endif
	return this_1
endfunction

function CallbackCounted_init takes integer this_1 returns nothing
	set CallbackCounted_count[this_1] = 0
	set CallbackCounted_maxCount[this_1] = 0
endfunction

function construct_CallbackCounted takes integer this_1 returns nothing
	call CallbackCounted_init(this_1)
endfunction

function timer_startPeriodic takes timer this_1, real time, code timerCallBack returns nothing
	call TimerStart(this_1, time, true, timerCallBack)
endfunction

function CallbackCounted_start takes integer this_1, timer whichTimer, real time, integer callAmount returns nothing
	local timer receiver
	local timer receiver_1
	set CallbackCounted_count[this_1] = callAmount
	set CallbackCounted_maxCount[this_1] = callAmount
	set receiver = whichTimer
	call timer_setData(receiver, this_1)
	set receiver_1 = receiver
	call timer_startPeriodic(receiver_1, time, ref_function_CallbackCounted_staticCallback)
	set CallbackCounted_t[this_1] = receiver_1
endfunction

function dispatch_CallbackCounted_ClosureTimers_CallbackCounted_start takes integer this_1, timer whichTimer, real time, integer callAmount returns nothing
	if CallbackCounted_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling CallbackCounted.start")
		else
			call error("Called CallbackCounted.start on invalid object.")
		endif
	endif
	call CallbackCounted_start(this_1, whichTimer, time, callAmount)
endfunction

function timer_doPeriodicallyCounted takes timer this_1, real time, integer callAmount, integer cb_1 returns integer
	call dispatch_CallbackCounted_ClosureTimers_CallbackCounted_start(cb_1, this_1, time, callAmount)
	return cb_1
endfunction

function doPeriodicallyCounted takes real time, integer callAmount, integer cb_1 returns integer
	return timer_doPeriodicallyCounted(getTimer(), time, callAmount, cb_1)
endfunction

function alloc_BigObstacle takes nothing returns integer
	local integer this_1
	if Serializable_firstFree == 0 then
		if Serializable_maxIndex < JASS_MAX_ARRAY_SIZE then
			set Serializable_maxIndex = Serializable_maxIndex + 1
			set this_1 = Serializable_maxIndex
			set Serializable_typeId[this_1] = 1218
		else
			call error("Out of memory: Could not create BigObstacle.")
			set this_1 = 0
		endif
	else
		set Serializable_firstFree = Serializable_firstFree - 1
		set this_1 = Serializable_nextFree[Serializable_firstFree]
		set Serializable_typeId[this_1] = 1218
	endif
	return this_1
endfunction

function BigObstacle_init takes integer this_1 returns nothing
endfunction

function StaticEscaperSensorSetup_init takes integer this_1 returns nothing
	set StaticEscaperSensorSetup_sensorHeight[this_1] = 32.
endfunction

function StaticSetupObject_init takes integer this_1 returns nothing
	set StaticSetupObject_inRangeTrig[this_1] = null
endfunction

function Entity_DupletListModule_addToInactive takes integer this_1 returns nothing
	set Entity_DupletListModule_inactiveSize = Entity_DupletListModule_inactiveSize + 1
	if Entity_DupletListModule_inactiveSize == 1 then
		set Entity_DupletListModule_firstInactive = this_1
		set Entity_DupletListModule_prev[this_1] = 0
	else
		set Entity_DupletListModule_prev[this_1] = Entity_DupletListModule_lastInactive
		set Entity_DupletListModule_next[Entity_DupletListModule_lastInactive] = this_1
		set Entity_DupletListModule_prev[Entity_DupletListModule_firstInactive] = this_1
	endif
	set Entity_DupletListModule_next[this_1] = 0
	set Entity_DupletListModule_lastInactive = this_1
endfunction

function dispatch_Entity_Entity_Entity_DupletListModule_addToInactive takes integer this_1 returns nothing
	if Serializable_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling Entity.addToInactive")
		else
			call error("Called Entity.addToInactive on invalid object.")
		endif
	endif
	call Entity_DupletListModule_addToInactive(this_1)
endfunction

function Entity_DupletListModule_deactivate takes integer this_1 returns nothing
	if Entity_DupletListModule_active[this_1] then
		set Entity_DupletListModule_active[this_1] = false
		call dispatch_Entity_Entity_Entity_DupletListModule_removeFromActive(this_1)
		call dispatch_Entity_Entity_Entity_DupletListModule_addToInactive(this_1)
	endif
endfunction

function Texter_hide takes integer this_1 returns nothing
	call texttag_setVisibility(FText_tt[Texter_text[this_1]], false)
	set Texter_hidden[this_1] = true
	call createFText_2346(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1], 0., 0.05, "Hidden", 10., 2., 255, 255, 255, 0, Entity_owner[this_1])
endfunction

function dispatch_Texter_Texter_Texter_hide takes integer this_1 returns nothing
	if Serializable_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling Texter.hide")
		else
			call error("Called Texter.hide on invalid object.")
		endif
	endif
	call Texter_hide(this_1)
endfunction

function Texter_deactivate takes integer this_1 returns nothing
	call Entity_DupletListModule_deactivate(this_1)
	call dispatch_Texter_Texter_Texter_hide(this_1)
endfunction

function dispatch_Entity_Entity_Entity_DupletListModule_deactivate takes integer this_1 returns nothing
	if Serializable_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling Entity.deactivate")
		else
			call error("Called Entity.deactivate on invalid object.")
		endif
	endif
	if Serializable_typeId[this_1] <= 1206 then
		if Serializable_typeId[this_1] <= 1205 then
			call Entity_DupletListModule_deactivate(this_1)
		else
			call Texter_deactivate(this_1)
		endif
	else
		call Entity_DupletListModule_deactivate(this_1)
	endif
endfunction

function trigger_registerUnitInRangeSource_4126 takes trigger this_1, unit whichUnit, real range returns event
	return trigger_registerUnitInRangeSource(this_1, whichUnit, range, null)
endfunction

function unit_setVertexColor_4206 takes unit this_1, integer col_red, integer col_green, integer col_blue, integer col_alpha returns nothing
	call SetUnitVertexColor(this_1, col_red, col_green, col_blue, col_alpha)
endfunction

function construct_StaticSetupObject takes integer this_1, unit u_1, unit setup, real radius, code c returns nothing
	local unit receiver
	local unit receiver_1
	local unit receiver_2
	local trigger receiver_3
	local trigger receiver_4
	call construct_UnitEntity(this_1, u_1)
	call StaticSetupObject_init(this_1)
	call dispatch_Entity_Entity_Entity_DupletListModule_deactivate(this_1)
	call unit_addAbility(UnitEntity_actor[this_1], Basics_LOCUST_ID)
	set receiver = setup
	call unit_addAbility(receiver, Basics_GHOST_INVIS_ID)
	set receiver_1 = receiver
	call unit_addAbility(receiver_1, BuilderConstants_REMOVE_OBJECT_ID)
	set receiver_2 = receiver_1
	call unit_setVertexColor_4206(receiver_2, 255, 255, 255, 155)
	set StaticSetupObject_setup[this_1] = setup
	if radius > 0. then
		set receiver_3 = CreateTrigger()
		call trigger_registerUnitInRangeSource_4126(receiver_3, setup, radius)
		set receiver_4 = receiver_3
		call trigger_addAction(receiver_4, c)
		set StaticSetupObject_inRangeTrig[this_1] = receiver_4
	endif
	call unit_setEntity(setup, this_1)
endfunction

function construct_StaticEscaperSensorSetup3 takes integer this_1, real pos_x_1, real pos_y_1, real pos_z, player owner, integer unitId, real radius, real sensorHeight returns nothing
	local integer temp = this_1
	local unit receiver = createUnit_2356(owner, unitId, pos_x_1, pos_y_1, pos_z, 0.)
	call unit_addAbility(receiver, Basics_LOCUST_ID)
	call construct_StaticSetupObject(temp, receiver, createUnit_2356(owner, unitId, pos_x_1, pos_y_1, pos_z, 0.), radius, ref_function_code__StaticEscaperSensorSetup_EscaperSensor)
	call StaticEscaperSensorSetup_init(this_1)
	set StaticEscaperSensorSetup_sensorHeight[this_1] = sensorHeight
endfunction

function RegionType_getTypeSet takes integer this_1 returns integer
	local integer temp = this_1
	if temp == 0 then
		set RegionType_getTypeSet_return_regionItemId = 0
		set RegionType_getTypeSet_return_walkableId = 0
		set RegionType_getTypeSet_return_unwalkableId = 0
		set RegionType_getTypeSet_return_smallKillerId = 0
		set RegionType_getTypeSet_return_bigKillerId = 0
		set RegionType_getTypeSet_return_treeId = 0
		set RegionType_getTypeSet_return_smallObstacleId = 0
		set RegionType_getTypeSet_return_bigObstacleId = 0
		set RegionType_getTypeSet_return_bossId = 0
		set RegionType_getTypeSet_return_minionId = 0
		set RegionType_getTypeSet_return_highObstacleId = 0
		return RegionType_getTypeSet_return_regionItemId
	elseif temp == 1 then
		set RegionType_getTypeSet_return_regionItemId = 1227894856
		set RegionType_getTypeSet_return_walkableId = 1231320178
		set RegionType_getTypeSet_return_unwalkableId = 1231186786
		set RegionType_getTypeSet_return_smallKillerId = BuilderConstants_SMALL_CITADEL_KILLER_ID
		set RegionType_getTypeSet_return_bigKillerId = BuilderConstants_BIG_CITADEL_KILLER_ID
		set RegionType_getTypeSet_return_treeId = 1263826039
		set RegionType_getTypeSet_return_smallObstacleId = ObstacleObjects_SOBS_CITADEL_ID
		set RegionType_getTypeSet_return_bigObstacleId = ObstacleObjects_BOBS_CITADEL_ID
		set RegionType_getTypeSet_return_bossId = 1747988551
		set RegionType_getTypeSet_return_minionId = 1966092363
		set RegionType_getTypeSet_return_highObstacleId = ObstacleObjects_HOBS_CITADEL_ID
		return RegionType_getTypeSet_return_regionItemId
	elseif temp == 2 then
		set RegionType_getTypeSet_return_regionItemId = 1227894855
		set RegionType_getTypeSet_return_walkableId = 1113879396
		set RegionType_getTypeSet_return_unwalkableId = GetTerrainType(2670., -7090.)
		set RegionType_getTypeSet_return_smallKillerId = BuilderConstants_SMALL_SAND_KILLER_ID
		set RegionType_getTypeSet_return_bigKillerId = BuilderConstants_BIG_SAND_KILLER_ID
		set RegionType_getTypeSet_return_treeId = 1112831095
		set RegionType_getTypeSet_return_smallObstacleId = ObstacleObjects_SOBS_DESERT_ID
		set RegionType_getTypeSet_return_bigObstacleId = ObstacleObjects_BOBS_DESERT_ID
		set RegionType_getTypeSet_return_bossId = 1747988557
		set RegionType_getTypeSet_return_minionId = 1966092366
		set RegionType_getTypeSet_return_highObstacleId = ObstacleObjects_HOBS_DESERT_ID
		return RegionType_getTypeSet_return_regionItemId
	elseif temp == 3 then
		set RegionType_getTypeSet_return_regionItemId = 1227894853
		set RegionType_getTypeSet_return_walkableId = 1500999010
		set RegionType_getTypeSet_return_unwalkableId = 1499951970
		set RegionType_getTypeSet_return_smallKillerId = BuilderConstants_SMALL_GRASS_KILLER_ID
		set RegionType_getTypeSet_return_bigKillerId = BuilderConstants_BIG_GRASS_KILLER_ID
		set RegionType_getTypeSet_return_treeId = 1280601204
		set RegionType_getTypeSet_return_smallObstacleId = ObstacleObjects_SOBS_GRASS_ID
		set RegionType_getTypeSet_return_bigObstacleId = ObstacleObjects_BOBS_GRASS_ID
		set RegionType_getTypeSet_return_bossId = 1747988556
		set RegionType_getTypeSet_return_minionId = 1966092365
		set RegionType_getTypeSet_return_highObstacleId = ObstacleObjects_HOBS_GRASS_ID
		return RegionType_getTypeSet_return_regionItemId
	elseif temp == 4 then
		set RegionType_getTypeSet_return_regionItemId = 1227894852
		set RegionType_getTypeSet_return_walkableId = 1232364139
		set RegionType_getTypeSet_return_unwalkableId = 1232301687
		set RegionType_getTypeSet_return_smallKillerId = BuilderConstants_SMALL_ICE_KILLER_ID
		set RegionType_getTypeSet_return_bigKillerId = BuilderConstants_BIG_ICE_KILLER_ID
		set RegionType_getTypeSet_return_treeId = 1465152372
		set RegionType_getTypeSet_return_smallObstacleId = ObstacleObjects_SOBS_ICE_ID
		set RegionType_getTypeSet_return_bigObstacleId = ObstacleObjects_BOBS_ICE_ID
		set RegionType_getTypeSet_return_bossId = 1747988559
		set RegionType_getTypeSet_return_minionId = 1966092364
		set RegionType_getTypeSet_return_highObstacleId = ObstacleObjects_HOBS_ICE_ID
		return RegionType_getTypeSet_return_regionItemId
	else
		set RegionType_getTypeSet_return_regionItemId = 1227894862
		set RegionType_getTypeSet_return_walkableId = 1516399475
		set RegionType_getTypeSet_return_unwalkableId = 1516532327
		set RegionType_getTypeSet_return_smallKillerId = BuilderConstants_SMALL_SUNKEN_KILLER_ID
		set RegionType_getTypeSet_return_bigKillerId = BuilderConstants_BIG_SUNKEN_KILLER_ID
		set RegionType_getTypeSet_return_treeId = 1515484279
		set RegionType_getTypeSet_return_smallObstacleId = ObstacleObjects_SOBS_SUNKEN_ID
		set RegionType_getTypeSet_return_bigObstacleId = ObstacleObjects_BOBS_SUNKEN_ID
		set RegionType_getTypeSet_return_bossId = 1747988558
		set RegionType_getTypeSet_return_minionId = 1966092367
		set RegionType_getTypeSet_return_highObstacleId = ObstacleObjects_HOBS_SUNKEN_ID
		return RegionType_getTypeSet_return_regionItemId
	endif
endfunction

function RegionData_getTypeSet takes integer this_1 returns integer
	set RegionData_getTypeSet_return_regionItemId = RegionType_getTypeSet(RegionData_rtype[this_1])
	set RegionData_getTypeSet_return_walkableId = RegionType_getTypeSet_return_walkableId
	set RegionData_getTypeSet_return_unwalkableId = RegionType_getTypeSet_return_unwalkableId
	set RegionData_getTypeSet_return_smallKillerId = RegionType_getTypeSet_return_smallKillerId
	set RegionData_getTypeSet_return_bigKillerId = RegionType_getTypeSet_return_bigKillerId
	set RegionData_getTypeSet_return_treeId = RegionType_getTypeSet_return_treeId
	set RegionData_getTypeSet_return_smallObstacleId = RegionType_getTypeSet_return_smallObstacleId
	set RegionData_getTypeSet_return_bigObstacleId = RegionType_getTypeSet_return_bigObstacleId
	set RegionData_getTypeSet_return_bossId = RegionType_getTypeSet_return_bossId
	set RegionData_getTypeSet_return_minionId = RegionType_getTypeSet_return_minionId
	set RegionData_getTypeSet_return_highObstacleId = RegionType_getTypeSet_return_highObstacleId
	return RegionData_getTypeSet_return_regionItemId
endfunction

function dispatch_RegionData_RegionData_RegionData_getTypeSet takes integer this_1 returns integer
	local integer RegionData_RegionData_getTypeSet_result_regionItemId
	local integer RegionData_RegionData_getTypeSet_result_walkableId
	local integer RegionData_RegionData_getTypeSet_result_unwalkableId
	local integer RegionData_RegionData_getTypeSet_result_smallKillerId
	local integer RegionData_RegionData_getTypeSet_result_bigKillerId
	local integer RegionData_RegionData_getTypeSet_result_treeId
	local integer RegionData_RegionData_getTypeSet_result_smallObstacleId
	local integer RegionData_RegionData_getTypeSet_result_bigObstacleId
	local integer RegionData_RegionData_getTypeSet_result_bossId
	local integer RegionData_RegionData_getTypeSet_result_minionId
	local integer RegionData_RegionData_getTypeSet_result_highObstacleId
	local integer tuple_temp
	local integer tuple_temp_1
	local integer tuple_temp_2
	local integer tuple_temp_3
	local integer tuple_temp_4
	local integer tuple_temp_5
	local integer tuple_temp_6
	local integer tuple_temp_7
	local integer tuple_temp_8
	local integer tuple_temp_9
	local integer tuple_temp_10
	if RegionData_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling RegionData.getTypeSet")
		else
			call error("Called RegionData.getTypeSet on invalid object.")
		endif
	endif
	set tuple_temp = RegionData_getTypeSet(this_1)
	set tuple_temp_1 = RegionData_getTypeSet_return_walkableId
	set tuple_temp_2 = RegionData_getTypeSet_return_unwalkableId
	set tuple_temp_3 = RegionData_getTypeSet_return_smallKillerId
	set tuple_temp_4 = RegionData_getTypeSet_return_bigKillerId
	set tuple_temp_5 = RegionData_getTypeSet_return_treeId
	set tuple_temp_6 = RegionData_getTypeSet_return_smallObstacleId
	set tuple_temp_7 = RegionData_getTypeSet_return_bigObstacleId
	set tuple_temp_8 = RegionData_getTypeSet_return_bossId
	set tuple_temp_9 = RegionData_getTypeSet_return_minionId
	set tuple_temp_10 = RegionData_getTypeSet_return_highObstacleId
	set RegionData_RegionData_getTypeSet_result_regionItemId = tuple_temp
	set RegionData_RegionData_getTypeSet_result_walkableId = tuple_temp_1
	set RegionData_RegionData_getTypeSet_result_unwalkableId = tuple_temp_2
	set RegionData_RegionData_getTypeSet_result_smallKillerId = tuple_temp_3
	set RegionData_RegionData_getTypeSet_result_bigKillerId = tuple_temp_4
	set RegionData_RegionData_getTypeSet_result_treeId = tuple_temp_5
	set RegionData_RegionData_getTypeSet_result_smallObstacleId = tuple_temp_6
	set RegionData_RegionData_getTypeSet_result_bigObstacleId = tuple_temp_7
	set RegionData_RegionData_getTypeSet_result_bossId = tuple_temp_8
	set RegionData_RegionData_getTypeSet_result_minionId = tuple_temp_9
	set RegionData_RegionData_getTypeSet_result_highObstacleId = tuple_temp_10
	set dispatch_RegionData_RegionData_RegionData_getTypeSet_return_regionItemId = RegionData_RegionData_getTypeSet_result_regionItemId
	set dispatch_RegionData_RegionData_RegionData_getTypeSet_return_walkableId = RegionData_RegionData_getTypeSet_result_walkableId
	set dispatch_RegionData_RegionData_RegionData_getTypeSet_return_unwalkableId = RegionData_RegionData_getTypeSet_result_unwalkableId
	set dispatch_RegionData_RegionData_RegionData_getTypeSet_return_smallKillerId = RegionData_RegionData_getTypeSet_result_smallKillerId
	set dispatch_RegionData_RegionData_RegionData_getTypeSet_return_bigKillerId = RegionData_RegionData_getTypeSet_result_bigKillerId
	set dispatch_RegionData_RegionData_RegionData_getTypeSet_return_treeId = RegionData_RegionData_getTypeSet_result_treeId
	set dispatch_RegionData_RegionData_RegionData_getTypeSet_return_smallObstacleId = RegionData_RegionData_getTypeSet_result_smallObstacleId
	set dispatch_RegionData_RegionData_RegionData_getTypeSet_return_bigObstacleId = RegionData_RegionData_getTypeSet_result_bigObstacleId
	set dispatch_RegionData_RegionData_RegionData_getTypeSet_return_bossId = RegionData_RegionData_getTypeSet_result_bossId
	set dispatch_RegionData_RegionData_RegionData_getTypeSet_return_minionId = RegionData_RegionData_getTypeSet_result_minionId
	set dispatch_RegionData_RegionData_RegionData_getTypeSet_return_highObstacleId = RegionData_RegionData_getTypeSet_result_highObstacleId
	return dispatch_RegionData_RegionData_RegionData_getTypeSet_return_regionItemId
endfunction

function vec2_withTerrainZ takes real this_x, real this_y returns real
	set vec2_withTerrainZ_return_x = this_x
	set vec2_withTerrainZ_return_y = this_y
	set vec2_withTerrainZ_return_z = vec2_getTerrainZ(this_x, this_y)
	return vec2_withTerrainZ_return_x
endfunction

function construct_BigObstacle2 takes integer this_1, real pos_x_1, real pos_y_1, player owner returns nothing
	local integer temp = this_1
	local real tuple_temp = vec2_withTerrainZ(pos_x_1, pos_y_1)
	local real tuple_temp_1 = vec2_withTerrainZ_return_y
	local real tuple_temp_2 = vec2_withTerrainZ_return_z
	local real temp_x = tuple_temp
	local real temp_y = tuple_temp_1
	local real temp_z = tuple_temp_2
	local player temp_1 = owner
	local integer temp_tuple_bigObstacleId
	local integer tuple_temp_3
	call dispatch_RegionData_RegionData_RegionData_getTypeSet(getRegionData_3304(pos_x_1, pos_y_1))
	set tuple_temp_3 = dispatch_RegionData_RegionData_RegionData_getTypeSet_return_bigObstacleId
	set temp_tuple_bigObstacleId = tuple_temp_3
	call construct_StaticEscaperSensorSetup3(temp, temp_x, temp_y, temp_z, temp_1, temp_tuple_bigObstacleId, Obstacle_EVENT_RADIUS_BIG, Obstacle_EVENT_RADIUS_BIG)
	call BigObstacle_init(this_1)
endfunction

function new_BigObstacle_3623 takes real pos_x_1, real pos_y_1, player owner returns integer
	local integer this_1 = alloc_BigObstacle()
	call construct_BigObstacle2(this_1, pos_x_1, pos_y_1, owner)
	return this_1
endfunction

function alloc_GlaiveKiller takes nothing returns integer
	local integer this_1
	if Serializable_firstFree == 0 then
		if Serializable_maxIndex < JASS_MAX_ARRAY_SIZE then
			set Serializable_maxIndex = Serializable_maxIndex + 1
			set this_1 = Serializable_maxIndex
			set Serializable_typeId[this_1] = 1181
		else
			call error("Out of memory: Could not create GlaiveKiller.")
			set this_1 = 0
		endif
	else
		set Serializable_firstFree = Serializable_firstFree - 1
		set this_1 = Serializable_nextFree[Serializable_firstFree]
		set Serializable_typeId[this_1] = 1181
	endif
	return this_1
endfunction

function GlaiveKiller_init takes integer this_1 returns nothing
endfunction

function construct_GlaiveKiller2 takes integer this_1, real pos_x_1, real pos_y_1, player owner returns nothing
	call construct_EscaperSensorSetup3(this_1, vec2_toVec3(pos_x_1, pos_y_1), vec2_toVec3_return_y, vec2_toVec3_return_z, owner, EscaperKillers_GLAIVE_KILLER_ID, EscaperKillers_COLL_SIZE_GLAIVE, EscaperKillers_COLL_SIZE_GLAIVE)
	call GlaiveKiller_init(this_1)
endfunction

function new_GlaiveKiller_3678 takes real pos_x_1, real pos_y_1, player owner returns integer
	local integer this_1 = alloc_GlaiveKiller()
	call construct_GlaiveKiller2(this_1, pos_x_1, pos_y_1, owner)
	return this_1
endfunction

function alloc_SmallKiller takes nothing returns integer
	local integer this_1
	if Serializable_firstFree == 0 then
		if Serializable_maxIndex < JASS_MAX_ARRAY_SIZE then
			set Serializable_maxIndex = Serializable_maxIndex + 1
			set this_1 = Serializable_maxIndex
			set Serializable_typeId[this_1] = 1185
		else
			call error("Out of memory: Could not create SmallKiller.")
			set this_1 = 0
		endif
	else
		set Serializable_firstFree = Serializable_firstFree - 1
		set this_1 = Serializable_nextFree[Serializable_firstFree]
		set Serializable_typeId[this_1] = 1185
	endif
	return this_1
endfunction

function SmallKiller_init takes integer this_1 returns nothing
endfunction

function construct_SmallKiller2 takes integer this_1, real pos_x_1, real pos_y_1, player owner returns nothing
	local integer temp = this_1
	local real tuple_temp = vec2_toVec3(pos_x_1, pos_y_1)
	local real tuple_temp_1 = vec2_toVec3_return_y
	local real tuple_temp_2 = vec2_toVec3_return_z
	local real temp_x = tuple_temp
	local real temp_y = tuple_temp_1
	local real temp_z = tuple_temp_2
	local player temp_1 = owner
	local integer temp_tuple_smallKillerId
	local integer tuple_temp_3
	call dispatch_RegionData_RegionData_RegionData_getTypeSet(getRegionData_3304(pos_x_1, pos_y_1))
	set tuple_temp_3 = dispatch_RegionData_RegionData_RegionData_getTypeSet_return_smallKillerId
	set temp_tuple_smallKillerId = tuple_temp_3
	call construct_EscaperSensorSetup3(temp, temp_x, temp_y, temp_z, temp_1, temp_tuple_smallKillerId, EscaperKillers_COLL_SIZE_SK, EscaperKillers_COLL_SIZE_SK + 4.)
	call SmallKiller_init(this_1)
endfunction

function new_SmallKiller_3743 takes real pos_x_1, real pos_y_1, player owner returns integer
	local integer this_1 = alloc_SmallKiller()
	call construct_SmallKiller2(this_1, pos_x_1, pos_y_1, owner)
	return this_1
endfunction

function alloc_SmallObstacle takes nothing returns integer
	local integer this_1
	if Serializable_firstFree == 0 then
		if Serializable_maxIndex < JASS_MAX_ARRAY_SIZE then
			set Serializable_maxIndex = Serializable_maxIndex + 1
			set this_1 = Serializable_maxIndex
			set Serializable_typeId[this_1] = 1220
		else
			call error("Out of memory: Could not create SmallObstacle.")
			set this_1 = 0
		endif
	else
		set Serializable_firstFree = Serializable_firstFree - 1
		set this_1 = Serializable_nextFree[Serializable_firstFree]
		set Serializable_typeId[this_1] = 1220
	endif
	return this_1
endfunction

function SmallObstacle_init takes integer this_1 returns nothing
endfunction

function construct_SmallObstacle2 takes integer this_1, real pos_x_1, real pos_y_1, player owner returns nothing
	local integer temp = this_1
	local real tuple_temp = vec2_withTerrainZ(pos_x_1, pos_y_1)
	local real tuple_temp_1 = vec2_withTerrainZ_return_y
	local real tuple_temp_2 = vec2_withTerrainZ_return_z
	local real temp_x = tuple_temp
	local real temp_y = tuple_temp_1
	local real temp_z = tuple_temp_2
	local player temp_1 = owner
	local integer temp_tuple_smallObstacleId
	local integer tuple_temp_3
	call dispatch_RegionData_RegionData_RegionData_getTypeSet(getRegionData_3304(pos_x_1, pos_y_1))
	set tuple_temp_3 = dispatch_RegionData_RegionData_RegionData_getTypeSet_return_smallObstacleId
	set temp_tuple_smallObstacleId = tuple_temp_3
	call construct_StaticEscaperSensorSetup3(temp, temp_x, temp_y, temp_z, temp_1, temp_tuple_smallObstacleId, Obstacle_EVENT_RADIUS_SMALL, Obstacle_EVENT_RADIUS_SMALL)
	call SmallObstacle_init(this_1)
endfunction

function new_SmallObstacle_3746 takes real pos_x_1, real pos_y_1, player owner returns integer
	local integer this_1 = alloc_SmallObstacle()
	call construct_SmallObstacle2(this_1, pos_x_1, pos_y_1, owner)
	return this_1
endfunction

function alloc_Tree takes nothing returns integer
	local integer this_1
	if Serializable_firstFree == 0 then
		if Serializable_maxIndex < JASS_MAX_ARRAY_SIZE then
			set Serializable_maxIndex = Serializable_maxIndex + 1
			set this_1 = Serializable_maxIndex
			set Serializable_typeId[this_1] = 1225
		else
			call error("Out of memory: Could not create Tree.")
			set this_1 = 0
		endif
	else
		set Serializable_firstFree = Serializable_firstFree - 1
		set this_1 = Serializable_nextFree[Serializable_firstFree]
		set Serializable_typeId[this_1] = 1225
	endif
	return this_1
endfunction

function Tree_init takes integer this_1 returns nothing
endfunction

function createDestructable takes integer id, real pos_x_1, real pos_y_1, real direction_radians, real scale, integer variation returns destructable
	return CreateDestructable(id, pos_x_1, pos_y_1, angle_degrees(direction_radians), scale, variation)
endfunction

function construct_Tree takes integer this_1, real pos_x_1, real pos_y_1, player owner returns nothing
	local integer rdata_treeId
	local integer tuple_temp
	call construct_UnitEntity(this_1, createUnit(owner, Tree_TREE_ID, pos_x_1, pos_y_1, 0.))
	call Tree_init(this_1)
	call dispatch_RegionData_RegionData_RegionData_getTypeSet(Entity_setCurrentRegion(this_1))
	set tuple_temp = dispatch_RegionData_RegionData_RegionData_getTypeSet_return_treeId
	set rdata_treeId = tuple_temp
	set Tree_dummy[this_1] = createDestructable(rdata_treeId, pos_x_1, pos_y_1, real_fromDeg(GetRandomReal(0., 360.)), GetRandomReal(0.8, 1.2), GetRandomInt(0, 2))
endfunction

function new_Tree takes real pos_x_1, real pos_y_1, player owner returns integer
	local integer this_1 = alloc_Tree()
	call construct_Tree(this_1, pos_x_1, pos_y_1, owner)
	return this_1
endfunction

function unit_issuePointOrderById takes unit this_1, integer id, real target_x, real target_y returns boolean
	return IssuePointOrderById(this_1, id, target_x, target_y)
endfunction

function vec2_setTerrainType takes real this_x, real this_y, integer ttype_1, integer variation, integer area, integer shape returns nothing
	call SetTerrainType(this_x, this_y, ttype_1, variation, area, shape)
endfunction

function MGSlide_generateNewCourse takes integer this_1 returns nothing
	local real cond_result_x
	local real cond_result_y
	local integer clVar
	local integer clVar_1
	local rect spawn
	local integer i
	local integer temp
	local integer i_1
	local integer temp_1
	local integer i_2
	local integer temp_2
	local integer i_3
	local integer temp_3
	local integer i_4
	local integer temp_4
	local integer i_5
	local integer temp_5
	local rect temp_6
	local real tuple_temp
	local real tuple_temp_1
	local real tuple_temp_2
	local real tuple_temp_3
	if MGSlide_goRight[this_1] then
		set tuple_temp = MGSlide_RIGHT_SPOT_x
		set tuple_temp_1 = MGSlide_RIGHT_SPOT_y
		set cond_result_x = tuple_temp
		set cond_result_y = tuple_temp_1
	else
		set tuple_temp_2 = MGSlide_LEFT_SPOT_x
		set tuple_temp_3 = MGSlide_LEFT_SPOT_y
		set cond_result_x = tuple_temp_2
		set cond_result_y = tuple_temp_3
	endif
	call createFText_2345(vec2_toVec3(cond_result_x, cond_result_y), vec2_toVec3_return_y, vec2_toVec3_return_z, "12", 12., 2., 0., 0.03)
	set clVar = alloc_CallbackCounted_doPeriodicallyCounted_MGSlide_MGSlide()
	call construct_CallbackCounted(clVar)
	set this_2947[clVar] = this_1
	call doPeriodicallyCounted(1., 11, clVar)
	set temp_6 = gg_rct_slidegamespawn
	set clVar_1 = alloc_ForGroupCallback_forUnitsInRect_MGSlide_MGSlide()
	call forUnitsInRect(temp_6, clVar_1)
	set MGSlide_bcount[this_1] = MGSlide_bcount[this_1] + 1
	set spawn = gg_rct_slidegamespawn
	set i = 0
	set temp = MGSlide_bcount[this_1] / 2
	loop
		exitwhen i > temp
		call vec2_setTerrainType(rect_randomPoint(gg_rct_slidegamespawn), rect_randomPoint_return_y, BuilderConstants_UNCONTROLLABLEICE, -1, 1, 0)
		set i = i + 1
	endloop
	set i_1 = 0
	set temp_1 = MGSlide_bcount[this_1] * 2
	loop
		exitwhen i_1 > temp_1
		call new_SmallObstacle_3746(rect_randomPoint(spawn), rect_randomPoint_return_y, GameConstants_STAFF_PLAYER)
		set i_1 = i_1 + 1
	endloop
	set i_2 = 0
	set temp_2 = MGSlide_bcount[this_1]
	loop
		exitwhen i_2 > temp_2
		call new_BigObstacle_3623(rect_randomPoint(spawn), rect_randomPoint_return_y, GameConstants_STAFF_PLAYER)
		set i_2 = i_2 + 1
	endloop
	set i_3 = 0
	set temp_3 = MGSlide_bcount[this_1] / 2
	loop
		exitwhen i_3 > temp_3
		call new_Tree(rect_randomPoint(spawn), rect_randomPoint_return_y, GameConstants_STAFF_PLAYER)
		set i_3 = i_3 + 1
	endloop
	set i_4 = 0
	set temp_4 = MGSlide_bcount[this_1]
	loop
		exitwhen i_4 > temp_4
		call unit_issuePointOrderById(UnitEntity_actor[new_SmallKiller_3743(rect_randomPoint(spawn), rect_randomPoint_return_y, GameConstants_STAFF_PLAYER)], OrderIds_patrol, rect_randomPoint(spawn), rect_randomPoint_return_y)
		set i_4 = i_4 + 1
	endloop
	set i_5 = 0
	set temp_5 = MGSlide_bcount[this_1] / 2
	loop
		exitwhen i_5 > temp_5
		call unit_issuePointOrderById(UnitEntity_actor[new_GlaiveKiller_3678(rect_randomPoint(spawn), rect_randomPoint_return_y, GameConstants_STAFF_PLAYER)], OrderIds_patrol, rect_randomPoint(spawn), rect_randomPoint_return_y)
		set i_5 = i_5 + 1
	endloop
endfunction

function dispatch_MGSlide_MGSlide_MGSlide_generateNewCourse takes integer this_1 returns nothing
	if Minigame_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling MGSlide.generateNewCourse")
		else
			call error("Called MGSlide.generateNewCourse on invalid object.")
		endif
	endif
	call MGSlide_generateNewCourse(this_1)
endfunction

function vec3_distanceTo2d_4266 takes real this_x, real this_y, real this_z, real v_x, real v_y returns real
	return SquareRoot(real_squared(v_x - this_x) + real_squared(v_y - this_y))
endfunction

function call_doPeriodically_MGSlide_MGSlide takes integer this_1, integer cb_1 returns nothing
	local integer count = 0
	local integer iterator = LinkedList_iterator(PlayerData_escaperPlayers)
	local integer pd_1
	local integer i
	local integer i_1
	local integer iterator_1
	local integer pd_2
	loop
		exitwhen  not LLIterator_hasNext(iterator)
		set pd_1 = LLIterator_next(iterator)
		if PlayerData_escaper[pd_1] != 0 and Escaper_alive[PlayerData_escaper[pd_1]] then
			if MGSlide_goRight[this_2946[this_1]] and vec3_distanceTo2d_4266(dispatch_UnitEntity_Entity_UnitEntity_getPos(PlayerData_escaper[pd_1]), dispatch_UnitEntity_Entity_UnitEntity_getPos_return_y, dispatch_UnitEntity_Entity_UnitEntity_getPos_return_z, MGSlide_RIGHT_SPOT_x, MGSlide_RIGHT_SPOT_y) > 64. then
				call dispatch_Escaper_Escaper_Escaper_kill_2854(PlayerData_escaper[pd_1], 0, 0)
				call flashEffect(Abilities_frostNovaTarget, dispatch_UnitEntity_Entity_UnitEntity_getPos(PlayerData_escaper[pd_1]), dispatch_UnitEntity_Entity_UnitEntity_getPos_return_y, dispatch_UnitEntity_Entity_UnitEntity_getPos_return_z)
			elseif ( not MGSlide_goRight[this_2946[this_1]]) and vec3_distanceTo2d_4266(dispatch_UnitEntity_Entity_UnitEntity_getPos(PlayerData_escaper[pd_1]), dispatch_UnitEntity_Entity_UnitEntity_getPos_return_y, dispatch_UnitEntity_Entity_UnitEntity_getPos_return_z, MGSlide_LEFT_SPOT_x, MGSlide_LEFT_SPOT_y) > 64. then
				call dispatch_Escaper_Escaper_Escaper_kill_2854(PlayerData_escaper[pd_1], 0, 0)
				call flashEffect(Abilities_frostNovaTarget, dispatch_UnitEntity_Entity_UnitEntity_getPos(PlayerData_escaper[pd_1]), dispatch_UnitEntity_Entity_UnitEntity_getPos_return_y, dispatch_UnitEntity_Entity_UnitEntity_getPos_return_z)
			else
				set count = count + 1
			endif
		endif
	endloop
	call LLIterator_close(iterator)
	if count > 0 then
		set MGSlide_goRight[this_2946[this_1]] =  not MGSlide_goRight[this_2946[this_1]]
		if MGSlide_goRight[this_2946[this_1]] then
			set i = 0
			loop
				exitwhen i > 1
				call new_Coin(MGSlide_RIGHT_SPOT_x, MGSlide_RIGHT_SPOT_y, GameConstants_STAFF_PLAYER)
				set i = i + 1
			endloop
		else
			set i_1 = 0
			loop
				exitwhen i_1 > 1
				call new_Coin(MGSlide_LEFT_SPOT_x, MGSlide_LEFT_SPOT_y, GameConstants_STAFF_PLAYER)
				set i_1 = i_1 + 1
			endloop
		endif
		set iterator_1 = LinkedList_iterator(PlayerData_escaperPlayers)
		loop
			exitwhen  not LLIterator_hasNext(iterator_1)
			set pd_2 = LLIterator_next(iterator_1)
			if PlayerData_escaper[pd_2] != 0 and Escaper_alive[PlayerData_escaper[pd_2]] then
				call flashEffect(Abilities_polyMorphTarget, dispatch_UnitEntity_Entity_UnitEntity_getPos(PlayerData_escaper[pd_2]), dispatch_UnitEntity_Entity_UnitEntity_getPos_return_y, dispatch_UnitEntity_Entity_UnitEntity_getPos_return_z)
			endif
			call printTimedToPlayer("Next round!\n>> |cff8cbfddGet to the other side!", 1., PlayerData_p[pd_2])
		endloop
		call LLIterator_close(iterator_1)
		call dispatch_MGSlide_MGSlide_MGSlide_generateNewCourse(this_2946[this_1])
	endif
endfunction

function alloc_LinkedListPredicate_filter_peek_getNameColored_printTimedToPlayer_doPeriodically_MGWarlock_MGWarlock takes nothing returns integer
	local integer this_1
	if LinkedListPredicate_firstFree == 0 then
		if LinkedListPredicate_maxIndex < JASS_MAX_ARRAY_SIZE then
			set LinkedListPredicate_maxIndex = LinkedListPredicate_maxIndex + 1
			set this_1 = LinkedListPredicate_maxIndex
			set LinkedListPredicate_typeId[this_1] = 1000
		else
			call error("Out of memory: Could not create LinkedListPredicate_filter_peek_getNameColored_printTimedToPlayer_doPeriodically_MGWarlock_MGWarlock.")
			set this_1 = 0
		endif
	else
		set LinkedListPredicate_firstFree = LinkedListPredicate_firstFree - 1
		set this_1 = LinkedListPredicate_nextFree[LinkedListPredicate_firstFree]
		set LinkedListPredicate_typeId[this_1] = 1000
	endif
	return this_1
endfunction

function alloc_LinkedListPredicate_filter_size_doPeriodically_MGWarlock_MGWarlock takes nothing returns integer
	local integer this_1
	if LinkedListPredicate_firstFree == 0 then
		if LinkedListPredicate_maxIndex < JASS_MAX_ARRAY_SIZE then
			set LinkedListPredicate_maxIndex = LinkedListPredicate_maxIndex + 1
			set this_1 = LinkedListPredicate_maxIndex
			set LinkedListPredicate_typeId[this_1] = 1001
		else
			call error("Out of memory: Could not create LinkedListPredicate_filter_size_doPeriodically_MGWarlock_MGWarlock.")
			set this_1 = 0
		endif
	else
		set LinkedListPredicate_firstFree = LinkedListPredicate_firstFree - 1
		set this_1 = LinkedListPredicate_nextFree[LinkedListPredicate_firstFree]
		set LinkedListPredicate_typeId[this_1] = 1001
	endif
	return this_1
endfunction

function alloc_LinkedListPredicate_removeIf_LinkedList_LinkedList takes nothing returns integer
	local integer this_1
	if LinkedListPredicate_firstFree == 0 then
		if LinkedListPredicate_maxIndex < JASS_MAX_ARRAY_SIZE then
			set LinkedListPredicate_maxIndex = LinkedListPredicate_maxIndex + 1
			set this_1 = LinkedListPredicate_maxIndex
			set LinkedListPredicate_typeId[this_1] = 1003
		else
			call error("Out of memory: Could not create LinkedListPredicate_removeIf_LinkedList_LinkedList.")
			set this_1 = 0
		endif
	else
		set LinkedListPredicate_firstFree = LinkedListPredicate_firstFree - 1
		set this_1 = LinkedListPredicate_nextFree[LinkedListPredicate_firstFree]
		set LinkedListPredicate_typeId[this_1] = 1003
	endif
	return this_1
endfunction

function dealloc_LinkedListPredicate takes integer obj_1 returns nothing
	if LinkedListPredicate_typeId[obj_1] == 0 then
		call error("Double free: object of type LinkedListPredicate")
	else
		set LinkedListPredicate_nextFree[LinkedListPredicate_firstFree] = obj_1
		set LinkedListPredicate_firstFree = LinkedListPredicate_firstFree + 1
		set LinkedListPredicate_typeId[obj_1] = 0
	endif
endfunction

function destroyLinkedListPredicate takes integer this_1 returns nothing
	call dealloc_LinkedListPredicate(this_1)
endfunction

function dispatch_LinkedListPredicate_destroyLinkedListPredicate takes integer this_1 returns nothing
	if LinkedListPredicate_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling LinkedListPredicate.LinkedListPredicate")
		else
			call error("Called LinkedListPredicate.LinkedListPredicate on invalid object.")
		endif
	endif
	call destroyLinkedListPredicate(this_1)
endfunction

function LinkedList_copy takes integer this_1 returns integer
	local integer list = new_LinkedList()
	local integer iterator = LinkedList_iterator(this_1)
	local integer elem
	loop
		exitwhen  not LLIterator_hasNext(iterator)
		set elem = LLIterator_next(iterator)
		call dispatch_LinkedList_LinkedList_LinkedList_add_1(list, elem)
	endloop
	call LLIterator_close(iterator)
	return list
endfunction

function dispatch_LinkedList_LinkedList_LinkedList_copy takes integer this_1 returns integer
	local integer LinkedList_LinkedList_copy_result
	if LinkedList_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling LinkedList.copy")
		else
			call error("Called LinkedList.copy on invalid object.")
		endif
	endif
	set LinkedList_LinkedList_copy_result = LinkedList_copy(this_1)
	return LinkedList_LinkedList_copy_result
endfunction

function isTrueFor_filter_peek_getNameColored_printTimedToPlayer_doPeriodically_MGWarlock_MGWarlock takes integer this_1, integer warlock returns boolean
	return unit_isAlive(UnitEntity_actor[warlock])
endfunction

function isTrueFor_filter_size_doPeriodically_MGWarlock_MGWarlock takes integer this_1, integer warlock returns boolean
	return unit_isAlive(UnitEntity_actor[warlock])
endfunction

function vec2_isInRegion takes real this_x, real this_y, region whichRegion returns boolean
	return IsPointInRegion(whichRegion, this_x, this_y)
endfunction

function isTrueFor_removeIf_Executer_Executer takes integer this_1, integer entity_1 returns boolean
	return ( not unit_isAlive(UnitEntity_actor[entity_1])) or ( not vec2_isInRegion(vec3_toVec2(dispatch_UnitEntity_Entity_UnitEntity_getPos(entity_1), dispatch_UnitEntity_Entity_UnitEntity_getPos_return_y, dispatch_UnitEntity_Entity_UnitEntity_getPos_return_z), vec3_toVec2_return_y, Executer_eventRegion[this_2955[this_1]]))
endfunction

function cyc_isTrueFor_removeIf_LinkedList_LinkedList takes integer funcChoice, integer this_1, integer t returns nothing
	local boolean LinkedList_LinkedListPredicate_isTrueFor_result
	if funcChoice == 0 then
		call cyc_isTrueFor_removeIf_LinkedList_LinkedList(1, predicate[this_1], t)
		set tempReturn_boolean =  not tempReturn_boolean
		return
	elseif funcChoice == 1 then
		if LinkedListPredicate_typeId[this_1] == 0 then
			if this_1 == 0 then
				call error("Nullpointer exception when calling LinkedListPredicate.isTrueFor")
			else
				call error("Called LinkedListPredicate.isTrueFor on invalid object.")
			endif
		endif
		if LinkedListPredicate_typeId[this_1] <= 1001 then
			if LinkedListPredicate_typeId[this_1] <= 1000 then
				set LinkedList_LinkedListPredicate_isTrueFor_result = isTrueFor_filter_peek_getNameColored_printTimedToPlayer_doPeriodically_MGWarlock_MGWarlock(this_1, t)
			else
				set LinkedList_LinkedListPredicate_isTrueFor_result = isTrueFor_filter_size_doPeriodically_MGWarlock_MGWarlock(this_1, t)
			endif
		elseif LinkedListPredicate_typeId[this_1] <= 1002 then
			set LinkedList_LinkedListPredicate_isTrueFor_result = isTrueFor_removeIf_Executer_Executer(this_1, t)
		else
			call cyc_isTrueFor_removeIf_LinkedList_LinkedList(0, this_1, t)
			set LinkedList_LinkedListPredicate_isTrueFor_result = tempReturn_boolean
		endif
		set tempReturn_boolean = LinkedList_LinkedListPredicate_isTrueFor_result
		return
	endif
endfunction

function LinkedList_removeIf takes integer this_1, integer predicate_1 returns nothing
	local integer itr_1 = dispatch_LinkedList_LinkedList_LinkedList_iterator(this_1)
	local integer from = itr_1
	local integer elem
	loop
		exitwhen  not LLIterator_hasNext(from)
		set elem = LLIterator_next(from)
		call cyc_isTrueFor_removeIf_LinkedList_LinkedList(1, predicate_1, elem)
		if tempReturn_boolean then
			call dispatch_LLIterator_LinkedList_LLIterator_remove(itr_1)
		endif
	endloop
	call dispatch_LLIterator_LinkedList_LLIterator_close(itr_1)
	call dispatch_LinkedListPredicate_destroyLinkedListPredicate(predicate_1)
endfunction

function dispatch_LinkedList_LinkedList_LinkedList_removeIf takes integer this_1, integer predicate_1 returns nothing
	if LinkedList_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling LinkedList.removeIf")
		else
			call error("Called LinkedList.removeIf on invalid object.")
		endif
	endif
	call LinkedList_removeIf(this_1, predicate_1)
endfunction

function LinkedList_filter takes integer this_1, integer predicate_1 returns integer
	local integer result_1 = dispatch_LinkedList_LinkedList_LinkedList_copy(this_1)
	local integer temp = result_1
	local integer clVar = alloc_LinkedListPredicate_removeIf_LinkedList_LinkedList()
	set predicate[clVar] = predicate_1
	call dispatch_LinkedList_LinkedList_LinkedList_removeIf(temp, clVar)
	call dispatch_LinkedListPredicate_destroyLinkedListPredicate(predicate_1)
	return result_1
endfunction

function dispatch_LinkedList_LinkedList_LinkedList_filter takes integer this_1, integer predicate_1 returns integer
	local integer LinkedList_LinkedList_filter_result
	if LinkedList_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling LinkedList.filter")
		else
			call error("Called LinkedList.filter on invalid object.")
		endif
	endif
	set LinkedList_LinkedList_filter_result = LinkedList_filter(this_1, predicate_1)
	return LinkedList_LinkedList_filter_result
endfunction

function LinkedList_getLast takes integer this_1 returns integer
	return LLEntry_elem[LLEntry_prev[LinkedList_dummy[this_1]]]
endfunction

function dispatch_LinkedList_LinkedList_LinkedList_getLast takes integer this_1 returns integer
	local integer LinkedList_LinkedList_getLast_result
	if LinkedList_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling LinkedList.getLast")
		else
			call error("Called LinkedList.getLast on invalid object.")
		endif
	endif
	set LinkedList_LinkedList_getLast_result = LinkedList_getLast(this_1)
	return LinkedList_LinkedList_getLast_result
endfunction

function LinkedList_peek takes integer this_1 returns integer
	return dispatch_LinkedList_LinkedList_LinkedList_getLast(this_1)
endfunction

function dispatch_LinkedList_LinkedList_LinkedList_peek takes integer this_1 returns integer
	local integer LinkedList_LinkedList_peek_result
	if LinkedList_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling LinkedList.peek")
		else
			call error("Called LinkedList.peek on invalid object.")
		endif
	endif
	set LinkedList_LinkedList_peek_result = LinkedList_peek(this_1)
	return LinkedList_LinkedList_peek_result
endfunction

function call_doPeriodically_MGWarlock_MGWarlock takes integer this_1, integer cb_1 returns nothing
	local integer temp = MGWarlock_warlocks
	local integer clVar = alloc_LinkedListPredicate_filter_size_doPeriodically_MGWarlock_MGWarlock()
	local integer iterator
	local integer ep
	local integer clVar_1
	local integer temp_1
	if dispatch_LinkedList_LinkedList_LinkedList_size(dispatch_LinkedList_LinkedList_LinkedList_filter(temp, clVar)) == 1 then
		set iterator = LinkedList_iterator(PlayerData_escaperPlayers)
		loop
			exitwhen  not LLIterator_hasNext(iterator)
			set ep = LLIterator_next(iterator)
			set temp_1 = MGWarlock_warlocks
			set clVar_1 = alloc_LinkedListPredicate_filter_peek_getNameColored_printTimedToPlayer_doPeriodically_MGWarlock_MGWarlock()
			call printTimedToPlayer(player_getNameColored(Entity_owner[Warlock_mounter[dispatch_LinkedList_LinkedList_LinkedList_peek(dispatch_LinkedList_LinkedList_LinkedList_filter(temp_1, clVar_1))]], true) + " has won!", 10., PlayerData_p[ep])
		endloop
		call LLIterator_close(iterator)
		call dispatch_Minigame_Minigame_Minigame_reset(this_2948[this_1])
	endif
endfunction

function alloc_LLItrClosure_forEach_PlayerData takes nothing returns integer
	local integer this_1
	if LLItrClosure_firstFree == 0 then
		if LLItrClosure_maxIndex < JASS_MAX_ARRAY_SIZE then
			set LLItrClosure_maxIndex = LLItrClosure_maxIndex + 1
			set this_1 = LLItrClosure_maxIndex
			set LLItrClosure_typeId[this_1] = 993
		else
			call error("Out of memory: Could not create LLItrClosure_forEach_PlayerData.")
			set this_1 = 0
		endif
	else
		set LLItrClosure_firstFree = LLItrClosure_firstFree - 1
		set this_1 = LLItrClosure_nextFree[LLItrClosure_firstFree]
		set LLItrClosure_typeId[this_1] = 993
	endif
	return this_1
endfunction

function DummyDamage_amount_1 takes integer this_1, real amount returns nothing
	set DummyDamage_amount[this_1] = amount
endfunction

function dispatch_DummyDamage_DummyDamage_DummyDamage_amount takes integer this_1, real amount returns nothing
	if DummyDamage_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling DummyDamage.amount")
		else
			call error("Called DummyDamage.amount on invalid object.")
		endif
	endif
	call DummyDamage_amount_1(this_1, amount)
endfunction

function LinkedList_enqueue takes integer this_1, integer elem returns nothing
	call dispatch_LinkedList_LinkedList_LinkedList_add_1(this_1, elem)
endfunction

function dispatch_LinkedList_LinkedList_LinkedList_enqueue takes integer this_1, integer elem returns nothing
	if LinkedList_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling LinkedList.enqueue")
		else
			call error("Called LinkedList.enqueue on invalid object.")
		endif
	endif
	call LinkedList_enqueue(this_1, elem)
endfunction

function real_asAngleDegrees takes real this_1 returns real
	set real_asAngleDegrees_return_radians = this_1 * Angle_DEGTORAD
	return real_asAngleDegrees_return_radians
endfunction

function unitToIndex takes unit object returns integer
	return handle_getTCHandleId(object)
endfunction

function DummyRecycler_recycle takes unit u_1 returns nothing
	local integer smallestQueue = 0
	local integer i = 1
	local integer temp = DummyRecycler_DIFFERENT_ANGLES - 1
	local unit receiver
	local unit receiver_1
	local unit receiver_2
	local unit receiver_3
	local unit receiver_4
	local unit receiver_5
	loop
		exitwhen i > temp
		if dispatch_LinkedList_LinkedList_LinkedList_size(DummyRecycler_angleQueues[smallestQueue]) > dispatch_LinkedList_LinkedList_LinkedList_size(DummyRecycler_angleQueues[i]) then
			set smallestQueue = i
		endif
		set i = i + 1
	endloop
	if dispatch_LinkedList_LinkedList_LinkedList_size(DummyRecycler_angleQueues[smallestQueue]) >= DummyRecycler_SAVED_UNITS_PER_ANGLE then
		call unit_remove(u_1)
	else
		call dispatch_LinkedList_LinkedList_LinkedList_enqueue(DummyRecycler_angleQueues[smallestQueue], unitToIndex(u_1))
		set receiver = u_1
		call unit_setXY(receiver, vec2_op_minus(MapBounds_boundMax_x, MapBounds_boundMax_y, 16., 16.), vec2_op_minus_return_y)
		set receiver_1 = receiver
		call unit_pause(receiver_1)
		set receiver_2 = receiver_1
		call unit_setFacing(receiver_2, real_asAngleDegrees(smallestQueue * DummyRecycler_ANGLE_DEGREE))
		set receiver_3 = receiver_2
		call unit_setScale(receiver_3, 1.)
		set receiver_4 = receiver_3
		call unit_setVertexColor_4206(receiver_4, Colors_COLOR_WHITE_red, Colors_COLOR_WHITE_green, Colors_COLOR_WHITE_blue, Colors_COLOR_WHITE_alpha)
		set receiver_5 = receiver_4
		call unit_setOwner(receiver_5, Basics_DUMMY_PLAYER, true)
	endif
endfunction

function DummyDamage_onDestroy takes integer this_1 returns nothing
	call DummyRecycler_recycle(DummyDamage_dummy[this_1])
endfunction

function dealloc_DummyDamage takes integer obj_1 returns nothing
	if DummyDamage_typeId[obj_1] == 0 then
		call error("Double free: object of type DummyDamage")
	else
		set DummyDamage_nextFree[DummyDamage_firstFree] = obj_1
		set DummyDamage_firstFree = DummyDamage_firstFree + 1
		set DummyDamage_typeId[obj_1] = 0
	endif
endfunction

function destroyDummyDamage takes integer this_1 returns nothing
	call DummyDamage_onDestroy(this_1)
	call dealloc_DummyDamage(this_1)
endfunction

function dispatch_DummyDamage_destroyDummyDamage takes integer this_1 returns nothing
	if DummyDamage_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling DummyDamage.DummyDamage")
		else
			call error("Called DummyDamage.DummyDamage on invalid object.")
		endif
	endif
	call destroyDummyDamage(this_1)
endfunction

function unit_damageTarget takes unit this_1, widget target, real amount, boolean attack, boolean ranged, attacktype attackType, damagetype damageType, weapontype weaponType returns nothing
	call UnitDamageTarget(this_1, target, amount, attack, ranged, attackType, damageType, weaponType)
endfunction

function DummyDamage_apply takes integer this_1, boolean terminate returns nothing
	local unit receiver = DummyDamage_dummy[this_1]
	local unit receiver_1
	call unit_setOwner(receiver, DummyDamage_attacker[this_1], false)
	set receiver_1 = receiver
	call unit_damageTarget(receiver_1, DummyDamage_target[this_1], DummyDamage_amount[this_1], DummyDamage_attack[this_1], DummyDamage_ranged[this_1], DummyDamage_attackType[this_1], DummyDamage_damageType[this_1], DummyDamage_weaponType[this_1])
	if terminate then
		call dispatch_DummyDamage_destroyDummyDamage(this_1)
	endif
endfunction

function dispatch_DummyDamage_DummyDamage_DummyDamage_apply takes integer this_1, boolean terminate returns nothing
	if DummyDamage_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling DummyDamage.apply")
		else
			call error("Called DummyDamage.apply on invalid object.")
		endif
	endif
	call DummyDamage_apply(this_1, terminate)
endfunction

function DummyDamage_target_1 takes integer this_1, widget target returns nothing
	set DummyDamage_target[this_1] = target
endfunction

function dispatch_DummyDamage_DummyDamage_DummyDamage_target takes integer this_1, widget target returns nothing
	if DummyDamage_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling DummyDamage.target")
		else
			call error("Called DummyDamage.target on invalid object.")
		endif
	endif
	call DummyDamage_target_1(this_1, target)
endfunction

function dispatch_Projectile_Projectile_Projectile_terminate takes integer this_1 returns nothing
	if Serializable_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling Projectile.terminate")
		else
			call error("Called Projectile.terminate on invalid object.")
		endif
	endif
	call cyc_RevivePoint_terminate(1, this_1)
endfunction

function alloc_DummyDamage takes nothing returns integer
	local integer this_1
	if DummyDamage_firstFree == 0 then
		if DummyDamage_maxIndex < JASS_MAX_ARRAY_SIZE then
			set DummyDamage_maxIndex = DummyDamage_maxIndex + 1
			set this_1 = DummyDamage_maxIndex
			set DummyDamage_typeId[this_1] = 740
		else
			call error("Out of memory: Could not create DummyDamage.")
			set this_1 = 0
		endif
	else
		set DummyDamage_firstFree = DummyDamage_firstFree - 1
		set this_1 = DummyDamage_nextFree[DummyDamage_firstFree]
		set DummyDamage_typeId[this_1] = 740
	endif
	return this_1
endfunction

function DummyDamage_init takes integer this_1 returns nothing
	local real tuple_temp
	local real tuple_temp_1
	set DummyDamage_dummy[this_1] = DummyRecycler_get(DummyDamage_origin_x[this_1], DummyDamage_origin_y[this_1], 0.)
	set DummyDamage_target[this_1] = null
	set DummyDamage_amount[this_1] = 0.
	set DummyDamage_attack[this_1] = false
	set DummyDamage_ranged[this_1] = false
	set tuple_temp = Vectors_ZERO2_x
	set tuple_temp_1 = Vectors_ZERO2_y
	set DummyDamage_origin_x[this_1] = tuple_temp
	set DummyDamage_origin_y[this_1] = tuple_temp_1
	set DummyDamage_attacker[this_1] = Basics_DUMMY_PLAYER
	set DummyDamage_attackType[this_1] = ATTACK_TYPE_CHAOS
	set DummyDamage_damageType[this_1] = DAMAGE_TYPE_UNKNOWN
	set DummyDamage_weaponType[this_1] = WEAPON_TYPE_WHOKNOWS
endfunction

function construct_DummyDamage takes integer this_1 returns nothing
	call DummyDamage_init(this_1)
endfunction

function new_DummyDamage takes nothing returns integer
	local integer this_1 = alloc_DummyDamage()
	call construct_DummyDamage(this_1)
	return this_1
endfunction

function vec2_length takes real this_x, real this_y returns real
	return SquareRoot(this_x * this_x + this_y * this_y)
endfunction

function vec2_norm takes real this_x, real this_y returns real
	local real len = vec2_length(this_x, this_y)
	local real x = 0.
	local real y = 0.
	if len > 0.0 then
		set x = this_x / len
		set y = this_y / len
	endif
	set vec2_norm_return_x = x
	set vec2_norm_return_y = y
	return vec2_norm_return_x
endfunction

function run_forEach_Fireball_MGWarlock takes integer this_1, integer target returns nothing
	local integer receiver
	local integer receiver_1
	if unit_isAlive(UnitEntity_actor[target]) and target != Fireball_caster[this_2950[this_1]] and vec3_distanceTo2dSq(dispatch_UnitEntity_Entity_UnitEntity_getPos(target), dispatch_UnitEntity_Entity_UnitEntity_getPos_return_y, dispatch_UnitEntity_Entity_UnitEntity_getPos_return_z, vec3_toVec2(Entity_pos_x[this_2950[this_1]], Entity_pos_y[this_2950[this_1]], Entity_pos_z[this_2950[this_1]]), vec3_toVec2_return_y) < Entity_radius2[this_2950[this_1]] + Entity_radius2[target] then
		set receiver = new_DummyDamage()
		call dispatch_DummyDamage_DummyDamage_DummyDamage_target(receiver, UnitEntity_actor[target])
		set receiver_1 = receiver
		call dispatch_DummyDamage_DummyDamage_DummyDamage_amount(receiver_1, 20.)
		call dispatch_DummyDamage_DummyDamage_DummyDamage_apply(receiver_1, true)
		call dispatch_Entity_Entity_Entity_addVel(target, vec2_toVec3(vec2_op_mult(vec2_norm(vec2_op_minus(vec3_toVec2(dispatch_UnitEntity_Entity_UnitEntity_getPos(target), dispatch_UnitEntity_Entity_UnitEntity_getPos_return_y, dispatch_UnitEntity_Entity_UnitEntity_getPos_return_z), vec3_toVec2_return_y, vec3_toVec2(dispatch_Entity_Entity_Entity_getPos(this_2950[this_1]), dispatch_Entity_Entity_Entity_getPos_return_y, dispatch_Entity_Entity_Entity_getPos_return_z), vec3_toVec2_return_y), vec2_op_minus_return_y), vec2_norm_return_y, 40), vec2_op_mult_return_y), vec2_toVec3_return_y, vec2_toVec3_return_z)
		call dispatch_Projectile_Projectile_Projectile_terminate(this_2950[this_1])
	endif
endfunction

function toRawCode takes integer value returns string
	local string result_1 = ""
	local integer remainingValue = value
	local integer byteno = 0
	local integer charValue
	loop
		exitwhen byteno > 3
		set charValue = ModuloInteger(remainingValue, 256)
		set remainingValue = remainingValue / 256
		set result_1 = string_charAt(ObjectIds_CHARMAP, charValue) + result_1
		set byteno = byteno + 1
	endloop
	return result_1
endfunction

function int_toRawCode takes integer this_1 returns string
	return toRawCode(this_1)
endfunction

function run_map_ObjectIds takes integer this_1, integer t returns string
	return int_toRawCode(t)
endfunction

function hashtable_hasString takes hashtable this_1, integer parentKey, integer childKey returns boolean
	return HaveSavedString(this_1, parentKey, childKey)
endfunction

function Table_hasString takes integer this_1, integer parentKey returns boolean
	return hashtable_hasString(Table_ht, this_1, parentKey)
endfunction

function dispatch_Table_Table_Table_hasString takes integer this_1, integer parentKey returns boolean
	local boolean Table_Table_hasString_result
	if Table_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling Table.hasString")
		else
			call error("Called Table.hasString on invalid object.")
		endif
	endif
	set Table_Table_hasString_result = Table_hasString(this_1, parentKey)
	return Table_Table_hasString_result
endfunction

function hashtable_loadString takes hashtable this_1, integer parentKey, integer childKey returns string
	return LoadStr(this_1, parentKey, childKey)
endfunction

function Table_loadString takes integer this_1, integer parentKey returns string
	return hashtable_loadString(Table_ht, this_1, parentKey)
endfunction

function dispatch_Table_Table_Table_loadString takes integer this_1, integer parentKey returns string
	local string Table_Table_loadString_result
	if Table_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling Table.loadString")
		else
			call error("Called Table.loadString on invalid object.")
		endif
	endif
	set Table_Table_loadString_result = Table_loadString(this_1, parentKey)
	return Table_Table_loadString_result
endfunction

function hashtable_saveString takes hashtable this_1, integer parentKey, integer childKey, string value returns nothing
	call SaveStr(this_1, parentKey, childKey, value)
endfunction

function Table_saveString takes integer this_1, integer parentKey, string value returns nothing
	call hashtable_saveString(Table_ht, this_1, parentKey, value)
endfunction

function dispatch_Table_Table_Table_saveString takes integer this_1, integer parentKey, string value returns nothing
	if Table_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling Table.saveString")
		else
			call error("Called Table.saveString on invalid object.")
		endif
	endif
	call Table_saveString(this_1, parentKey, value)
endfunction

function stringToIndex takes string s returns integer
	local integer hash = string_getHash(s)
	loop
		exitwhen  not true
		if dispatch_Table_Table_Table_hasString(TypeCasting_typecastdata, hash) then
			if dispatch_Table_Table_Table_loadString(TypeCasting_typecastdata, hash) == s then
				exitwhen true
			endif
		else
			call dispatch_Table_Table_Table_saveString(TypeCasting_typecastdata, hash, s)
			exitwhen true
		endif
		set hash = hash + 1
	endloop
	return hash
endfunction

function run_wrapper takes integer this_1, integer t returns integer
	return stringToIndex(run_map_ObjectIds(this_1, t))
endfunction

function UnitTargetType_toObjectString takes integer this_1 returns string
	local integer temp = this_1
	if temp == 0 then
		return "air"
	elseif temp == 1 then
		return "alive"
	elseif temp == 2 then
		return "allies"
	elseif temp == 3 then
		return "ancient"
	elseif temp == 4 then
		return "dead"
	elseif temp == 5 then
		return "debris"
	elseif temp == 6 then
		return "decoration"
	elseif temp == 7 then
		return "enemies"
	elseif temp == 8 then
		return "friend"
	elseif temp == 9 then
		return "ground"
	elseif temp == 10 then
		return "hero"
	elseif temp == 11 then
		return "invulnerable"
	elseif temp == 12 then
		return "item"
	elseif temp == 13 then
		return "mechanical"
	elseif temp == 14 then
		return "neutral"
	elseif temp == 15 then
		return "nonancient"
	elseif temp == 16 then
		return "none"
	elseif temp == 17 then
		return "nonhero"
	elseif temp == 18 then
		return "nonsapper"
	elseif temp == 19 then
		return "notself"
	elseif temp == 20 then
		return "organic"
	elseif temp == 21 then
		return "playerunits"
	elseif temp == 22 then
		return "sapper"
	elseif temp == 23 then
		return "self"
	elseif temp == 24 then
		return "structure"
	elseif temp == 25 then
		return "terrain"
	elseif temp == 26 then
		return "tree"
	elseif temp == 27 then
		return "vulnerable"
	elseif temp == 28 then
		return "wall"
	else
		return "ward"
	endif
endfunction

function run_map_ObjectIds_4028 takes integer this_1, integer t returns string
	return UnitTargetType_toObjectString(t)
endfunction

function run_wrapper_4031 takes integer this_1, integer t returns integer
	return stringToIndex(run_map_ObjectIds_4028(this_1, t))
endfunction

function dispatch_MapClosure_LinkedList_MapClosure_run takes integer this_1, integer t returns integer
	local integer LinkedList_MapClosure_run_result
	if MapClosure_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling MapClosure.run")
		else
			call error("Called MapClosure.run on invalid object.")
		endif
	endif
	if MapClosure_typeId[this_1] <= 1009 then
		set LinkedList_MapClosure_run_result = run_wrapper(this_1, t)
	else
		set LinkedList_MapClosure_run_result = run_wrapper_4031(this_1, t)
	endif
	return LinkedList_MapClosure_run_result
endfunction

function run_forEach_LinkedList_LinkedList takes integer this_1, integer t returns nothing
	call dispatch_LinkedList_LinkedList_LinkedList_add_1(output_2568[this_1], dispatch_MapClosure_LinkedList_MapClosure_run(itr_2535[this_1], t))
endfunction

function player_getState takes player this_1, playerstate state returns integer
	return GetPlayerState(this_1, state)
endfunction

function player_addState takes player this_1, playerstate state, integer wval returns nothing
	call SetPlayerState(this_1, state, player_getState(this_1, state) + wval)
endfunction

function player_addGold takes player this_1, integer wval returns nothing
	call player_addState(this_1, PLAYER_STATE_RESOURCE_GOLD, wval)
endfunction

function unit_addItemById takes unit this_1, integer itemId returns item
	return UnitAddItemById(this_1, itemId)
endfunction

function PlayerData_updateRank takes integer this_1 returns nothing
	local integer i
	if PlayerData_lvlfx[this_1] != null then
		call effect_destr(PlayerData_lvlfx[this_1])
	endif
	set i = 0
	loop
		exitwhen  not (PlayerData_XP[this_1] >= GameConstants_expBounds[i])
		set i = i + 1
	endloop
	set PlayerData_rank[this_1] = GameConstants_ranks[i]
	call player_addGold(PlayerData_p[this_1], i * 15)
	if PlayerData_title[this_1] == 2 then
		set PlayerData_rank[this_1] = "|cffADD642*Admin*"
		if PlayerData_tagfx[this_1] == null then
			set PlayerData_tagfx[this_1] = AddSpecialEffectTarget("war3mapImported\\HolyShield Seal_Portrait.mdx", UnitEntity_actor[PlayerData_escaper[this_1]], "chest")
		endif
	endif
	if PlayerData_XP[this_1] > 10000 then
		set PlayerData_lvlfx[this_1] = AddSpecialEffectTarget("war3mapImported\\Life High_Portrait.mdx", UnitEntity_actor[PlayerData_escaper[this_1]], "chest")
	elseif PlayerData_XP[this_1] > 7500 then
		set PlayerData_lvlfx[this_1] = AddSpecialEffectTarget("war3mapImported\\Life High.mdx", UnitEntity_actor[PlayerData_escaper[this_1]], "chest")
	elseif PlayerData_XP[this_1] > 4000 then
		set PlayerData_lvlfx[this_1] = AddSpecialEffectTarget("war3mapImported\\Life Low_Portrait.mdx", UnitEntity_actor[PlayerData_escaper[this_1]], "chest")
	elseif PlayerData_XP[this_1] > 1000 then
		set PlayerData_lvlfx[this_1] = AddSpecialEffectTarget("war3mapImported\\Life Low.mdx", UnitEntity_actor[PlayerData_escaper[this_1]], "chest")
	endif
	if PlayerData_XP[this_1] >= GameConstants_expBounds[3] and ( not UnitHasItemOfTypeBJ(UnitEntity_actor[PlayerData_escaper[this_1]], 1227894834)) then
		call printTimedToPlayer("You have unlocked the |cffFFCC00jukebox|r!", 25., PlayerData_p[this_1])
		call unit_addItemById(UnitEntity_actor[PlayerData_escaper[this_1]], 1227894834)
	endif
endfunction

function dispatch_PlayerData_PlayerData_PlayerData_updateRank takes integer this_1 returns nothing
	if PlayerData_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling PlayerData.updateRank")
		else
			call error("Called PlayerData.updateRank on invalid object.")
		endif
	endif
	call PlayerData_updateRank(this_1)
endfunction

function PlayerData_addXp takes integer this_1, integer amount, boolean time returns nothing
	if (PlayerData_localFilesEnabled[this_1] and dispatch_LinkedList_LinkedList_LinkedList_size(PlayerData_allPlayers) > 1) or PlayerData_title[this_1] == 2 then
		if time then
			set PlayerData_XP[this_1] = PlayerData_XP[this_1] + amount
		elseif PlayerData_lastExpGain[this_1] < PlayerData_minutes then
			set PlayerData_lastExpGain[this_1] = PlayerData_minutes
			call Log_debug("add current xp:" + int_toString(PlayerData_XP[this_1]))
			set PlayerData_XP[this_1] = PlayerData_XP[this_1] + amount
			call Log_debug("add new xp:" + int_toString(PlayerData_XP[this_1]))
		endif
		call dispatch_PlayerData_PlayerData_PlayerData_updateRank(this_1)
	endif
endfunction

function dispatch_PlayerData_PlayerData_PlayerData_addXp takes integer this_1, integer amount, boolean time returns nothing
	if PlayerData_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling PlayerData.addXp")
		else
			call error("Called PlayerData.addXp on invalid object.")
		endif
	endif
	call PlayerData_addXp(this_1, amount, time)
endfunction

function run_forEach_PlayerData takes integer this_1, integer p returns nothing
	call dispatch_PlayerData_PlayerData_PlayerData_addXp(p, 10, true)
endfunction

function playerFromIndex takes integer index returns player
	return Player_players[index]
endfunction

function EscaperDefinition_LinkedListModule_getNext takes integer this_1 returns integer
	if EscaperDefinition_LinkedListModule_next[this_1] == 0 then
		return EscaperDefinition_LinkedListModule_first
	endif
	return EscaperDefinition_LinkedListModule_next[this_1]
endfunction

function dispatch_EscaperDefinition_PickSystem_EscaperDefinition_LinkedListModule_getNext takes integer this_1 returns integer
	local integer PickSystem_EscaperDefinition_LinkedListModule_getNext_result
	if EscaperDefinition_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling EscaperDefinition.getNext")
		else
			call error("Called EscaperDefinition.getNext on invalid object.")
		endif
	endif
	set PickSystem_EscaperDefinition_LinkedListModule_getNext_result = EscaperDefinition_LinkedListModule_getNext(this_1)
	return PickSystem_EscaperDefinition_LinkedListModule_getNext_result
endfunction

function EscaperDefinition_showTo takes integer this_1, integer pd_1 returns nothing
	local texttag receiver
	if Player_localPlayer == PlayerData_p[pd_1] then
		set receiver = FText_tt[EscaperDefinition_nameTt[this_1]]
		call texttag_setVisibility(receiver, true)
		call unit_setVertexColor_4206(EscaperDefinition_escaper[this_1], Colors_COLOR_WHITE_red, Colors_COLOR_WHITE_green, Colors_COLOR_WHITE_blue, Colors_COLOR_WHITE_alpha)
	endif
endfunction

function dispatch_EscaperDefinition_PickSystem_EscaperDefinition_showTo takes integer this_1, integer pd_1 returns nothing
	if EscaperDefinition_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling EscaperDefinition.showTo")
		else
			call error("Called EscaperDefinition.showTo on invalid object.")
		endif
	endif
	call EscaperDefinition_showTo(this_1, pd_1)
endfunction

function player_getData takes player this_1 returns integer
	return PlayerData_pData[player_getId(this_1)]
endfunction

function run_forEach_PickSystem takes integer this_1, player p returns nothing
	local integer i
	local integer temp
	set PickSystem_currentView[player_getId(p)] = EscaperDefinition_LinkedListModule_first
	set i = 0
	set temp = GetRandomInt(0, EscaperDefinition_LinkedListModule_size)
	loop
		exitwhen i > temp
		set PickSystem_currentView[player_getId(p)] = dispatch_EscaperDefinition_PickSystem_EscaperDefinition_LinkedListModule_getNext(PickSystem_currentView[player_getId(p)])
		set i = i + 1
	endloop
	call dispatch_EscaperDefinition_PickSystem_EscaperDefinition_showTo(PickSystem_currentView[player_getId(p)], player_getData(p))
endfunction

function run_wrapper_4032 takes integer this_1, integer t returns nothing
	call run_forEach_PickSystem(this_1, playerFromIndex(t))
endfunction

function alloc_PlayerData takes nothing returns integer
	local integer this_1
	if PlayerData_firstFree == 0 then
		if PlayerData_maxIndex < JASS_MAX_ARRAY_SIZE then
			set PlayerData_maxIndex = PlayerData_maxIndex + 1
			set this_1 = PlayerData_maxIndex
			set PlayerData_typeId[this_1] = 1049
		else
			call error("Out of memory: Could not create PlayerData.")
			set this_1 = 0
		endif
	else
		set PlayerData_firstFree = PlayerData_firstFree - 1
		set this_1 = PlayerData_nextFree[PlayerData_firstFree]
		set PlayerData_typeId[this_1] = 1049
	endif
	return this_1
endfunction

function PlayerData_init takes integer this_1 returns nothing
	set PlayerData_icon[this_1] = Icons_bTNSelectHeroOn
	set PlayerData_rank[this_1] = "Newbie"
	set PlayerData_XP[this_1] = 40
	set PlayerData_lvlfx[this_1] = null
	set PlayerData_tagfx[this_1] = null
	set PlayerData_localFilesEnabled[this_1] = false
	set PlayerData_lastExpGain[this_1] = 0
	set PlayerData_zCam[this_1] = 1600.
	set PlayerData_selector[this_1] = 0
endfunction

function player_getNameColored_3918 takes player this_1 returns string
	return player_getNameColored(this_1, false)
endfunction

function PlayerData_checkName takes integer this_1 returns nothing
	local string cname = string_toLowerCase(PlayerData_mbname[this_1])
	local integer i = 0
	loop
		exitwhen i > 20
		if cname == string_toLowerCase(GameConstants_names[i]) then
			set PlayerData_mbname[this_1] = GameConstants_tags[i] + "|r" + player_getNameColored_3918(PlayerData_p[this_1])
		endif
		set i = i + 1
	endloop
endfunction

function dispatch_PlayerData_PlayerData_PlayerData_checkName takes integer this_1 returns nothing
	if PlayerData_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling PlayerData.checkName")
		else
			call error("Called PlayerData.checkName on invalid object.")
		endif
	endif
	call PlayerData_checkName(this_1)
endfunction

function player_getName takes player this_1 returns string
	return player_getName_3916(this_1, false)
endfunction

function construct_PlayerData takes integer this_1, player p returns nothing
	local integer i
	call PlayerData_init(this_1)
	set PlayerData_pData[player_getId(p)] = this_1
	set PlayerData_p[this_1] = p
	set PlayerData_id[this_1] = player_getId(p)
	set PlayerData_name[this_1] = player_getName(p)
	set PlayerData_pData[PlayerData_id[this_1]] = this_1
	call int_toString(string_getHash(PlayerData_name[this_1]))
	set PlayerData_mbname[this_1] = PlayerData_name[this_1]
	call dispatch_PlayerData_PlayerData_PlayerData_checkName(this_1)
	set i = 0
	loop
		exitwhen  not (GameConstants_names[i] != null)
		set i = i + 1
	endloop
	set PlayerData_mbname[this_1] = player_getNameColored_3918(p)
	call dispatch_LinkedList_LinkedList_LinkedList_add_1(PlayerData_allPlayers, this_1)
	if PlayerData_id[this_1] > 7 then
		set PlayerData_role[this_1] = 0
		call dispatch_LinkedList_LinkedList_LinkedList_add_1(PlayerData_builderPlayers, this_1)
	else
		set PlayerData_role[this_1] = 1
		call dispatch_LinkedList_LinkedList_LinkedList_add_1(PlayerData_escaperPlayers, this_1)
	endif
endfunction

function new_PlayerData takes player p returns integer
	local integer this_1 = alloc_PlayerData()
	call construct_PlayerData(this_1, p)
	return this_1
endfunction

function run_forEach_PlayerData_4022 takes integer this_1, player p returns nothing
	call new_PlayerData(p)
endfunction

function run_wrapper_4033 takes integer this_1, integer t returns nothing
	call run_forEach_PlayerData_4022(this_1, playerFromIndex(t))
endfunction

function dispatch_LLItrClosure_LinkedList_LLItrClosure_run takes integer this_1, integer t returns nothing
	if LLItrClosure_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling LLItrClosure.run")
		else
			call error("Called LLItrClosure.run on invalid object.")
		endif
	endif
	if LLItrClosure_typeId[this_1] <= 992 then
		if LLItrClosure_typeId[this_1] <= 991 then
			if LLItrClosure_typeId[this_1] <= 990 then
				call run_forEach_Fireball_MGWarlock(this_1, t)
			else
				call run_forEach_LinkedList_LinkedList(this_1, t)
			endif
		else
			call run_wrapper_4032(this_1, t)
		endif
	elseif LLItrClosure_typeId[this_1] <= 993 then
		call run_forEach_PlayerData(this_1, t)
	else
		call run_wrapper_4033(this_1, t)
	endif
endfunction

function dealloc_LLItrClosure takes integer obj_1 returns nothing
	if LLItrClosure_typeId[obj_1] == 0 then
		call error("Double free: object of type LLItrClosure")
	else
		set LLItrClosure_nextFree[LLItrClosure_firstFree] = obj_1
		set LLItrClosure_firstFree = LLItrClosure_firstFree + 1
		set LLItrClosure_typeId[obj_1] = 0
	endif
endfunction

function destroyLLItrClosure takes integer this_1 returns nothing
	call dealloc_LLItrClosure(this_1)
endfunction

function dispatch_LLItrClosure_destroyLLItrClosure takes integer this_1 returns nothing
	if LLItrClosure_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling LLItrClosure.LLItrClosure")
		else
			call error("Called LLItrClosure.LLItrClosure on invalid object.")
		endif
	endif
	call destroyLLItrClosure(this_1)
endfunction

function LinkedList_forEach takes integer this_1, integer itr_1 returns integer
	local integer r = LLEntry_next[LinkedList_dummy[this_1]]
	loop
		exitwhen  not (r != LinkedList_dummy[this_1])
		call dispatch_LLItrClosure_LinkedList_LLItrClosure_run(itr_1, LLEntry_elem[r])
		set r = LLEntry_next[r]
	endloop
	call dispatch_LLItrClosure_destroyLLItrClosure(itr_1)
	return this_1
endfunction

function dispatch_LinkedList_LinkedList_LinkedList_forEach takes integer this_1, integer itr_1 returns integer
	local integer LinkedList_LinkedList_forEach_result
	if LinkedList_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling LinkedList.forEach")
		else
			call error("Called LinkedList.forEach on invalid object.")
		endif
	endif
	set LinkedList_LinkedList_forEach_result = LinkedList_forEach(this_1, itr_1)
	return LinkedList_LinkedList_forEach_result
endfunction

function multiboard_getItem takes multiboard this_1, integer row, integer column returns multiboarditem
	return MultiboardGetItem(this_1, row, column)
endfunction

function multiboarditem_setIcon takes multiboarditem this_1, string iconFileName returns nothing
	local string v
	local string cond_result
	if iconFileName == null then
		set cond_result = ""
	else
		set cond_result = iconFileName
	endif
	set v = cond_result
	call MultiboardSetItemIcon(this_1, v)
endfunction

function multiboarditem_setValue takes multiboarditem this_1, string value returns nothing
	local string v
	local string cond_result
	if value == null then
		set cond_result = ""
	else
		set cond_result = value
	endif
	set v = cond_result
	call MultiboardSetItemValue(this_1, v)
endfunction

function Board_setNewItem takes integer this_1, integer i, integer j, string value, string icon returns nothing
	call SaveInteger(Board_mbdata[this_1], i, j, MultiboardClass_counter)
	call multiboarditem_setValue(multiboard_getItem(Board_board[this_1], i, j), value)
	call multiboarditem_setIcon(multiboard_getItem(Board_board[this_1], i, j), icon)
	set MultiboardClass_counter = MultiboardClass_counter + 1
endfunction

function dispatch_Board_MultiboardClass_Board_setNewItem takes integer this_1, integer i, integer j, string value, string icon returns nothing
	if Board_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling Board.setNewItem")
		else
			call error("Called Board.setNewItem on invalid object.")
		endif
	endif
	call Board_setNewItem(this_1, i, j, value, icon)
endfunction

function PlayerData_setMBRow takes integer this_1, integer row returns nothing
	local integer receiver = PlayerData_playerboard
	local string cond_result
	local integer receiver_1
	local integer receiver_2
	local integer temp
	local integer temp_1
	call dispatch_Board_MultiboardClass_Board_setNewItem(receiver, row, 0, PlayerData_mbname[this_1], PlayerData_icon[this_1])
	set receiver_1 = receiver
	set temp = receiver_1
	set temp_1 = row
	if PlayerData_escaper[this_1] == 0 then
		set cond_result = "-"
	else
		set cond_result = int_toString(Escaper_deaths[PlayerData_escaper[this_1]])
	endif
	call dispatch_Board_MultiboardClass_Board_setNewItem(temp, temp_1, 1, cond_result, null)
	set receiver_2 = receiver_1
	call dispatch_Board_MultiboardClass_Board_setNewItem(receiver_2, row, 2, PlayerData_rank[this_1], null)
endfunction

function dispatch_PlayerData_PlayerData_PlayerData_setMBRow takes integer this_1, integer row returns nothing
	if PlayerData_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling PlayerData.setMBRow")
		else
			call error("Called PlayerData.setMBRow on invalid object.")
		endif
	endif
	call PlayerData_setMBRow(this_1, row)
endfunction

function multiboard_setTitle takes multiboard this_1, string label returns nothing
	call MultiboardSetTitleText(this_1, label)
endfunction

function printTimed takes string msg, real duration returns nothing
	call DisplayTimedTextToPlayer(Player_localPlayer, 0., 0., duration, msg)
endfunction

function setTime takes nothing returns nothing
	local string secs
	local string mins
	local string cond_result
	local string cond_result_1
	local integer clVar
	local integer i
	local integer iterator
	local integer pd_1
	local string temp
	local string temp_1
	local integer temp_2
	set PlayerData_seconds = PlayerData_seconds + 1
	set secs = "|cffffffff"
	set mins = "|cffffffff"
	set temp = secs
	if PlayerData_seconds < 10 then
		set cond_result = "0" + int_toString(PlayerData_seconds)
	else
		set cond_result = int_toString(PlayerData_seconds)
	endif
	set secs = temp + cond_result
	set temp_1 = mins
	if PlayerData_minutes < 10 then
		set cond_result_1 = "0" + int_toString(PlayerData_minutes)
	else
		set cond_result_1 = int_toString(PlayerData_minutes)
	endif
	set mins = temp_1 + cond_result_1
	set secs = secs + "|r"
	set mins = mins + "|r"
	if PlayerData_seconds >= 60 then
		set PlayerData_seconds = 0
		set PlayerData_minutes = PlayerData_minutes + 1
		if ModuloReal(PlayerData_minutes, 10) == 0. then
			call printTimed("|cffFFCC00Visit our discord server |r- |cff217BD6discord.gg/yr3ZyYQ", 45.)
		endif
		if ModuloReal(PlayerData_minutes, 5) == 0. then
			set temp_2 = PlayerData_allPlayers
			set clVar = alloc_LLItrClosure_forEach_PlayerData()
			call dispatch_LinkedList_LinkedList_LinkedList_forEach(temp_2, clVar)
		endif
	endif
	call multiboard_setTitle(Board_board[PlayerData_playerboard], GameConstants_MAP_VER + " [ " + mins + " : " + secs + " ]")
	set i = 1
	set iterator = LinkedList_iterator(PlayerData_allPlayers)
	loop
		exitwhen  not LLIterator_hasNext(iterator)
		set pd_1 = LLIterator_next(iterator)
		call dispatch_PlayerData_PlayerData_PlayerData_setMBRow(pd_1, i)
		if PlayerData_escaper[pd_1] != 0 then
			call SetCameraFieldForPlayer(PlayerData_p[pd_1], CAMERA_FIELD_TARGET_DISTANCE, PlayerData_zCam[pd_1], 1.)
		endif
		set i = i + 1
	endloop
	call LLIterator_close(iterator)
endfunction

function call_doPeriodically_PlayerData takes integer this_1, integer cb_1 returns nothing
	call setTime()
endfunction

function dispatch_CallbackPeriodic_ClosureTimers_CallbackPeriodic_call takes integer this_1, integer cb_1 returns nothing
	if CallbackPeriodic_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling CallbackPeriodic.call")
		else
			call error("Called CallbackPeriodic.call on invalid object.")
		endif
	endif
	if CallbackPeriodic_typeId[this_1] <= 666 then
		if CallbackPeriodic_typeId[this_1] <= 665 then
			if CallbackPeriodic_typeId[this_1] <= 664 then
				call call_doPeriodically_MGRandKill_MGRandKill(this_1, cb_1)
			else
				call call_doPeriodically_MGRandKill_MGRandKill_2007(this_1, cb_1)
			endif
		else
			call call_doPeriodically_MGRandKill_MGRandKill_2008(this_1, cb_1)
		endif
	elseif CallbackPeriodic_typeId[this_1] <= 668 then
		if CallbackPeriodic_typeId[this_1] <= 667 then
			call call_doPeriodically_MGSlide_MGSlide(this_1, cb_1)
		else
			call call_doPeriodically_MGWarlock_MGWarlock(this_1, cb_1)
		endif
	else
		call call_doPeriodically_PlayerData(this_1, cb_1)
	endif
endfunction

function CallbackPeriodic_staticCallback takes nothing returns nothing
	local integer cb_1 = timer_getData(GetExpiredTimer())
	call dispatch_CallbackPeriodic_ClosureTimers_CallbackPeriodic_call(cb_1, cb_1)
endfunction

function CustomBar_fadeOutCallback takes nothing returns nothing
	local integer bar = timer_getData(GetExpiredTimer())
	set CustomBar_t[bar] = null
	call dispatch_CustomBar_destroyCustomBar(bar)
	call timer_release(GetExpiredTimer())
endfunction

function unit_setAnimation takes unit this_1, string name returns nothing
	call SetUnitAnimation(this_1, name)
endfunction

function Door_openDoor takes integer this_1 returns nothing
	call unit_setAnimation(UnitEntity_actor[this_1], "Death Alternate")
	call unit_remove(Door_pathing[this_1])
	set Door_opened[this_1] = true
	if Door_vertical[this_1] then
		set Door_pathing[this_1] = createUnit(Entity_owner[this_1], Door_DOORPATH_O, vec3_toVec2(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1]), vec3_toVec2_return_y, real_fromDeg(0.))
	else
		set Door_pathing[this_1] = createUnit(Entity_owner[this_1], Door_DOORPATH_O, vec3_toVec2(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1]), vec3_toVec2_return_y, real_fromDeg(270.))
	endif
endfunction

function dispatch_Door_Door_Door_openDoor takes integer this_1 returns nothing
	if Serializable_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling Door.openDoor")
		else
			call error("Called Door.openDoor on invalid object.")
		endif
	endif
	call Door_openDoor(this_1)
endfunction

function unit_inventorySize takes unit this_1 returns integer
	return UnitInventorySize(this_1)
endfunction

function unit_itemInSlot takes unit this_1, integer inventoryIndex returns item
	return UnitItemInSlot(this_1, inventoryIndex)
endfunction

function unit_getItemById takes unit this_1, integer itemId returns item
	local item itm = null
	local integer slot = 0
	local integer temp = unit_inventorySize(this_1) - 1
	loop
		exitwhen slot > temp
		if item_getTypeId(unit_itemInSlot(this_1, slot)) == itemId then
			set itm = unit_itemInSlot(this_1, slot)
			exitwhen true
		endif
		set slot = slot + 1
	endloop
	return itm
endfunction

function unit_hasItemById takes unit this_1, integer itemId returns boolean
	return unit_getItemById(this_1, itemId) != null
endfunction

function Door_keyopen takes nothing returns nothing
	local unit source = trigger_getSource(GetTriggeringTrigger())
	local unit u_1 = GetTriggerUnit()
	local integer e_1 = unit_getEntity(u_1)
	local integer door = unit_getEntity(source)
	local integer es
	local integer kdata
	local integer pd_1
	local integer instanceOfTemp
	local boolean andLeft
	if  not Door_opened[door] then
		set instanceOfTemp = Serializable_typeId[e_1]
		set andLeft = instanceOfTemp >= 1163 and instanceOfTemp <= 1168
	else
		set andLeft = false
	endif
	if andLeft then
		set es = e_1
		if Entity_pos_z[es] < 64. then
			if unit_hasItemById(u_1, Door_KEY_COLOR_ID[Door_col[door]]) then
				set kdata = item_getEntity(unit_getItemById(u_1, Door_KEY_COLOR_ID[Door_col[door]]))
				if kdata != 0 then
					call Log_debug("kdata Terminate")
					call cyc_RevivePoint_terminate(18, kdata)
					call dispatch_Door_Door_Door_openDoor(door)
					set pd_1 = PlayerData_pData[player_getId(Entity_owner[e_1])]
					call dispatch_PlayerData_PlayerData_PlayerData_addXp(pd_1, 10, false)
				endif
			endif
		endif
	endif
endfunction

function Entity_setXY takes integer this_1, real pos_x_1, real pos_y_1, real pos_z returns nothing
	local real tuple_temp = pos_x_1
	local real tuple_temp_1 = pos_y_1
	local real tuple_temp_2 = pos_z
	set Entity_pos_x[this_1] = tuple_temp
	set Entity_pos_y[this_1] = tuple_temp_1
	set Entity_pos_z[this_1] = tuple_temp_2
endfunction

function Fx2Entity_setXY takes integer this_1, real tpos_x_1, real tpos_y_1, real tpos_z returns nothing
	local real tuple_temp = tpos_x_1
	local real tuple_temp_1 = tpos_y_1
	local real tuple_temp_2 = tpos_z
	set Entity_pos_x[this_1] = tuple_temp
	set Entity_pos_y[this_1] = tuple_temp_1
	set Entity_pos_z[this_1] = tuple_temp_2
	call effect_setPos(Fx2_eff[Fx2Entity_fx[this_1]], tpos_x_1, tpos_y_1, tpos_z)
endfunction

function Fx_setXYZ takes integer this_1, real pos_x_1, real pos_y_1, real pos_z returns nothing
	call unit_setXYZReal(Fx_dummy[this_1], pos_x_1, pos_y_1, pos_z)
endfunction

function dispatch_Fx_Fx_Fx_setXYZ takes integer this_1, real pos_x_1, real pos_y_1, real pos_z returns nothing
	if Fx_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling Fx.setXYZ")
		else
			call error("Called Fx.setXYZ on invalid object.")
		endif
	endif
	call Fx_setXYZ(this_1, pos_x_1, pos_y_1, pos_z)
endfunction

function FxEntity_setXY takes integer this_1, real tpos_x_1, real tpos_y_1, real tpos_z returns nothing
	local real tuple_temp = tpos_x_1
	local real tuple_temp_1 = tpos_y_1
	local real tuple_temp_2 = tpos_z
	set Entity_pos_x[this_1] = tuple_temp
	set Entity_pos_y[this_1] = tuple_temp_1
	set Entity_pos_z[this_1] = tuple_temp_2
	call dispatch_Fx_Fx_Fx_setXYZ(FxEntity_fx[this_1], tpos_x_1, tpos_y_1, tpos_z)
endfunction

function item_setPos takes item this_1, real pos_x_1, real pos_y_1 returns nothing
	call SetItemPosition(this_1, pos_x_1, pos_y_1)
endfunction

function ItemEntity_setXY takes integer this_1, real tpos_x_1, real tpos_y_1, real tpos_z returns nothing
	local real tuple_temp
	local real tuple_temp_1
	local real tuple_temp_2
	if vec3_inPlayable(tpos_x_1, tpos_y_1, tpos_z) then
		set tuple_temp = tpos_x_1
		set tuple_temp_1 = tpos_y_1
		set tuple_temp_2 = tpos_z
		set Entity_pos_x[this_1] = tuple_temp
		set Entity_pos_y[this_1] = tuple_temp_1
		set Entity_pos_z[this_1] = tuple_temp_2
		call item_setPos(ItemEntity_actor[this_1], vec3_toVec2(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1]), vec3_toVec2_return_y)
	else
		call cyc_RevivePoint_terminate(18, this_1)
	endif
endfunction

function SetupObject_setXY takes integer this_1, real pos_x_1, real pos_y_1, real pos_z returns nothing
	local real tuple_temp = pos_x_1
	local real tuple_temp_1 = pos_y_1
	local real tuple_temp_2 = pos_z
	set Entity_pos_x[this_1] = tuple_temp
	set Entity_pos_y[this_1] = tuple_temp_1
	set Entity_pos_z[this_1] = tuple_temp_2
	call unit_setXYZ(UnitEntity_actor[this_1], pos_x_1, pos_y_1, pos_z)
	call unit_setXYZ(SetupObject_setup[this_1], pos_x_1, pos_y_1, pos_z)
endfunction

function vec3_toString takes real this_x, real this_y, real this_z returns string
	return "Vector3 [ " + real_toString(this_x) + ", " + real_toString(this_y) + ", " + real_toString(this_z) + " ]"
endfunction

function UnitEntity_setXY takes integer this_1, real tpos_x_1, real tpos_y_1, real tpos_z returns nothing
	local real tuple_temp
	local real tuple_temp_1
	local real tuple_temp_2
	if vec3_inPlayable(tpos_x_1, tpos_y_1, tpos_z) then
		set tuple_temp = tpos_x_1
		set tuple_temp_1 = tpos_y_1
		set tuple_temp_2 = tpos_z
		set Entity_pos_x[this_1] = tuple_temp
		set Entity_pos_y[this_1] = tuple_temp_1
		set Entity_pos_z[this_1] = tuple_temp_2
		if Frentity_DYNAMIC_Z then
			call unit_setXYZReal(UnitEntity_actor[this_1], Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1])
		else
			call unit_setXYZ(UnitEntity_actor[this_1], Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1])
		endif
	else
		call Log_error("out of bounds: " + vec3_toString(tpos_x_1, tpos_y_1, tpos_z))
		call dispatch_UnitEntity_Entity_UnitEntity_setPos(this_1, Vectors_ZERO3_x, Vectors_ZERO3_y, Vectors_ZERO3_z)
	endif
endfunction

function dispatch_Entity_Entity_Entity_setXY takes integer this_1, real pos_x_1, real pos_y_1, real pos_z returns nothing
	if Serializable_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling Entity.setXY")
		else
			call error("Called Entity.setXY on invalid object.")
		endif
	endif
	if Serializable_typeId[this_1] <= 1159 then
		if Serializable_typeId[this_1] <= 1151 then
			if Serializable_typeId[this_1] <= 1148 then
				if Serializable_typeId[this_1] <= 1137 then
					call Entity_setXY(this_1, pos_x_1, pos_y_1, pos_z)
				else
					call Fx2Entity_setXY(this_1, pos_x_1, pos_y_1, pos_z)
				endif
			else
				call FxEntity_setXY(this_1, pos_x_1, pos_y_1, pos_z)
			endif
		elseif Serializable_typeId[this_1] <= 1158 then
			call ItemEntity_setXY(this_1, pos_x_1, pos_y_1, pos_z)
		else
			call Entity_setXY(this_1, pos_x_1, pos_y_1, pos_z)
		endif
	elseif Serializable_typeId[this_1] <= 1171 then
		if Serializable_typeId[this_1] <= 1168 then
			if Serializable_typeId[this_1] <= 1162 then
				call UnitEntity_setXY(this_1, pos_x_1, pos_y_1, pos_z)
			else
				call Escaper_setXY(this_1, pos_x_1, pos_y_1, pos_z)
			endif
		else
			call UnitEntity_setXY(this_1, pos_x_1, pos_y_1, pos_z)
		endif
	elseif Serializable_typeId[this_1] <= 1192 then
		call SetupObject_setXY(this_1, pos_x_1, pos_y_1, pos_z)
	else
		call UnitEntity_setXY(this_1, pos_x_1, pos_y_1, pos_z)
	endif
endfunction

function vec3_lengthSquared takes real this_x, real this_y, real this_z returns real
	return this_x * this_x + this_y * this_y + this_z * this_z
endfunction

function Entity_update takes integer this_1 returns nothing
	local real tz
	local real cond_result
	if Entity_sleeps[this_1] and ( not Entity_flying[this_1]) and vec3_lengthSquared(Entity_vel_x[this_1], Entity_vel_y[this_1], Entity_vel_z[this_1]) < 1.5 then
		call dispatch_Entity_Entity_Entity_DupletListModule_deactivate(this_1)
	else
		if Frentity_DYNAMIC_Z then
			set cond_result = vec3_getHeightMap(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1])
		else
			set cond_result = 0.
		endif
		set tz = cond_result
		if Entity_pos_z[this_1] >= tz then
			set Entity_vel_z[this_1] = Entity_vel_z[this_1] + Entity_gravity[this_1]
			call dispatch_Entity_Entity_Entity_setFlying(this_1, true)
		else
			set Entity_pos_z[this_1] = tz - 0.01
			call dispatch_Entity_Entity_Entity_setFlying(this_1, false)
		endif
		call dispatch_Entity_Entity_Entity_setXY(this_1, vec3_op_plus(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1], vec3_op_mult(Entity_vel_x[this_1], Entity_vel_y[this_1], Entity_vel_z[this_1], Entity_speedFactor[this_1]), vec3_op_mult_return_y, vec3_op_mult_return_z), vec3_op_plus_return_y, vec3_op_plus_return_z)
	endif
endfunction

function unit_getPos3with takes unit this_1, real z returns real
	set unit_getPos3with_return_x = unit_getX(this_1)
	set unit_getPos3with_return_y = unit_getY(this_1)
	set unit_getPos3with_return_z = z
	return unit_getPos3with_return_x
endfunction

function UnitEntity_update takes integer this_1 returns nothing
	local real tuple_temp = unit_getPos3with(UnitEntity_actor[this_1], Entity_pos_z[this_1])
	local real tuple_temp_1 = unit_getPos3with_return_y
	local real tuple_temp_2 = unit_getPos3with_return_z
	set Entity_pos_x[this_1] = tuple_temp
	set Entity_pos_y[this_1] = tuple_temp_1
	set Entity_pos_z[this_1] = tuple_temp_2
	call Entity_update(this_1)
endfunction

function angle_toVec takes real this_radians, real len returns real
	set angle_toVec_return_x = Cos(this_radians) * len
	set angle_toVec_return_y = Sin(this_radians) * len
	return angle_toVec_return_x
endfunction

function LinkedList_isEmpty takes integer this_1 returns boolean
	return LinkedList_size[this_1] == 0
endfunction

function dispatch_LinkedList_LinkedList_LinkedList_isEmpty takes integer this_1 returns boolean
	local boolean LinkedList_LinkedList_isEmpty_result
	if LinkedList_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling LinkedList.isEmpty")
		else
			call error("Called LinkedList.isEmpty on invalid object.")
		endif
	endif
	set LinkedList_LinkedList_isEmpty_result = LinkedList_isEmpty(this_1)
	return LinkedList_LinkedList_isEmpty_result
endfunction

function angle_op_minus takes real this_radians, real other_radians returns real
	set angle_op_minus_return_radians = this_radians - other_radians
	return angle_op_minus_return_radians
endfunction

function angle_op_plus takes real this_radians, real other_radians returns real
	set angle_op_plus_return_radians = this_radians + other_radians
	return angle_op_plus_return_radians
endfunction

function player_getDownKeys takes player this_1 returns boolean
	local integer tempIndex = player_getId(this_1)
	set player_getDownKeys_return_up = KeyUtils_keyStatuses_up[tempIndex]
	set player_getDownKeys_return_down = KeyUtils_keyStatuses_down[tempIndex]
	set player_getDownKeys_return_left = KeyUtils_keyStatuses_left[tempIndex]
	set player_getDownKeys_return_right = KeyUtils_keyStatuses_right[tempIndex]
	return player_getDownKeys_return_up
endfunction

function real_lerp takes real this_1, real target, real alpha returns real
	return this_1 * (1.0 - alpha) + target * alpha
endfunction

function Spaceship_foo takes integer this_1 returns nothing
	local boolean tuple_temp = player_getDownKeys(Entity_owner[this_1])
	local boolean tuple_temp_1 = player_getDownKeys_return_down
	local boolean tuple_temp_2 = player_getDownKeys_return_left
	local boolean tuple_temp_3 = player_getDownKeys_return_right
	local boolean downKeys_up = tuple_temp
	local boolean downKeys_down = tuple_temp_1
	local boolean downKeys_left = tuple_temp_2
	local boolean downKeys_right = tuple_temp_3
	local real tuple_temp_4
	local real tuple_temp_5
	local real tuple_temp_6
	set Spaceship_acc[this_1] = real_lerp(Spaceship_acc[this_1], 0., 0.1)
	if downKeys_left then
		set tuple_temp_4 = angle_op_plus(Spaceship_xyAngle_radians[this_1], 0.105)
		set Spaceship_xyAngle_radians[this_1] = tuple_temp_4
	endif
	if downKeys_right then
		set tuple_temp_5 = angle_op_minus(Spaceship_xyAngle_radians[this_1], 0.105)
		set Spaceship_xyAngle_radians[this_1] = tuple_temp_5
	endif
	set tuple_temp_6 = real_fromDeg(ModuloReal(angle_degrees(Spaceship_xyAngle_radians[this_1]), 360.))
	set Spaceship_xyAngle_radians[this_1] = tuple_temp_6
	call unit_setFacing(UnitEntity_actor[this_1], Spaceship_xyAngle_radians[this_1])
	if Player_localPlayer == Entity_owner[this_1] then
		call CameraSetupApplyForceDuration(gg_cam_spaceycam, true, 0.)
	endif
	if downKeys_up then
		set Spaceship_acc[this_1] = real_lerp(Spaceship_acc[this_1], 0.75, 0.125)
	endif
	if downKeys_down then
		set Spaceship_acc[this_1] = real_lerp(Spaceship_acc[this_1],  - 0.2, 0.125)
	endif
endfunction

function dispatch_Spaceship_MGSpacey_Spaceship_foo takes integer this_1 returns nothing
	if Serializable_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling Spaceship.foo")
		else
			call error("Called Spaceship.foo on invalid object.")
		endif
	endif
	call Spaceship_foo(this_1)
endfunction

function vec3_setLength takes real this_x, real this_y, real this_z, real length returns real
	local real l = vec3_length(this_x, this_y, this_z)
	if l == 0.0 then
		call Log_warn("vector.setLength error: The length of the vector is 0.0!")
		set vec3_setLength_return_x = 0.
		set vec3_setLength_return_y = 0.
		set vec3_setLength_return_z = 0.
		return vec3_setLength_return_x
	endif
	set l = length / l
	set vec3_setLength_return_x = this_x * l
	set vec3_setLength_return_y = this_y * l
	set vec3_setLength_return_z = this_z * l
	return vec3_setLength_return_x
endfunction

function Spaceship_update takes integer this_1 returns nothing
	local real lgSq
	local real tpos_x_1
	local real tpos_y_1
	local integer itr_1
	local integer rock
	local integer from
	local boolean isEnd
	local integer iterator
	local integer ship
	local real tuple_temp
	local real tuple_temp_1
	local real tuple_temp_2
	local real tuple_temp_3
	local real tuple_temp_4
	local real tuple_temp_5
	local real tuple_temp_6
	local real tuple_temp_7
	local real tuple_temp_8
	local real tuple_temp_9
	local real tuple_temp_10
	call dispatch_Spaceship_MGSpacey_Spaceship_foo(this_1)
	set tuple_temp = vec3_op_plus_4284(Entity_vel_x[this_1], Entity_vel_y[this_1], Entity_vel_z[this_1], angle_toVec(Spaceship_xyAngle_radians[this_1], Spaceship_acc[this_1]), angle_toVec_return_y)
	set tuple_temp_1 = vec3_op_plus_return_y_3134
	set tuple_temp_2 = vec3_op_plus_return_z_3136
	set Entity_vel_x[this_1] = tuple_temp
	set Entity_vel_y[this_1] = tuple_temp_1
	set Entity_vel_z[this_1] = tuple_temp_2
	set tuple_temp_3 = vec3_op_mult(Entity_vel_x[this_1], Entity_vel_y[this_1], Entity_vel_z[this_1], 0.995)
	set tuple_temp_4 = vec3_op_mult_return_y
	set tuple_temp_5 = vec3_op_mult_return_z
	set Entity_vel_x[this_1] = tuple_temp_3
	set Entity_vel_y[this_1] = tuple_temp_4
	set Entity_vel_z[this_1] = tuple_temp_5
	set lgSq = vec3_lengthSquared(Entity_vel_x[this_1], Entity_vel_y[this_1], Entity_vel_z[this_1])
	if lgSq > real_squared(Spaceship_maxSpeed[this_1]) then
		set tuple_temp_6 = vec3_setLength(Entity_vel_x[this_1], Entity_vel_y[this_1], Entity_vel_z[this_1], Spaceship_maxSpeed[this_1])
		set tuple_temp_7 = vec3_setLength_return_y
		set tuple_temp_8 = vec3_setLength_return_z
		set Entity_vel_x[this_1] = tuple_temp_6
		set Entity_vel_y[this_1] = tuple_temp_7
		set Entity_vel_z[this_1] = tuple_temp_8
	endif
	set tuple_temp_9 = vec3_op_plus(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1], vec3_op_mult(Entity_vel_x[this_1], Entity_vel_y[this_1], Entity_vel_z[this_1], 6.), vec3_op_mult_return_y, vec3_op_mult_return_z)
	set tuple_temp_10 = vec3_op_plus_return_y
	set tpos_x_1 = tuple_temp_9
	set tpos_y_1 = tuple_temp_10
	if tpos_x_1 < rect_getMinX(gg_rct_spaceygamearea) then
		set Entity_vel_x[this_1] =  - (0.8 * Entity_vel_x[this_1])
	elseif tpos_x_1 > rect_getMaxX(gg_rct_spaceygamearea) then
		set Entity_vel_x[this_1] =  - (0.8 * Entity_vel_x[this_1])
	endif
	if tpos_y_1 < rect_getMinY(gg_rct_spaceygamearea) then
		set Entity_vel_y[this_1] =  - (0.8 * Entity_vel_y[this_1])
	elseif tpos_y_1 > rect_getMaxY(gg_rct_spaceygamearea) then
		set Entity_vel_y[this_1] =  - (0.8 * Entity_vel_y[this_1])
	endif
	call UnitEntity_update(this_1)
	set itr_1 = dispatch_LinkedList_LinkedList_LinkedList_staticItr(MGSpacey_rocks)
	set from = itr_1
	loop
		exitwhen  not LLIterator_hasNext(from)
		set rock = LLIterator_next(from)
		if rock == 0 or Entity_done[rock] then
			call dispatch_LLIterator_LinkedList_LLIterator_remove(itr_1)
		elseif vec3_distanceTo2dSq(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1], vec3_toVec2(Entity_pos_x[rock], Entity_pos_y[rock], Entity_pos_z[rock]), vec3_toVec2_return_y) < 30 * 30 + SpaceRock_radiusSq[rock] then
			call cyc_RevivePoint_terminate(18, rock)
			call dispatch_LLIterator_LinkedList_LLIterator_remove(itr_1)
			set Spaceship_hp[this_1] = Spaceship_hp[this_1] - 1
			if Spaceship_hp[this_1] < 0 then
				call unit_setAnimation(UnitEntity_actor[this_1], "death")
				call dispatch_Entity_Entity_Entity_DupletListModule_deactivate(this_1)
				set isEnd = true
				set iterator = LinkedList_iterator(MGSpacey_ships)
				loop
					exitwhen  not LLIterator_hasNext(iterator)
					set ship = LLIterator_next(iterator)
					if Entity_DupletListModule_active[ship] then
						set isEnd = false
						exitwhen true
					endif
				endloop
				call LLIterator_close(iterator)
				if isEnd or dispatch_LinkedList_LinkedList_LinkedList_isEmpty(MGSpacey_rocks) then
					call dispatch_Minigame_Minigame_Minigame_reset(MGSpacey_minigame)
				endif
				exitwhen true
			endif
		endif
	endloop
endfunction

function dispatch_Spaceship_MGSpacey_Spaceship_update takes integer this_1 returns nothing
	if Serializable_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling Spaceship.update")
		else
			call error("Called Spaceship.update on invalid object.")
		endif
	endif
	call Spaceship_update(this_1)
endfunction

function onEvent_addKeyListener_MGSpacey_MGSpacey takes integer this_1 returns nothing
	local integer iterator = LinkedList_iterator(MGSpacey_ships)
	local integer ship
	loop
		exitwhen  not LLIterator_hasNext(iterator)
		set ship = LLIterator_next(iterator)
		if Entity_owner[ship] == GetTriggerPlayer() then
			call dispatch_Spaceship_MGSpacey_Spaceship_update(ship)
			exitwhen true
		endif
	endloop
	call LLIterator_close(iterator)
endfunction

function EventData_getAbilityTargetPos takes nothing returns real
	set EventData_getAbilityTargetPos_return_x = GetSpellTargetX()
	set EventData_getAbilityTargetPos_return_y = GetSpellTargetY()
	return EventData_getAbilityTargetPos_return_x
endfunction

function EventData_getSpellTargetPos takes nothing returns real
	set EventData_getSpellTargetPos_return_x = EventData_getAbilityTargetPos()
	set EventData_getSpellTargetPos_return_y = EventData_getAbilityTargetPos_return_y
	return EventData_getSpellTargetPos_return_x
endfunction

function alloc_BallProjectile takes nothing returns integer
	local integer this_1
	if Serializable_firstFree == 0 then
		if Serializable_maxIndex < JASS_MAX_ARRAY_SIZE then
			set Serializable_maxIndex = Serializable_maxIndex + 1
			set this_1 = Serializable_maxIndex
			set Serializable_typeId[this_1] = 1141
		else
			call error("Out of memory: Could not create BallProjectile.")
			set this_1 = 0
		endif
	else
		set Serializable_firstFree = Serializable_firstFree - 1
		set this_1 = Serializable_nextFree[Serializable_firstFree]
		set Serializable_typeId[this_1] = 1141
	endif
	return this_1
endfunction

function BallProjectile_init takes integer this_1 returns nothing
endfunction

function construct_AirPhysicsProjectile_AirPhysicsModule takes integer this_1 returns nothing
endfunction

function AirPhysicsProjectile_init takes integer this_1 returns nothing
	set AirPhysicsProjectile_AirPhysicsModule_affectedByGravity[this_1] = true
	set AirPhysicsProjectile_AirPhysicsModule_terrainZ[this_1] = 0.
	set AirPhysicsProjectile_AirPhysicsModule_surfaceFriction[this_1] = 0.9
	set AirPhysicsProjectile_AirPhysicsModule_restitution[this_1] = 0.9
	set AirPhysicsProjectile_AirPhysicsModule_mass[this_1] = 10.
	call construct_AirPhysicsProjectile_AirPhysicsModule(this_1)
endfunction

function Projectile_init takes integer this_1 returns nothing
	local real tuple_temp
	local real tuple_temp_1
	local real tuple_temp_2
	set Projectile_timed[this_1] = false
	set Projectile_ranged[this_1] = false
	set Projectile_use3DDistance[this_1] = true
	set Projectile_hitGroup[this_1] = null
	set Projectile_isPointTarget[this_1] = false
	set tuple_temp = Vectors_ZERO3_x
	set tuple_temp_1 = Vectors_ZERO3_y
	set tuple_temp_2 = Vectors_ZERO3_z
	set Projectile_targetPoint_x[this_1] = tuple_temp
	set Projectile_targetPoint_y[this_1] = tuple_temp_1
	set Projectile_targetPoint_z[this_1] = tuple_temp_2
	set Projectile_killZ[this_1] = false
	set Projectile_killBelowZ[this_1] = 0.
	set Projectile_acc[this_1] = 1.0
	set Projectile_maxDist[this_1] = 0.
	set Projectile_time[this_1] = 0.
	set Projectile_maxTime[this_1] = 0.
	set Projectile_target[this_1] = 0
	set Projectile_onHit[this_1] = 0
	set Projectile_onEnd[this_1] = 0
endfunction

function construct_Fx2Entity takes integer this_1, player owner, real pos_x_1, real pos_y_1, real pos_z, real radius, real xyAngle_radians, string sfxpath returns nothing
	call construct_Entity5(this_1, owner, pos_x_1, pos_y_1, pos_z, radius)
	call Fx2Entity_init(this_1)
	call dispatch_Fx2Entity_Fx2Entity_Fx2Entity_setupFx(this_1, xyAngle_radians, sfxpath)
endfunction

function Projectile_setXYAngle takes integer this_1, real xyA_radians returns nothing
	local real tuple_temp = xyA_radians
	set Projectile_xyAngle_radians[this_1] = tuple_temp
	call effect_setYaw(Fx2_eff[Fx2Entity_fx[this_1]], xyA_radians)
endfunction

function dispatch_Projectile_Projectile_Projectile_setXYAngle takes integer this_1, real xyA_radians returns nothing
	if Serializable_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling Projectile.setXYAngle")
		else
			call error("Called Projectile.setXYAngle on invalid object.")
		endif
	endif
	call Projectile_setXYAngle(this_1, xyA_radians)
endfunction

function construct_Projectile takes integer this_1, real pos_x_1, real pos_y_1, real pos_z, real radius, player owner, real xyAngle_radians, string fxpath returns nothing
	local real tuple_temp
	local real tuple_temp_1
	local real tuple_temp_2
	call construct_Fx2Entity(this_1, owner, pos_x_1, pos_y_1, pos_z, radius, xyAngle_radians, fxpath)
	call Projectile_init(this_1)
	set tuple_temp = pos_x_1
	set tuple_temp_1 = pos_y_1
	set tuple_temp_2 = pos_z
	set Projectile_startpos_x[this_1] = tuple_temp
	set Projectile_startpos_y[this_1] = tuple_temp_1
	set Projectile_startpos_z[this_1] = tuple_temp_2
	call dispatch_Projectile_Projectile_Projectile_setXYAngle(this_1, xyAngle_radians)
	set Entity_sleeps[this_1] = false
	set Entity_gravity[this_1] = 0.
endfunction

function construct_AirPhysicsProjectile takes integer this_1, real pos_x_1, real pos_y_1, real pos_z, real radius, player owner, real xyAngle_radians, string fxpath returns nothing
	call construct_Projectile(this_1, pos_x_1, pos_y_1, pos_z, radius, owner, xyAngle_radians, fxpath)
	call AirPhysicsProjectile_init(this_1)
	call dispatch_Projectile_Projectile_Projectile_setXYAngle(this_1, xyAngle_radians)
endfunction

function AirPhysicsProjectile_setMass takes integer this_1, real mass returns nothing
	set AirPhysicsProjectile_AirPhysicsModule_mass[this_1] = mass
endfunction

function dispatch_AirPhysicsProjectile_PhysicsProjectile_AirPhysicsProjectile_setMass takes integer this_1, real mass returns nothing
	if Serializable_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling AirPhysicsProjectile.setMass")
		else
			call error("Called AirPhysicsProjectile.setMass on invalid object.")
		endif
	endif
	call AirPhysicsProjectile_setMass(this_1, mass)
endfunction

function AirPhysicsProjectile_setRestitution takes integer this_1, real rest returns nothing
	set AirPhysicsProjectile_AirPhysicsModule_restitution[this_1] = rest
endfunction

function dispatch_AirPhysicsProjectile_PhysicsProjectile_AirPhysicsProjectile_setRestitution takes integer this_1, real rest returns nothing
	if Serializable_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling AirPhysicsProjectile.setRestitution")
		else
			call error("Called AirPhysicsProjectile.setRestitution on invalid object.")
		endif
	endif
	call AirPhysicsProjectile_setRestitution(this_1, rest)
endfunction

function color_withAlpha takes integer this_red, integer this_green, integer this_blue, integer a returns integer
	set color_withAlpha_return_red = this_red
	set color_withAlpha_return_green = this_green
	set color_withAlpha_return_blue = this_blue
	set color_withAlpha_return_alpha = a
	return color_withAlpha_return_red
endfunction

function effect_setColor takes effect this_1, integer color_red, integer color_green, integer color_blue, integer color_alpha returns nothing
	call BlzSetSpecialEffectColor(this_1, color_red, color_green, color_blue)
	call BlzSetSpecialEffectAlpha(this_1, color_alpha)
endfunction

function Fx2_setTintFromPlayer takes integer this_1, player p returns nothing
	local integer tuple_temp = color_withAlpha(playercolor_toColor(player_getColor(p)), playercolor_toColor_return_green, playercolor_toColor_return_blue, 255)
	local integer tuple_temp_1 = color_withAlpha_return_green
	local integer tuple_temp_2 = color_withAlpha_return_blue
	local integer tuple_temp_3 = color_withAlpha_return_alpha
	set Fx2_tint_red[this_1] = tuple_temp
	set Fx2_tint_green[this_1] = tuple_temp_1
	set Fx2_tint_blue[this_1] = tuple_temp_2
	set Fx2_tint_alpha[this_1] = tuple_temp_3
	call effect_setColor(Fx2_eff[this_1], Fx2_tint_red[this_1], Fx2_tint_green[this_1], Fx2_tint_blue[this_1], Fx2_tint_alpha[this_1])
endfunction

function dispatch_Fx2_Fx2_Fx2_setTintFromPlayer takes integer this_1, player p returns nothing
	if Fx2_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling Fx2.setTintFromPlayer")
		else
			call error("Called Fx2.setTintFromPlayer on invalid object.")
		endif
	endif
	call Fx2_setTintFromPlayer(this_1, p)
endfunction

function Projectile_setSpeed takes integer this_1, real speed returns nothing
	call dispatch_Entity_Entity_Entity_setVel(this_1, angle_cos(Projectile_xyAngle_radians[this_1]) * speed, angle_sin(Projectile_xyAngle_radians[this_1]) * speed, 0.)
endfunction

function dispatch_Projectile_Projectile_Projectile_setSpeed takes integer this_1, real speed returns nothing
	if Serializable_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling Projectile.setSpeed")
		else
			call error("Called Projectile.setSpeed on invalid object.")
		endif
	endif
	call Projectile_setSpeed(this_1, speed)
endfunction

function construct_BallProjectile takes integer this_1, unit caster, real target_x, real target_y, integer itm returns nothing
	call construct_AirPhysicsProjectile(this_1, unit_getPos3with(caster, 128.), unit_getPos3with_return_y, unit_getPos3with_return_z, 32., unit_getOwner(caster), vec2_angleTo(unit_getPos(caster), unit_getPos_return_y, target_x, target_y), "Cannonball.mdx")
	call BallProjectile_init(this_1)
	call dispatch_Projectile_Projectile_Projectile_setSpeed(this_1, 17.)
	call dispatch_Fx2_Fx2_Fx2_setTintFromPlayer(Fx2Entity_fx[this_1], unit_getOwner(caster))
	call dispatch_AirPhysicsProjectile_PhysicsProjectile_AirPhysicsProjectile_setMass(this_1, 145.)
	call dispatch_AirPhysicsProjectile_PhysicsProjectile_AirPhysicsProjectile_setRestitution(this_1, 0.625)
	set BallProjectile_ballitem[this_1] = itm
endfunction

function new_BallProjectile takes unit caster, real target_x, real target_y, integer itm returns integer
	local integer this_1 = alloc_BallProjectile()
	call construct_BallProjectile(this_1, caster, target_x, target_y, itm)
	return this_1
endfunction

function unit_removeItem takes unit this_1, item itm returns nothing
	call UnitRemoveItem(this_1, itm)
endfunction

function onCast takes nothing returns nothing
	local integer id = GetSpellAbilityId()
	local unit caster
	local real tpos_x_1
	local real tpos_y_1
	local item itm
	local integer i
	local item itm2
	local real tuple_temp
	local real tuple_temp_1
	if id == BasicSpells_BALL_SPELL_ID then
		set caster = GetSpellAbilityUnit()
		set tuple_temp = EventData_getSpellTargetPos()
		set tuple_temp_1 = EventData_getSpellTargetPos_return_y
		set tpos_x_1 = tuple_temp
		set tpos_y_1 = tuple_temp_1
		call unit_removeAbility(caster, BasicSpells_BALL_SPELL_ID)
		set itm = null
		set i = 0
		loop
			exitwhen i > 5
			set itm2 = UnitItemInSlot(caster, i)
			if item_getTypeId(itm2) == BasicSpells_BALL_ITEM_ID then
				set itm = itm2
				call unit_removeItem(caster, itm2)
				exitwhen true
			endif
			set i = i + 1
		endloop
		if itm != null then
			call new_BallProjectile(caster, tpos_x_1, tpos_y_1, item_getEntity(itm))
		endif
	endif
endfunction

function onEvent_add_BasicSpells takes integer this_1 returns nothing
	call onCast()
endfunction

function playerToIndex takes player object returns integer
	return player_getId(object)
endfunction

function RegionData_canBuild takes integer this_1, player p returns boolean
	return (dispatch_HashMap_HashMap_HashMap_has(RegionData_permissions[this_1], playerToIndex(p)) and dispatch_HashMap_HashMap_HashMap_get(RegionData_permissions[this_1], playerToIndex(p)) > 0) or PlayerData_title[PlayerData_pData[player_getId(p)]] == 2
endfunction

function dispatch_RegionData_RegionData_RegionData_canBuild takes integer this_1, player p returns boolean
	local boolean RegionData_RegionData_canBuild_result
	if RegionData_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling RegionData.canBuild")
		else
			call error("Called RegionData.canBuild on invalid object.")
		endif
	endif
	set RegionData_RegionData_canBuild_result = RegionData_canBuild(this_1, p)
	return RegionData_RegionData_canBuild_result
endfunction

function unit_abortOrder takes unit this_1 returns boolean
	if IsUnitPaused(this_1) then
		return false
	else
		call PauseUnit(this_1, true)
		call IssueImmediateOrder(this_1, "stop")
		call PauseUnit(this_1, false)
	endif
	return true
endfunction

function Bomber_checkOrder takes integer this_1 returns nothing
	local integer i = GetIssuedOrderId()
	local integer e_1 = unit_getEntity(GetOrderedUnit())
	local real tuple_temp = EventData_getSpellTargetPos()
	local real tuple_temp_1 = EventData_getSpellTargetPos_return_y
	local real tpos_x_1 = tuple_temp
	local real tpos_y_1 = tuple_temp_1
	local integer obj_1
	local timer receiver
	local timer receiver_1
	local timer receiver_2
	local timer receiver_3
	if tpos_x_1 != Vectors_ZERO2_x or tpos_y_1 != Vectors_ZERO2_y and ( not dispatch_RegionData_RegionData_RegionData_canBuild(getRegionData_3304(tpos_x_1, tpos_y_1), Entity_owner[this_1])) then
		call unit_abortOrder(GetOrderedUnit())
		return
	endif
	if Serializable_typeId[e_1] == 1161 then
		set obj_1 = e_1
		if GetOrderedUnit() == Bomber_setup[obj_1] then
			if i == Bomber_MOVE_ORDER then
				call IssuePointOrderById(UnitEntity_actor[obj_1], i, GetOrderPointX(), GetOrderPointY())
			endif
			if i == Bomber_ATTACK_GROUND_ORDER then
				call IssuePointOrderById(UnitEntity_actor[obj_1], i, GetOrderPointX(), GetOrderPointY())
				set receiver = getTimer()
				call timer_start(receiver, 0.1, ref_function_Bomber_orderSetup)
				set receiver_1 = receiver
				call timer_setData(receiver_1, obj_1)
			elseif i == Bomber_ATTACK_ORDER then
				call IssueTargetOrderById(UnitEntity_actor[obj_1], i, GetOrderTargetUnit())
				set receiver_2 = getTimer()
				call timer_start(receiver_2, 0.1, ref_function_Bomber_orderSetup)
				set receiver_3 = receiver_2
				call timer_setData(receiver_3, obj_1)
			elseif i == Bomber_STOP_ORDER then
				if Bomber_realorder[obj_1] then
					call IssueImmediateOrderById(UnitEntity_actor[obj_1], Bomber_STOP_ORDER)
				else
					set Bomber_realorder[obj_1] = true
				endif
			endif
		endif
	endif
endfunction

function dispatch_Bomber_Bomber_Bomber_checkOrder takes integer this_1 returns nothing
	if Serializable_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling Bomber.checkOrder")
		else
			call error("Called Bomber.checkOrder on invalid object.")
		endif
	endif
	call Bomber_checkOrder(this_1)
endfunction

function onEvent_add_Bomber_Bomber takes integer this_1 returns nothing
	call dispatch_Bomber_Bomber_Bomber_checkOrder(this_2970[this_1])
endfunction

function onEvent_add_Bomber_Bomber_3805 takes integer this_1 returns nothing
	call dispatch_Bomber_Bomber_Bomber_checkOrder(this_2971[this_1])
endfunction

function onEvent_add_Bomber_Bomber_3806 takes integer this_1 returns nothing
	call dispatch_Bomber_Bomber_Bomber_checkOrder(this_2972[this_1])
endfunction

function onEvent_add_Bomber_Bomber_3807 takes integer this_1 returns nothing
	call dispatch_Bomber_Bomber_Bomber_checkOrder(this_2973[this_1])
endfunction

function alloc_CallbackSingle_doAfter_Bomber_Bomber takes nothing returns integer
	local integer this_1
	if CallbackSingle_firstFree == 0 then
		if CallbackSingle_maxIndex < JASS_MAX_ARRAY_SIZE then
			set CallbackSingle_maxIndex = CallbackSingle_maxIndex + 1
			set this_1 = CallbackSingle_maxIndex
			set CallbackSingle_typeId[this_1] = 671
		else
			call error("Out of memory: Could not create CallbackSingle_doAfter_Bomber_Bomber.")
			set this_1 = 0
		endif
	else
		set CallbackSingle_firstFree = CallbackSingle_firstFree - 1
		set this_1 = CallbackSingle_nextFree[CallbackSingle_firstFree]
		set CallbackSingle_typeId[this_1] = 671
	endif
	return this_1
endfunction

function alloc_CallbackSingle_doAfter_Bomber_Bomber_1603 takes nothing returns integer
	local integer this_1
	if CallbackSingle_firstFree == 0 then
		if CallbackSingle_maxIndex < JASS_MAX_ARRAY_SIZE then
			set CallbackSingle_maxIndex = CallbackSingle_maxIndex + 1
			set this_1 = CallbackSingle_maxIndex
			set CallbackSingle_typeId[this_1] = 672
		else
			call error("Out of memory: Could not create CallbackSingle_doAfter_Bomber_Bomber.")
			set this_1 = 0
		endif
	else
		set CallbackSingle_firstFree = CallbackSingle_firstFree - 1
		set this_1 = CallbackSingle_nextFree[CallbackSingle_firstFree]
		set CallbackSingle_typeId[this_1] = 672
	endif
	return this_1
endfunction

function unit_getAbilityLevel takes unit this_1, integer id returns integer
	return GetUnitAbilityLevel(this_1, id)
endfunction

function onAttackspeedCast takes integer spellid, unit actor returns nothing
	local integer temp = spellid
	local integer pos
	local integer neg
	local integer pos_1
	local integer neg_1
	if temp == Attackspeed_ATTACK_SPEED_INCREASE then
		set pos = unit_getAbilityLevel(actor, Attackspeed_ATTACK_SPEED_RATE_POSITIVE_ID)
		set neg = unit_getAbilityLevel(actor, Attackspeed_ATTACK_SPEED_RATE_NEGATIVE_ID)
		if neg >= 1 then
			if neg == 1 then
				call unit_removeAbility(actor, Attackspeed_ATTACK_SPEED_RATE_NEGATIVE_ID)
				call createFText_2346(unit_getX(actor), unit_getY(actor), 0., 0., 0.05, "0.00 %", 10., 2., 255, 255, 255, 0, GetOwningPlayer(actor))
			else
				call SetUnitAbilityLevel(actor, Attackspeed_ATTACK_SPEED_RATE_NEGATIVE_ID, neg - 1)
				call createFText_2346(unit_getX(actor), unit_getY(actor), 0., 0., 0.05, "-" + int_toString((neg - 1) * 20) + " %", 10., 2., 255, 255, 255, 0, GetOwningPlayer(actor))
			endif
		elseif pos >= 1 then
			if pos < 4 then
				call SetUnitAbilityLevel(actor, Attackspeed_ATTACK_SPEED_RATE_POSITIVE_ID, pos + 1)
				call createFText_2346(unit_getX(actor), unit_getY(actor), 0., 0., 0.05, "+" + int_toString((pos + 1) * 20) + " %", 10., 2., 255, 255, 255, 0, GetOwningPlayer(actor))
			else
				call createFText_2346(unit_getX(actor), unit_getY(actor), 0., 0., 0.05, "Max", 10., 2., 255, 255, 255, 0, GetOwningPlayer(actor))
			endif
		else
			call unit_addAbility(actor, Attackspeed_ATTACK_SPEED_RATE_POSITIVE_ID)
			call createFText_2346(unit_getX(actor), unit_getY(actor), 0., 0., 0.05, "+20.0 %", 10., 2., 255, 255, 255, 0, GetOwningPlayer(actor))
		endif
	elseif temp == Attackspeed_ATTACK_SPEED_DECREASE then
		set pos_1 = unit_getAbilityLevel(actor, Attackspeed_ATTACK_SPEED_RATE_POSITIVE_ID)
		set neg_1 = unit_getAbilityLevel(actor, Attackspeed_ATTACK_SPEED_RATE_NEGATIVE_ID)
		if pos_1 >= 1 then
			if pos_1 == 1 then
				call unit_removeAbility(actor, Attackspeed_ATTACK_SPEED_RATE_POSITIVE_ID)
				call createFText_2346(unit_getX(actor), unit_getY(actor), 0., 0., 0.05, "0.00 %", 10., 2., 255, 255, 255, 0, GetOwningPlayer(actor))
			else
				call SetUnitAbilityLevel(actor, Attackspeed_ATTACK_SPEED_RATE_POSITIVE_ID, pos_1 - 1)
				call createFText_2346(unit_getX(actor), unit_getY(actor), 0., 0., 0.05, "+" + int_toString((pos_1 - 1) * 20) + " %", 10., 2., 255, 255, 255, 0, GetOwningPlayer(actor))
			endif
		elseif neg_1 >= 1 then
			if neg_1 < 4 then
				call SetUnitAbilityLevel(actor, Attackspeed_ATTACK_SPEED_RATE_NEGATIVE_ID, neg_1 + 1)
				call createFText_2346(unit_getX(actor), unit_getY(actor), 0., 0., 0.05, "-" + int_toString((neg_1 + 1) * 20) + " %", 10., 2., 255, 255, 255, 0, GetOwningPlayer(actor))
			else
				call createFText_2346(unit_getX(actor), unit_getY(actor), 0., 0., 0.05, "Min", 10., 2., 255, 255, 255, 0, GetOwningPlayer(actor))
			endif
		else
			call unit_addAbility(actor, Attackspeed_ATTACK_SPEED_RATE_NEGATIVE_ID)
			call createFText_2346(unit_getX(actor), unit_getY(actor), 0., 0., 0.05, "-20.0 %", 10., 2., 255, 255, 255, 0, GetOwningPlayer(actor))
		endif
	endif
endfunction

function Bomber_onCast takes integer this_1 returns nothing
	local integer id = GetSpellAbilityId()
	local integer clVar
	local integer clVar_1
	call onAttackspeedCast(id, UnitEntity_actor[this_1])
	if id == Bomber_AUTOATTACK_ID then
		if IsUnitType(UnitEntity_actor[this_1], UNIT_TYPE_PEON) then
			call UnitRemoveType(UnitEntity_actor[this_1], UNIT_TYPE_PEON)
			call unit_setPropWindow(Bomber_setup[this_1], real_fromDeg(0.))
			call unit_setOwner(UnitEntity_actor[this_1], Player_players[PLAYER_NEUTRAL_AGGRESSIVE], false)
			call unit_setPropWindow(UnitEntity_actor[this_1], real_fromDeg(0.))
			call createFText_2346(dispatch_UnitEntity_Entity_UnitEntity_getPos(this_1), dispatch_UnitEntity_Entity_UnitEntity_getPos_return_y, dispatch_UnitEntity_Entity_UnitEntity_getPos_return_z, 0., 0.05, "ON", 10., 2., 200, 0, 0, 0, Entity_owner[this_1])
			set clVar = alloc_CallbackSingle_doAfter_Bomber_Bomber()
			call construct_CallbackSingle(clVar)
			set this_2975[clVar] = this_1
			call doAfter(0.1, clVar)
		else
			call UnitAddType(UnitEntity_actor[this_1], UNIT_TYPE_PEON)
			call unit_setPropWindow(Bomber_setup[this_1], real_fromDeg(60.))
			call unit_setPropWindow(UnitEntity_actor[this_1], real_fromDeg(60.))
			call unit_setOwner(UnitEntity_actor[this_1], Entity_owner[this_1], false)
			call createFText_2346(dispatch_UnitEntity_Entity_UnitEntity_getPos(this_1), dispatch_UnitEntity_Entity_UnitEntity_getPos_return_y, dispatch_UnitEntity_Entity_UnitEntity_getPos_return_z, 0., 0.05, "OFF", 10., 2., 0, 200, 0, 0, Entity_owner[this_1])
			set clVar_1 = alloc_CallbackSingle_doAfter_Bomber_Bomber_1603()
			call construct_CallbackSingle(clVar_1)
			set this_2976[clVar_1] = this_1
			call doAfter(0.1, clVar_1)
		endif
	endif
endfunction

function dispatch_Bomber_Bomber_Bomber_onCast takes integer this_1 returns nothing
	if Serializable_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling Bomber.onCast")
		else
			call error("Called Bomber.onCast on invalid object.")
		endif
	endif
	call Bomber_onCast(this_1)
endfunction

function onEvent_add_Bomber_Bomber_3808 takes integer this_1 returns nothing
	call dispatch_Bomber_Bomber_Bomber_onCast(this_2974[this_1])
endfunction

function EventData_getOrderPos takes nothing returns real
	set EventData_getOrderPos_return_x = GetOrderPointX()
	set EventData_getOrderPos_return_y = GetOrderPointY()
	return EventData_getOrderPos_return_x
endfunction

function alloc_CallbackSingle_doAfter_Bombertower_Bombertower takes nothing returns integer
	local integer this_1
	if CallbackSingle_firstFree == 0 then
		if CallbackSingle_maxIndex < JASS_MAX_ARRAY_SIZE then
			set CallbackSingle_maxIndex = CallbackSingle_maxIndex + 1
			set this_1 = CallbackSingle_maxIndex
			set CallbackSingle_typeId[this_1] = 673
		else
			call error("Out of memory: Could not create CallbackSingle_doAfter_Bombertower_Bombertower.")
			set this_1 = 0
		endif
	else
		set CallbackSingle_firstFree = CallbackSingle_firstFree - 1
		set this_1 = CallbackSingle_nextFree[CallbackSingle_firstFree]
		set CallbackSingle_typeId[this_1] = 673
	endif
	return this_1
endfunction

function alloc_CallbackSingle_doAfter_Bombertower_Bombertower_1605 takes nothing returns integer
	local integer this_1
	if CallbackSingle_firstFree == 0 then
		if CallbackSingle_maxIndex < JASS_MAX_ARRAY_SIZE then
			set CallbackSingle_maxIndex = CallbackSingle_maxIndex + 1
			set this_1 = CallbackSingle_maxIndex
			set CallbackSingle_typeId[this_1] = 674
		else
			call error("Out of memory: Could not create CallbackSingle_doAfter_Bombertower_Bombertower.")
			set this_1 = 0
		endif
	else
		set CallbackSingle_firstFree = CallbackSingle_firstFree - 1
		set this_1 = CallbackSingle_nextFree[CallbackSingle_firstFree]
		set CallbackSingle_typeId[this_1] = 674
	endif
	return this_1
endfunction

function Bombertower_checkOrder takes integer this_1 returns nothing
	local integer i = GetIssuedOrderId()
	local integer e_1 = unit_getEntity(GetOrderedUnit())
	local real tuple_temp = EventData_getOrderPos()
	local real tuple_temp_1 = EventData_getOrderPos_return_y
	local real tpos_x_1 = tuple_temp
	local real tpos_y_1 = tuple_temp_1
	local integer obj_1
	local integer clVar
	local integer clVar_1
	if tpos_x_1 != Vectors_ZERO2_x or tpos_y_1 != Vectors_ZERO2_y and ( not dispatch_RegionData_RegionData_RegionData_canBuild(getRegionData_3304(tpos_x_1, tpos_y_1), Entity_owner[this_1])) then
		call unit_abortOrder(GetOrderedUnit())
		return
	endif
	if Serializable_typeId[e_1] == 1196 then
		set obj_1 = e_1
		if Bombertower_skipOrder[obj_1] then
			set Bombertower_skipOrder[obj_1] = false
			return
		endif
		if GetOrderedUnit() == Bombertower_dummy[obj_1] then
			call dispatch_StaticBaseObject_BaseObject_StaticBaseObject_clearQuestionmark(obj_1)
			if i == Bombertower_ATTACK_GROUND_ORDER then
				call IssuePointOrderById(UnitEntity_actor[obj_1], i, GetOrderPointX(), GetOrderPointY())
				set Bombertower_skipOrder[obj_1] = true
				set clVar = alloc_CallbackSingle_doAfter_Bombertower_Bombertower()
				call construct_CallbackSingle(clVar)
				set obj[clVar] = obj_1
				call doAfter(0.1, clVar)
			elseif i == Bombertower_ATTACK_ORDER then
				call IssueTargetOrderById(UnitEntity_actor[obj_1], i, GetOrderTargetUnit())
				set Bombertower_skipOrder[obj_1] = true
				set clVar_1 = alloc_CallbackSingle_doAfter_Bombertower_Bombertower_1605()
				call construct_CallbackSingle(clVar_1)
				set obj_2548[clVar_1] = obj_1
				call doAfter(0.1, clVar_1)
			elseif i == Bombertower_STOP_ORDER then
				call IssueImmediateOrderById(UnitEntity_actor[obj_1], Bombertower_STOP_ORDER)
			endif
		endif
	endif
endfunction

function dispatch_Bombertower_Bombertower_Bombertower_checkOrder takes integer this_1 returns nothing
	if Serializable_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling Bombertower.checkOrder")
		else
			call error("Called Bombertower.checkOrder on invalid object.")
		endif
	endif
	call Bombertower_checkOrder(this_1)
endfunction

function onEvent_add_Bombertower_Bombertower takes integer this_1 returns nothing
	call dispatch_Bombertower_Bombertower_Bombertower_checkOrder(this_2986[this_1])
endfunction

function onEvent_add_Bombertower_Bombertower_3810 takes integer this_1 returns nothing
	call dispatch_Bombertower_Bombertower_Bombertower_checkOrder(this_2987[this_1])
endfunction

function onEvent_add_Bombertower_Bombertower_3811 takes integer this_1 returns nothing
	call dispatch_Bombertower_Bombertower_Bombertower_checkOrder(this_2988[this_1])
endfunction

function BossDamager_onCast takes nothing returns boolean
	local integer data_1 = unit_getEntity(GetTriggerUnit())
	local integer dmger
	local integer id
	local integer temp
	if Serializable_typeId[data_1] == 1198 then
		set dmger = data_1
		set id = GetSpellAbilityId()
		set temp = id
		if temp == BossDamager_DMG_INC_ID then
			if BossDamager_damage[dmger] >= 200. then
				call createFText_2346(Entity_pos_x[dmger], Entity_pos_y[dmger], Entity_pos_z[dmger], 0., 0.05, "|cffC51019Max", 10., 2., 255, 255, 255, 0, Entity_owner[dmger])
			else
				set BossDamager_damage[dmger] = BossDamager_damage[dmger] + 10.
				call createFText_2346(Entity_pos_x[dmger], Entity_pos_y[dmger], Entity_pos_z[dmger], 0., 0.05, "|cffC51019Damage " + R2SW(BossDamager_damage[dmger], 1, 2), 10., 2., 255, 255, 255, 0, Entity_owner[dmger])
			endif
		elseif temp == BossDamager_DMG_DEC_ID then
			if BossDamager_damage[dmger] <= 0. then
				call createFText_2346(Entity_pos_x[dmger], Entity_pos_y[dmger], Entity_pos_z[dmger], 0., 0.05, "|cffC51019Min", 10., 2., 255, 255, 255, 0, Entity_owner[dmger])
			else
				set BossDamager_damage[dmger] = BossDamager_damage[dmger] - 10.
				call createFText_2346(Entity_pos_x[dmger], Entity_pos_y[dmger], Entity_pos_z[dmger], 0., 0.05, "|cffC51019Damage " + R2SW(BossDamager_damage[dmger], 1, 2), 10., 2., 255, 255, 255, 0, Entity_owner[dmger])
			endif
		endif
	endif
	return false
endfunction

function onEvent_add_BossDamager_BossDamager takes integer this_1 returns boolean
	return BossDamager_onCast()
endfunction

function Boss_getSpellTargets takes integer this_1, integer stype returns integer
	local integer tgs = dispatch_HashMap_HashMap_HashMap_get(BossSpellTarget_targets, player_getId(Entity_owner[this_1]))
	local integer newTgs = new_LinkedList()
	local integer from = dispatch_LinkedList_LinkedList_LinkedList_staticItr(tgs)
	local integer target
	loop
		exitwhen  not LLIterator_hasNext(from)
		set target = LLIterator_next(from)
		if SpellTarget_stype[target] == stype then
			call dispatch_LinkedList_LinkedList_LinkedList_add_1(newTgs, target)
		endif
	endloop
	return newTgs
endfunction

function dispatch_Boss_Boss_Boss_getSpellTargets takes integer this_1, integer stype returns integer
	local integer Boss_Boss_getSpellTargets_result
	if Serializable_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling Boss.getSpellTargets")
		else
			call error("Called Boss.getSpellTargets on invalid object.")
		endif
	endif
	set Boss_Boss_getSpellTargets_result = Boss_getSpellTargets(this_1, stype)
	return Boss_Boss_getSpellTargets_result
endfunction

function dispatch_Boss_destroyBoss takes integer this_1 returns nothing
	if Serializable_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling Boss.Boss")
		else
			call error("Called Boss.Boss on invalid object.")
		endif
	endif
	call destroyBoss(this_1)
endfunction

function alloc_CallbackSingle_nullTimer_SoundDefinition_SoundUtils takes nothing returns integer
	local integer this_1
	if CallbackSingle_firstFree == 0 then
		if CallbackSingle_maxIndex < JASS_MAX_ARRAY_SIZE then
			set CallbackSingle_maxIndex = CallbackSingle_maxIndex + 1
			set this_1 = CallbackSingle_maxIndex
			set CallbackSingle_typeId[this_1] = 717
		else
			call error("Out of memory: Could not create CallbackSingle_nullTimer_SoundDefinition_SoundUtils.")
			set this_1 = 0
		endif
	else
		set CallbackSingle_firstFree = CallbackSingle_firstFree - 1
		set this_1 = CallbackSingle_nextFree[CallbackSingle_firstFree]
		set CallbackSingle_typeId[this_1] = 717
	endif
	return this_1
endfunction

function LinkedList_pop takes integer this_1 returns integer
	local integer top = LLEntry_prev[LinkedList_dummy[this_1]]
	local integer result_1 = 0
	if top != LinkedList_dummy[this_1] then
		set result_1 = LLEntry_elem[top]
		call dispatch_LinkedList_LinkedList_LinkedList_removeEntry(this_1, top)
	endif
	return result_1
endfunction

function dispatch_LinkedList_LinkedList_LinkedList_pop takes integer this_1 returns integer
	local integer LinkedList_LinkedList_pop_result
	if LinkedList_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling LinkedList.pop")
		else
			call error("Called LinkedList.pop on invalid object.")
		endif
	endif
	set LinkedList_LinkedList_pop_result = LinkedList_pop(this_1)
	return LinkedList_LinkedList_pop_result
endfunction

function alloc_SoundInstance takes nothing returns integer
	local integer this_1
	if SoundInstance_firstFree == 0 then
		if SoundInstance_maxIndex < JASS_MAX_ARRAY_SIZE then
			set SoundInstance_maxIndex = SoundInstance_maxIndex + 1
			set this_1 = SoundInstance_maxIndex
			set SoundInstance_typeId[this_1] = 1231
		else
			call error("Out of memory: Could not create SoundInstance.")
			set this_1 = 0
		endif
	else
		set SoundInstance_firstFree = SoundInstance_firstFree - 1
		set this_1 = SoundInstance_nextFree[SoundInstance_firstFree]
		set SoundInstance_typeId[this_1] = 1231
	endif
	return this_1
endfunction

function SoundInstance_init takes integer this_1 returns nothing
	local real tuple_temp = Vectors_ZERO3_x
	local real tuple_temp_1 = Vectors_ZERO3_y
	local real tuple_temp_2 = Vectors_ZERO3_z
	set SoundInstance_pos_x[this_1] = tuple_temp
	set SoundInstance_pos_y[this_1] = tuple_temp_1
	set SoundInstance_pos_z[this_1] = tuple_temp_2
	set SoundInstance_onUnit[this_1] = null
	set SoundInstance_p[this_1] = null
	set SoundInstance_s3s[this_1] = 0
endfunction

function construct_SoundInstance takes integer this_1 returns nothing
	call SoundInstance_init(this_1)
endfunction

function new_SoundInstance takes nothing returns integer
	local integer this_1 = alloc_SoundInstance()
	call construct_SoundInstance(this_1)
	return this_1
endfunction

function sound_setChannel takes sound this_1, integer channel returns nothing
	call SetSoundChannel(this_1, channel)
endfunction

function sound_setDuration takes sound this_1, integer dur returns nothing
	call SetSoundDuration(this_1, dur)
endfunction

function sound_setPitch takes sound this_1, real pitch returns nothing
	call SetSoundPitch(this_1, pitch)
endfunction

function sound_setVolume takes sound this_1, integer volume returns nothing
	call SetSoundVolume(this_1, volume)
endfunction

function SoundDefinition_getSound_1302 takes integer this_1, integer volume returns integer
	local integer shandle
	local sound receiver
	local sound receiver_1
	local sound receiver_2
	local integer sdata
	local sound receiver_3
	local sound receiver_4
	local sound receiver_5
	local sound receiver_6
	if dispatch_LinkedList_LinkedList_LinkedList_size(SoundDefinition_soundStack[this_1]) > 0 then
		set shandle = dispatch_LinkedList_LinkedList_LinkedList_pop(SoundDefinition_soundStack[this_1])
		set receiver = SoundInstance_snd[shandle]
		call sound_setVolume(receiver, volume)
		set receiver_1 = receiver
		call sound_setPitch(receiver_1, SoundUtils_DEFAULT_SOUND_PITCH)
		set receiver_2 = receiver_1
		call sound_setChannel(receiver_2, SoundUtils_SOUND_CHANNEL)
		return shandle
	else
		set sdata = new_SoundInstance()
		set SoundInstance_snd[sdata] = CreateSound(SoundDefinition_file[this_1], SoundDefinition_looping[this_1], SoundDefinition_is3D[this_1], SoundDefinition_stopOnLeaveRange[this_1], SoundDefinition_fadeIn[this_1], SoundDefinition_fadeOut[this_1], SoundDefinition_eaxSetting[this_1])
		set SoundInstance_soundDef[sdata] = this_1
		set receiver_3 = SoundInstance_snd[sdata]
		call sound_setDuration(receiver_3, SoundDefinition_duration[this_1])
		set receiver_4 = receiver_3
		call sound_setChannel(receiver_4, SoundUtils_SOUND_CHANNEL)
		set receiver_5 = receiver_4
		call sound_setVolume(receiver_5, volume)
		set receiver_6 = receiver_5
		call sound_setPitch(receiver_6, SoundUtils_DEFAULT_SOUND_PITCH)
		if SoundDefinition_is3D[this_1] then
			call SetSoundDistances(SoundInstance_snd[sdata], SoundUtils_SOUND_MIN_DIST, SoundUtils_SOUND_MAX_DIST)
			call SetSoundDistanceCutoff(SoundInstance_snd[sdata], SoundUtils_SOUND_DIST_CUT)
			call SetSoundConeAngles(SoundInstance_snd[sdata], 0., 0., volume)
			call SetSoundConeOrientation(SoundInstance_snd[sdata], 0., 0., 0.)
		endif
		return sdata
	endif
endfunction

function dispatch_SoundDefinition_SoundUtils_SoundDefinition_getSound_3158 takes integer this_1, integer volume returns integer
	local integer SoundUtils_SoundDefinition_getSound_result
	if SoundDefinition_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling SoundDefinition.getSound")
		else
			call error("Called SoundDefinition.getSound on invalid object.")
		endif
	endif
	set SoundUtils_SoundDefinition_getSound_result = SoundDefinition_getSound_1302(this_1, volume)
	return SoundUtils_SoundDefinition_getSound_result
endfunction

function nullTimer takes integer cb_1 returns integer
	return doAfter(0., cb_1)
endfunction

function SoundDefinition_play_1306 takes integer this_1, integer duration, integer volume returns integer
	local integer snd_1
	local integer clVar
	set SoundDefinition_duration[this_1] = duration
	set snd_1 = dispatch_SoundDefinition_SoundUtils_SoundDefinition_getSound_3158(this_1, volume)
	set clVar = alloc_CallbackSingle_nullTimer_SoundDefinition_SoundUtils()
	call construct_CallbackSingle(clVar)
	set this_2904[clVar] = this_1
	set snd[clVar] = snd_1
	call nullTimer(clVar)
	return snd_1
endfunction

function dispatch_SoundDefinition_SoundUtils_SoundDefinition_play_3161 takes integer this_1, integer duration, integer volume returns integer
	local integer SoundUtils_SoundDefinition_play_result
	if SoundDefinition_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling SoundDefinition.play")
		else
			call error("Called SoundDefinition.play on invalid object.")
		endif
	endif
	set SoundUtils_SoundDefinition_play_result = SoundDefinition_play_1306(this_1, duration, volume)
	return SoundUtils_SoundDefinition_play_result
endfunction

function SoundDefinition_play_1305 takes integer this_1, integer duration returns integer
	return dispatch_SoundDefinition_SoundUtils_SoundDefinition_play_3161(this_1, duration, SoundUtils_DEFAULT_SOUND_VOLUME)
endfunction

function dispatch_SoundDefinition_SoundUtils_SoundDefinition_play_3160 takes integer this_1, integer duration returns integer
	local integer SoundUtils_SoundDefinition_play_result
	if SoundDefinition_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling SoundDefinition.play")
		else
			call error("Called SoundDefinition.play on invalid object.")
		endif
	endif
	set SoundUtils_SoundDefinition_play_result = SoundDefinition_play_1305(this_1, duration)
	return SoundUtils_SoundDefinition_play_result
endfunction

function SoundDefinition_play takes integer this_1 returns integer
	return dispatch_SoundDefinition_SoundUtils_SoundDefinition_play_3160(this_1, SoundUtils_DEFAULT_SOUND_DURATION)
endfunction

function dispatch_SoundDefinition_SoundUtils_SoundDefinition_play takes integer this_1 returns integer
	local integer SoundUtils_SoundDefinition_play_result
	if SoundDefinition_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling SoundDefinition.play")
		else
			call error("Called SoundDefinition.play on invalid object.")
		endif
	endif
	set SoundUtils_SoundDefinition_play_result = SoundDefinition_play(this_1)
	return SoundUtils_SoundDefinition_play_result
endfunction

function Boss_revive takes integer this_1 returns nothing
	call dispatch_SoundDefinition_SoundUtils_SoundDefinition_play(Boss_REVIVE_SOUND)
	call dispatch_Boss_destroyBoss(this_1)
endfunction

function dispatch_Boss_Boss_Boss_revive takes integer this_1 returns nothing
	if Serializable_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling Boss.revive")
		else
			call error("Called Boss.revive on invalid object.")
		endif
	endif
	call Boss_revive(this_1)
endfunction

function alloc_CallbackSingle_nullTimer_SoundDefinition_SoundUtils_1646 takes nothing returns integer
	local integer this_1
	if CallbackSingle_firstFree == 0 then
		if CallbackSingle_maxIndex < JASS_MAX_ARRAY_SIZE then
			set CallbackSingle_maxIndex = CallbackSingle_maxIndex + 1
			set this_1 = CallbackSingle_maxIndex
			set CallbackSingle_typeId[this_1] = 719
		else
			call error("Out of memory: Could not create CallbackSingle_nullTimer_SoundDefinition_SoundUtils.")
			set this_1 = 0
		endif
	else
		set CallbackSingle_firstFree = CallbackSingle_firstFree - 1
		set this_1 = CallbackSingle_nextFree[CallbackSingle_firstFree]
		set CallbackSingle_typeId[this_1] = 719
	endif
	return this_1
endfunction

function SoundDefinition_getSound takes integer this_1 returns integer
	return dispatch_SoundDefinition_SoundUtils_SoundDefinition_getSound_3158(this_1, SoundUtils_DEFAULT_SOUND_VOLUME)
endfunction

function dispatch_SoundDefinition_SoundUtils_SoundDefinition_getSound takes integer this_1 returns integer
	local integer SoundUtils_SoundDefinition_getSound_result
	if SoundDefinition_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling SoundDefinition.getSound")
		else
			call error("Called SoundDefinition.getSound on invalid object.")
		endif
	endif
	set SoundUtils_SoundDefinition_getSound_result = SoundDefinition_getSound(this_1)
	return SoundUtils_SoundDefinition_getSound_result
endfunction

function SoundDefinition_playOnPoint_1310 takes integer this_1, real target_x, real target_y, real target_z, integer duration returns integer
	local integer snd_1
	local integer clVar
	local real tuple_temp
	local real tuple_temp_1
	local real tuple_temp_2
	set SoundDefinition_duration[this_1] = duration
	set snd_1 = dispatch_SoundDefinition_SoundUtils_SoundDefinition_getSound(this_1)
	set tuple_temp = target_x
	set tuple_temp_1 = target_y
	set tuple_temp_2 = target_z
	set SoundInstance_pos_x[snd_1] = tuple_temp
	set SoundInstance_pos_y[snd_1] = tuple_temp_1
	set SoundInstance_pos_z[snd_1] = tuple_temp_2
	set clVar = alloc_CallbackSingle_nullTimer_SoundDefinition_SoundUtils_1646()
	call construct_CallbackSingle(clVar)
	set this_2906[clVar] = this_1
	set snd_2881[clVar] = snd_1
	call nullTimer(clVar)
	return snd_1
endfunction

function dispatch_SoundDefinition_SoundUtils_SoundDefinition_playOnPoint_3165 takes integer this_1, real target_x, real target_y, real target_z, integer duration returns integer
	local integer SoundUtils_SoundDefinition_playOnPoint_result
	if SoundDefinition_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling SoundDefinition.playOnPoint")
		else
			call error("Called SoundDefinition.playOnPoint on invalid object.")
		endif
	endif
	set SoundUtils_SoundDefinition_playOnPoint_result = SoundDefinition_playOnPoint_1310(this_1, target_x, target_y, target_z, duration)
	return SoundUtils_SoundDefinition_playOnPoint_result
endfunction

function SoundDefinition_playOnPoint takes integer this_1, real target_x, real target_y, real target_z returns integer
	return dispatch_SoundDefinition_SoundUtils_SoundDefinition_playOnPoint_3165(this_1, target_x, target_y, target_z, SoundUtils_DEFAULT_SOUND_DURATION)
endfunction

function dispatch_SoundDefinition_SoundUtils_SoundDefinition_playOnPoint takes integer this_1, real target_x, real target_y, real target_z returns integer
	local integer SoundUtils_SoundDefinition_playOnPoint_result
	if SoundDefinition_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling SoundDefinition.playOnPoint")
		else
			call error("Called SoundDefinition.playOnPoint on invalid object.")
		endif
	endif
	set SoundUtils_SoundDefinition_playOnPoint_result = SoundDefinition_playOnPoint(this_1, target_x, target_y, target_z)
	return SoundUtils_SoundDefinition_playOnPoint_result
endfunction

function alloc_CallbackSingle_doAfter_SpellTarget_BossSpellTarget takes nothing returns integer
	local integer this_1
	if CallbackSingle_firstFree == 0 then
		if CallbackSingle_maxIndex < JASS_MAX_ARRAY_SIZE then
			set CallbackSingle_maxIndex = CallbackSingle_maxIndex + 1
			set this_1 = CallbackSingle_maxIndex
			set CallbackSingle_typeId[this_1] = 701
		else
			call error("Out of memory: Could not create CallbackSingle_doAfter_SpellTarget_BossSpellTarget.")
			set this_1 = 0
		endif
	else
		set CallbackSingle_firstFree = CallbackSingle_firstFree - 1
		set this_1 = CallbackSingle_nextFree[CallbackSingle_firstFree]
		set CallbackSingle_typeId[this_1] = 701
	endif
	return this_1
endfunction

function SpellTarget_castAoe takes integer this_1 returns nothing
	local real tpos_x_1
	local real tpos_y_1
	local integer clVar
	local real tuple_temp
	local real tuple_temp_1
	local real tuple_temp_2
	local real tuple_temp_3
	call effect_destr(addEffect_1565("war3mapImported\\DarknessMeteor.mdx", Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1]))
	set tuple_temp = vec3_toVec2(dispatch_UnitEntity_Entity_UnitEntity_getPos(this_1), dispatch_UnitEntity_Entity_UnitEntity_getPos_return_y, dispatch_UnitEntity_Entity_UnitEntity_getPos_return_z)
	set tuple_temp_1 = vec3_toVec2_return_y
	set tpos_x_1 = tuple_temp
	set tpos_y_1 = tuple_temp_1
	set clVar = alloc_CallbackSingle_doAfter_SpellTarget_BossSpellTarget()
	call construct_CallbackSingle(clVar)
	set tuple_temp_2 = tpos_x_1
	set tuple_temp_3 = tpos_y_1
	set tpos_x[clVar] = tuple_temp_2
	set tpos_y[clVar] = tuple_temp_3
	set this_2914[clVar] = this_1
	call doAfter(1., clVar)
endfunction

function dispatch_SpellTarget_BossSpellTarget_SpellTarget_castAoe takes integer this_1 returns nothing
	if Serializable_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling SpellTarget.castAoe")
		else
			call error("Called SpellTarget.castAoe on invalid object.")
		endif
	endif
	call SpellTarget_castAoe(this_1)
endfunction

function alloc_BossMissile takes nothing returns integer
	local integer this_1
	if Serializable_firstFree == 0 then
		if Serializable_maxIndex < JASS_MAX_ARRAY_SIZE then
			set Serializable_maxIndex = Serializable_maxIndex + 1
			set this_1 = Serializable_maxIndex
			set Serializable_typeId[this_1] = 1145
		else
			call error("Out of memory: Could not create BossMissile.")
			set this_1 = 0
		endif
	else
		set Serializable_firstFree = Serializable_firstFree - 1
		set this_1 = Serializable_nextFree[Serializable_firstFree]
		set Serializable_typeId[this_1] = 1145
	endif
	return this_1
endfunction

function BossMissile_init takes integer this_1 returns nothing
	set BossMissile_caster[this_1] = null
endfunction

function HomingProjectile_init takes integer this_1 returns nothing
endfunction

function construct_HomingProjectile takes integer this_1, real pos_x_1, real pos_y_1, real pos_z, real radius, player owner, real xyAngle_radians, string fxpath returns nothing
	call construct_Projectile(this_1, pos_x_1, pos_y_1, pos_z, radius, owner, xyAngle_radians, fxpath)
	call HomingProjectile_init(this_1)
endfunction

function HomingProjectile_setTarget takes integer this_1, integer e_1, integer htype, real homingspeed returns nothing
endfunction

function dispatch_HomingProjectile_HomingProjectile_HomingProjectile_setTarget takes integer this_1, integer e_1, integer htype, real homingspeed returns nothing
	if Serializable_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling HomingProjectile.setTarget")
		else
			call error("Called HomingProjectile.setTarget on invalid object.")
		endif
	endif
	call HomingProjectile_setTarget(this_1, e_1, htype, homingspeed)
endfunction

function Projectile_setTimed takes integer this_1, real lifespan returns nothing
	set Projectile_maxTime[this_1] = lifespan
	set Projectile_timed[this_1] = true
endfunction

function dispatch_Projectile_Projectile_Projectile_setTimed takes integer this_1, real lifespan returns nothing
	if Serializable_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling Projectile.setTimed")
		else
			call error("Called Projectile.setTimed on invalid object.")
		endif
	endif
	call Projectile_setTimed(this_1, lifespan)
endfunction

function construct_BossMissile takes integer this_1, unit caster, integer target returns nothing
	call construct_HomingProjectile(this_1, unit_getPos3with(caster, 92.), unit_getPos3with_return_y, unit_getPos3with_return_z, BossSpellTarget_MISSILE_RADIUS, Entity_owner[this_1], vec3_angleTo2d_4263(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1], dispatch_Entity_Entity_Entity_getPos(target), dispatch_Entity_Entity_Entity_getPos_return_y, dispatch_Entity_Entity_Entity_getPos_return_z), Abilities_greenDragonMissile)
	call BossMissile_init(this_1)
	set BossMissile_caster[this_1] = caster
	call dispatch_HomingProjectile_HomingProjectile_HomingProjectile_setTarget(this_1, target, 1, BossSpellTarget_MISSILE_SPEED)
	call dispatch_Projectile_Projectile_Projectile_setSpeed(this_1, 14.)
	call dispatch_Projectile_Projectile_Projectile_setTimed(this_1, 10.)
endfunction

function new_BossMissile takes unit caster, integer target returns integer
	local integer this_1 = alloc_BossMissile()
	call construct_BossMissile(this_1, caster, target)
	return this_1
endfunction

function alloc_Minion takes nothing returns integer
	local integer this_1
	if Serializable_firstFree == 0 then
		if Serializable_maxIndex < JASS_MAX_ARRAY_SIZE then
			set Serializable_maxIndex = Serializable_maxIndex + 1
			set this_1 = Serializable_maxIndex
			set Serializable_typeId[this_1] = 1183
		else
			call error("Out of memory: Could not create Minion.")
			set this_1 = 0
		endif
	else
		set Serializable_firstFree = Serializable_firstFree - 1
		set this_1 = Serializable_nextFree[Serializable_firstFree]
		set Serializable_typeId[this_1] = 1183
	endif
	return this_1
endfunction

function Minion_init takes integer this_1 returns nothing
	set Minion_maxHp[this_1] = 40.
	set Minion_currentHP[this_1] = 40.
	set Minion_state[this_1] = 0
endfunction

function alloc_SensorListener_addSensorListener_EscaperSensorSetup_EscaperSensor takes nothing returns integer
	local integer this_1
	if SensorListener_firstFree == 0 then
		if SensorListener_maxIndex < JASS_MAX_ARRAY_SIZE then
			set SensorListener_maxIndex = SensorListener_maxIndex + 1
			set this_1 = SensorListener_maxIndex
			set SensorListener_typeId[this_1] = 1120
		else
			call error("Out of memory: Could not create SensorListener_addSensorListener_EscaperSensorSetup_EscaperSensor.")
			set this_1 = 0
		endif
	else
		set SensorListener_firstFree = SensorListener_firstFree - 1
		set this_1 = SensorListener_nextFree[SensorListener_firstFree]
		set SensorListener_typeId[this_1] = 1120
	endif
	return this_1
endfunction

function construct_EscaperSensorSetup takes integer this_1, real pos_x_1, real pos_y_1, real pos_z, player owner, integer unitId, real facing_radians, real radius, real sensorHeight returns nothing
	local integer temp = this_1
	local unit receiver = createUnit_2356(owner, unitId, pos_x_1, pos_y_1, pos_z, facing_radians)
	local integer clVar
	local integer temp_1
	local integer temp_2
	call unit_addAbility(receiver, Basics_LOCUST_ID)
	call construct_SetupObject(temp, receiver, createUnit_2356(owner, unitId, pos_x_1, pos_y_1, pos_z, facing_radians), radius)
	call EscaperSensorSetup_init(this_1)
	set EscaperSensorSetup_sensorHeight[this_1] = sensorHeight
	set temp_1 = this_1
	set temp_2 = this_1
	set clVar = alloc_SensorListener_addSensorListener_EscaperSensorSetup_EscaperSensor()
	call construct_SensorListener(clVar)
	set this_2977[clVar] = this_1
	call dispatch_EscaperSensorSetup_EscaperSensor_EscaperSensorSetup_Sensor_addSensorListener(temp_1, temp_2, clVar)
endfunction

function colorA_toColorString takes integer this_red, integer this_green, integer this_blue, integer this_alpha returns string
	return "|c" + toHex(this_alpha) + toHex(this_red) + toHex(this_green) + toHex(this_blue)
endfunction

function CustomBar_setValue takes integer this_1, real wval returns nothing
	local real newval = wval
	local integer chars
	if newval > 100. then
		set newval = 100.
	elseif newval < 0. then
		set newval = 0.
	endif
	set CustomBar_value[this_1] = newval / 100.
	set CustomBar_txt[this_1] = colorA_toColorString(CustomBar_fg_color_red[this_1], CustomBar_fg_color_green[this_1], CustomBar_fg_color_blue[this_1], CustomBar_fg_color_alpha[this_1])
	set chars = R2I(CustomBar_value[this_1] * CustomBar_NUM_CHARS[this_1] * string_length(CustomBar_char[this_1]) + 0.5) / string_length(CustomBar_char[this_1]) * string_length(CustomBar_char[this_1])
	set CustomBar_txt[this_1] = CustomBar_txt[this_1] + string_substring(CustomBar_ptext[this_1], 0, chars)
	set CustomBar_txt[this_1] = CustomBar_txt[this_1] + "|r"
	set CustomBar_txt[this_1] = CustomBar_txt[this_1] + string_substring(CustomBar_ptext[this_1], 0, string_length(CustomBar_ptext[this_1]) - chars)
	if CustomBar_t[this_1] != null then
		call texttag_setText(CustomBar_t[this_1], CustomBar_txt[this_1], CustomBar_textsize[this_1])
	endif
endfunction

function dispatch_CustomBar_CustomBar_CustomBar_setValue takes integer this_1, real wval returns nothing
	if CustomBar_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling CustomBar.setValue")
		else
			call error("Called CustomBar.setValue on invalid object.")
		endif
	endif
	call CustomBar_setValue(this_1, wval)
endfunction

function CustomBar_setForeground takes integer this_1, integer col_red, integer col_green, integer col_blue, integer col_alpha returns nothing
	local integer tuple_temp = col_red
	local integer tuple_temp_1 = col_green
	local integer tuple_temp_2 = col_blue
	local integer tuple_temp_3 = col_alpha
	set CustomBar_fg_color_red[this_1] = tuple_temp
	set CustomBar_fg_color_green[this_1] = tuple_temp_1
	set CustomBar_fg_color_blue[this_1] = tuple_temp_2
	set CustomBar_fg_color_alpha[this_1] = tuple_temp_3
	call dispatch_CustomBar_CustomBar_CustomBar_setValue(this_1, CustomBar_value[this_1])
endfunction

function dispatch_CustomBar_CustomBar_CustomBar_setForeground takes integer this_1, integer col_red, integer col_green, integer col_blue, integer col_alpha returns nothing
	if CustomBar_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling CustomBar.setForeground")
		else
			call error("Called CustomBar.setForeground on invalid object.")
		endif
	endif
	call CustomBar_setForeground(this_1, col_red, col_green, col_blue, col_alpha)
endfunction

function RegionData_getEscapers takes integer this_1 returns integer
	return dispatch_LinkedList_LinkedList_LinkedList_staticItr(RegionData_escapers[this_1])
endfunction

function dispatch_RegionData_RegionData_RegionData_getEscapers takes integer this_1 returns integer
	local integer RegionData_RegionData_getEscapers_result
	if RegionData_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling RegionData.getEscapers")
		else
			call error("Called RegionData.getEscapers on invalid object.")
		endif
	endif
	set RegionData_RegionData_getEscapers_result = RegionData_getEscapers(this_1)
	return RegionData_RegionData_getEscapers_result
endfunction

function unit_issuePointOrder takes unit this_1, string order, real target_x, real target_y returns boolean
	return IssuePointOrder(this_1, order, target_x, target_y)
endfunction

function vec2_distanceTo takes real this_x, real this_y, real v_x, real v_y returns real
	return SquareRoot(real_squared(v_x - this_x) + real_squared(v_y - this_y))
endfunction

function Minion_selectTarget takes integer this_1 returns nothing
	local real closestDist
	local integer escaper
	local integer from
	local real dist
	set Minion_target[this_1] = 0
	set closestDist =  - 1.
	set from = dispatch_RegionData_RegionData_RegionData_getEscapers(Entity_getCurrentRegion(this_1))
	loop
		exitwhen  not LLIterator_hasNext(from)
		set escaper = LLIterator_next(from)
		set dist = vec2_distanceTo(vec3_toVec2(Entity_pos_x[escaper], Entity_pos_y[escaper], Entity_pos_z[escaper]), vec3_toVec2_return_y, Minion_spawnPoint_x[this_1], Minion_spawnPoint_y[this_1])
		if Escaper_alive[escaper] and dist < Minion_FOLLOW_RANGE then
			if closestDist == ( - 1.) or dist < closestDist then
				set closestDist = dist
				set Minion_target[this_1] = escaper
			endif
		endif
	endloop
	if  not (Minion_target[this_1] == 0) then
		set Minion_state[this_1] = 1
		call flashEffect(Abilities_spellBreakerAttack, Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1])
		call unit_issuePointOrder(SetupObject_setup[this_1], "move", vec3_toVec2(Entity_pos_x[Minion_target[this_1]], Entity_pos_y[Minion_target[this_1]], Entity_pos_z[Minion_target[this_1]]), vec3_toVec2_return_y)
	endif
endfunction

function dispatch_Minion_Minion_Minion_selectTarget takes integer this_1 returns nothing
	if Serializable_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling Minion.selectTarget")
		else
			call error("Called Minion.selectTarget on invalid object.")
		endif
	endif
	call Minion_selectTarget(this_1)
endfunction

function alloc_CustomBar takes nothing returns integer
	local integer this_1
	if CustomBar_firstFree == 0 then
		if CustomBar_maxIndex < JASS_MAX_ARRAY_SIZE then
			set CustomBar_maxIndex = CustomBar_maxIndex + 1
			set this_1 = CustomBar_maxIndex
			set CustomBar_typeId[this_1] = 732
		else
			call error("Out of memory: Could not create CustomBar.")
			set this_1 = 0
		endif
	else
		set CustomBar_firstFree = CustomBar_firstFree - 1
		set this_1 = CustomBar_nextFree[CustomBar_firstFree]
		set CustomBar_typeId[this_1] = 732
	endif
	return this_1
endfunction

function CustomBar_init takes integer this_1 returns nothing
endfunction

function CustomBar_rebuildText takes integer this_1 returns nothing
	local integer i
	local integer temp
	set CustomBar_ptext[this_1] = ""
	set i = 0
	set temp = CustomBar_NUM_CHARS[this_1]
	loop
		exitwhen i > temp
		set CustomBar_ptext[this_1] = CustomBar_ptext[this_1] + CustomBar_char[this_1]
		set i = i + 1
	endloop
endfunction

function dispatch_CustomBar_CustomBar_CustomBar_rebuildText takes integer this_1 returns nothing
	if CustomBar_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling CustomBar.rebuildText")
		else
			call error("Called CustomBar.rebuildText on invalid object.")
		endif
	endif
	call CustomBar_rebuildText(this_1)
endfunction

function CustomBar_setChar takes integer this_1, string newStr returns nothing
	local string newString = newStr
	if newString == "|" then
		set newString = "||"
	endif
	set CustomBar_char[this_1] = newString
	call dispatch_CustomBar_CustomBar_CustomBar_rebuildText(this_1)
	call dispatch_CustomBar_CustomBar_CustomBar_setValue(this_1, CustomBar_value[this_1])
endfunction

function dispatch_CustomBar_CustomBar_CustomBar_setChar takes integer this_1, string newStr returns nothing
	if CustomBar_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling CustomBar.setChar")
		else
			call error("Called CustomBar.setChar on invalid object.")
		endif
	endif
	call CustomBar_setChar(this_1, newStr)
endfunction

function makeColor takes integer colo returns integer
	local integer col = colo
	local integer a
	local integer r
	local integer g
	local integer b
	if col < 0 then
		set col =  - (( - col) + -2147483648)
		set a = 128 + col / 16777216
		set col = col - (a - 128) * 16777216
	else
		set a = col / 16777216
		set col = col - a * 16777216
	endif
	set r = col / 65536
	set col = col - r * 65536
	set g = col / 256
	set b = col - g * 256
	set makeColor_return_red = r
	set makeColor_return_green = g
	set makeColor_return_blue = b
	set makeColor_return_alpha = a
	return makeColor_return_red
endfunction

function texttag_setColor takes texttag this_1, integer r, integer g, integer b, integer a returns nothing
	call SetTextTagColor(this_1, r, g, b, a)
endfunction

function texttag_setSuspended takes texttag this_1, boolean flag returns nothing
	call SetTextTagSuspended(this_1, flag)
endfunction

function construct_CustomBar takes integer this_1, real pos_x_1, real pos_y_1, real pos_z, string char_1, integer numochars, real size returns nothing
	local texttag receiver
	local texttag receiver_1
	local texttag receiver_2
	local texttag receiver_3
	local texttag receiver_4
	local texttag receiver_5
	local texttag receiver_6
	local texttag receiver_7
	local real tuple_temp
	local real tuple_temp_1
	local real tuple_temp_2
	local integer tuple_temp_3
	local integer tuple_temp_4
	local integer tuple_temp_5
	local integer tuple_temp_6
	local integer tuple_temp_7
	local integer tuple_temp_8
	local integer tuple_temp_9
	local integer tuple_temp_10
	call CustomBar_init(this_1)
	set CustomBar_t[this_1] = CreateTextTag()
	if CustomBar_t[this_1] == null then
		call error("TTBARS: TextTag limit reached!")
	endif
	set tuple_temp = pos_x_1
	set tuple_temp_1 = pos_y_1
	set tuple_temp_2 = pos_z
	set CustomBar_position_x[this_1] = tuple_temp
	set CustomBar_position_y[this_1] = tuple_temp_1
	set CustomBar_position_z[this_1] = tuple_temp_2
	set tuple_temp_3 = makeColor(CustomBar_DEFAULT_BACKGROUND)
	set tuple_temp_4 = makeColor_return_green
	set tuple_temp_5 = makeColor_return_blue
	set tuple_temp_6 = makeColor_return_alpha
	set CustomBar_bg_color_red[this_1] = tuple_temp_3
	set CustomBar_bg_color_green[this_1] = tuple_temp_4
	set CustomBar_bg_color_blue[this_1] = tuple_temp_5
	set CustomBar_bg_color_alpha[this_1] = tuple_temp_6
	set CustomBar_textsize[this_1] = size
	set tuple_temp_7 = makeColor(CustomBar_DEFAULT_FOREGROUND)
	set tuple_temp_8 = makeColor_return_green
	set tuple_temp_9 = makeColor_return_blue
	set tuple_temp_10 = makeColor_return_alpha
	set CustomBar_fg_color_red[this_1] = tuple_temp_7
	set CustomBar_fg_color_green[this_1] = tuple_temp_8
	set CustomBar_fg_color_blue[this_1] = tuple_temp_9
	set CustomBar_fg_color_alpha[this_1] = tuple_temp_10
	set CustomBar_NUM_CHARS[this_1] = numochars
	call dispatch_CustomBar_CustomBar_CustomBar_setChar(this_1, char_1)
	set CustomBar_locked[this_1] = false
	call dispatch_CustomBar_CustomBar_CustomBar_setValue(this_1, .0)
	if CustomBar_t[this_1] != null then
		set receiver = CustomBar_t[this_1]
		call texttag_setAge(receiver, 0.)
		set receiver_1 = receiver
		call texttag_setColor(receiver_1, CustomBar_bg_color_red[this_1], CustomBar_bg_color_green[this_1], CustomBar_bg_color_blue[this_1], CustomBar_bg_color_alpha[this_1])
		set receiver_2 = receiver_1
		call texttag_setFadepoint(receiver_2, 0.)
		set receiver_3 = receiver_2
		call texttag_setLifespan(receiver_3, 0.)
		set receiver_4 = receiver_3
		call texttag_setPermanent(receiver_4, true)
		set receiver_5 = receiver_4
		call texttag_setPos(receiver_5, CustomBar_position_x[this_1], CustomBar_position_y[this_1], CustomBar_position_z[this_1])
		set receiver_6 = receiver_5
		call texttag_setSuspended(receiver_6, false)
		set receiver_7 = receiver_6
		call texttag_setText(receiver_7, CustomBar_txt[this_1], CustomBar_textsize[this_1])
	endif
	call dispatch_CustomBar_CustomBar_CustomBar_rebuildText(this_1)
endfunction

function new_CustomBar takes real pos_x_1, real pos_y_1, real pos_z, string char_1, integer numochars, real size returns integer
	local integer this_1 = alloc_CustomBar()
	call construct_CustomBar(this_1, pos_x_1, pos_y_1, pos_z, char_1, numochars, size)
	return this_1
endfunction

function Minion_setup takes integer this_1 returns nothing
	local integer receiver
	local real tuple_temp
	local real tuple_temp_1
	call dispatch_Minion_Minion_Minion_selectTarget(this_1)
	set Entity_sleeps[this_1] = false
	set tuple_temp = vec3_toVec2(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1])
	set tuple_temp_1 = vec3_toVec2_return_y
	set Minion_spawnPoint_x[this_1] = tuple_temp
	set Minion_spawnPoint_y[this_1] = tuple_temp_1
	set receiver = new_CustomBar(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1], "|", 40, 6.)
	call dispatch_CustomBar_CustomBar_CustomBar_setForeground(receiver, 200, 255, 125, 255)
	set Minion_hpBar[this_1] = receiver
endfunction

function dispatch_Minion_Minion_Minion_setup takes integer this_1 returns nothing
	if Serializable_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling Minion.setup")
		else
			call error("Called Minion.setup on invalid object.")
		endif
	endif
	call Minion_setup(this_1)
endfunction

function construct_Minion takes integer this_1, real pos_x_1, real pos_y_1, player owner, real facing_radians returns nothing
	local integer temp = this_1
	local real tuple_temp = vec2_toVec3(pos_x_1, pos_y_1)
	local real tuple_temp_1 = vec2_toVec3_return_y
	local real tuple_temp_2 = vec2_toVec3_return_z
	local real temp_x = tuple_temp
	local real temp_y = tuple_temp_1
	local real temp_z = tuple_temp_2
	local player temp_1 = owner
	local integer temp_tuple_minionId
	local integer tuple_temp_3
	call dispatch_RegionData_RegionData_RegionData_getTypeSet(getRegionData_3304(pos_x_1, pos_y_1))
	set tuple_temp_3 = dispatch_RegionData_RegionData_RegionData_getTypeSet_return_minionId
	set temp_tuple_minionId = tuple_temp_3
	call construct_EscaperSensorSetup(temp, temp_x, temp_y, temp_z, temp_1, temp_tuple_minionId, facing_radians, Minion_COLL_SIZE_MINION, Minion_COLL_SIZE_MINION + 16.)
	call Minion_init(this_1)
	call dispatch_Minion_Minion_Minion_setup(this_1)
endfunction

function new_Minion takes real pos_x_1, real pos_y_1, player owner, real facing_radians returns integer
	local integer this_1 = alloc_Minion()
	call construct_Minion(this_1, pos_x_1, pos_y_1, owner, facing_radians)
	return this_1
endfunction

function unit_getFacingAngle takes unit this_1 returns real
	set unit_getFacingAngle_return_radians = real_asAngleDegrees(GetUnitFacing(this_1))
	return unit_getFacingAngle_return_radians
endfunction

function Boss_onCast takes integer this_1 returns nothing
	local integer id = GetSpellAbilityId()
	local integer temp
	local integer bighp
	local integer smallhp
	local integer bighp_1
	local integer smallhp_1
	local integer tgts
	local integer iterator
	local integer target
	local integer tgts_1
	local integer iterator_1
	local integer target_1
	call unit_setAnimation(UnitEntity_actor[this_1], "spell")
	set temp = id
	if temp == Boss_HP_UP_ID then
		set bighp = GetUnitAbilityLevel(UnitEntity_actor[this_1], Boss_REAL_HP_BIG_ID)
		set smallhp = GetUnitAbilityLevel(UnitEntity_actor[this_1], Boss_REAL_HP_SMALL_ID)
		if smallhp == 4 then
			if bighp < 4 then
				if bighp == 0 then
					call unit_addAbility(UnitEntity_actor[this_1], Boss_REAL_HP_BIG_ID)
				else
					call SetUnitAbilityLevel(UnitEntity_actor[this_1], Boss_REAL_HP_BIG_ID, bighp + 1)
				endif
				call SetUnitAbilityLevel(UnitEntity_actor[this_1], Boss_REAL_HP_SMALL_ID, 0)
			else
				call createFText_2346(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1], 0., 0.05, "|cffC51019Max HP", 10., 2., 255, 255, 255, 0, Entity_owner[this_1])
			endif
		elseif smallhp == 0 then
			call unit_addAbility(UnitEntity_actor[this_1], Boss_REAL_HP_SMALL_ID)
		else
			call SetUnitAbilityLevel(UnitEntity_actor[this_1], Boss_REAL_HP_SMALL_ID, smallhp + 1)
		endif
	elseif temp == Boss_HP_DOWN_ID then
		set bighp_1 = GetUnitAbilityLevel(UnitEntity_actor[this_1], Boss_REAL_HP_BIG_ID)
		set smallhp_1 = GetUnitAbilityLevel(UnitEntity_actor[this_1], Boss_REAL_HP_SMALL_ID)
		if smallhp_1 == 0 then
			if bighp_1 > 0 then
				call SetUnitAbilityLevel(UnitEntity_actor[this_1], Boss_REAL_HP_BIG_ID, bighp_1 - 1)
				call SetUnitAbilityLevel(UnitEntity_actor[this_1], Boss_REAL_HP_SMALL_ID, 4)
			else
				call createFText_2346(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1], 0., 0.05, "|cffC51019Min HP", 10., 2., 255, 255, 255, 0, Entity_owner[this_1])
			endif
		else
			call SetUnitAbilityLevel(UnitEntity_actor[this_1], Boss_REAL_HP_SMALL_ID, smallhp_1 - 1)
		endif
	elseif temp == Boss_AOE_SPELL_ID then
		set tgts = dispatch_Boss_Boss_Boss_getSpellTargets(this_1, 1)
		set iterator = LinkedList_iterator(tgts)
		loop
			exitwhen  not LLIterator_hasNext(iterator)
			set target = LLIterator_next(iterator)
			call dispatch_SpellTarget_BossSpellTarget_SpellTarget_castAoe(target)
		endloop
		call LLIterator_close(iterator)
		call dispatch_LinkedList_destroyLinkedList(tgts)
	elseif temp == Boss_MISSILE_SPELL_ID then
		set tgts_1 = dispatch_Boss_Boss_Boss_getSpellTargets(this_1, 3)
		set iterator_1 = LinkedList_iterator(tgts_1)
		loop
			exitwhen  not LLIterator_hasNext(iterator_1)
			set target_1 = LLIterator_next(iterator_1)
			call new_BossMissile(UnitEntity_actor[this_1], target_1)
		endloop
		call LLIterator_close(iterator_1)
		call dispatch_LinkedList_destroyLinkedList(tgts_1)
	elseif temp == Boss_SUMMON_MINION_ID then
		call new_Minion(vec3_toVec2(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1]), vec3_toVec2_return_y, Entity_owner[this_1], unit_getFacingAngle(UnitEntity_actor[this_1]))
		call dispatch_SoundDefinition_SoundUtils_SoundDefinition_playOnPoint(Boss_MINION_SPAWN_SOUND, Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1])
	elseif temp == Boss_REVIVE_ID then
		call dispatch_Boss_Boss_Boss_revive(this_1)
	endif
endfunction

function dispatch_Boss_Boss_Boss_onCast takes integer this_1 returns nothing
	if Serializable_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling Boss.onCast")
		else
			call error("Called Boss.onCast on invalid object.")
		endif
	endif
	call Boss_onCast(this_1)
endfunction

function onEvent_add_Boss_Boss takes integer this_1 returns nothing
	call dispatch_Boss_Boss_Boss_onCast(this_2912[this_1])
endfunction

function alloc_CallbackSingle_doAfter_add_Buff takes nothing returns integer
	local integer this_1
	if CallbackSingle_firstFree == 0 then
		if CallbackSingle_maxIndex < JASS_MAX_ARRAY_SIZE then
			set CallbackSingle_maxIndex = CallbackSingle_maxIndex + 1
			set this_1 = CallbackSingle_maxIndex
			set CallbackSingle_typeId[this_1] = 704
		else
			call error("Out of memory: Could not create CallbackSingle_doAfter_add_Buff.")
			set this_1 = 0
		endif
	else
		set CallbackSingle_firstFree = CallbackSingle_firstFree - 1
		set this_1 = CallbackSingle_nextFree[CallbackSingle_firstFree]
		set CallbackSingle_typeId[this_1] = 704
	endif
	return this_1
endfunction

function onEvent_add_Buff takes integer this_1 returns nothing
	local unit upg_1 = GetTriggerUnit()
	local integer clVar
	if unit_getIndex(upg_1) > 0 then
		set clVar = alloc_CallbackSingle_doAfter_add_Buff()
		call construct_CallbackSingle(clVar)
		set upg[clVar] = upg_1
		call doAfter(0.01, clVar)
	endif
endfunction

function unit_clearBuffs takes unit this_1 returns nothing
	local integer buffs = unit_getBuffs(this_1)
	local integer iterator
	local integer bff
	if buffs != 0 then
		set iterator = LinkedList_iterator(buffs)
		loop
			exitwhen  not LLIterator_hasNext(iterator)
			set bff = LLIterator_next(iterator)
			call cyc_NormalBuff_onDestroy(8, bff, null, 0)
		endloop
		call LLIterator_close(iterator)
		call dispatch_LinkedList_destroyLinkedList(buffs)
		set Buff_buffMap[unit_getIndex(this_1)] = 0
	endif
endfunction

function onEvent_add_Buff_3815 takes integer this_1 returns nothing
	local unit u_1 = GetTriggerUnit()
	call unit_clearBuffs(u_1)
endfunction

function alloc_CallbackSingle_doAfter_Builder_Builder takes nothing returns integer
	local integer this_1
	if CallbackSingle_firstFree == 0 then
		if CallbackSingle_maxIndex < JASS_MAX_ARRAY_SIZE then
			set CallbackSingle_maxIndex = CallbackSingle_maxIndex + 1
			set this_1 = CallbackSingle_maxIndex
			set CallbackSingle_typeId[this_1] = 675
		else
			call error("Out of memory: Could not create CallbackSingle_doAfter_Builder_Builder.")
			set this_1 = 0
		endif
	else
		set CallbackSingle_firstFree = CallbackSingle_firstFree - 1
		set this_1 = CallbackSingle_nextFree[CallbackSingle_firstFree]
		set CallbackSingle_typeId[this_1] = 675
	endif
	return this_1
endfunction

function isOrderBuildOrder takes integer o returns boolean
	local integer i = 1
	local integer i2
	loop
		exitwhen  not (InstantBuild_buildorders[i] != 0)
		if InstantBuild_buildorders[i] == o then
			return true
		endif
		set i = i + 1
	endloop
	set i2 = 139
	loop
		exitwhen i2 > 152
		if o == InstantBuild_buildorders[i2] then
			return true
		endif
		set i2 = i2 + 1
	endloop
	return false
endfunction

function Builder_onOrder takes integer this_1 returns nothing
	local item i = GetOrderTargetItem()
	local unit u_1 = GetOrderTargetUnit()
	local real tuple_temp = EventData_getOrderPos()
	local real tuple_temp_1 = EventData_getOrderPos_return_y
	local real orderPos_x_1 = tuple_temp
	local real orderPos_y_1 = tuple_temp_1
	local integer rdata
	local integer orderId_1
	local integer clVar
	local real tuple_temp_2
	local real tuple_temp_3
	local real tuple_temp_4
	local real tuple_temp_5
	local real tuple_temp_6
	local real tuple_temp_7
	if i != null then
		set tuple_temp_2 = item_getPos(i)
		set tuple_temp_3 = item_getPos_return_y
		set orderPos_x_1 = tuple_temp_2
		set orderPos_y_1 = tuple_temp_3
	elseif u_1 != null then
		set tuple_temp_4 = unit_getPos(u_1)
		set tuple_temp_5 = unit_getPos_return_y
		set orderPos_x_1 = tuple_temp_4
		set orderPos_y_1 = tuple_temp_5
	endif
	set rdata = getRegionData_3304(orderPos_x_1, orderPos_y_1)
	if rdata != RegionData_EMPTY_REGION and (dispatch_RegionData_RegionData_RegionData_getTypeSet(rdata) == RegionType_getTypeSet(0) and dispatch_RegionData_RegionData_RegionData_getTypeSet_return_walkableId == RegionType_getTypeSet_return_walkableId and dispatch_RegionData_RegionData_RegionData_getTypeSet_return_unwalkableId == RegionType_getTypeSet_return_unwalkableId and dispatch_RegionData_RegionData_RegionData_getTypeSet_return_smallKillerId == RegionType_getTypeSet_return_smallKillerId and dispatch_RegionData_RegionData_RegionData_getTypeSet_return_bigKillerId == RegionType_getTypeSet_return_bigKillerId and dispatch_RegionData_RegionData_RegionData_getTypeSet_return_treeId == RegionType_getTypeSet_return_treeId and dispatch_RegionData_RegionData_RegionData_getTypeSet_return_smallObstacleId == RegionType_getTypeSet_return_smallObstacleId and dispatch_RegionData_RegionData_RegionData_getTypeSet_return_bigObstacleId == RegionType_getTypeSet_return_bigObstacleId and dispatch_RegionData_RegionData_RegionData_getTypeSet_return_bossId == RegionType_getTypeSet_return_bossId and dispatch_RegionData_RegionData_RegionData_getTypeSet_return_minionId == RegionType_getTypeSet_return_minionId and dispatch_RegionData_RegionData_RegionData_getTypeSet_return_highObstacleId == RegionType_getTypeSet_return_highObstacleId) or dispatch_RegionData_RegionData_RegionData_canBuild(rdata, Entity_owner[this_1]) or RegionData_theRect[rdata] == gg_rct_Start then
		if i != null and dispatch_RegionData_RegionData_RegionData_canBuild(rdata, Entity_owner[this_1]) then
			if item_getEntity(i) != 0 then
				call Log_debug("Builder Terminate")
				call cyc_RevivePoint_terminate(18, item_getEntity(i))
			else
				call RemoveItem(i)
			endif
			call unit_abortOrder(UnitEntity_actor[this_1])
		else
			set orderId_1 = GetIssuedOrderId()
			if isOrderBuildOrder(orderId_1) then
				set clVar = alloc_CallbackSingle_doAfter_Builder_Builder()
				call construct_CallbackSingle(clVar)
				set this_2924[clVar] = this_1
				set tuple_temp_6 = orderPos_x_1
				set tuple_temp_7 = orderPos_y_1
				set orderPos_x[clVar] = tuple_temp_6
				set orderPos_y[clVar] = tuple_temp_7
				set orderId[clVar] = orderId_1
				call doAfter(0.01, clVar)
				call unit_abortOrder(UnitEntity_actor[this_1])
			elseif OrderId2String(orderId_1) == "smart" or OrderId2String(orderId_1) == "move" then
				call dispatch_UnitEntity_Entity_UnitEntity_setPos(this_1, vec2_toVec3(orderPos_x_1, orderPos_y_1), vec2_toVec3_return_y, vec2_toVec3_return_z)
			endif
		endif
	else
		call unit_abortOrder(UnitEntity_actor[this_1])
	endif
endfunction

function dispatch_Builder_Builder_Builder_onOrder takes integer this_1 returns nothing
	if Serializable_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling Builder.onOrder")
		else
			call error("Called Builder.onOrder on invalid object.")
		endif
	endif
	call Builder_onOrder(this_1)
endfunction

function onEvent_add_Builder_Builder takes integer this_1 returns nothing
	call dispatch_Builder_Builder_Builder_onOrder(this_2921[this_1])
endfunction

function onEvent_add_Builder_Builder_3817 takes integer this_1 returns nothing
	call dispatch_Builder_Builder_Builder_onOrder(this_2922[this_1])
endfunction

function alloc_CallbackSingle_doAfter_JukeBox_JukeBox takes nothing returns integer
	local integer this_1
	if CallbackSingle_firstFree == 0 then
		if CallbackSingle_maxIndex < JASS_MAX_ARRAY_SIZE then
			set CallbackSingle_maxIndex = CallbackSingle_maxIndex + 1
			set this_1 = CallbackSingle_maxIndex
			set CallbackSingle_typeId[this_1] = 690
		else
			call error("Out of memory: Could not create CallbackSingle_doAfter_JukeBox_JukeBox.")
			set this_1 = 0
		endif
	else
		set CallbackSingle_firstFree = CallbackSingle_firstFree - 1
		set this_1 = CallbackSingle_nextFree[CallbackSingle_firstFree]
		set CallbackSingle_typeId[this_1] = 690
	endif
	return this_1
endfunction

function JukeRequest_onDestroy takes integer this_1 returns nothing
endfunction

function dealloc_JukeRequest takes integer obj_1 returns nothing
	if JukeRequest_typeId[obj_1] == 0 then
		call error("Double free: object of type JukeRequest")
	else
		set JukeRequest_nextFree[JukeRequest_firstFree] = obj_1
		set JukeRequest_firstFree = JukeRequest_firstFree + 1
		set JukeRequest_typeId[obj_1] = 0
	endif
endfunction

function destroyJukeRequest takes integer this_1 returns nothing
	call JukeRequest_onDestroy(this_1)
	call dealloc_JukeRequest(this_1)
endfunction

function dispatch_JukeRequest_destroyJukeRequest takes integer this_1 returns nothing
	if JukeRequest_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling JukeRequest.JukeRequest")
		else
			call error("Called JukeRequest.JukeRequest on invalid object.")
		endif
	endif
	call destroyJukeRequest(this_1)
endfunction

function LinkedList_addAll takes integer this_1, integer elems returns nothing
	local integer iterator = LinkedList_iterator(elems)
	local integer elem
	loop
		exitwhen  not LLIterator_hasNext(iterator)
		set elem = LLIterator_next(iterator)
		call dispatch_LinkedList_LinkedList_LinkedList_add_1(this_1, elem)
	endloop
	call LLIterator_close(iterator)
endfunction

function dispatch_LinkedList_LinkedList_LinkedList_addAll takes integer this_1, integer elems returns nothing
	if LinkedList_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling LinkedList.addAll")
		else
			call error("Called LinkedList.addAll on invalid object.")
		endif
	endif
	call LinkedList_addAll(this_1, elems)
endfunction

function dispatch_LLIterator_LinkedList_LLIterator_hasNext takes integer this_1 returns boolean
	local boolean LinkedList_LLIterator_hasNext_result
	if LLIterator_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling LLIterator.hasNext")
		else
			call error("Called LLIterator.hasNext on invalid object.")
		endif
	endif
	set LinkedList_LLIterator_hasNext_result = LLIterator_hasNext(this_1)
	return LinkedList_LLIterator_hasNext_result
endfunction

function dispatch_LLIterator_LinkedList_LLIterator_next takes integer this_1 returns integer
	local integer LinkedList_LLIterator_next_result
	if LLIterator_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling LLIterator.next")
		else
			call error("Called LLIterator.next on invalid object.")
		endif
	endif
	set LinkedList_LLIterator_next_result = LLIterator_next(this_1)
	return LinkedList_LLIterator_next_result
endfunction

function LinkedList_shuffle takes integer this_1 returns nothing
	local integer n = dispatch_LinkedList_LinkedList_LinkedList_size(this_1)
	local integer i0 = 0
	local integer itr_1 = dispatch_LinkedList_LinkedList_LinkedList_iterator(this_1)
	local integer array w_a
	local integer i
	local integer j
	local integer tmp
	local integer i_1
	local integer temp
	loop
		exitwhen  not dispatch_LLIterator_LinkedList_LLIterator_hasNext(itr_1)
		call dispatch_LLIterator_LinkedList_LLIterator_next(itr_1)
		set w_a[i0] = dispatch_LLIterator_LinkedList_LLIterator_remove(itr_1)
		set i0 = i0 + 1
	endloop
	set i = n - 1
	loop
		exitwhen i < 1
		set j = GetRandomInt(0, i)
		set tmp = w_a[i]
		set w_a[i] = w_a[j]
		set w_a[j] = tmp
		set i = i - 1
	endloop
	set i_1 = 0
	set temp = n - 1
	loop
		exitwhen i_1 > temp
		call dispatch_LinkedList_LinkedList_LinkedList_add_1(this_1, w_a[i_1])
		set i_1 = i_1 + 1
	endloop
	call dispatch_LLIterator_LinkedList_LLIterator_close(itr_1)
endfunction

function dispatch_LinkedList_LinkedList_LinkedList_shuffle takes integer this_1 returns nothing
	if LinkedList_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling LinkedList.shuffle")
		else
			call error("Called LinkedList.shuffle on invalid object.")
		endif
	endif
	call LinkedList_shuffle(this_1)
endfunction

function Music_play takes integer this_1 returns integer
	call PlayThematicMusic(Music_path[this_1])
	return this_1
endfunction

function dispatch_Music_JukeBox_Music_play takes integer this_1 returns integer
	local integer JukeBox_Music_play_result
	if Music_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling Music.play")
		else
			call error("Called Music.play on invalid object.")
		endif
	endif
	set JukeBox_Music_play_result = Music_play(this_1)
	return JukeBox_Music_play_result
endfunction

function JukeBox_playNextMusic takes integer this_1 returns nothing
	local integer req
	local integer clVar
	local real temp
	call StopMusic(false)
	if dispatch_LinkedList_LinkedList_LinkedList_size(JukeBox_requests[this_1]) > 0 then
		set JukeBox_lastWasRequest[this_1] = true
		set req = dispatch_LinkedList_LinkedList_LinkedList_pop(JukeBox_requests[this_1])
		set JukeBox_currentMusic[this_1] = dispatch_Music_JukeBox_Music_play(JukeRequest_music[req])
		call printTimed("Jukebox: Playing |cff84DE52" + Music_name[JukeBox_currentMusic[this_1]] + "|r as requested by " + player_getNameColored_3918(JukeRequest_juker[req]), 10.)
		call dispatch_JukeRequest_destroyJukeRequest(req)
	else
		set JukeBox_lastWasRequest[this_1] = false
		if dispatch_LinkedList_LinkedList_LinkedList_size(JukeBox_randomQueue[this_1]) == 0 then
			call dispatch_LinkedList_LinkedList_LinkedList_addAll(JukeBox_randomQueue[this_1], JukeBox_musics)
			call dispatch_LinkedList_LinkedList_LinkedList_shuffle(JukeBox_randomQueue[this_1])
		endif
		set JukeBox_currentMusic[this_1] = dispatch_Music_JukeBox_Music_play(dispatch_LinkedList_LinkedList_LinkedList_pop(JukeBox_randomQueue[this_1]))
		call printTimed("Jukebox: Playing |cff84DE52" + Music_name[JukeBox_currentMusic[this_1]] + "|r", 10.)
	endif
	if JukeBox_cb[this_1] != 0 then
		call dispatch_CallbackSingle_destroyCallbackSingle(JukeBox_cb[this_1])
	endif
	set temp = Music_duration[JukeBox_currentMusic[this_1]] + 1.
	set clVar = alloc_CallbackSingle_doAfter_JukeBox_JukeBox()
	call construct_CallbackSingle(clVar)
	set this_2925[clVar] = this_1
	set JukeBox_cb[this_1] = doAfter(temp, clVar)
endfunction

function dispatch_JukeBox_JukeBox_JukeBox_playNextMusic takes integer this_1 returns nothing
	if JukeBox_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling JukeBox.playNextMusic")
		else
			call error("Called JukeBox.playNextMusic on invalid object.")
		endif
	endif
	call JukeBox_playNextMusic(this_1)
endfunction

function alloc_JukeRequest takes nothing returns integer
	local integer this_1
	if JukeRequest_firstFree == 0 then
		if JukeRequest_maxIndex < JASS_MAX_ARRAY_SIZE then
			set JukeRequest_maxIndex = JukeRequest_maxIndex + 1
			set this_1 = JukeRequest_maxIndex
			set JukeRequest_typeId[this_1] = 985
		else
			call error("Out of memory: Could not create JukeRequest.")
			set this_1 = 0
		endif
	else
		set JukeRequest_firstFree = JukeRequest_firstFree - 1
		set this_1 = JukeRequest_nextFree[JukeRequest_firstFree]
		set JukeRequest_typeId[this_1] = 985
	endif
	return this_1
endfunction

function JukeRequest_init takes integer this_1 returns nothing
endfunction

function construct_JukeRequest takes integer this_1, player p, integer music returns nothing
	call JukeRequest_init(this_1)
	set JukeRequest_juker[this_1] = p
	set JukeRequest_music[this_1] = music
endfunction

function new_JukeRequest takes player p, integer music returns integer
	local integer this_1 = alloc_JukeRequest()
	call construct_JukeRequest(this_1, p, music)
	return this_1
endfunction

function JukeBox_checkSpell takes integer this_1, integer id returns nothing
	local integer iterator = LinkedList_iterator(JukeBox_musics)
	local integer music
	local player p
	local integer iterator_1
	local integer req
	loop
		exitwhen  not LLIterator_hasNext(iterator)
		set music = LLIterator_next(iterator)
		if Music_spellid[music] == id then
			set p = unit_getOwner(GetTriggerUnit())
			set iterator_1 = LinkedList_iterator(JukeBox_requests[this_1])
			loop
				exitwhen  not LLIterator_hasNext(iterator_1)
				set req = LLIterator_next(iterator_1)
				if JukeRequest_juker[req] == p then
					call printTimedToPlayer("You already have a track queued in the jukebox!", 10., p)
					call LLIterator_close(iterator_1)
					call LLIterator_close(iterator)
					return
				endif
			endloop
			call LLIterator_close(iterator_1)
			call printTimed("The Track |cff84DE52" + Music_name[music] + "|r has been requested by " + player_getNameColored_3918(p), 10.)
			call dispatch_LinkedList_LinkedList_LinkedList_add_1(JukeBox_requests[this_1], new_JukeRequest(p, music))
			if dispatch_LinkedList_LinkedList_LinkedList_size(JukeBox_requests[this_1]) == 1 and ( not JukeBox_lastWasRequest[this_1]) then
				call dispatch_JukeBox_JukeBox_JukeBox_playNextMusic(this_1)
			endif
			call LLIterator_close(iterator)
			return
		endif
	endloop
	call LLIterator_close(iterator)
endfunction

function dispatch_JukeBox_JukeBox_JukeBox_checkSpell takes integer this_1, integer id returns nothing
	if JukeBox_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling JukeBox.checkSpell")
		else
			call error("Called JukeBox.checkSpell on invalid object.")
		endif
	endif
	call JukeBox_checkSpell(this_1, id)
endfunction

function alloc_Boots takes nothing returns integer
	local integer this_1
	if Serializable_firstFree == 0 then
		if Serializable_maxIndex < JASS_MAX_ARRAY_SIZE then
			set Serializable_maxIndex = Serializable_maxIndex + 1
			set this_1 = Serializable_maxIndex
			set Serializable_typeId[this_1] = 1155
		else
			call error("Out of memory: Could not create Boots.")
			set this_1 = 0
		endif
	else
		set Serializable_firstFree = Serializable_firstFree - 1
		set this_1 = Serializable_nextFree[Serializable_firstFree]
		set Serializable_typeId[this_1] = 1155
	endif
	return this_1
endfunction

function Boots_init takes integer this_1 returns nothing
endfunction

function construct_Boots takes integer this_1, real pos_x_1, real pos_y_1, player owner returns nothing
	call construct_ItemObject(this_1, pos_x_1, pos_y_1, CreateItem(BuilderConstants_BOOTS_ID, pos_x_1, pos_y_1), CreateUnit(owner, Boots_BOOTS_DUMMY_ID, pos_x_1, pos_y_1, 0.))
	call Boots_init(this_1)
endfunction

function new_Boots takes real pos_x_1, real pos_y_1, player owner returns integer
	local integer this_1 = alloc_Boots()
	call construct_Boots(this_1, pos_x_1, pos_y_1, owner)
	return this_1
endfunction

function alloc_Boss takes nothing returns integer
	local integer this_1
	if Serializable_firstFree == 0 then
		if Serializable_maxIndex < JASS_MAX_ARRAY_SIZE then
			set Serializable_maxIndex = Serializable_maxIndex + 1
			set this_1 = Serializable_maxIndex
			set Serializable_typeId[this_1] = 1173
		else
			call error("Out of memory: Could not create Boss.")
			set this_1 = 0
		endif
	else
		set Serializable_firstFree = Serializable_firstFree - 1
		set this_1 = Serializable_nextFree[Serializable_firstFree]
		set Serializable_typeId[this_1] = 1173
	endif
	return this_1
endfunction

function Boss_init takes integer this_1 returns nothing
	set Boss_maxHp[this_1] = 400.
	set Boss_currentHP[this_1] = 400.
endfunction

function alloc_EventListener_add_Boss_Boss takes nothing returns integer
	local integer this_1
	if EventListener_firstFree == 0 then
		if EventListener_maxIndex < JASS_MAX_ARRAY_SIZE then
			set EventListener_maxIndex = EventListener_maxIndex + 1
			set this_1 = EventListener_maxIndex
			set EventListener_typeId[this_1] = 765
		else
			call error("Out of memory: Could not create EventListener_add_Boss_Boss.")
			set this_1 = 0
		endif
	else
		set EventListener_firstFree = EventListener_firstFree - 1
		set this_1 = EventListener_nextFree[EventListener_firstFree]
		set EventListener_typeId[this_1] = 765
	endif
	return this_1
endfunction

function construct_Boss takes integer this_1, player owner, real tpos_x_1, real tpos_y_1, integer id returns nothing
	local integer temp = this_1
	local unit receiver = createUnit(owner, id, tpos_x_1, tpos_y_1, 0.)
	local unit receiver_1
	local integer clVar
	local unit temp_1
	local playerunitevent temp_2
	call unit_addAbility(receiver, Basics_LOCUST_ID)
	call construct_SetupObject(temp, receiver, createUnit(owner, id, tpos_x_1, tpos_y_1, 0.), 64.)
	call Boss_init(this_1)
	set receiver_1 = SetupObject_setup[this_1]
	call unit_addAbility(receiver_1, Boss_SUMMON_MINION_ID)
	set Entity_sleeps[this_1] = false
	set temp_1 = SetupObject_setup[this_1]
	set temp_2 = EVENT_PLAYER_UNIT_SPELL_CAST
	set clVar = alloc_EventListener_add_Boss_Boss()
	call construct_EventListener(clVar)
	set this_2912[clVar] = this_1
	call EventListener_add_436(temp_1, temp_2, clVar)
	set Boss_hpBar[this_1] = new_CustomBar(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1], "|", 120, 6.)
	call dispatch_CustomBar_CustomBar_CustomBar_setForeground(Boss_hpBar[this_1], 200, 255, 125, 255)
endfunction

function new_Boss takes player owner, real tpos_x_1, real tpos_y_1, integer id returns integer
	local integer this_1 = alloc_Boss()
	call construct_Boss(this_1, owner, tpos_x_1, tpos_y_1, id)
	return this_1
endfunction

function alloc_BossDamager takes nothing returns integer
	local integer this_1
	if Serializable_firstFree == 0 then
		if Serializable_maxIndex < JASS_MAX_ARRAY_SIZE then
			set Serializable_maxIndex = Serializable_maxIndex + 1
			set this_1 = Serializable_maxIndex
			set Serializable_typeId[this_1] = 1198
		else
			call error("Out of memory: Could not create BossDamager.")
			set this_1 = 0
		endif
	else
		set Serializable_firstFree = Serializable_firstFree - 1
		set this_1 = Serializable_nextFree[Serializable_firstFree]
		set Serializable_typeId[this_1] = 1198
	endif
	return this_1
endfunction

function BossDamager_init takes integer this_1 returns nothing
endfunction

function BossDamager_posToGrid takes real pos_x_1, real pos_y_1 returns real
	set BossDamager_posToGrid_return_x = real_round(pos_x_1 / 64.) * 64.
	set BossDamager_posToGrid_return_y = real_round(pos_y_1 / 64.) * 64.
	return BossDamager_posToGrid_return_x
endfunction

function alloc_EventListener_add_BossDamager_BossDamager takes nothing returns integer
	local integer this_1
	if EventListener_firstFree == 0 then
		if EventListener_maxIndex < JASS_MAX_ARRAY_SIZE then
			set EventListener_maxIndex = EventListener_maxIndex + 1
			set this_1 = EventListener_maxIndex
			set EventListener_typeId[this_1] = 764
		else
			call error("Out of memory: Could not create EventListener_add_BossDamager_BossDamager.")
			set this_1 = 0
		endif
	else
		set EventListener_firstFree = EventListener_firstFree - 1
		set this_1 = EventListener_nextFree[EventListener_firstFree]
		set EventListener_typeId[this_1] = 764
	endif
	return this_1
endfunction

function StaticBaseObject_init takes integer this_1 returns nothing
	local real tuple_temp
	set StaticBaseObject_noRally[this_1] = null
	set StaticBaseObject_disFx[this_1] = null
	set StaticBaseObject_enabled[this_1] = true
	set StaticBaseObject_rallyUnit[this_1] = null
	set tuple_temp = 0.
	set StaticBaseObject_rallyAngle_radians[this_1] = tuple_temp
endfunction

function addEffect takes string path, real pos_x_1, real pos_y_1 returns effect
	return AddSpecialEffect(path, pos_x_1, pos_y_1)
endfunction

function alloc_EventListener_add_StaticBaseObject_BaseObject takes nothing returns integer
	local integer this_1
	if EventListener_firstFree == 0 then
		if EventListener_maxIndex < JASS_MAX_ARRAY_SIZE then
			set EventListener_maxIndex = EventListener_maxIndex + 1
			set this_1 = EventListener_maxIndex
			set EventListener_typeId[this_1] = 818
		else
			call error("Out of memory: Could not create EventListener_add_StaticBaseObject_BaseObject.")
			set this_1 = 0
		endif
	else
		set EventListener_firstFree = EventListener_firstFree - 1
		set this_1 = EventListener_nextFree[EventListener_firstFree]
		set EventListener_typeId[this_1] = 818
	endif
	return this_1
endfunction

function alloc_EventListener_add_StaticBaseObject_BaseObject_1737 takes nothing returns integer
	local integer this_1
	if EventListener_firstFree == 0 then
		if EventListener_maxIndex < JASS_MAX_ARRAY_SIZE then
			set EventListener_maxIndex = EventListener_maxIndex + 1
			set this_1 = EventListener_maxIndex
			set EventListener_typeId[this_1] = 819
		else
			call error("Out of memory: Could not create EventListener_add_StaticBaseObject_BaseObject.")
			set this_1 = 0
		endif
	else
		set EventListener_firstFree = EventListener_firstFree - 1
		set this_1 = EventListener_nextFree[EventListener_firstFree]
		set EventListener_typeId[this_1] = 819
	endif
	return this_1
endfunction

function alloc_EventListener_add_StaticBaseObject_BaseObject_1738 takes nothing returns integer
	local integer this_1
	if EventListener_firstFree == 0 then
		if EventListener_maxIndex < JASS_MAX_ARRAY_SIZE then
			set EventListener_maxIndex = EventListener_maxIndex + 1
			set this_1 = EventListener_maxIndex
			set EventListener_typeId[this_1] = 820
		else
			call error("Out of memory: Could not create EventListener_add_StaticBaseObject_BaseObject.")
			set this_1 = 0
		endif
	else
		set EventListener_firstFree = EventListener_firstFree - 1
		set this_1 = EventListener_nextFree[EventListener_firstFree]
		set EventListener_typeId[this_1] = 820
	endif
	return this_1
endfunction

function construct_StaticBaseObject takes integer this_1, real pos_x_1, real pos_y_1, unit actor, real radius, code action_1, code cond returns nothing
	local unit receiver
	local unit receiver_1
	local integer clVar
	local integer clVar_1
	local integer clVar_2
	local unit temp
	local playerunitevent temp_1
	local unit temp_2
	local playerunitevent temp_3
	local unit temp_4
	local playerunitevent temp_5
	local real tuple_temp
	local real tuple_temp_1
	local real tuple_temp_2
	call construct_UnitEntity(this_1, actor)
	call StaticBaseObject_init(this_1)
	set receiver = actor
	call unit_addAbility(receiver, Basics_GHOST_VIS_ID)
	set receiver_1 = receiver
	call unit_addAbility(receiver_1, BuilderConstants_REMOVE_OBJECT_ID)
	call Entity_setCurrentRegion(this_1)
	set StaticBaseObject_noRally[this_1] = addEffect(Objects_questionMark1, pos_x_1, pos_y_1)
	set tuple_temp = Entity_pos_x[this_1]
	set tuple_temp_1 = Entity_pos_y[this_1]
	set tuple_temp_2 = Entity_pos_z[this_1]
	set StaticBaseObject_rallyPoint_x[this_1] = tuple_temp
	set StaticBaseObject_rallyPoint_y[this_1] = tuple_temp_1
	set StaticBaseObject_rallyPoint_z[this_1] = tuple_temp_2
	if radius > 0. then
		set StaticBaseObject_inRangeTrig[this_1] = CreateTrigger()
		call trigger_registerUnitInRangeSource_4126(StaticBaseObject_inRangeTrig[this_1], actor, radius)
		if cond == null then
			call trigger_addCondition(StaticBaseObject_inRangeTrig[this_1], Condition(ref_function_StaticBaseObject_isProper))
		else
			call trigger_addCondition(StaticBaseObject_inRangeTrig[this_1], Condition(cond))
		endif
		call trigger_addAction(StaticBaseObject_inRangeTrig[this_1], action_1)
	endif
	set temp = actor
	set temp_1 = EVENT_PLAYER_UNIT_ISSUED_POINT_ORDER
	set clVar = alloc_EventListener_add_StaticBaseObject_BaseObject()
	call construct_EventListener(clVar)
	call EventListener_add_436(temp, temp_1, clVar)
	set temp_2 = actor
	set temp_3 = EVENT_PLAYER_UNIT_ISSUED_TARGET_ORDER
	set clVar_1 = alloc_EventListener_add_StaticBaseObject_BaseObject_1737()
	call construct_EventListener(clVar_1)
	call EventListener_add_436(temp_2, temp_3, clVar_1)
	set temp_4 = actor
	set temp_5 = EVENT_PLAYER_UNIT_SPELL_CAST
	set clVar_2 = alloc_EventListener_add_StaticBaseObject_BaseObject_1738()
	call construct_EventListener(clVar_2)
	set this_2908[clVar_2] = this_1
	call EventListener_add_436(temp_4, temp_5, clVar_2)
endfunction

function construct_BossDamager takes integer this_1, real pos_x_1, real pos_y_1, player owner returns nothing
	local integer clVar
	local unit temp
	local playerunitevent temp_1
	call construct_StaticBaseObject(this_1, BossDamager_posToGrid(pos_x_1, pos_y_1), BossDamager_posToGrid_return_y, createUnit(owner, BossDamager_DAMAGER_ID, BossDamager_posToGrid(pos_x_1, pos_y_1), BossDamager_posToGrid_return_y, 0.), BossDamager_EVENT_RADIUS, ref_function_BossDamager_onInRange, null)
	call BossDamager_init(this_1)
	call Log_debug("creating Boss Damager")
	set BossDamager_damage[this_1] = 40.
	set temp = UnitEntity_actor[this_1]
	set temp_1 = EVENT_PLAYER_UNIT_SPELL_CAST
	set clVar = alloc_EventListener_add_BossDamager_BossDamager()
	call construct_EventListener(clVar)
	call EventListener_add_436(temp, temp_1, clVar)
endfunction

function new_BossDamager takes real pos_x_1, real pos_y_1, player owner returns integer
	local integer this_1 = alloc_BossDamager()
	call construct_BossDamager(this_1, pos_x_1, pos_y_1, owner)
	return this_1
endfunction

function alloc_Key takes nothing returns integer
	local integer this_1
	if Serializable_firstFree == 0 then
		if Serializable_maxIndex < JASS_MAX_ARRAY_SIZE then
			set Serializable_maxIndex = Serializable_maxIndex + 1
			set this_1 = Serializable_maxIndex
			set Serializable_typeId[this_1] = 1157
		else
			call error("Out of memory: Could not create Key.")
			set this_1 = 0
		endif
	else
		set Serializable_firstFree = Serializable_firstFree - 1
		set this_1 = Serializable_nextFree[Serializable_firstFree]
		set Serializable_typeId[this_1] = 1157
	endif
	return this_1
endfunction

function alloc_IterableMap takes nothing returns integer
	local integer this_1
	if Table_firstFree == 0 then
		if Table_maxIndex < JASS_MAX_ARRAY_SIZE then
			set Table_maxIndex = Table_maxIndex + 1
			set this_1 = Table_maxIndex
			set Table_typeId[this_1] = 1495
		else
			call error("Out of memory: Could not create IterableMap.")
			set this_1 = 0
		endif
	else
		set Table_firstFree = Table_firstFree - 1
		set this_1 = Table_nextFree[Table_firstFree]
		set Table_typeId[this_1] = 1495
	endif
	return this_1
endfunction

function alloc_HashList takes nothing returns integer
	local integer this_1
	if HashList_firstFree == 0 then
		if HashList_maxIndex < JASS_MAX_ARRAY_SIZE then
			set HashList_maxIndex = HashList_maxIndex + 1
			set this_1 = HashList_maxIndex
			set HashList_typeId[this_1] = 894
		else
			call error("Out of memory: Could not create HashList.")
			set this_1 = 0
		endif
	else
		set HashList_firstFree = HashList_firstFree - 1
		set this_1 = HashList_nextFree[HashList_firstFree]
		set HashList_typeId[this_1] = 894
	endif
	return this_1
endfunction

function HashList_init takes integer this_1 returns nothing
	set HashList_size[this_1] = 0
endfunction

function construct_HashList takes integer this_1 returns nothing
	call HashList_init(this_1)
endfunction

function new_HashList takes nothing returns integer
	local integer this_1 = alloc_HashList()
	call construct_HashList(this_1)
	return this_1
endfunction

function IterableMap_init takes integer this_1 returns nothing
	set IterableMap_keys[this_1] = new_HashList()
	set IterableMap__destroyed[this_1] = false
endfunction

function HashMap_init takes integer this_1 returns nothing
	set HashMap_size[this_1] = 0
endfunction

function Table_init takes integer this_1 returns nothing
endfunction

function construct_Table takes integer this_1 returns nothing
	call Table_init(this_1)
endfunction

function construct_HashMap takes integer this_1 returns nothing
	call construct_Table(this_1)
	call HashMap_init(this_1)
endfunction

function construct_IterableMap takes integer this_1 returns nothing
	call construct_HashMap(this_1)
	call IterableMap_init(this_1)
endfunction

function new_IterableMap takes nothing returns integer
	local integer this_1 = alloc_IterableMap()
	call construct_IterableMap(this_1)
	return this_1
endfunction

function Key_init takes integer this_1 returns nothing
	set Key_col[this_1] = 0
	set Key_picked[this_1] = false
	set Key_followWalkable[this_1] = true
	set Key_infinite[this_1] = false
	set Key_infiniteEff[this_1] = null
	set Key_returnSfx[this_1] = null
	set Key_effectMap[this_1] = new_IterableMap()
	set Key_ignoreNextDrop[this_1] = false
endfunction

function alloc_EventListener_add_Key_Key takes nothing returns integer
	local integer this_1
	if EventListener_firstFree == 0 then
		if EventListener_maxIndex < JASS_MAX_ARRAY_SIZE then
			set EventListener_maxIndex = EventListener_maxIndex + 1
			set this_1 = EventListener_maxIndex
			set EventListener_typeId[this_1] = 801
		else
			call error("Out of memory: Could not create EventListener_add_Key_Key.")
			set this_1 = 0
		endif
	else
		set EventListener_firstFree = EventListener_firstFree - 1
		set this_1 = EventListener_nextFree[EventListener_firstFree]
		set EventListener_typeId[this_1] = 801
	endif
	return this_1
endfunction

function createItem_2353 takes integer itemId, real pos_x_1, real pos_y_1, real pos_z returns item
	return CreateItem(itemId, pos_x_1, pos_y_1)
endfunction

function createItem takes integer itemId, real pos_x_1, real pos_y_1 returns item
	return createItem_2353(itemId, vec2_toVec3(pos_x_1, pos_y_1), vec2_toVec3_return_y, vec2_toVec3_return_z)
endfunction

function construct_Key takes integer this_1, real ppos_x, real ppos_y, player owner returns nothing
	local integer clVar
	local unit temp
	local playerunitevent temp_1
	call construct_ItemObject(this_1, ppos_x, ppos_y, createItem(Key_keyIds[0], ppos_x, ppos_y), createUnit(owner, Key_KEY_DUMMY_ID, ppos_x, ppos_y, real_fromDeg(0.)))
	call Key_init(this_1)
	set temp = UnitEntity_actor[ItemObject_setup[this_1]]
	set temp_1 = EVENT_PLAYER_UNIT_SPELL_CAST
	set clVar = alloc_EventListener_add_Key_Key()
	call construct_EventListener(clVar)
	set this_2966[clVar] = this_1
	call EventListener_add_436(temp, temp_1, clVar)
endfunction

function new_Key takes real ppos_x, real ppos_y, player owner returns integer
	local integer this_1 = alloc_Key()
	call construct_Key(this_1, ppos_x, ppos_y, owner)
	return this_1
endfunction

function alloc_SpellTarget takes nothing returns integer
	local integer this_1
	if Serializable_firstFree == 0 then
		if Serializable_maxIndex < JASS_MAX_ARRAY_SIZE then
			set Serializable_maxIndex = Serializable_maxIndex + 1
			set this_1 = Serializable_maxIndex
			set Serializable_typeId[this_1] = 1190
		else
			call error("Out of memory: Could not create SpellTarget.")
			set this_1 = 0
		endif
	else
		set Serializable_firstFree = Serializable_firstFree - 1
		set this_1 = Serializable_nextFree[Serializable_firstFree]
		set Serializable_typeId[this_1] = 1190
	endif
	return this_1
endfunction

function SpellTarget_init takes integer this_1 returns nothing
	set SpellTarget_stype[this_1] = 0
endfunction

function alloc_EventListener_add_SpellTarget_BossSpellTarget takes nothing returns integer
	local integer this_1
	if EventListener_firstFree == 0 then
		if EventListener_maxIndex < JASS_MAX_ARRAY_SIZE then
			set EventListener_maxIndex = EventListener_maxIndex + 1
			set this_1 = EventListener_maxIndex
			set EventListener_typeId[this_1] = 815
		else
			call error("Out of memory: Could not create EventListener_add_SpellTarget_BossSpellTarget.")
			set this_1 = 0
		endif
	else
		set EventListener_firstFree = EventListener_firstFree - 1
		set this_1 = EventListener_nextFree[EventListener_firstFree]
		set EventListener_typeId[this_1] = 815
	endif
	return this_1
endfunction

function construct_SpellTarget takes integer this_1, real pos_x_1, real pos_y_1, player owner returns nothing
	local integer temp = this_1
	local unit receiver = createUnit(owner, BossSpellTarget_SPELLTARGET_ID, pos_x_1, pos_y_1, 0.)
	local integer clVar
	local unit temp_1
	local playerunitevent temp_2
	call unit_addAbility(receiver, Basics_LOCUST_ID)
	call construct_SetupObject(temp, receiver, createUnit(owner, BossSpellTarget_SPELLTARGET_ID, pos_x_1, pos_y_1, 0.), 32.)
	call SpellTarget_init(this_1)
	set SpellTarget_stype[this_1] = 0
	set temp_1 = SetupObject_setup[this_1]
	set temp_2 = EVENT_PLAYER_UNIT_SPELL_CAST
	set clVar = alloc_EventListener_add_SpellTarget_BossSpellTarget()
	call construct_EventListener(clVar)
	set this_2913[clVar] = this_1
	call EventListener_add_436(temp_1, temp_2, clVar)
	if  not dispatch_HashMap_HashMap_HashMap_has(BossSpellTarget_targets, player_getId(owner)) then
		call dispatch_HashMap_HashMap_HashMap_put(BossSpellTarget_targets, player_getId(owner), new_LinkedList())
	endif
	call dispatch_LinkedList_LinkedList_LinkedList_add_1(dispatch_HashMap_HashMap_HashMap_get(BossSpellTarget_targets, player_getId(owner)), this_1)
endfunction

function new_SpellTarget takes real pos_x_1, real pos_y_1, player owner returns integer
	local integer this_1 = alloc_SpellTarget()
	call construct_SpellTarget(this_1, pos_x_1, pos_y_1, owner)
	return this_1
endfunction

function alloc_Tome takes nothing returns integer
	local integer this_1
	if Serializable_firstFree == 0 then
		if Serializable_maxIndex < JASS_MAX_ARRAY_SIZE then
			set Serializable_maxIndex = Serializable_maxIndex + 1
			set this_1 = Serializable_maxIndex
			set Serializable_typeId[this_1] = 1158
		else
			call error("Out of memory: Could not create Tome.")
			set this_1 = 0
		endif
	else
		set Serializable_firstFree = Serializable_firstFree - 1
		set this_1 = Serializable_nextFree[Serializable_firstFree]
		set Serializable_typeId[this_1] = 1158
	endif
	return this_1
endfunction

function Tome_init takes integer this_1 returns nothing
endfunction

function construct_Tome takes integer this_1, real pos_x_1, real pos_y_1, player owner returns nothing
	call construct_ItemObject(this_1, pos_x_1, pos_y_1, CreateItem(BuilderConstants_TOME_ID, pos_x_1, pos_y_1), CreateUnit(owner, Tome_TOME_DUMMY_ID, pos_x_1, pos_y_1, 0.))
	call Tome_init(this_1)
endfunction

function new_Tome takes real pos_x_1, real pos_y_1, player owner returns integer
	local integer this_1 = alloc_Tome()
	call construct_Tome(this_1, pos_x_1, pos_y_1, owner)
	return this_1
endfunction

function Builder_onCast takes integer this_1 returns nothing
	local integer id = GetSpellAbilityId()
	local real tuple_temp = EventData_getSpellTargetPos()
	local real tuple_temp_1 = EventData_getSpellTargetPos_return_y
	local real tpos_x_1 = tuple_temp
	local real tpos_y_1 = tuple_temp_1
	local integer rdata = getRegionData_3304(tpos_x_1, tpos_y_1)
	local integer temp
	local integer temp_tuple_bossId
	local player temp_1
	local real temp_x
	local real temp_y
	local real tuple_temp_2
	local real tuple_temp_3
	local integer tuple_temp_4
	if rdata == 0 then
		return
	endif
	set temp = id
	if temp == Builder_MENU_CIRCLES_ID then
		call unit_addAbility(UnitEntity_actor[this_1], Builder_CHAOS_BUILDER_1)
	elseif temp == BuilderConstants_MENU_2 then
		call unit_addAbility(UnitEntity_actor[this_1], Builder_CHAOS_BUILDER_2)
	elseif temp == BuilderConstants_MENU_3 then
		call unit_addAbility(UnitEntity_actor[this_1], Builder_CHAOS_BUILDER_3)
	elseif temp == Builder_MENU_DECORATIONS_ID then
		call unit_addAbility(UnitEntity_actor[this_1], Builder_CHAOS_BUILDER_4)
	elseif temp == Builder_MENU_OBJECTS_ID then
		call unit_addAbility(UnitEntity_actor[this_1], Builder_CHAOS_BUILDER_2)
	elseif temp == Builder_MENU_ENVIROMENTALS_ID then
		call unit_addAbility(UnitEntity_actor[this_1], Builder_CHAOS_BUILDER_3)
	elseif temp == BuilderConstants_KEY_SPELL_ID then
		if dispatch_RegionData_RegionData_RegionData_canBuild(rdata, Entity_owner[this_1]) then
			call new_Key(tpos_x_1, tpos_y_1, Entity_owner[this_1])
		else
			call DisplayTextToPlayer(Entity_owner[this_1], 0., 0., "|cffC51019You have no permission to place items in this region!")
		endif
	elseif temp == BuilderConstants_BOOTS_SPELL_ID then
		if dispatch_RegionData_RegionData_RegionData_canBuild(rdata, Entity_owner[this_1]) then
			call new_Boots(tpos_x_1, tpos_y_1, Entity_owner[this_1])
		else
			call DisplayTextToPlayer(Entity_owner[this_1], 0., 0., "|cffC51019You have no permission to place items in this region!")
		endif
	elseif temp == BuilderConstants_TOME_SPELL_ID then
		if dispatch_RegionData_RegionData_RegionData_canBuild(rdata, Entity_owner[this_1]) then
			call new_Tome(tpos_x_1, tpos_y_1, Entity_owner[this_1])
		else
			call DisplayTextToPlayer(Entity_owner[this_1], 0., 0., "|cffC51019You have no permission to place items in this region!")
		endif
	elseif temp == BuilderConstants_COIN_SPELL_ID then
		if dispatch_RegionData_RegionData_RegionData_canBuild(rdata, Entity_owner[this_1]) then
			call new_Coin(tpos_x_1, tpos_y_1, Entity_owner[this_1])
		else
			call DisplayTextToPlayer(Entity_owner[this_1], 0., 0., "|cffC51019You have no permission to place items in this region!")
		endif
	elseif temp == BuilderConstants_BM_BOSS_ID then
		if dispatch_RegionData_RegionData_RegionData_canBuild(rdata, Entity_owner[this_1]) and RegionData_bossRegion[rdata] then
			if RegionData_boss[rdata] == 0 then
				set temp_1 = Entity_owner[this_1]
				set tuple_temp_2 = tpos_x_1
				set tuple_temp_3 = tpos_y_1
				set temp_x = tuple_temp_2
				set temp_y = tuple_temp_3
				call dispatch_RegionData_RegionData_RegionData_getTypeSet(rdata)
				set tuple_temp_4 = dispatch_RegionData_RegionData_RegionData_getTypeSet_return_bossId
				set temp_tuple_bossId = tuple_temp_4
				set RegionData_boss[rdata] = new_Boss(temp_1, temp_x, temp_y, temp_tuple_bossId)
			else
				call DisplayTextToPlayer(Entity_owner[this_1], 0., 0., "|cffC51019You can only have one boss each region!")
			endif
		else
			call DisplayTextToPlayer(Entity_owner[this_1], 0., 0., "|cffC51019You are not allowed to place Boss objects in this region!")
		endif
	elseif temp == BuilderConstants_BM_SPELLTARGET_ID then
		if dispatch_RegionData_RegionData_RegionData_canBuild(rdata, Entity_owner[this_1]) and RegionData_bossRegion[rdata] then
			call new_SpellTarget(tpos_x_1, tpos_y_1, Entity_owner[this_1])
		endif
	elseif temp == BuilderConstants_BM_DAMAGER_ID then
		if dispatch_RegionData_RegionData_RegionData_canBuild(rdata, Entity_owner[this_1]) and RegionData_bossRegion[rdata] then
			call new_BossDamager(tpos_x_1, tpos_y_1, Entity_owner[this_1])
		endif
	elseif temp == BuilderConstants_BM_WEAPON_ID then
		if dispatch_RegionData_RegionData_RegionData_canBuild(getRegionData_3304(tpos_x_1, tpos_y_1), Entity_owner[this_1]) and RegionData_bossRegion[getRegionData_3304(tpos_x_1, tpos_y_1)] then
		endif
	else
		call dispatch_JukeBox_JukeBox_JukeBox_checkSpell(JukeBox_jukeBox, id)
	endif
endfunction

function dispatch_Builder_Builder_Builder_onCast takes integer this_1 returns nothing
	if Serializable_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling Builder.onCast")
		else
			call error("Called Builder.onCast on invalid object.")
		endif
	endif
	call Builder_onCast(this_1)
endfunction

function onEvent_add_Builder_Builder_3818 takes integer this_1 returns nothing
	call dispatch_Builder_Builder_Builder_onCast(this_2923[this_1])
endfunction

function onEvent_add_Builder_Builder_3819 takes integer this_1 returns nothing
	call unit_remove(GetTriggerUnit())
endfunction

function alloc_CallbackSingle_doAfter_Commands takes nothing returns integer
	local integer this_1
	if CallbackSingle_firstFree == 0 then
		if CallbackSingle_maxIndex < JASS_MAX_ARRAY_SIZE then
			set CallbackSingle_maxIndex = CallbackSingle_maxIndex + 1
			set this_1 = CallbackSingle_maxIndex
			set CallbackSingle_typeId[this_1] = 680
		else
			call error("Out of memory: Could not create CallbackSingle_doAfter_Commands.")
			set this_1 = 0
		endif
	else
		set CallbackSingle_firstFree = CallbackSingle_firstFree - 1
		set this_1 = CallbackSingle_nextFree[CallbackSingle_firstFree]
		set CallbackSingle_typeId[this_1] = 680
	endif
	return this_1
endfunction

function LinkedList_getEntry takes integer this_1, integer index returns integer
	local integer entry = LinkedList_dummy[this_1]
	local integer i = 0
	local integer temp = index
	loop
		exitwhen i > temp
		set entry = LLEntry_next[entry]
		set i = i + 1
	endloop
	return entry
endfunction

function dispatch_LinkedList_LinkedList_LinkedList_getEntry takes integer this_1, integer index returns integer
	local integer LinkedList_LinkedList_getEntry_result
	if LinkedList_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling LinkedList.getEntry")
		else
			call error("Called LinkedList.getEntry on invalid object.")
		endif
	endif
	set LinkedList_LinkedList_getEntry_result = LinkedList_getEntry(this_1, index)
	return LinkedList_LinkedList_getEntry_result
endfunction

function LinkedList_get takes integer this_1, integer index returns integer
	return LLEntry_elem[dispatch_LinkedList_LinkedList_LinkedList_getEntry(this_1, index)]
endfunction

function dispatch_LinkedList_LinkedList_LinkedList_get takes integer this_1, integer index returns integer
	local integer LinkedList_LinkedList_get_result
	if LinkedList_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling LinkedList.get")
		else
			call error("Called LinkedList.get on invalid object.")
		endif
	endif
	set LinkedList_LinkedList_get_result = LinkedList_get(this_1, index)
	return LinkedList_LinkedList_get_result
endfunction

function SetupBox_addBossSwitch takes integer this_1 returns nothing
	call unit_addAbility(UnitEntity_actor[this_1], SetupBox_BOSS_MODE_ID)
endfunction

function dispatch_SetupBox_SetupBox_SetupBox_addBossSwitch takes integer this_1 returns nothing
	if Serializable_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling SetupBox.addBossSwitch")
		else
			call error("Called SetupBox.addBossSwitch on invalid object.")
		endif
	endif
	call SetupBox_addBossSwitch(this_1)
endfunction

function forceRevive takes integer e_1 returns nothing
	local integer pod = ReviveManager_pods[player_getId(Entity_owner[e_1])]
	if pod != 0 then
		if PlayerData_escaper[RevivePod_owner[pod]] != 0 and ( not Escaper_alive[PlayerData_escaper[RevivePod_owner[pod]]]) then
			call dispatch_Escaper_Escaper_Escaper_revive(PlayerData_escaper[RevivePod_owner[pod]])
		endif
		call dispatch_RevivePod_destroyRevivePod(pod)
		set ReviveManager_pods[player_getId(Entity_owner[e_1])] = 0
	endif
endfunction

function group_close takes group this_1 returns nothing
	call group_clear(this_1)
	call group_destr(this_1)
endfunction

function group_add_1_3314 takes group this_1, group groups_0 returns integer
	local integer i = 0
	set i = i + BlzGroupAddGroupFast(groups_0, this_1)
	return i
endfunction

function group_iterator takes group this_1 returns group
	set Group_iterGroup = CreateGroup()
	call group_add_1_3314(Group_iterGroup, this_1)
	return Group_iterGroup
endfunction

function alloc_Spaceship takes nothing returns integer
	local integer this_1
	if Serializable_firstFree == 0 then
		if Serializable_maxIndex < JASS_MAX_ARRAY_SIZE then
			set Serializable_maxIndex = Serializable_maxIndex + 1
			set this_1 = Serializable_maxIndex
			set Serializable_typeId[this_1] = 1193
		else
			call error("Out of memory: Could not create Spaceship.")
			set this_1 = 0
		endif
	else
		set Serializable_firstFree = Serializable_firstFree - 1
		set this_1 = Serializable_nextFree[Serializable_firstFree]
		set Serializable_typeId[this_1] = 1193
	endif
	return this_1
endfunction

function Spaceship_init takes integer this_1 returns nothing
	local real tuple_temp
	set Spaceship_maxSpeed[this_1] = 8.
	set Spaceship_acc[this_1] = 0.
	set tuple_temp = real_fromDeg(90.)
	set Spaceship_xyAngle_radians[this_1] = tuple_temp
	set Spaceship_projectiles[this_1] = new_LinkedList()
	set Spaceship_hp[this_1] = 2
endfunction

function construct_Spaceship takes integer this_1, real pos_x_1, real pos_y_1, integer mounter returns nothing
	local unit receiver
	local unit receiver_1
	call construct_UnitEntity(this_1, createUnit(Entity_owner[mounter], MGSpacey_SHIP_ID, pos_x_1, pos_y_1, real_fromDeg(90.)))
	call Spaceship_init(this_1)
	set Spaceship_mounter[this_1] = mounter
	set Escaper_alive[Spaceship_mounter[this_1]] = false
	call unit_addAbility(UnitEntity_actor[this_1], Basics_LOCUST_ID)
	set receiver = UnitEntity_actor[mounter]
	call unit_pause(receiver)
	set receiver_1 = receiver
	call unit_hide(receiver_1)
	call dispatch_UnitEntity_Entity_UnitEntity_setPos(this_1, vec3_op_plus(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1], 0., 0., 32.), vec3_op_plus_return_y, vec3_op_plus_return_z)
	set Entity_sleeps[this_1] = false
endfunction

function new_Spaceship takes real pos_x_1, real pos_y_1, integer mounter returns integer
	local integer this_1 = alloc_Spaceship()
	call construct_Spaceship(this_1, pos_x_1, pos_y_1, mounter)
	return this_1
endfunction

function player_setName takes player this_1, string name returns nothing
	call SetPlayerName(this_1, name)
endfunction

function PlayerData_tmods_set takes integer instanceId, integer arrayIndex, integer value returns nothing
	if arrayIndex < 0 or arrayIndex >= 4 then
		call error("Index out of Bounds")
	elseif arrayIndex <= 1 then
		if arrayIndex <= 0 then
			set PlayerData_tmods_0[instanceId] = value
		else
			set PlayerData_tmods_1[instanceId] = value
		endif
	elseif arrayIndex <= 2 then
		set PlayerData_tmods_2[instanceId] = value
	else
		set PlayerData_tmods_3[instanceId] = value
	endif
endfunction

function RegionData_revealRegion takes integer this_1, player p returns nothing
	local integer id = player_getId(p)
	if RegionData_fmods_get(this_1, id) == 0 then
		call RegionData_fmods_set(this_1, id, new_FogData(p, RegionData_theRect[this_1]))
	endif
	call dispatch_FogData_RegionData_FogData_changeFog(RegionData_fmods_get(this_1, id), FOG_OF_WAR_VISIBLE)
endfunction

function dispatch_RegionData_RegionData_RegionData_revealRegion takes integer this_1, player p returns nothing
	if RegionData_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling RegionData.revealRegion")
		else
			call error("Called RegionData.revealRegion on invalid object.")
		endif
	endif
	call RegionData_revealRegion(this_1, p)
endfunction

function alloc_Builder takes nothing returns integer
	local integer this_1
	if Serializable_firstFree == 0 then
		if Serializable_maxIndex < JASS_MAX_ARRAY_SIZE then
			set Serializable_maxIndex = Serializable_maxIndex + 1
			set this_1 = Serializable_maxIndex
			set Serializable_typeId[this_1] = 1162
		else
			call error("Out of memory: Could not create Builder.")
			set this_1 = 0
		endif
	else
		set Serializable_firstFree = Serializable_firstFree - 1
		set this_1 = Serializable_nextFree[Serializable_firstFree]
		set Serializable_typeId[this_1] = 1162
	endif
	return this_1
endfunction

function Builder_init takes integer this_1 returns nothing
	set Builder_regionCount[this_1] = 0
endfunction

function alloc_EventListener_add_Builder_Builder takes nothing returns integer
	local integer this_1
	if EventListener_firstFree == 0 then
		if EventListener_maxIndex < JASS_MAX_ARRAY_SIZE then
			set EventListener_maxIndex = EventListener_maxIndex + 1
			set this_1 = EventListener_maxIndex
			set EventListener_typeId[this_1] = 768
		else
			call error("Out of memory: Could not create EventListener_add_Builder_Builder.")
			set this_1 = 0
		endif
	else
		set EventListener_firstFree = EventListener_firstFree - 1
		set this_1 = EventListener_nextFree[EventListener_firstFree]
		set EventListener_typeId[this_1] = 768
	endif
	return this_1
endfunction

function alloc_EventListener_add_Builder_Builder_1687 takes nothing returns integer
	local integer this_1
	if EventListener_firstFree == 0 then
		if EventListener_maxIndex < JASS_MAX_ARRAY_SIZE then
			set EventListener_maxIndex = EventListener_maxIndex + 1
			set this_1 = EventListener_maxIndex
			set EventListener_typeId[this_1] = 769
		else
			call error("Out of memory: Could not create EventListener_add_Builder_Builder.")
			set this_1 = 0
		endif
	else
		set EventListener_firstFree = EventListener_firstFree - 1
		set this_1 = EventListener_nextFree[EventListener_firstFree]
		set EventListener_typeId[this_1] = 769
	endif
	return this_1
endfunction

function alloc_EventListener_add_Builder_Builder_1688 takes nothing returns integer
	local integer this_1
	if EventListener_firstFree == 0 then
		if EventListener_maxIndex < JASS_MAX_ARRAY_SIZE then
			set EventListener_maxIndex = EventListener_maxIndex + 1
			set this_1 = EventListener_maxIndex
			set EventListener_typeId[this_1] = 770
		else
			call error("Out of memory: Could not create EventListener_add_Builder_Builder.")
			set this_1 = 0
		endif
	else
		set EventListener_firstFree = EventListener_firstFree - 1
		set this_1 = EventListener_nextFree[EventListener_firstFree]
		set EventListener_typeId[this_1] = 770
	endif
	return this_1
endfunction

function alloc_EventListener_add_Builder_Builder_1689 takes nothing returns integer
	local integer this_1
	if EventListener_firstFree == 0 then
		if EventListener_maxIndex < JASS_MAX_ARRAY_SIZE then
			set EventListener_maxIndex = EventListener_maxIndex + 1
			set this_1 = EventListener_maxIndex
			set EventListener_typeId[this_1] = 771
		else
			call error("Out of memory: Could not create EventListener_add_Builder_Builder.")
			set this_1 = 0
		endif
	else
		set EventListener_firstFree = EventListener_firstFree - 1
		set this_1 = EventListener_nextFree[EventListener_firstFree]
		set EventListener_typeId[this_1] = 771
	endif
	return this_1
endfunction

function Builder_registerListeners takes integer this_1 returns nothing
	local unit temp = UnitEntity_actor[this_1]
	local playerunitevent temp_1 = EVENT_PLAYER_UNIT_ISSUED_TARGET_ORDER
	local integer clVar = alloc_EventListener_add_Builder_Builder()
	local integer clVar_1
	local integer clVar_2
	local integer clVar_3
	local unit temp_2
	local playerunitevent temp_3
	local unit temp_4
	local playerunitevent temp_5
	local unit temp_6
	local playerunitevent temp_7
	call construct_EventListener(clVar)
	set this_2921[clVar] = this_1
	call EventListener_add_436(temp, temp_1, clVar)
	set temp_2 = UnitEntity_actor[this_1]
	set temp_3 = EVENT_PLAYER_UNIT_ISSUED_POINT_ORDER
	set clVar_1 = alloc_EventListener_add_Builder_Builder_1687()
	call construct_EventListener(clVar_1)
	set this_2922[clVar_1] = this_1
	call EventListener_add_436(temp_2, temp_3, clVar_1)
	set temp_4 = UnitEntity_actor[this_1]
	set temp_5 = EVENT_PLAYER_UNIT_SPELL_CAST
	set clVar_2 = alloc_EventListener_add_Builder_Builder_1688()
	call construct_EventListener(clVar_2)
	set this_2923[clVar_2] = this_1
	call EventListener_add_436(temp_4, temp_5, clVar_2)
	set temp_6 = UnitEntity_actor[this_1]
	set temp_7 = EVENT_PLAYER_UNIT_CONSTRUCT_FINISH
	set clVar_3 = alloc_EventListener_add_Builder_Builder_1689()
	call construct_EventListener(clVar_3)
	call EventListener_add_436(temp_6, temp_7, clVar_3)
endfunction

function dispatch_Builder_Builder_Builder_registerListeners takes integer this_1 returns nothing
	if Serializable_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling Builder.registerListeners")
		else
			call error("Called Builder.registerListeners on invalid object.")
		endif
	endif
	call Builder_registerListeners(this_1)
endfunction

function construct_Builder takes integer this_1, player p returns nothing
	call construct_UnitEntity(this_1, createUnit(p, Builder_BUILDER_CIRCLES_ID, -6000., -7160., 0.))
	call Builder_init(this_1)
	call dispatch_Builder_Builder_Builder_registerListeners(this_1)
	call Entity_setCurrentRegion(this_1)
endfunction

function new_Builder takes player p returns integer
	local integer this_1 = alloc_Builder()
	call construct_Builder(this_1, p)
	return this_1
endfunction

function alloc_FastEscaper takes nothing returns integer
	local integer this_1
	if Serializable_firstFree == 0 then
		if Serializable_maxIndex < JASS_MAX_ARRAY_SIZE then
			set Serializable_maxIndex = Serializable_maxIndex + 1
			set this_1 = Serializable_maxIndex
			set Serializable_typeId[this_1] = 1165
		else
			call error("Out of memory: Could not create FastEscaper.")
			set this_1 = 0
		endif
	else
		set Serializable_firstFree = Serializable_firstFree - 1
		set this_1 = Serializable_nextFree[Serializable_firstFree]
		set Serializable_typeId[this_1] = 1165
	endif
	return this_1
endfunction

function FastEscaper_init takes integer this_1 returns nothing
	set FastEscaper_portal[this_1] = 0
endfunction

function construct_Escaper_PhysicsModule takes integer this_1 returns nothing
endfunction

function Escaper_init takes integer this_1 returns nothing
	local real tuple_temp
	local real tuple_temp_1
	local real tuple_temp_2
	local real tuple_temp_3
	local real tuple_temp_4
	local real tuple_temp_5
	set Escaper_PhysicsModule_terrainZ[this_1] = 0.
	set Escaper_PhysicsModule_surfaceFriction[this_1] = 0.9
	set Escaper_revmod[this_1] = 0
	set Escaper_sliding[this_1] = false
	set Escaper_poisoned[this_1] = false
	set Escaper_onLava[this_1] = false
	set Escaper_camlock[this_1] = false
	set Escaper_deaths[this_1] = 0
	set tuple_temp = 0.
	set tuple_temp_1 = 0.
	set Escaper_walkVel_x[this_1] = tuple_temp
	set Escaper_walkVel_y[this_1] = tuple_temp_1
	set tuple_temp_2 = 0.
	set tuple_temp_3 = 0.
	set Escaper_slideVelocity_x[this_1] = tuple_temp_2
	set Escaper_slideVelocity_y[this_1] = tuple_temp_3
	set tuple_temp_4 = 0.
	set tuple_temp_5 = 0.
	set Escaper_otherVel_x[this_1] = tuple_temp_4
	set Escaper_otherVel_y[this_1] = tuple_temp_5
	set Escaper_threshold[this_1] = 0
	set Escaper_alive[this_1] = true
	set Escaper_selectatrevive[this_1] = true
	set Escaper_camOnRevive[this_1] = true
	set Escaper_left[this_1] = false
	set Escaper_revivetomb[this_1] = null
	set Escaper_lastVal[this_1] = -1
	set Escaper_orb[this_1] = 0
	call construct_Escaper_PhysicsModule(this_1)
endfunction

function alloc_EventListener_add_Escaper_Escaper takes nothing returns integer
	local integer this_1
	if EventListener_firstFree == 0 then
		if EventListener_maxIndex < JASS_MAX_ARRAY_SIZE then
			set EventListener_maxIndex = EventListener_maxIndex + 1
			set this_1 = EventListener_maxIndex
			set EventListener_typeId[this_1] = 783
		else
			call error("Out of memory: Could not create EventListener_add_Escaper_Escaper.")
			set this_1 = 0
		endif
	else
		set EventListener_firstFree = EventListener_firstFree - 1
		set this_1 = EventListener_nextFree[EventListener_firstFree]
		set EventListener_typeId[this_1] = 783
	endif
	return this_1
endfunction

function alloc_EventListener_add_Escaper_Escaper_1702 takes nothing returns integer
	local integer this_1
	if EventListener_firstFree == 0 then
		if EventListener_maxIndex < JASS_MAX_ARRAY_SIZE then
			set EventListener_maxIndex = EventListener_maxIndex + 1
			set this_1 = EventListener_maxIndex
			set EventListener_typeId[this_1] = 784
		else
			call error("Out of memory: Could not create EventListener_add_Escaper_Escaper.")
			set this_1 = 0
		endif
	else
		set EventListener_firstFree = EventListener_firstFree - 1
		set this_1 = EventListener_nextFree[EventListener_firstFree]
		set EventListener_typeId[this_1] = 784
	endif
	return this_1
endfunction

function alloc_EventListener_add_Escaper_Escaper_1703 takes nothing returns integer
	local integer this_1
	if EventListener_firstFree == 0 then
		if EventListener_maxIndex < JASS_MAX_ARRAY_SIZE then
			set EventListener_maxIndex = EventListener_maxIndex + 1
			set this_1 = EventListener_maxIndex
			set EventListener_typeId[this_1] = 785
		else
			call error("Out of memory: Could not create EventListener_add_Escaper_Escaper.")
			set this_1 = 0
		endif
	else
		set EventListener_firstFree = EventListener_firstFree - 1
		set this_1 = EventListener_nextFree[EventListener_firstFree]
		set EventListener_typeId[this_1] = 785
	endif
	return this_1
endfunction

function alloc_EventListener_add_Escaper_Escaper_1704 takes nothing returns integer
	local integer this_1
	if EventListener_firstFree == 0 then
		if EventListener_maxIndex < JASS_MAX_ARRAY_SIZE then
			set EventListener_maxIndex = EventListener_maxIndex + 1
			set this_1 = EventListener_maxIndex
			set EventListener_typeId[this_1] = 786
		else
			call error("Out of memory: Could not create EventListener_add_Escaper_Escaper.")
			set this_1 = 0
		endif
	else
		set EventListener_firstFree = EventListener_firstFree - 1
		set this_1 = EventListener_nextFree[EventListener_firstFree]
		set EventListener_typeId[this_1] = 786
	endif
	return this_1
endfunction

function alloc_EventListener_add_Escaper_Escaper_1705 takes nothing returns integer
	local integer this_1
	if EventListener_firstFree == 0 then
		if EventListener_maxIndex < JASS_MAX_ARRAY_SIZE then
			set EventListener_maxIndex = EventListener_maxIndex + 1
			set this_1 = EventListener_maxIndex
			set EventListener_typeId[this_1] = 787
		else
			call error("Out of memory: Could not create EventListener_add_Escaper_Escaper.")
			set this_1 = 0
		endif
	else
		set EventListener_firstFree = EventListener_firstFree - 1
		set this_1 = EventListener_nextFree[EventListener_firstFree]
		set EventListener_typeId[this_1] = 787
	endif
	return this_1
endfunction

function construct_Escaper takes integer this_1, real pos_x_1, real pos_y_1, real pos_z, player owner, integer typ returns nothing
	local unit receiver
	local unit receiver_1
	local unit receiver_2
	local unit receiver_3
	local unit receiver_4
	local integer clVar
	local integer clVar_1
	local integer clVar_2
	local integer clVar_3
	local integer clVar_4
	local unit temp
	local playerunitevent temp_1
	local unit temp_2
	local playerunitevent temp_3
	local unit temp_4
	local playerunitevent temp_5
	local unit temp_6
	local playerunitevent temp_7
	local unit temp_8
	local playerunitevent temp_9
	call construct_UnitEntity(this_1, createUnit_2356(owner, typ, vec3_op_plus(pos_x_1, pos_y_1, pos_z, 0., 0., 32.), vec3_op_plus_return_y, vec3_op_plus_return_z, 0.))
	call Escaper_init(this_1)
	set receiver = UnitEntity_actor[this_1]
	call unit_addAbility(receiver, Basics_LOCUST_ID)
	set receiver_1 = receiver
	call unit_hide(receiver_1)
	set receiver_2 = receiver_1
	call unit_removeAbility(receiver_2, Basics_LOCUST_ID)
	set receiver_3 = receiver_2
	call unit_show(receiver_3)
	set receiver_4 = receiver_3
	call unit_setPropWindow(receiver_4, real_fromDeg(60.))
	set temp = UnitEntity_actor[this_1]
	set temp_1 = EVENT_PLAYER_UNIT_ISSUED_POINT_ORDER
	set clVar = alloc_EventListener_add_Escaper_Escaper()
	call construct_EventListener(clVar)
	set this_2932[clVar] = this_1
	call EventListener_add_436(temp, temp_1, clVar)
	set temp_2 = UnitEntity_actor[this_1]
	set temp_3 = EVENT_PLAYER_UNIT_ISSUED_TARGET_ORDER
	set clVar_1 = alloc_EventListener_add_Escaper_Escaper_1702()
	call construct_EventListener(clVar_1)
	set this_2933[clVar_1] = this_1
	call EventListener_add_436(temp_2, temp_3, clVar_1)
	set temp_4 = UnitEntity_actor[this_1]
	set temp_5 = EVENT_PLAYER_UNIT_DEATH
	set clVar_2 = alloc_EventListener_add_Escaper_Escaper_1703()
	call construct_EventListener(clVar_2)
	set this_2934[clVar_2] = this_1
	call EventListener_add_436(temp_4, temp_5, clVar_2)
	set temp_6 = UnitEntity_actor[this_1]
	set temp_7 = EVENT_PLAYER_UNIT_PICKUP_ITEM
	set clVar_3 = alloc_EventListener_add_Escaper_Escaper_1704()
	call construct_EventListener(clVar_3)
	set this_2935[clVar_3] = this_1
	call EventListener_add_436(temp_6, temp_7, clVar_3)
	set temp_8 = UnitEntity_actor[this_1]
	set temp_9 = EVENT_PLAYER_UNIT_SPELL_EFFECT
	set clVar_4 = alloc_EventListener_add_Escaper_Escaper_1705()
	call construct_EventListener(clVar_4)
	set this_2936[clVar_4] = this_1
	call EventListener_add_436(temp_8, temp_9, clVar_4)
	call dispatch_LinkedList_LinkedList_LinkedList_add_1(Escaper_escapers, this_1)
	call Entity_setCurrentRegion(this_1)
	if RegionData_specialAbil[Entity_getCurrentRegion(this_1)] > 0 then
		call unit_addAbility(UnitEntity_actor[this_1], RegionData_specialAbil[Entity_getCurrentRegion(this_1)])
	endif
endfunction

function construct_FastEscaper takes integer this_1, real pos_x_1, real pos_y_1, real pos_z, player owner returns nothing
	call construct_Escaper(this_1, pos_x_1, pos_y_1, pos_z, owner, BuilderConstants_ESC_FAST_ID)
	call FastEscaper_init(this_1)
endfunction

function new_FastEscaper takes real pos_x_1, real pos_y_1, real pos_z, player owner returns integer
	local integer this_1 = alloc_FastEscaper()
	call construct_FastEscaper(this_1, pos_x_1, pos_y_1, pos_z, owner)
	return this_1
endfunction

function alloc_HolyEscaper takes nothing returns integer
	local integer this_1
	if Serializable_firstFree == 0 then
		if Serializable_maxIndex < JASS_MAX_ARRAY_SIZE then
			set Serializable_maxIndex = Serializable_maxIndex + 1
			set this_1 = Serializable_maxIndex
			set Serializable_typeId[this_1] = 1166
		else
			call error("Out of memory: Could not create HolyEscaper.")
			set this_1 = 0
		endif
	else
		set Serializable_firstFree = Serializable_firstFree - 1
		set this_1 = Serializable_nextFree[Serializable_firstFree]
		set Serializable_typeId[this_1] = 1166
	endif
	return this_1
endfunction

function HolyEscaper_init takes integer this_1 returns nothing
endfunction

function construct_HolyEscaper takes integer this_1, real pos_x_1, real pos_y_1, real pos_z, player owner returns nothing
	call construct_Escaper(this_1, pos_x_1, pos_y_1, pos_z, owner, BuilderConstants_ESC_HOLY_ID)
	call HolyEscaper_init(this_1)
endfunction

function new_HolyEscaper takes real pos_x_1, real pos_y_1, real pos_z, player owner returns integer
	local integer this_1 = alloc_HolyEscaper()
	call construct_HolyEscaper(this_1, pos_x_1, pos_y_1, pos_z, owner)
	return this_1
endfunction

function alloc_IceEscaper takes nothing returns integer
	local integer this_1
	if Serializable_firstFree == 0 then
		if Serializable_maxIndex < JASS_MAX_ARRAY_SIZE then
			set Serializable_maxIndex = Serializable_maxIndex + 1
			set this_1 = Serializable_maxIndex
			set Serializable_typeId[this_1] = 1167
		else
			call error("Out of memory: Could not create IceEscaper.")
			set this_1 = 0
		endif
	else
		set Serializable_firstFree = Serializable_firstFree - 1
		set this_1 = Serializable_nextFree[Serializable_firstFree]
		set Serializable_typeId[this_1] = 1167
	endif
	return this_1
endfunction

function IceEscaper_init takes integer this_1 returns nothing
endfunction

function construct_IceEscaper takes integer this_1, real pos_x_1, real pos_y_1, real pos_z, player owner returns nothing
	call construct_Escaper(this_1, pos_x_1, pos_y_1, pos_z, owner, BuilderConstants_ESC_ICE_ID)
	call IceEscaper_init(this_1)
endfunction

function new_IceEscaper takes real pos_x_1, real pos_y_1, real pos_z, player owner returns integer
	local integer this_1 = alloc_IceEscaper()
	call construct_IceEscaper(this_1, pos_x_1, pos_y_1, pos_z, owner)
	return this_1
endfunction

function alloc_StrongEscaper takes nothing returns integer
	local integer this_1
	if Serializable_firstFree == 0 then
		if Serializable_maxIndex < JASS_MAX_ARRAY_SIZE then
			set Serializable_maxIndex = Serializable_maxIndex + 1
			set this_1 = Serializable_maxIndex
			set Serializable_typeId[this_1] = 1168
		else
			call error("Out of memory: Could not create StrongEscaper.")
			set this_1 = 0
		endif
	else
		set Serializable_firstFree = Serializable_firstFree - 1
		set this_1 = Serializable_nextFree[Serializable_firstFree]
		set Serializable_typeId[this_1] = 1168
	endif
	return this_1
endfunction

function StrongEscaper_init takes integer this_1 returns nothing
	local real tuple_temp
	local real tuple_temp_1
	set StrongEscaper_invulnerable[this_1] = false
	set StrongEscaper_shieldeffect[this_1] = null
	set tuple_temp = 0.
	set tuple_temp_1 = 0.
	set StrongEscaper_shieldPos_x[this_1] = tuple_temp
	set StrongEscaper_shieldPos_y[this_1] = tuple_temp_1
	set StrongEscaper_shieldtimer[this_1] = 0.
endfunction

function alloc_EventListener_add_StrongEscaper_EscaperClasses takes nothing returns integer
	local integer this_1
	if EventListener_firstFree == 0 then
		if EventListener_maxIndex < JASS_MAX_ARRAY_SIZE then
			set EventListener_maxIndex = EventListener_maxIndex + 1
			set this_1 = EventListener_maxIndex
			set EventListener_typeId[this_1] = 821
		else
			call error("Out of memory: Could not create EventListener_add_StrongEscaper_EscaperClasses.")
			set this_1 = 0
		endif
	else
		set EventListener_firstFree = EventListener_firstFree - 1
		set this_1 = EventListener_nextFree[EventListener_firstFree]
		set EventListener_typeId[this_1] = 821
	endif
	return this_1
endfunction

function construct_StrongEscaper takes integer this_1, real pos_x_1, real pos_y_1, real pos_z, player owner returns nothing
	local integer clVar
	local unit temp
	local playerunitevent temp_1
	call construct_Escaper(this_1, pos_x_1, pos_y_1, pos_z, owner, BuilderConstants_ESC_STRONG_ID)
	call StrongEscaper_init(this_1)
	set temp = UnitEntity_actor[this_1]
	set temp_1 = EVENT_PLAYER_HERO_SKILL
	set clVar = alloc_EventListener_add_StrongEscaper_EscaperClasses()
	call construct_EventListener(clVar)
	set this_2939[clVar] = this_1
	call EventListener_add_436(temp, temp_1, clVar)
endfunction

function new_StrongEscaper takes real pos_x_1, real pos_y_1, real pos_z, player owner returns integer
	local integer this_1 = alloc_StrongEscaper()
	call construct_StrongEscaper(this_1, pos_x_1, pos_y_1, pos_z, owner)
	return this_1
endfunction

function alloc_TerrainModder takes nothing returns integer
	local integer this_1
	if Serializable_firstFree == 0 then
		if Serializable_maxIndex < JASS_MAX_ARRAY_SIZE then
			set Serializable_maxIndex = Serializable_maxIndex + 1
			set this_1 = Serializable_maxIndex
			set Serializable_typeId[this_1] = 1223
		else
			call error("Out of memory: Could not create TerrainModder.")
			set this_1 = 0
		endif
	else
		set Serializable_firstFree = Serializable_firstFree - 1
		set this_1 = Serializable_nextFree[Serializable_firstFree]
		set Serializable_typeId[this_1] = 1223
	endif
	return this_1
endfunction

function TerrainModder_init takes integer this_1 returns nothing
	set TerrainModder_brushsize[this_1] = 0
	set TerrainModder_brushshape[this_1] = 0
	set TerrainModder_modification[this_1] = 0
	set TerrainModder_legit[this_1] = false
endfunction

function alloc_EventListener_add_TerrainModder_TerrainModder takes nothing returns integer
	local integer this_1
	if EventListener_firstFree == 0 then
		if EventListener_maxIndex < JASS_MAX_ARRAY_SIZE then
			set EventListener_maxIndex = EventListener_maxIndex + 1
			set this_1 = EventListener_maxIndex
			set EventListener_typeId[this_1] = 823
		else
			call error("Out of memory: Could not create EventListener_add_TerrainModder_TerrainModder.")
			set this_1 = 0
		endif
	else
		set EventListener_firstFree = EventListener_firstFree - 1
		set this_1 = EventListener_nextFree[EventListener_firstFree]
		set EventListener_typeId[this_1] = 823
	endif
	return this_1
endfunction

function alloc_EventListener_add_TerrainModder_TerrainModder_1742 takes nothing returns integer
	local integer this_1
	if EventListener_firstFree == 0 then
		if EventListener_maxIndex < JASS_MAX_ARRAY_SIZE then
			set EventListener_maxIndex = EventListener_maxIndex + 1
			set this_1 = EventListener_maxIndex
			set EventListener_typeId[this_1] = 824
		else
			call error("Out of memory: Could not create EventListener_add_TerrainModder_TerrainModder.")
			set this_1 = 0
		endif
	else
		set EventListener_firstFree = EventListener_firstFree - 1
		set this_1 = EventListener_nextFree[EventListener_firstFree]
		set EventListener_typeId[this_1] = 824
	endif
	return this_1
endfunction

function alloc_EventListener_add_TerrainModder_TerrainModder_1743 takes nothing returns integer
	local integer this_1
	if EventListener_firstFree == 0 then
		if EventListener_maxIndex < JASS_MAX_ARRAY_SIZE then
			set EventListener_maxIndex = EventListener_maxIndex + 1
			set this_1 = EventListener_maxIndex
			set EventListener_typeId[this_1] = 825
		else
			call error("Out of memory: Could not create EventListener_add_TerrainModder_TerrainModder.")
			set this_1 = 0
		endif
	else
		set EventListener_firstFree = EventListener_firstFree - 1
		set this_1 = EventListener_nextFree[EventListener_firstFree]
		set EventListener_typeId[this_1] = 825
	endif
	return this_1
endfunction

function construct_TerrainModder takes integer this_1, unit u_1 returns nothing
	local unit receiver
	local unit receiver_1
	local unit receiver_2
	local unit receiver_3
	local unit receiver_4
	local unit receiver_5
	local integer clVar
	local integer clVar_1
	local integer clVar_2
	local unit temp
	local playerunitevent temp_1
	local unit temp_2
	local playerunitevent temp_3
	local unit temp_4
	local playerunitevent temp_5
	call construct_UnitEntity(this_1, u_1)
	call TerrainModder_init(this_1)
	set receiver = UnitEntity_actor[this_1]
	call unit_setPos(receiver, BuilderConstants_hidden_x, BuilderConstants_hidden_y)
	set receiver_1 = receiver
	call unit_setPropWindow(receiver_1, real_fromDeg(0.))
	set receiver_2 = receiver_1
	call unit_addAbility(receiver_2, TerrainModder_BRUSH_1_ACTIVE_ABILITY)
	set receiver_3 = receiver_2
	call unit_addAbility(receiver_3, TerrainModder_BRUSH_3_IDLE_ABILITY)
	set receiver_4 = receiver_3
	call unit_addAbility(receiver_4, TerrainModder_BRUSH_5_IDLE_ABILITY)
	set receiver_5 = receiver_4
	call unit_addAbility(receiver_5, TerrainModder_BRUSH_RECT_ID)
	set temp = UnitEntity_actor[this_1]
	set temp_1 = EVENT_PLAYER_UNIT_ISSUED_POINT_ORDER
	set clVar = alloc_EventListener_add_TerrainModder_TerrainModder()
	call construct_EventListener(clVar)
	set this_2928[clVar] = this_1
	call EventListener_add_436(temp, temp_1, clVar)
	set temp_2 = UnitEntity_actor[this_1]
	set temp_3 = EVENT_PLAYER_UNIT_ISSUED_TARGET_ORDER
	set clVar_1 = alloc_EventListener_add_TerrainModder_TerrainModder_1742()
	call construct_EventListener(clVar_1)
	set this_2929[clVar_1] = this_1
	call EventListener_add_436(temp_2, temp_3, clVar_1)
	set temp_4 = UnitEntity_actor[this_1]
	set temp_5 = EVENT_PLAYER_UNIT_SPELL_EFFECT
	set clVar_2 = alloc_EventListener_add_TerrainModder_TerrainModder_1743()
	call construct_EventListener(clVar_2)
	set this_2930[clVar_2] = this_1
	call EventListener_add_436(temp_4, temp_5, clVar_2)
endfunction

function new_TerrainModder takes unit u_1 returns integer
	local integer this_1 = alloc_TerrainModder()
	call construct_TerrainModder(this_1, u_1)
	return this_1
endfunction

function alloc_UnitProducer takes nothing returns integer
	local integer this_1
	if Serializable_firstFree == 0 then
		if Serializable_maxIndex < JASS_MAX_ARRAY_SIZE then
			set Serializable_maxIndex = Serializable_maxIndex + 1
			set this_1 = Serializable_maxIndex
			set Serializable_typeId[this_1] = 1209
		else
			call error("Out of memory: Could not create UnitProducer.")
			set this_1 = 0
		endif
	else
		set Serializable_firstFree = Serializable_firstFree - 1
		set this_1 = Serializable_nextFree[Serializable_firstFree]
		set Serializable_typeId[this_1] = 1209
	endif
	return this_1
endfunction

function UnitProducer_init takes integer this_1 returns nothing
endfunction

function alloc_EventListener_add_UnitProducer_UnitProducer takes nothing returns integer
	local integer this_1
	if EventListener_firstFree == 0 then
		if EventListener_maxIndex < JASS_MAX_ARRAY_SIZE then
			set EventListener_maxIndex = EventListener_maxIndex + 1
			set this_1 = EventListener_maxIndex
			set EventListener_typeId[this_1] = 829
		else
			call error("Out of memory: Could not create EventListener_add_UnitProducer_UnitProducer.")
			set this_1 = 0
		endif
	else
		set EventListener_firstFree = EventListener_firstFree - 1
		set this_1 = EventListener_nextFree[EventListener_firstFree]
		set EventListener_typeId[this_1] = 829
	endif
	return this_1
endfunction

function construct_UnitProducer takes integer this_1, real pos_x_1, real pos_y_1, player owner returns nothing
	local unit receiver
	local unit receiver_1
	local integer clVar
	local unit temp
	local playerunitevent temp_1
	call construct_StaticBaseObject(this_1, pos_x_1, pos_y_1, createUnit(owner, UnitProducer_UNIT_PRODUCER_ID, pos_x_1, pos_y_1, 0.), 0., null, null)
	call UnitProducer_init(this_1)
	set receiver = UnitEntity_actor[this_1]
	call unit_removeAbility(receiver, BuilderConstants_REMOVE_OBJECT_ID)
	set receiver_1 = receiver
	call unit_addAbility(receiver_1, UnitProducer_AIR_KILLER)
	set temp = UnitEntity_actor[this_1]
	set temp_1 = EVENT_PLAYER_UNIT_SPELL_CAST
	set clVar = alloc_EventListener_add_UnitProducer_UnitProducer()
	call construct_EventListener(clVar)
	set this_2931[clVar] = this_1
	call EventListener_add_436(temp, temp_1, clVar)
	call dispatch_StaticBaseObject_BaseObject_StaticBaseObject_clearQuestionmark(this_1)
endfunction

function new_UnitProducer takes real pos_x_1, real pos_y_1, player owner returns integer
	local integer this_1 = alloc_UnitProducer()
	call construct_UnitProducer(this_1, pos_x_1, pos_y_1, owner)
	return this_1
endfunction

function startTestmode takes integer pd_1 returns nothing
	local integer i
	local integer e1
	local unit receiver
	local unit receiver_1
	local integer e2
	local integer e3
	local integer e4
	local unit receiver_2
	local unit receiver_3
	local unit receiver_4
	if dispatch_LinkedList_LinkedList_LinkedList_size(PlayerData_allPlayers) == 1 or PlayerData_title[pd_1] == 2 and PlayerData_builder[pd_1] == 0 then
		call Log_debug("testmode terminate")
		call cyc_RevivePoint_terminate(18, PlayerData_escaper[pd_1])
		call dispatch_LinkedList_LinkedList_LinkedList_add_1(PlayerData_builderPlayers, pd_1)
		set i = 0
		loop
			exitwhen i > 28
			call dispatch_RegionData_RegionData_RegionData_revealRegion(RegionData_regions[i], PlayerData_p[pd_1])
			set i = i + 1
		endloop
		call PlayerData_tmods_set(pd_1, 0, new_TerrainModder(createUnit(PlayerData_p[pd_1], TerrainModder_WALKABLE_ID, BuilderConstants_hidden_x, BuilderConstants_hidden_y, 0.)))
		call PlayerData_tmods_set(pd_1, 1, new_TerrainModder(createUnit(PlayerData_p[pd_1], TerrainModder_UNWALKABLE_ID, BuilderConstants_hidden_x, BuilderConstants_hidden_y, 0.)))
		call PlayerData_tmods_set(pd_1, 2, new_TerrainModder(createUnit(PlayerData_p[pd_1], TerrainModder_SLIDEABLE_ICE_ID, BuilderConstants_hidden_x, BuilderConstants_hidden_y, 0.)))
		call PlayerData_tmods_set(pd_1, 3, new_TerrainModder(createUnit(PlayerData_p[pd_1], TerrainModder_SLIDEABLE_UNC_ICE_ID, BuilderConstants_hidden_x, BuilderConstants_hidden_y, 0.)))
		set PlayerData_prod[pd_1] = new_UnitProducer(BuilderConstants_hidden_x, BuilderConstants_hidden_y, PlayerData_p[pd_1])
		set e1 = new_HolyEscaper(vec2_toVec3(Escaper_currentRevivepoint_x, Escaper_currentRevivepoint_y), vec2_toVec3_return_y, vec2_toVec3_return_z, PlayerData_p[pd_1])
		set PlayerData_escaper[pd_1] = e1
		set receiver = UnitEntity_actor[e1]
		call unit_addAbility(receiver, 1093677105)
		set receiver_1 = receiver
		call unit_addAbility(receiver_1, RevivePointModifier_CREATE_REV_MOD_ID)
		set e2 = new_FastEscaper(vec2_toVec3(Escaper_currentRevivepoint_x, Escaper_currentRevivepoint_y), vec2_toVec3_return_y, vec2_toVec3_return_z, PlayerData_p[pd_1])
		call unit_addAbility(UnitEntity_actor[e2], 1093677105)
		set e3 = new_StrongEscaper(vec2_toVec3(Escaper_currentRevivepoint_x, Escaper_currentRevivepoint_y), vec2_toVec3_return_y, vec2_toVec3_return_z, PlayerData_p[pd_1])
		call unit_addAbility(UnitEntity_actor[e3], 1093677105)
		set e4 = new_IceEscaper(vec2_toVec3(Escaper_currentRevivepoint_x, Escaper_currentRevivepoint_y), vec2_toVec3_return_y, vec2_toVec3_return_z, PlayerData_p[pd_1])
		call unit_addAbility(UnitEntity_actor[e4], 1093677105)
		set PlayerData_builder[pd_1] = new_Builder(PlayerData_p[pd_1])
		set receiver_2 = UnitEntity_actor[PlayerData_builder[pd_1]]
		call unit_addItemById(receiver_2, 1227894833)
		set receiver_3 = receiver_2
		call unit_addItemById(receiver_3, 1227894834)
		set receiver_4 = receiver_3
		call unit_addItemById(receiver_4, 1227894835)
		set Builder_regionCount[PlayerData_builder[pd_1]] = 17
		call unit_addAbility(UnitEntity_actor[PlayerData_escaper[pd_1]], 1093677105)
		call printTimed("|cff949494SinglePlayer |cffFFCC00test mode |cff949494enabled!", 45.)
	endif
endfunction

function stringFromIndex takes integer index returns string
	local string str = dispatch_Table_Table_Table_loadString(TypeCasting_typecastdata, index)
	return str
endfunction

function string_split takes string this_1, string splitBy returns integer
	local integer list = new_LinkedList()
	local integer offset = string_length(splitBy)
	local string str = this_1
	local integer splitIndex
	local string first
	local string second
	loop
		exitwhen  not true
		set splitIndex = string_indexOf(str, splitBy)
		if splitIndex == -1 then
			call dispatch_LinkedList_LinkedList_LinkedList_add_1(list, stringToIndex(str))
			exitwhen true
		endif
		set first = string_substring(str, 0, splitIndex)
		set second = string_substring(str, splitIndex + offset, string_length(str))
		call dispatch_LinkedList_LinkedList_LinkedList_add_1(list, stringToIndex(first))
		set str = second
	endloop
	return list
endfunction

function string_startsWith takes string this_1, string s returns boolean
	local integer len = string_length(this_1)
	if string_length(s) > len then
		return false
	endif
	return string_substring(this_1, 0, string_length(s)) == s
endfunction

function string_substring_4067 takes string this_1, integer start returns string
	return SubString(this_1, start, string_length(this_1))
endfunction

function string_toInt takes string this_1 returns integer
	return S2I(this_1)
endfunction

function string_toReal takes string this_1 returns real
	return S2R(this_1)
endfunction

function parseCommand takes string str returns nothing
	local player p = GetTriggerPlayer()
	local integer id = player_getId(p)
	local integer pd_1 = PlayerData_pData[id]
	local integer args = string_split(string_substring_4067(str, 1), " ")
	local string cstr = stringFromIndex(dispatch_LinkedList_LinkedList_LinkedList_get(args, 0))
	local string temp
	local string nstr
	local string temp_1
	local integer clVar
	local string s
	local string nstr_1
	local string nstr_2
	local integer i
	local unit tr
	local group iterator
	local unit u_1
	local integer i_1
	local unit tr_1
	local group iterator_1
	local unit u_2
	local integer id2
	local integer pd2
	local group units
	local group iterator_2
	local unit u_3
	local string name
	local integer iterator_3
	local integer pl
	if PlayerData_escaper[pd_1] == 0 and cstr != "d" then
		call DisplayTimedTextToPlayer(p, 0., 0., 10., "|cffFFD621[Info]|r - Commands are only available after hero selection.")
		return
	endif
	set temp = cstr
	if temp == "smooth" then
		if dispatch_LinkedList_LinkedList_LinkedList_size(args) > 1 then
			call string_toReal(stringFromIndex(dispatch_LinkedList_LinkedList_LinkedList_get(args, 1)))
		endif
	elseif temp == "rename" then
		if dispatch_LinkedList_LinkedList_LinkedList_size(args) > 1 then
			call player_setName(p, stringFromIndex(dispatch_LinkedList_LinkedList_LinkedList_get(args, 1)))
		endif
	elseif temp == "clear" then
		if Player_localPlayer == p then
			call ClearTextMessages()
		endif
	elseif temp == "cam" then
		set nstr = stringFromIndex(dispatch_LinkedList_LinkedList_LinkedList_get(args, 1))
		if nstr != null then
			set temp_1 = nstr
			if temp_1 == "lock" then
				call SetCameraTargetControllerNoZForPlayer(p, UnitEntity_actor[PlayerData_escaper[pd_1]], 0., 0., true)
				set Escaper_camlock[PlayerData_escaper[pd_1]] = true
			elseif temp_1 == "unlock" then
				call ResetToGameCameraForPlayer(p, 1.)
				set Escaper_camlock[PlayerData_escaper[pd_1]] = false
			else
				set PlayerData_zCam[pd_1] = string_toInt(nstr) * 1.
				if PlayerData_zCam[pd_1] > 3000. then
					set PlayerData_zCam[pd_1] = 3000.
					call DisplayTimedTextToPlayer(p, 0., 0., 10., "|cffFFD621[Info]|r - Maximum Zoom is 3000")
				elseif PlayerData_zCam[pd_1] < 500. then
					set PlayerData_zCam[pd_1] = 500.
					call DisplayTimedTextToPlayer(p, 0., 0., 10., "|cffFFD621[Info]|r - Minimum Zoom is 500")
				endif
				call SetCameraFieldForPlayer(p, CAMERA_FIELD_TARGET_DISTANCE, PlayerData_zCam[pd_1], 1.)
			endif
		endif
	elseif temp == "frev" then
		call DisplayTimedTextToPlayer(p, 0., 0., 10., "|cffFFD621[Info]|r - Trying forced revive!")
		if PlayerData_escaper[pd_1] == 0 then
			set clVar = alloc_CallbackSingle_doAfter_Commands()
			call construct_CallbackSingle(clVar)
			set pd_2571[clVar] = pd_1
			call doAfter(0.1, clVar)
		else
			call forceRevive(PlayerData_escaper[pd_1])
		endif
	elseif temp == "info" then
		set s = "|cffFFD621[Info]|r - Current Region:\n"
		set s = s + "\t\t\t|cff63DEFFSlidespeed|r: " + real_toString(RegionData_slidespeed[Entity_getCurrentRegion(PlayerData_escaper[pd_1])]) + "\n"
		set s = s + "\t\t\t|cff08AD4APoison Damage|r: " + real_toString(RegionData_poisonDmg[Entity_getCurrentRegion(PlayerData_escaper[pd_1])]) + "\n"
		set s = s + "\t\t\t|cffA52108Lava Damage|r: " + real_toString(RegionData_lavaDmg[Entity_getCurrentRegion(PlayerData_escaper[pd_1])]) + "\n"
		set s = s + "\t\t\t|cffFF9C29Owners|r: "
		call DisplayTimedTextToPlayer(p, 0., 0., 20., s)
	elseif temp == "intro" then
	elseif temp == "test" then
		call startTestmode(pd_1)
	elseif temp == "fuckblizz" then
		set nstr_1 = stringFromIndex(dispatch_LinkedList_LinkedList_LinkedList_get(args, 1))
		if nstr_1 == "ok" then
			set PlayerData_title[PlayerData_pData[player_getId(GetTriggerPlayer())]] = 2
			call unit_addAbility(UnitEntity_actor[PlayerData_escaper[PlayerData_pData[player_getId(GetTriggerPlayer())]]], PickSystem_BLINK_ID)
		endif
	elseif temp == "smode" then
		set nstr_2 = stringFromIndex(dispatch_LinkedList_LinkedList_LinkedList_get(args, 1))
		if nstr_2 == "both" then
			set Escaper_selectatrevive[PlayerData_escaper[pd_1]] = true
			set Escaper_camOnRevive[PlayerData_escaper[pd_1]] = true
			call DisplayTimedTextToPlayer(p, 0., 0., 10., "|cffFFD621[Info]|r - Now selecting and changing camera on revive.")
		elseif nstr_2 == "select" then
			set Escaper_selectatrevive[PlayerData_escaper[pd_1]] = true
			set Escaper_camOnRevive[PlayerData_escaper[pd_1]] = false
			call DisplayTimedTextToPlayer(p, 0., 0., 10., "|cffFFD621[Info]|r - Now only selecting on revive.")
		elseif nstr_2 == "cam" then
			set Escaper_selectatrevive[PlayerData_escaper[pd_1]] = false
			set Escaper_camOnRevive[PlayerData_escaper[pd_1]] = true
			call DisplayTimedTextToPlayer(p, 0., 0., 10., "|cffFFD621[Info]|r - Now only changing camera on revive.")
		else
			call DisplayTimedTextToPlayer(p, 0., 0., 10., "|cffFFD621[Info]|r - Missing argument. Command -smode both|select|cam.")
		endif
	elseif temp == "admin" then
		if PlayerData_title[pd_1] == 2 then
			set i = 0
			set tr = null
			set iterator = group_iterator(GetUnitsSelectedAll(PlayerData_p[pd_1]))
			loop
				exitwhen  not group_hasNext(iterator)
				set u_1 = group_next(iterator)
				set i = i + 1
				set tr = u_1
				if i > 1 then
					exitwhen true
				endif
			endloop
			call group_close(iterator)
			if i < 2 then
				call player_getId(unit_getOwner(tr))
			endif
		endif
	elseif temp == "exp" then
		if PlayerData_title[pd_1] == 2 then
			set i_1 = 0
			set tr_1 = null
			set iterator_1 = group_iterator(GetUnitsSelectedAll(PlayerData_p[pd_1]))
			loop
				exitwhen  not group_hasNext(iterator_1)
				set u_2 = group_next(iterator_1)
				set i_1 = i_1 + 1
				set tr_1 = u_2
				if i_1 > 1 then
					exitwhen true
				endif
			endloop
			call group_close(iterator_1)
			if i_1 < 2 then
				set id2 = player_getId(unit_getOwner(tr_1))
				set pd2 = PlayerData_pData[id2]
				call dispatch_PlayerData_PlayerData_PlayerData_addXp(pd2, 8965, true)
			else
				call dispatch_PlayerData_PlayerData_PlayerData_addXp(pd_1, 8965, true)
			endif
		endif
	elseif temp == "boss" then
		if PlayerData_XP[pd_1] > 2500 then
			set units = GetUnitsSelectedAll(p)
			set iterator_2 = group_iterator(units)
			loop
				exitwhen  not group_hasNext(iterator_2)
				set u_3 = group_next(iterator_2)
				if Serializable_typeId[unit_getEntity(u_3)] == 1171 then
					call dispatch_SetupBox_SetupBox_SetupBox_addBossSwitch(unit_getEntity(u_3))
				endif
			endloop
			call group_close(iterator_2)
		else
			call printTimedToPlayer("|cffFFD621[Info]|r - You are not experienced enough!", 15., PlayerData_p[pd_1])
		endif
	elseif temp == "ship" then
		call new_Spaceship(vec3_toVec2(dispatch_UnitEntity_Entity_UnitEntity_getPos(PlayerData_escaper[pd_1]), dispatch_UnitEntity_Entity_UnitEntity_getPos_return_y, dispatch_UnitEntity_Entity_UnitEntity_getPos_return_z), vec3_toVec2_return_y, PlayerData_escaper[pd_1])
	elseif temp == "kick" then
		set name = string_toLowerCase(stringFromIndex(dispatch_LinkedList_LinkedList_LinkedList_get(args, 1)))
		if string_length(name) > 1 then
			set iterator_3 = LinkedList_iterator(PlayerData_allPlayers)
			loop
				exitwhen  not LLIterator_hasNext(iterator_3)
				set pl = LLIterator_next(iterator_3)
				if string_startsWith(string_toLowerCase(PlayerData_name[pl]), name) and ( not (PlayerData_title[pl] == 2)) then
					call RemovePlayer(PlayerData_p[pl], PLAYER_GAME_RESULT_DEFEAT)
					call LLIterator_close(iterator_3)
					return
				endif
			endloop
			call LLIterator_close(iterator_3)
		endif
	elseif  not (string_startsWith(cstr, "st") or string_startsWith(cstr, "sht") or string_startsWith(cstr, "sc") or string_startsWith(cstr, "sa") or string_startsWith(cstr, "ht")) then
		call DisplayTimedTextToPlayer(p, 0., 0., 10., "|cffFFD621[Info]|r - Command not found! Available Commands: -clear, -cam [value], -cam unlock, -cam lock, -frev (forced revive), -info, -intro, -smode [both|cam|select|none], -rename [name]")
	endif
	call dispatch_LinkedList_destroyLinkedList(args)
endfunction

function onEvent_add_Commands takes integer this_1 returns nothing
	local string str = GetEventPlayerChatString()
	if string_startsWith(str, "-") then
		call parseCommand(str)
	endif
endfunction

function alloc_CongaSegment takes nothing returns integer
	local integer this_1
	if CongaSegment_firstFree == 0 then
		if CongaSegment_maxIndex < JASS_MAX_ARRAY_SIZE then
			set CongaSegment_maxIndex = CongaSegment_maxIndex + 1
			set this_1 = CongaSegment_maxIndex
			set CongaSegment_typeId[this_1] = 731
		else
			call error("Out of memory: Could not create CongaSegment.")
			set this_1 = 0
		endif
	else
		set CongaSegment_firstFree = CongaSegment_firstFree - 1
		set this_1 = CongaSegment_nextFree[CongaSegment_firstFree]
		set CongaSegment_typeId[this_1] = 731
	endif
	return this_1
endfunction

function CongaSegment_init takes integer this_1 returns nothing
	set CongaSegment_next[this_1] = 0
	set CongaSegment_prev[this_1] = 0
endfunction

function construct_CongaSegment takes integer this_1, integer head, integer target returns nothing
	call CongaSegment_init(this_1)
	set CongaSegment_target[this_1] = target
	set CongaSegment_head[this_1] = head
	call unit_removeAbility(SetupObject_setup[target], BuilderConstants_REMOVE_OBJECT_ID)
	call vec3_angleTo2d_4263(dispatch_UnitEntity_Entity_UnitEntity_getPos(head), dispatch_UnitEntity_Entity_UnitEntity_getPos_return_y, dispatch_UnitEntity_Entity_UnitEntity_getPos_return_z, dispatch_UnitEntity_Entity_UnitEntity_getPos(target), dispatch_UnitEntity_Entity_UnitEntity_getPos_return_y, dispatch_UnitEntity_Entity_UnitEntity_getPos_return_z)
endfunction

function new_CongaSegment takes integer head, integer target returns integer
	local integer this_1 = alloc_CongaSegment()
	call construct_CongaSegment(this_1, head, target)
	return this_1
endfunction

function vec3_angleTo2d takes real this_x, real this_y, real this_z, real v_x, real v_y returns real
	set vec3_angleTo2d_return_radians = real_asAngleRadians(Atan2(v_y - this_y, v_x - this_x))
	return vec3_angleTo2d_return_radians
endfunction

function CongaLineHead_addSegment takes integer this_1, integer e_1 returns nothing
	local boolean isNew = true
	local integer segment = CongaLineHead_firstSegment[this_1]
	loop
		exitwhen  not (segment != 0)
		if CongaSegment_target[segment] == e_1 then
			set isNew = false
			exitwhen true
		endif
		set segment = CongaSegment_next[segment]
	endloop
	if isNew then
		if CongaLineHead_firstSegment[this_1] == 0 then
			set CongaLineHead_firstSegment[this_1] = new_CongaSegment(this_1, e_1)
		else
			set segment = CongaLineHead_firstSegment[this_1]
			loop
				exitwhen  not (CongaSegment_next[segment] != 0)
				set segment = CongaSegment_next[segment]
			endloop
			set CongaSegment_next[segment] = new_CongaSegment(this_1, e_1)
			set CongaSegment_prev[CongaSegment_next[segment]] = segment
			call vec3_angleTo2d(dispatch_UnitEntity_Entity_UnitEntity_getPos(e_1), dispatch_UnitEntity_Entity_UnitEntity_getPos_return_y, dispatch_UnitEntity_Entity_UnitEntity_getPos_return_z, vec3_toVec2(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1]), vec3_toVec2_return_y)
		endif
	else
		call dispatch_CongaSegment_destroyCongaSegment(segment)
	endif
endfunction

function dispatch_CongaLineHead_CongaLineHead_CongaLineHead_addSegment takes integer this_1, integer e_1 returns nothing
	if Serializable_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling CongaLineHead.addSegment")
		else
			call error("Called CongaLineHead.addSegment on invalid object.")
		endif
	endif
	call CongaLineHead_addSegment(this_1, e_1)
endfunction

function CongaLineHead_onCast takes integer this_1 returns nothing
	local integer id = GetSpellAbilityId()
	local unit t = GetSpellTargetUnit()
	local integer temp = id
	local integer ed
	local integer instanceOfTemp
	local boolean andLeft
	if temp == CongaObjects_ADD_ID then
		set ed = unit_getEntity(t)
		if Entity_owner[ed] == Entity_owner[this_1] then
			set instanceOfTemp = Serializable_typeId[ed]
			set andLeft = instanceOfTemp >= 1172 and instanceOfTemp <= 1192
		else
			set andLeft = false
		endif
		if andLeft then
			call dispatch_CongaLineHead_CongaLineHead_CongaLineHead_addSegment(this_1, ed)
		endif
	elseif temp == CongaObjects_INC_ID then
		if CongaLineHead_segLength[this_1] < 500. then
			set CongaLineHead_segLength[this_1] = CongaLineHead_segLength[this_1] + 25.
			call createFText_2346(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1], 0., 0.05, "Segment Length: " + R2SW(CongaLineHead_segLength[this_1], 1, 2), 10., 2., 255, 255, 255, 0, Entity_owner[this_1])
		else
			call createFText_2346(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1], 0., 0.05, "Maximum Speed", 10., 2., 255, 255, 255, 0, Entity_owner[this_1])
		endif
	elseif temp == CongaObjects_DEC_ID then
		if CongaLineHead_segLength[this_1] > 25. then
			set CongaLineHead_segLength[this_1] = CongaLineHead_segLength[this_1] - 25.
			call createFText_2346(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1], 0., 0.05, "Segment Length: " + R2SW(CongaLineHead_segLength[this_1], 1, 2), 10., 2., 255, 255, 255, 0, Entity_owner[this_1])
		else
			call createFText_2346(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1], 0., 0.05, "Minimum Speed", 10., 2., 255, 255, 255, 0, Entity_owner[this_1])
		endif
	elseif temp == CongaObjects_CONGA_STRICT_ID then
		set CongaLineHead_cmode[this_1] = 0
	elseif temp == CongaObjects_CONGA_LOOSE_ID then
		set CongaLineHead_cmode[this_1] = 1
	endif
endfunction

function dispatch_CongaLineHead_CongaLineHead_CongaLineHead_onCast takes integer this_1 returns nothing
	if Serializable_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling CongaLineHead.onCast")
		else
			call error("Called CongaLineHead.onCast on invalid object.")
		endif
	endif
	call CongaLineHead_onCast(this_1)
endfunction

function onEvent_add_CongaLineHead_CongaLineHead takes integer this_1 returns nothing
	call dispatch_CongaLineHead_CongaLineHead_CongaLineHead_onCast(this_2990[this_1])
endfunction

function DamageEvent_getAmount takes nothing returns real
	return DamageInstance_amount[DamageInstance_current]
endfunction

function DamageInstance_setAmount takes integer this_1, real amount returns nothing
	set DamageInstance_amount[this_1] = amount
	if DamageInstance_unreduced[this_1] then
	endif
endfunction

function dispatch_DamageInstance_DamageEvent_DamageInstance_setAmount takes integer this_1, real amount returns nothing
	if DamageInstance_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling DamageInstance.setAmount")
		else
			call error("Called DamageInstance.setAmount on invalid object.")
		endif
	endif
	call DamageInstance_setAmount(this_1, amount)
endfunction

function DamageEvent_setAmount takes real amount returns nothing
	call dispatch_DamageInstance_DamageEvent_DamageInstance_setAmount(DamageInstance_current, amount)
endfunction

function Buff_attackModifier takes integer this_1 returns nothing
endfunction

function dispatch_Buff_Buff_Buff_attackModifier takes integer this_1 returns nothing
	if Buff_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling Buff.attackModifier")
		else
			call error("Called Buff.attackModifier on invalid object.")
		endif
	endif
	call Buff_attackModifier(this_1)
endfunction

function Buff_defenseModifier takes integer this_1 returns nothing
endfunction

function DamageEvent_addAmount takes real amount returns nothing
	call dispatch_DamageInstance_DamageEvent_DamageInstance_setAmount(DamageInstance_current, DamageInstance_amount[DamageInstance_current] + amount)
endfunction

function ShieldBuff_defenseModifier takes integer this_1 returns nothing
	local real dmg = DamageEvent_getAmount()
	if dmg >= ShieldBuff_blockAmount[this_1] then
		call DamageEvent_addAmount( - ShieldBuff_blockAmount[this_1])
		set ShieldBuff_blockAmount[this_1] = 0.
		call cyc_NormalBuff_onDestroy(8, this_1, null, 0)
	else
		call DamageEvent_setAmount(0.)
		set ShieldBuff_blockAmount[this_1] = ShieldBuff_blockAmount[this_1] - dmg
	endif
endfunction

function dispatch_Buff_Buff_Buff_defenseModifier takes integer this_1 returns nothing
	if Buff_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling Buff.defenseModifier")
		else
			call error("Called Buff.defenseModifier on invalid object.")
		endif
	endif
	if Buff_typeId[this_1] <= 650 then
		if Buff_typeId[this_1] <= 649 then
			call Buff_defenseModifier(this_1)
		else
			call ShieldBuff_defenseModifier(this_1)
		endif
	else
		call Buff_defenseModifier(this_1)
	endif
endfunction

function getSquare takes nothing returns string
	return Squares_squares[GetRandomInt(0, 20)]
endfunction

function alloc_TextTagEntity takes nothing returns integer
	local integer this_1
	if Serializable_firstFree == 0 then
		if Serializable_maxIndex < JASS_MAX_ARRAY_SIZE then
			set Serializable_maxIndex = Serializable_maxIndex + 1
			set this_1 = Serializable_maxIndex
			set Serializable_typeId[this_1] = 1159
		else
			call error("Out of memory: Could not create TextTagEntity.")
			set this_1 = 0
		endif
	else
		set Serializable_firstFree = Serializable_firstFree - 1
		set this_1 = Serializable_nextFree[Serializable_firstFree]
		set Serializable_typeId[this_1] = 1159
	endif
	return this_1
endfunction

function TextTagEntity_init takes integer this_1 returns nothing
endfunction

function construct_TextTagEntity takes integer this_1, real pos_x_1, real pos_y_1, real pos_z, real vel_x, real vel_y, real vel_z, string text, real size, real duration, integer col_red, integer col_green, integer col_blue, integer col_alpha returns nothing
	local real tuple_temp
	local real tuple_temp_1
	local real tuple_temp_2
	local integer tuple_temp_3
	local integer tuple_temp_4
	local integer tuple_temp_5
	local integer tuple_temp_6
	call construct_Entity5(this_1, Basics_DUMMY_PLAYER, pos_x_1, pos_y_1, pos_z, 0.)
	call TextTagEntity_init(this_1)
	set Entity_sleeps[this_1] = false
	set TextTagEntity_dur[this_1] = duration
	set tuple_temp = vel_x
	set tuple_temp_1 = vel_y
	set tuple_temp_2 = vel_z
	set Entity_vel_x[this_1] = tuple_temp
	set Entity_vel_y[this_1] = tuple_temp_1
	set Entity_vel_z[this_1] = tuple_temp_2
	set tuple_temp_3 = col_red
	set tuple_temp_4 = col_green
	set tuple_temp_5 = col_blue
	set tuple_temp_6 = col_alpha
	set TextTagEntity_col_red[this_1] = tuple_temp_3
	set TextTagEntity_col_green[this_1] = tuple_temp_4
	set TextTagEntity_col_blue[this_1] = tuple_temp_5
	set TextTagEntity_col_alpha[this_1] = tuple_temp_6
	set TextTagEntity_ftext[this_1] = createFText_2348(pos_x_1, pos_y_1, pos_z, text, size, duration, Vectors_ZERO2_x, Vectors_ZERO2_y, col_red, col_green, col_blue, col_alpha)
endfunction

function new_TextTagEntity takes real pos_x_1, real pos_y_1, real pos_z, real vel_x, real vel_y, real vel_z, string text, real size, real duration, integer col_red, integer col_green, integer col_blue, integer col_alpha returns integer
	local integer this_1 = alloc_TextTagEntity()
	call construct_TextTagEntity(this_1, pos_x_1, pos_y_1, pos_z, vel_x, vel_y, vel_z, text, size, duration, col_red, col_green, col_blue, col_alpha)
	return this_1
endfunction

function player_isAllyOf takes player this_1, player p returns boolean
	return IsPlayerAlly(this_1, p)
endfunction

function onEvent_addListener_Buff takes integer this_1 returns nothing
	local unit def = GetTriggerUnit()
	local unit att = GetEventDamageSource()
	local integer iterator
	local integer bff
	local integer iterator_1
	local integer bff_1
	if Frentity_DISABLE_TEAMATTACK and player_isAllyOf(unit_getOwner(def), unit_getOwner(att)) or unit_getOwner(def) == unit_getOwner(att) then
		if DamageEvent_getAmount() > 0.5 then
			call DamageEvent_setAmount(0.)
			if Frentity_SHOW_SQUARE then
				call new_TextTagEntity(vec2_toVec3(unit_getPos(def), unit_getPos_return_y), vec2_toVec3_return_y, vec2_toVec3_return_z, GetRandomReal(-2., 2.), GetRandomReal(-2., 2.), GetRandomReal(8., 10.), getSquare(), 10., .8, GetRandomInt(150, 250), GetRandomInt(125, 150), GetRandomInt(125, 150), 255)
			endif
		endif
	else
		if unit_hasBuffs(att) then
			set iterator = LinkedList_iterator(unit_getBuffs(att))
			loop
				exitwhen  not LLIterator_hasNext(iterator)
				set bff = LLIterator_next(iterator)
				if  not Buff_done[bff] then
					call dispatch_Buff_Buff_Buff_attackModifier(bff)
				endif
			endloop
			call LLIterator_close(iterator)
		endif
		if unit_hasBuffs(def) then
			set iterator_1 = LinkedList_iterator(unit_getBuffs(def))
			loop
				exitwhen  not LLIterator_hasNext(iterator_1)
				set bff_1 = LLIterator_next(iterator_1)
				if  not Buff_done[bff_1] then
					call dispatch_Buff_Buff_Buff_defenseModifier(bff_1)
				endif
			endloop
			call LLIterator_close(iterator_1)
		endif
	endif
endfunction

function dispatch_DamageListener_DamageEvent_DamageListener_onEvent takes integer this_1 returns nothing
	if DamageListener_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling DamageListener.onEvent")
		else
			call error("Called DamageListener.onEvent on invalid object.")
		endif
	endif
	call onEvent_addListener_Buff(this_1)
endfunction

function alloc_DamageInstance takes nothing returns integer
	local integer this_1
	if DamageInstance_firstFree == 0 then
		if DamageInstance_maxIndex < JASS_MAX_ARRAY_SIZE then
			set DamageInstance_maxIndex = DamageInstance_maxIndex + 1
			set this_1 = DamageInstance_maxIndex
			set DamageInstance_typeId[this_1] = 735
		else
			call error("Out of memory: Could not create DamageInstance.")
			set this_1 = 0
		endif
	else
		set DamageInstance_firstFree = DamageInstance_firstFree - 1
		set this_1 = DamageInstance_nextFree[DamageInstance_firstFree]
		set DamageInstance_typeId[this_1] = 735
	endif
	return this_1
endfunction

function DamageInstance_init takes integer this_1 returns nothing
endfunction

function construct_DamageInstance takes integer this_1, integer id, unit source, unit target, real unreducedAmount, attacktype nativeAttackType, damagetype nativeDamageType, weapontype nativeWeaponType, integer damageType, integer damageElement returns nothing
	call DamageInstance_init(this_1)
	set DamageInstance_amount[this_1] = unreducedAmount
	set DamageInstance_unreduced[this_1] = true
	set DamageInstance_nativeAttackType[this_1] = nativeAttackType
	set DamageInstance_nativeDamageType[this_1] = nativeDamageType
	set DamageInstance_nativeWeaponType[this_1] = nativeWeaponType
	set DamageInstance_count = DamageInstance_count + 1
	set DamageInstance_stack[DamageInstance_count] = this_1
	set DamageInstance_current = this_1
endfunction

function new_DamageInstance takes integer id, unit source, unit target, real unreducedAmount, attacktype nativeAttackType, damagetype nativeDamageType, weapontype nativeWeaponType, integer damageType, integer damageElement returns integer
	local integer this_1 = alloc_DamageInstance()
	call construct_DamageInstance(this_1, id, source, target, unreducedAmount, nativeAttackType, nativeDamageType, nativeWeaponType, damageType, damageElement)
	return this_1
endfunction

function DamageEvent_onUnreducedDamage takes nothing returns nothing
	local real amount = GetEventDamage()
	local attacktype attackType = BlzGetEventAttackType()
	local integer dmg
	local integer i
	local integer temp
	local integer listener_1
	if DamageEvent_nextDamageType == 4 then
		if DamageEvent_DETECT_NATIVE_ABILITIES and attackType == ATTACK_TYPE_NORMAL then
			set DamageEvent_nextDamageType = 1
		else
			set DamageEvent_nextDamageType = 0
			set DamageEvent_nextDamageElement = DamageEvent_DAMAGE_ELEMENT_ATTACK
		endif
	endif
	set dmg = new_DamageInstance(DamageEvent_nextDamageId, GetEventDamageSource(), GetTriggerUnit(), amount, attackType, BlzGetEventDamageType(), BlzGetEventWeaponType(), DamageEvent_nextDamageType, DamageEvent_nextDamageElement)
	set DamageEvent_nextDamageId = 0
	set DamageEvent_nextDamageType = 4
	set DamageEvent_nextDamageElement = 0
	set i = 0
	set temp = DamageEvent_maxUnreducedPriority
	loop
		exitwhen i > temp
		set listener_1 = DamageEvent_firstUnreducedListeners[i]
		loop
			exitwhen  not (listener_1 != 0)
			call dispatch_DamageListener_DamageEvent_DamageListener_onEvent(listener_1)
			if DamageEvent_abort then
				set DamageInstance_amount[dmg] = 0.
				exitwhen true
			else
				set listener_1 = DamageListener_next[listener_1]
			endif
		endloop
		if DamageEvent_abort then
			exitwhen true
		endif
		set i = i + 1
	endloop
	call BlzSetEventAttackType(DamageInstance_nativeAttackType[dmg])
	call BlzSetEventDamageType(DamageInstance_nativeDamageType[dmg])
	call BlzSetEventWeaponType(DamageInstance_nativeWeaponType[dmg])
	call BlzSetEventDamage(DamageInstance_amount[dmg])
endfunction

function onEvent_add_DamageEvent takes integer this_1 returns nothing
	call DamageEvent_onUnreducedDamage()
endfunction

function DamageInstance_setReducedAmount takes integer this_1, real amount returns nothing
	set DamageInstance_amount[this_1] = amount
	set DamageInstance_unreduced[this_1] = false
endfunction

function dispatch_DamageInstance_DamageEvent_DamageInstance_setReducedAmount takes integer this_1, real amount returns nothing
	if DamageInstance_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling DamageInstance.setReducedAmount")
		else
			call error("Called DamageInstance.setReducedAmount on invalid object.")
		endif
	endif
	call DamageInstance_setReducedAmount(this_1, amount)
endfunction

function DamageInstance_onDestroy takes integer this_1 returns nothing
	set DamageInstance_count = DamageInstance_count - 1
	set DamageInstance_current = DamageInstance_stack[DamageInstance_count]
endfunction

function dealloc_DamageInstance takes integer obj_1 returns nothing
	if DamageInstance_typeId[obj_1] == 0 then
		call error("Double free: object of type DamageInstance")
	else
		set DamageInstance_nextFree[DamageInstance_firstFree] = obj_1
		set DamageInstance_firstFree = DamageInstance_firstFree + 1
		set DamageInstance_typeId[obj_1] = 0
	endif
endfunction

function destroyDamageInstance takes integer this_1 returns nothing
	call DamageInstance_onDestroy(this_1)
	call dealloc_DamageInstance(this_1)
endfunction

function dispatch_DamageInstance_destroyDamageInstance takes integer this_1 returns nothing
	if DamageInstance_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling DamageInstance.DamageInstance")
		else
			call error("Called DamageInstance.DamageInstance on invalid object.")
		endif
	endif
	call destroyDamageInstance(this_1)
endfunction

function DamageEvent_onDamage takes nothing returns nothing
	local integer dmg = DamageInstance_current
	local integer i
	local integer temp
	local integer listener_1
	if  not DamageEvent_abort then
		call dispatch_DamageInstance_DamageEvent_DamageInstance_setReducedAmount(dmg, GetEventDamage())
		set i = 0
		set temp = DamageEvent_maxPriority
		loop
			exitwhen i > temp
			set listener_1 = DamageEvent_firstListeners[i]
			loop
				exitwhen  not (listener_1 != 0)
				call dispatch_DamageListener_DamageEvent_DamageListener_onEvent(listener_1)
				if DamageEvent_abort then
					set DamageInstance_amount[dmg] = 0.
					exitwhen true
				else
					set listener_1 = DamageListener_next[listener_1]
				endif
			endloop
			if DamageEvent_abort then
				exitwhen true
			endif
			set i = i + 1
		endloop
		call BlzSetEventAttackType(DamageInstance_nativeAttackType[dmg])
		call BlzSetEventDamageType(DamageInstance_nativeDamageType[dmg])
		call BlzSetEventWeaponType(DamageInstance_nativeWeaponType[dmg])
		call BlzSetEventDamage(DamageInstance_amount[dmg])
	endif
	call dispatch_DamageInstance_destroyDamageInstance(dmg)
	set DamageEvent_abort = false
endfunction

function onEvent_add_DamageEvent_3823 takes integer this_1 returns nothing
	call DamageEvent_onDamage()
endfunction

function Log_setLevel takes integer lvl returns nothing
	set Printing_config_DEBUG_LEVEL = lvl
endfunction

function onEvent_add_DebugInfo takes integer this_1 returns nothing
	local string entered = GetEventPlayerChatString()
	local integer level
	local integer loglvl
	if string_startsWith(entered, "-d ") then
		set level = string_toInt(string_substring(entered, 3, 4))
		if level >= 0 and level < 5 then
			set loglvl = level
			call Log_setLevel(loglvl)
			call printTimedToPlayer("Loglevel adjusted to: " + Loglevel_getTag(loglvl), 10., GetTriggerPlayer())
		endif
	endif
endfunction

function real_toString_3970 takes real this_1, integer precision returns string
	return R2SW(this_1, precision, precision)
endfunction

function ConfigValue_decrement takes integer this_1, integer caster, real min returns nothing
	if ConfigValue_value[this_1] > min then
		set ConfigValue_value[this_1] = ConfigValue_value[this_1] - ConfigValue_increment[this_1]
		call createFText_2347(dispatch_UnitEntity_Entity_UnitEntity_getPos(caster), dispatch_UnitEntity_Entity_UnitEntity_getPos_return_y, dispatch_UnitEntity_Entity_UnitEntity_getPos_return_z, ConfigValue_valueName[this_1] + ": " + real_toString_3970(ConfigValue_value[this_1], 3), 9., 1.5, 0., 0.1, Colors_COLOR_WHITE_red, Colors_COLOR_WHITE_green, Colors_COLOR_WHITE_blue, Colors_COLOR_WHITE_alpha, Entity_owner[caster])
	else
		call createFText_2347(dispatch_UnitEntity_Entity_UnitEntity_getPos(caster), dispatch_UnitEntity_Entity_UnitEntity_getPos_return_y, dispatch_UnitEntity_Entity_UnitEntity_getPos_return_z, ConfigValue_valueName[this_1] + " at minimum!", 9., 1.5, 0., 0.1, Colors_COLOR_WHITE_red, Colors_COLOR_WHITE_green, Colors_COLOR_WHITE_blue, Colors_COLOR_WHITE_alpha, Entity_owner[caster])
	endif
endfunction

function dispatch_ConfigValue_ConfigValue_ConfigValue_decrement takes integer this_1, integer caster, real min returns nothing
	if ConfigValue_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling ConfigValue.decrement")
		else
			call error("Called ConfigValue.decrement on invalid object.")
		endif
	endif
	call ConfigValue_decrement(this_1, caster, min)
endfunction

function ConfigValue_increment_1 takes integer this_1, integer caster, real max returns nothing
	if ConfigValue_value[this_1] < max then
		set ConfigValue_value[this_1] = ConfigValue_value[this_1] + ConfigValue_increment[this_1]
		call createFText_2347(dispatch_UnitEntity_Entity_UnitEntity_getPos(caster), dispatch_UnitEntity_Entity_UnitEntity_getPos_return_y, dispatch_UnitEntity_Entity_UnitEntity_getPos_return_z, ConfigValue_valueName[this_1] + ": " + real_toString_3970(ConfigValue_value[this_1], 3), 9., 1.5, 0., 0.1, Colors_COLOR_WHITE_red, Colors_COLOR_WHITE_green, Colors_COLOR_WHITE_blue, Colors_COLOR_WHITE_alpha, Entity_owner[caster])
	else
		call createFText_2347(dispatch_UnitEntity_Entity_UnitEntity_getPos(caster), dispatch_UnitEntity_Entity_UnitEntity_getPos_return_y, dispatch_UnitEntity_Entity_UnitEntity_getPos_return_z, ConfigValue_valueName[this_1] + " at maximum!", 9., 1.5, 0., 0.1, Colors_COLOR_WHITE_red, Colors_COLOR_WHITE_green, Colors_COLOR_WHITE_blue, Colors_COLOR_WHITE_alpha, Entity_owner[caster])
	endif
endfunction

function dispatch_ConfigValue_ConfigValue_ConfigValue_increment takes integer this_1, integer caster, real max returns nothing
	if ConfigValue_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling ConfigValue.increment")
		else
			call error("Called ConfigValue.increment on invalid object.")
		endif
	endif
	call ConfigValue_increment_1(this_1, caster, max)
endfunction

function alloc_EventListener_add_Decoration_Decoration_1696 takes nothing returns integer
	local integer this_1
	if EventListener_firstFree == 0 then
		if EventListener_maxIndex < JASS_MAX_ARRAY_SIZE then
			set EventListener_maxIndex = EventListener_maxIndex + 1
			set this_1 = EventListener_maxIndex
			set EventListener_typeId[this_1] = 777
		else
			call error("Out of memory: Could not create EventListener_add_Decoration_Decoration.")
			set this_1 = 0
		endif
	else
		set EventListener_firstFree = EventListener_firstFree - 1
		set this_1 = EventListener_nextFree[EventListener_firstFree]
		set EventListener_typeId[this_1] = 777
	endif
	return this_1
endfunction

function StaticSetupObject_setNewSetup takes integer this_1, unit u_1 returns nothing
	if u_1 == null or ( not unit_isAlive(u_1)) or unit_getEntity(u_1) != 0 then
		call error("invalid actor replacement")
	endif
	call unit_setEntity(StaticSetupObject_setup[this_1], 0)
	call unit_remove(StaticSetupObject_setup[this_1])
	set StaticSetupObject_setup[this_1] = u_1
	call unit_setEntity(StaticSetupObject_setup[this_1], this_1)
endfunction

function dispatch_StaticSetupObject_SetupObject_StaticSetupObject_setNewSetup takes integer this_1, unit u_1 returns nothing
	if Serializable_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling StaticSetupObject.setNewSetup")
		else
			call error("Called StaticSetupObject.setNewSetup on invalid object.")
		endif
	endif
	call StaticSetupObject_setNewSetup(this_1, u_1)
endfunction

function Escaper_setNewActor takes integer this_1, unit u_1 returns nothing
	call error("Don't do this..")
endfunction

function dispatch_UnitEntity_Entity_UnitEntity_setNewActor takes integer this_1, unit u_1 returns nothing
	if Serializable_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling UnitEntity.setNewActor")
		else
			call error("Called UnitEntity.setNewActor on invalid object.")
		endif
	endif
	if Serializable_typeId[this_1] <= 1168 then
		if Serializable_typeId[this_1] <= 1162 then
			call UnitEntity_setNewActor(this_1, u_1)
		else
			call Escaper_setNewActor(this_1, u_1)
		endif
	else
		call UnitEntity_setNewActor(this_1, u_1)
	endif
endfunction

function player_select takes player this_1, unit u_1 returns nothing
	if Player_localPlayer == this_1 then
		call SelectUnit(u_1, true)
	endif
endfunction

function unit_getTypeId takes unit this_1 returns integer
	return GetUnitTypeId(this_1)
endfunction

function Decoration_changeAngle takes integer this_1, real a_radians returns nothing
	local boolean select = IsUnitSelected(StaticSetupObject_setup[this_1], Entity_owner[this_1])
	local unit receiver
	local unit receiver_1
	local unit receiver_2
	local unit receiver_3
	local integer clVar
	local unit temp
	local playerunitevent temp_1
	call dispatch_UnitEntity_Entity_UnitEntity_setNewActor(this_1, createUnit_2356(Entity_owner[this_1], unit_getTypeId(UnitEntity_actor[this_1]), Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1], a_radians))
	call dispatch_StaticSetupObject_SetupObject_StaticSetupObject_setNewSetup(this_1, createUnit_2356(Entity_owner[this_1], unit_getTypeId(StaticSetupObject_setup[this_1]), Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1], a_radians))
	call unit_addAbility(UnitEntity_actor[this_1], Basics_LOCUST_ID)
	set receiver = StaticSetupObject_setup[this_1]
	call unit_addAbility(receiver, Basics_GHOST_INVIS_ID)
	set receiver_1 = receiver
	call unit_addAbility(receiver_1, Decoration_CHANGE_FACE_ID)
	set receiver_2 = receiver_1
	call unit_addAbility(receiver_2, Decoration_INC_SCALE)
	set receiver_3 = receiver_2
	call unit_addAbility(receiver_3, Decoration_DEC_SCALE)
	set temp = StaticSetupObject_setup[this_1]
	set temp_1 = EVENT_PLAYER_UNIT_SPELL_CAST
	set clVar = alloc_EventListener_add_Decoration_Decoration_1696()
	call construct_EventListener(clVar)
	set this_2969[clVar] = this_1
	call EventListener_add_436(temp, temp_1, clVar)
	if select then
		call player_select(Entity_owner[this_1], StaticSetupObject_setup[this_1])
	endif
	set Decoration_hasBeenChanged[this_1] = true
endfunction

function dispatch_Decoration_Decoration_Decoration_changeAngle takes integer this_1, real a_radians returns nothing
	if Serializable_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling Decoration.changeAngle")
		else
			call error("Called Decoration.changeAngle on invalid object.")
		endif
	endif
	call Decoration_changeAngle(this_1, a_radians)
endfunction

function Decoration_onCast takes integer this_1 returns nothing
	local integer id = GetSpellAbilityId()
	local integer temp = id
	local real tg_x
	local real tg_y
	local real tuple_temp
	local real tuple_temp_1
	if temp == Decoration_CHANGE_FACE_ID then
		set tuple_temp = EventData_getSpellTargetPos()
		set tuple_temp_1 = EventData_getSpellTargetPos_return_y
		set tg_x = tuple_temp
		set tg_y = tuple_temp_1
		call dispatch_Decoration_Decoration_Decoration_changeAngle(this_1, vec3_angleTo2d(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1], tg_x, tg_y))
	elseif temp == Decoration_INC_SCALE then
		call dispatch_ConfigValue_ConfigValue_ConfigValue_increment(Decoration_scale[this_1], this_1, 3.0)
	elseif temp == Decoration_DEC_SCALE then
		call dispatch_ConfigValue_ConfigValue_ConfigValue_decrement(Decoration_scale[this_1], this_1, 0.1)
	endif
	call unit_setScale(UnitEntity_actor[this_1], dispatch_ConfigValue_ConfigValue_ConfigValue_get(Decoration_scale[this_1]))
	call unit_setScale(StaticSetupObject_setup[this_1], dispatch_ConfigValue_ConfigValue_ConfigValue_get(Decoration_scale[this_1]))
endfunction

function dispatch_Decoration_Decoration_Decoration_onCast takes integer this_1 returns nothing
	if Serializable_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling Decoration.onCast")
		else
			call error("Called Decoration.onCast on invalid object.")
		endif
	endif
	call Decoration_onCast(this_1)
endfunction

function onEvent_add_Decoration_Decoration takes integer this_1 returns nothing
	call dispatch_Decoration_Decoration_Decoration_onCast(this_2968[this_1])
endfunction

function onEvent_add_Decoration_Decoration_3826 takes integer this_1 returns nothing
	call dispatch_Decoration_Decoration_Decoration_onCast(this_2969[this_1])
endfunction

function EBRColor_toColor takes integer this_1 returns integer
	local integer temp = this_1
	if temp == 0 then
		set EBRColor_toColor_return_red = Colors_COLOR_WHITE_red
		set EBRColor_toColor_return_green = Colors_COLOR_WHITE_green
		set EBRColor_toColor_return_blue = Colors_COLOR_WHITE_blue
		set EBRColor_toColor_return_alpha = Colors_COLOR_WHITE_alpha
		return EBRColor_toColor_return_red
	else
		set EBRColor_toColor_return_red = color_withAlpha(playercolor_toColor(player_getColor(Player_players[this_1 - 1])), playercolor_toColor_return_green, playercolor_toColor_return_blue, 255)
		set EBRColor_toColor_return_green = color_withAlpha_return_green
		set EBRColor_toColor_return_blue = color_withAlpha_return_blue
		set EBRColor_toColor_return_alpha = color_withAlpha_return_alpha
		return EBRColor_toColor_return_red
	endif
endfunction

function Door_changeColor takes integer this_1, integer id returns nothing
	local integer i = 0
	loop
		exitwhen i > 8
		if id == BuilderConstants_colorSpells[i] then
			set Door_col[this_1] = i
		endif
		set i = i + 1
	endloop
	call unit_setVertexColor_4206(UnitEntity_actor[this_1], EBRColor_toColor(Door_col[this_1]), EBRColor_toColor_return_green, EBRColor_toColor_return_blue, EBRColor_toColor_return_alpha)
endfunction

function dispatch_Door_Door_Door_changeColor takes integer this_1, integer id returns nothing
	if Serializable_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling Door.changeColor")
		else
			call error("Called Door.changeColor on invalid object.")
		endif
	endif
	call Door_changeColor(this_1, id)
endfunction

function Door_closeDoor takes integer this_1 returns nothing
	call unit_setAnimation(UnitEntity_actor[this_1], "stand")
	call unit_remove(Door_pathing[this_1])
	set Door_opened[this_1] = false
	if Door_vertical[this_1] then
		set Door_pathing[this_1] = createUnit(Entity_owner[this_1], Door_DOORPATH, vec3_toVec2(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1]), vec3_toVec2_return_y, real_fromDeg(0.))
	else
		set Door_pathing[this_1] = createUnit(Entity_owner[this_1], Door_DOORPATH, vec3_toVec2(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1]), vec3_toVec2_return_y, real_fromDeg(270.))
	endif
endfunction

function dispatch_Door_Door_Door_closeDoor takes integer this_1 returns nothing
	if Serializable_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling Door.closeDoor")
		else
			call error("Called Door.closeDoor on invalid object.")
		endif
	endif
	call Door_closeDoor(this_1)
endfunction

function Door_toggleOpen takes integer this_1 returns nothing
	if Door_opened[this_1] then
		call dispatch_Door_Door_Door_closeDoor(this_1)
	else
		call dispatch_Door_Door_Door_openDoor(this_1)
	endif
endfunction

function dispatch_Door_Door_Door_toggleOpen takes integer this_1 returns nothing
	if Serializable_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling Door.toggleOpen")
		else
			call error("Called Door.toggleOpen on invalid object.")
		endif
	endif
	call Door_toggleOpen(this_1)
endfunction

function Door_turn takes integer this_1 returns nothing
	if Door_vertical[this_1] then
		call unit_remove(Door_pathing[this_1])
		set Door_vertical[this_1] = false
		if Door_opened[this_1] then
			call dispatch_UnitEntity_Entity_UnitEntity_setNewActor(this_1, createUnit(Entity_owner[this_1], BuilderConstants_DOORDUMMY_ID, vec3_toVec2(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1]), vec3_toVec2_return_y, real_fromDeg(270.)))
			call unit_setAnimation(UnitEntity_actor[this_1], "Death Alternate")
			set Door_pathing[this_1] = createUnit(Entity_owner[this_1], Door_DOORPATH_O, vec3_toVec2(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1]), vec3_toVec2_return_y, real_fromDeg(270.))
		else
			call dispatch_UnitEntity_Entity_UnitEntity_setNewActor(this_1, createUnit(Entity_owner[this_1], BuilderConstants_DOORDUMMY_ID, vec3_toVec2(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1]), vec3_toVec2_return_y, real_fromDeg(270.)))
			set Door_pathing[this_1] = createUnit(Entity_owner[this_1], Door_DOORPATH, vec3_toVec2(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1]), vec3_toVec2_return_y, real_fromDeg(270.))
		endif
	else
		call unit_remove(Door_pathing[this_1])
		set Door_vertical[this_1] = true
		if Door_opened[this_1] then
			call dispatch_UnitEntity_Entity_UnitEntity_setNewActor(this_1, createUnit(Entity_owner[this_1], BuilderConstants_DOORDUMMY_ID, vec3_toVec2(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1]), vec3_toVec2_return_y, real_fromDeg(0.)))
			call unit_setAnimation(UnitEntity_actor[this_1], "Death Alternate")
			set Door_pathing[this_1] = createUnit(Entity_owner[this_1], Door_DOORPATH_O, vec3_toVec2(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1]), vec3_toVec2_return_y, real_fromDeg(0.))
		else
			call dispatch_UnitEntity_Entity_UnitEntity_setNewActor(this_1, createUnit(Entity_owner[this_1], BuilderConstants_DOORDUMMY_ID, vec3_toVec2(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1]), vec3_toVec2_return_y, real_fromDeg(0.)))
			set Door_pathing[this_1] = createUnit(Entity_owner[this_1], Door_DOORPATH, vec3_toVec2(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1]), vec3_toVec2_return_y, real_fromDeg(0.))
		endif
	endif
	call unit_setVertexColor_4206(UnitEntity_actor[this_1], EBRColor_toColor(Door_col[this_1]), EBRColor_toColor_return_green, EBRColor_toColor_return_blue, EBRColor_toColor_return_alpha)
endfunction

function dispatch_Door_Door_Door_turn takes integer this_1 returns nothing
	if Serializable_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling Door.turn")
		else
			call error("Called Door.turn on invalid object.")
		endif
	endif
	call Door_turn(this_1)
endfunction

function Door_onCast takes integer this_1 returns nothing
	local integer id = GetSpellAbilityId()
	local integer temp = id
	if temp == Door_DOOROPEN_ABILITY_ID then
		call dispatch_Door_Door_Door_toggleOpen(this_1)
	elseif temp == Door_DOORTURN_ABILITY_ID then
		call dispatch_Door_Door_Door_turn(this_1)
	else
		call dispatch_Door_Door_Door_changeColor(this_1, id)
	endif
endfunction

function dispatch_Door_Door_Door_onCast takes integer this_1 returns nothing
	if Serializable_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling Door.onCast")
		else
			call error("Called Door.onCast on invalid object.")
		endif
	endif
	call Door_onCast(this_1)
endfunction

function onEvent_add_Door_Door takes integer this_1 returns nothing
	call dispatch_Door_Door_Door_onCast(this_2991[this_1])
endfunction

function BallItem_onPickup takes integer this_1, integer holder returns nothing
	if Serializable_typeId[holder] == 1162 then
		call cyc_RevivePoint_terminate(18, this_1)
	else
		call unit_addAbility(UnitEntity_actor[holder], BasicSpells_BALL_SPELL_ID)
		call unit_hide(UnitEntity_actor[ItemObject_setup[this_1]])
	endif
endfunction

function Boots_onPickup takes integer this_1, integer holder returns nothing
	set ItemObject_holder[this_1] = holder
	call item_setEntity(ItemEntity_actor[this_1], 0)
	set ItemEntity_actor[this_1] = null
	call cyc_RevivePoint_terminate(18, this_1)
endfunction

function Coin_onPickup takes integer this_1, integer holder returns nothing
	call cyc_RevivePoint_terminate(18, this_1)
endfunction

function ItemObject_onPickup takes integer this_1, integer holder returns nothing
endfunction

function addEffect_1566 takes string path, widget target, string attachPointName returns effect
	return AddSpecialEffectTarget(path, target, attachPointName)
endfunction

function dispatch_IterableMap_HashMap_IterableMap_put takes integer this_1, integer key, integer value returns nothing
	if Table_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling IterableMap.put")
		else
			call error("Called IterableMap.put on invalid object.")
		endif
	endif
	call IterableMap_put(this_1, key, value)
endfunction

function RegionData_getPermission takes integer this_1, player p returns integer
	if dispatch_HashMap_HashMap_HashMap_has(RegionData_permissions[this_1], playerToIndex(p)) then
		return dispatch_HashMap_HashMap_HashMap_get(RegionData_permissions[this_1], playerToIndex(p))
	endif
	return 0
endfunction

function dispatch_RegionData_RegionData_RegionData_getPermission takes integer this_1, player p returns integer
	local integer RegionData_RegionData_getPermission_result
	if RegionData_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling RegionData.getPermission")
		else
			call error("Called RegionData.getPermission on invalid object.")
		endif
	endif
	set RegionData_RegionData_getPermission_result = RegionData_getPermission(this_1, p)
	return RegionData_RegionData_getPermission_result
endfunction

function dispatch_UnitEntity_Entity_UnitEntity_setXY takes integer this_1, real tpos_x_1, real tpos_y_1, real tpos_z returns nothing
	if Serializable_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling UnitEntity.setXY")
		else
			call error("Called UnitEntity.setXY on invalid object.")
		endif
	endif
	if Serializable_typeId[this_1] <= 1171 then
		if Serializable_typeId[this_1] <= 1168 then
			if Serializable_typeId[this_1] <= 1162 then
				call UnitEntity_setXY(this_1, tpos_x_1, tpos_y_1, tpos_z)
			else
				call Escaper_setXY(this_1, tpos_x_1, tpos_y_1, tpos_z)
			endif
		else
			call UnitEntity_setXY(this_1, tpos_x_1, tpos_y_1, tpos_z)
		endif
	elseif Serializable_typeId[this_1] <= 1192 then
		call SetupObject_setXY(this_1, tpos_x_1, tpos_y_1, tpos_z)
	else
		call UnitEntity_setXY(this_1, tpos_x_1, tpos_y_1, tpos_z)
	endif
endfunction

function effectToIndex takes effect object returns integer
	return handle_getTCHandleId(object)
endfunction

function Key_onPickup takes integer this_1, integer holder returns nothing
	local integer count
	local integer iterator
	local item itm
	local effect eff
	local effect receiver
	if isEscaperPlayer(Entity_owner[holder]) or dispatch_RegionData_RegionData_RegionData_getPermission(Entity_getCurrentRegion(this_1), Entity_owner[holder]) != 0 then
		set count = 0
		set iterator = InventoryIterator_iterator(unit_inventory(UnitEntity_actor[holder]))
		loop
			exitwhen  not InventoryIterator_hasNext(iterator)
			set itm = InventoryIterator_next(iterator)
			if item_getEntity(itm) == this_1 then
				set count = count + 1
			endif
		endloop
		call InventoryIterator_close(iterator)
		if count > 1 then
			set Key_ignoreNextDrop[this_1] = true
			call unit_removeItem(UnitEntity_actor[holder], ItemEntity_actor[this_1])
			call item_setPos(ItemEntity_actor[this_1], vec3_toVec2(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1]), vec3_toVec2_return_y)
		else
			set receiver = addEffect_1566("war3mapImported\\Key_ITEM.mdx", UnitEntity_actor[holder], "overhead")
			call effect_setColor(receiver, EBRColor_toColor(Key_col[this_1]), EBRColor_toColor_return_green, EBRColor_toColor_return_blue, EBRColor_toColor_return_alpha)
			set eff = receiver
			call dispatch_IterableMap_HashMap_IterableMap_put(Key_effectMap[this_1], holder, effectToIndex(eff))
			if Key_infinite[this_1] then
				set ItemEntity_actor[this_1] = createItem_2353(Key_keyIds[Key_col[this_1]], Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1])
				call item_setEntity(ItemEntity_actor[this_1], this_1)
			else
				set Key_picked[this_1] = true
				set ItemObject_holder[this_1] = holder
				call unit_hide(UnitEntity_actor[ItemObject_setup[this_1]])
				call dispatch_Entity_Entity_Entity_DupletListModule_activate(this_1)
			endif
		endif
	else
		set Key_picked[this_1] = false
		call unit_removeItem(UnitEntity_actor[holder], ItemEntity_actor[this_1])
		call item_setPos(ItemEntity_actor[this_1], vec3_toVec2(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1]), vec3_toVec2_return_y)
		call dispatch_UnitEntity_Entity_UnitEntity_setXY(ItemObject_setup[this_1], Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1])
		call unit_show(UnitEntity_actor[ItemObject_setup[this_1]])
		set ItemObject_holder[this_1] = 0
	endif
endfunction

function Tome_onPickup takes integer this_1, integer holder returns nothing
	call cyc_RevivePoint_terminate(18, this_1)
endfunction

function dispatch_ItemEntity_Entity_ItemEntity_onPickup takes integer this_1, integer entity_1 returns nothing
	if Serializable_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling ItemEntity.onPickup")
		else
			call error("Called ItemEntity.onPickup on invalid object.")
		endif
	endif
	if Serializable_typeId[this_1] <= 1155 then
		if Serializable_typeId[this_1] <= 1154 then
			if Serializable_typeId[this_1] <= 1153 then
				call ItemObject_onPickup(this_1, entity_1)
			else
				call BallItem_onPickup(this_1, entity_1)
			endif
		else
			call Boots_onPickup(this_1, entity_1)
		endif
	elseif Serializable_typeId[this_1] <= 1157 then
		if Serializable_typeId[this_1] <= 1156 then
			call Coin_onPickup(this_1, entity_1)
		else
			call Key_onPickup(this_1, entity_1)
		endif
	else
		call Tome_onPickup(this_1, entity_1)
	endif
endfunction

function onItemPickup takes nothing returns nothing
	local integer idata = item_getEntity(GetManipulatedItem())
	local integer edata = unit_getEntity(GetManipulatingUnit())
	if idata != 0 and ( not Entity_done[idata]) then
		if edata != 0 and ( not Entity_done[edata]) then
			call dispatch_ItemEntity_Entity_ItemEntity_onPickup(idata, edata)
		endif
	endif
endfunction

function onEvent_add_Entity takes integer this_1 returns nothing
	call onItemPickup()
endfunction

function alloc_CallbackSingle_nullTimer_BallItem_Ball takes nothing returns integer
	local integer this_1
	if CallbackSingle_firstFree == 0 then
		if CallbackSingle_maxIndex < JASS_MAX_ARRAY_SIZE then
			set CallbackSingle_maxIndex = CallbackSingle_maxIndex + 1
			set this_1 = CallbackSingle_maxIndex
			set CallbackSingle_typeId[this_1] = 706
		else
			call error("Out of memory: Could not create CallbackSingle_nullTimer_BallItem_Ball.")
			set this_1 = 0
		endif
	else
		set CallbackSingle_firstFree = CallbackSingle_firstFree - 1
		set this_1 = CallbackSingle_nextFree[CallbackSingle_firstFree]
		set CallbackSingle_typeId[this_1] = 706
	endif
	return this_1
endfunction

function alloc_CallbackSingle_nullTimer_BallItem_Ball_1634 takes nothing returns integer
	local integer this_1
	if CallbackSingle_firstFree == 0 then
		if CallbackSingle_maxIndex < JASS_MAX_ARRAY_SIZE then
			set CallbackSingle_maxIndex = CallbackSingle_maxIndex + 1
			set this_1 = CallbackSingle_maxIndex
			set CallbackSingle_typeId[this_1] = 707
		else
			call error("Out of memory: Could not create CallbackSingle_nullTimer_BallItem_Ball.")
			set this_1 = 0
		endif
	else
		set CallbackSingle_firstFree = CallbackSingle_firstFree - 1
		set this_1 = CallbackSingle_nextFree[CallbackSingle_firstFree]
		set CallbackSingle_typeId[this_1] = 707
	endif
	return this_1
endfunction

function BallItem_onDrop takes integer this_1, integer e_1 returns nothing
	local integer clVar
	local integer clVar_1
	if unit_hasAbility(UnitEntity_actor[e_1], BasicSpells_BALL_SPELL_ID) then
		call unit_removeAbility(UnitEntity_actor[e_1], BasicSpells_BALL_SPELL_ID)
		set clVar = alloc_CallbackSingle_nullTimer_BallItem_Ball()
		call construct_CallbackSingle(clVar)
		set this_2963[clVar] = this_1
		call nullTimer(clVar)
	else
		set clVar_1 = alloc_CallbackSingle_nullTimer_BallItem_Ball_1634()
		call construct_CallbackSingle(clVar_1)
		set this_2964[clVar_1] = this_1
		call nullTimer(clVar_1)
	endif
endfunction

function Boots_onDrop takes integer this_1, integer e_1 returns nothing
endfunction

function ItemObject_onDrop takes integer this_1, integer e_1 returns nothing
endfunction

function alloc_CallbackSingle_nullTimer_Key_Key takes nothing returns integer
	local integer this_1
	if CallbackSingle_firstFree == 0 then
		if CallbackSingle_maxIndex < JASS_MAX_ARRAY_SIZE then
			set CallbackSingle_maxIndex = CallbackSingle_maxIndex + 1
			set this_1 = CallbackSingle_maxIndex
			set CallbackSingle_typeId[this_1] = 711
		else
			call error("Out of memory: Could not create CallbackSingle_nullTimer_Key_Key.")
			set this_1 = 0
		endif
	else
		set CallbackSingle_firstFree = CallbackSingle_firstFree - 1
		set this_1 = CallbackSingle_nextFree[CallbackSingle_firstFree]
		set CallbackSingle_typeId[this_1] = 711
	endif
	return this_1
endfunction

function HashMap_getAndRemove takes integer this_1, integer key returns integer
	local integer result_1 = dispatch_HashMap_HashMap_HashMap_get(this_1, key)
	call dispatch_HashMap_HashMap_HashMap_remove(this_1, key)
	return result_1
endfunction

function IterableMap_getAndRemove takes integer this_1, integer key returns integer
	local integer result_1 = HashMap_getAndRemove(this_1, key)
	call dispatch_HashList_HashList_HashList_remove(IterableMap_keys[this_1], key)
	return result_1
endfunction

function dispatch_IterableMap_HashMap_IterableMap_getAndRemove takes integer this_1, integer key returns integer
	local integer HashMap_IterableMap_getAndRemove_result
	if Table_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling IterableMap.getAndRemove")
		else
			call error("Called IterableMap.getAndRemove on invalid object.")
		endif
	endif
	set HashMap_IterableMap_getAndRemove_result = IterableMap_getAndRemove(this_1, key)
	return HashMap_IterableMap_getAndRemove_result
endfunction

function Key_onDrop takes integer this_1, integer e_1 returns nothing
	local integer clVar
	if Key_ignoreNextDrop[this_1] then
		set Key_ignoreNextDrop[this_1] = false
	else
		if dispatch_HashMap_HashMap_HashMap_has(Key_effectMap[this_1], e_1) then
			call effect_destr(effectFromIndex(dispatch_IterableMap_HashMap_IterableMap_getAndRemove(Key_effectMap[this_1], e_1)))
		endif
		if Key_infinite[this_1] then
			call item_setEntity(GetManipulatedItem(), 0)
			call item_remove(GetManipulatedItem())
		else
			set Key_picked[this_1] = false
			set ItemObject_holder[this_1] = 0
			call dispatch_UnitEntity_Entity_UnitEntity_setXY(ItemObject_setup[this_1], Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1])
			call unit_show(UnitEntity_actor[ItemObject_setup[this_1]])
			set clVar = alloc_CallbackSingle_nullTimer_Key_Key()
			call construct_CallbackSingle(clVar)
			set this_2967[clVar] = this_1
			call nullTimer(clVar)
		endif
	endif
endfunction

function dispatch_ItemEntity_Entity_ItemEntity_onDrop takes integer this_1, integer entity_1 returns nothing
	if Serializable_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling ItemEntity.onDrop")
		else
			call error("Called ItemEntity.onDrop on invalid object.")
		endif
	endif
	if Serializable_typeId[this_1] <= 1155 then
		if Serializable_typeId[this_1] <= 1154 then
			if Serializable_typeId[this_1] <= 1153 then
				call ItemObject_onDrop(this_1, entity_1)
			else
				call BallItem_onDrop(this_1, entity_1)
			endif
		else
			call Boots_onDrop(this_1, entity_1)
		endif
	elseif Serializable_typeId[this_1] <= 1157 then
		if Serializable_typeId[this_1] <= 1156 then
			call ItemObject_onDrop(this_1, entity_1)
		else
			call Key_onDrop(this_1, entity_1)
		endif
	else
		call ItemObject_onDrop(this_1, entity_1)
	endif
endfunction

function onItemDrop takes nothing returns nothing
	local integer idata = item_getEntity(GetManipulatedItem())
	local integer edata = unit_getEntity(GetManipulatingUnit())
	if idata != 0 and ( not Entity_done[idata]) then
		if edata != 0 and ( not Entity_done[edata]) then
			call dispatch_ItemEntity_Entity_ItemEntity_onDrop(idata, edata)
		endif
	endif
endfunction

function onEvent_add_Entity_3829 takes integer this_1 returns nothing
	call onItemDrop()
endfunction

function BallItem_onUse takes integer this_1, integer user returns nothing
endfunction

function Boots_onUse takes integer this_1, integer user returns nothing
endfunction

function ItemObject_onUse takes integer this_1, integer user returns nothing
endfunction

function dispatch_ItemEntity_Entity_ItemEntity_onUse takes integer this_1, integer entity_1 returns nothing
	if Serializable_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling ItemEntity.onUse")
		else
			call error("Called ItemEntity.onUse on invalid object.")
		endif
	endif
	if Serializable_typeId[this_1] <= 1154 then
		if Serializable_typeId[this_1] <= 1153 then
			call ItemObject_onUse(this_1, entity_1)
		else
			call BallItem_onUse(this_1, entity_1)
		endif
	elseif Serializable_typeId[this_1] <= 1155 then
		call Boots_onUse(this_1, entity_1)
	else
		call ItemObject_onUse(this_1, entity_1)
	endif
endfunction

function onItemUse takes nothing returns nothing
	local integer idata = item_getEntity(GetManipulatedItem())
	local integer edata = unit_getEntity(GetManipulatingUnit())
	if idata != 0 and ( not Entity_done[idata]) then
		if edata != 0 and ( not Entity_done[edata]) then
			call dispatch_ItemEntity_Entity_ItemEntity_onUse(idata, edata)
		endif
	endif
endfunction

function onEvent_add_Entity_3830 takes integer this_1 returns nothing
	call onItemUse()
endfunction

function vec2_op_plus takes real this_x, real this_y, real v_x, real v_y returns real
	set vec2_op_plus_return_x = this_x + v_x
	set vec2_op_plus_return_y = this_y + v_y
	return vec2_op_plus_return_x
endfunction

function vec2_polarOffset takes real this_x, real this_y, real ang_radians, real dist returns real
	set vec2_polarOffset_return_x = vec2_op_plus(this_x, this_y, angle_toVec(ang_radians, dist), angle_toVec_return_y)
	set vec2_polarOffset_return_y = vec2_op_plus_return_y
	return vec2_polarOffset_return_x
endfunction

function Escaper_changeAngle takes integer this_1 returns nothing
	local integer id = GetIssuedOrderId()
	local widget w = GetOrderTarget()
	local real tuple_temp = EventData_getOrderPos()
	local real tuple_temp_1 = EventData_getOrderPos_return_y
	local real orderPos_x_1 = tuple_temp
	local real orderPos_y_1 = tuple_temp_1
	local real tuple_temp_2 = widget_getPos(w)
	local real tuple_temp_3 = widget_getPos_return_y
	local real widgetPos_x = tuple_temp_2
	local real widgetPos_y = tuple_temp_3
	local real tuple_temp_4 = dispatch_Escaper_Escaper_Escaper_getRealVel(this_1)
	local real tuple_temp_5 = dispatch_Escaper_Escaper_Escaper_getRealVel_return_y
	local real tuple_temp_6 = dispatch_Escaper_Escaper_Escaper_getRealVel_return_z
	local real rv_x = tuple_temp_4
	local real rv_y = tuple_temp_5
	local real rv_z = tuple_temp_6
	local real tuple_temp_7 = vec2_polarOffset(vec3_toVec2(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1]), vec3_toVec2_return_y, angle_op_minus(vec2_getAngle(vec3_toVec2(rv_x, rv_y, rv_z), vec3_toVec2_return_y), real_asAngleDegrees(90.)), 17.)
	local real tuple_temp_8 = vec2_polarOffset_return_y
	local real lpos_x = tuple_temp_7
	local real lpos_y = tuple_temp_8
	local real tuple_temp_9 = vec2_polarOffset(vec3_toVec2(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1]), vec3_toVec2_return_y, angle_op_plus(vec2_getAngle(vec3_toVec2(rv_x, rv_y, rv_z), vec3_toVec2_return_y), real_asAngleDegrees(90.)), 17.)
	local real tuple_temp_10 = vec2_polarOffset_return_y
	local real rpos_x = tuple_temp_9
	local real rpos_y = tuple_temp_10
	local integer ttype1 = GetTerrainType(lpos_x, lpos_y)
	local integer ttype2 = GetTerrainType(rpos_x, rpos_y)
	local integer rdata = Entity_getCurrentRegion(this_1)
	local integer temp = ttype1
	local integer ttype_1
	local integer temp_tuple_unwalkableId
	local integer temp_tuple_unwalkableId_1
	local integer temp_tuple_unwalkableId_2
	local integer temp_tuple_unwalkableId_3
	local integer temp_1
	local integer temp_2
	local integer tuple_temp_11
	local integer tuple_temp_12
	local integer tuple_temp_13
	local integer tuple_temp_14
	call dispatch_RegionData_RegionData_RegionData_getTypeSet(rdata)
	set tuple_temp_11 = dispatch_RegionData_RegionData_RegionData_getTypeSet_return_unwalkableId
	set temp_tuple_unwalkableId = tuple_temp_11
	if temp == temp_tuple_unwalkableId then
		set temp_1 = ttype2
		call dispatch_RegionData_RegionData_RegionData_getTypeSet(rdata)
		set tuple_temp_12 = dispatch_RegionData_RegionData_RegionData_getTypeSet_return_unwalkableId
		set temp_tuple_unwalkableId_1 = tuple_temp_12
		if temp_1 == temp_tuple_unwalkableId_1 then
			call dispatch_RegionData_RegionData_RegionData_getTypeSet(rdata)
			set tuple_temp_13 = dispatch_RegionData_RegionData_RegionData_getTypeSet_return_unwalkableId
			set temp_tuple_unwalkableId_2 = tuple_temp_13
			set ttype_1 = temp_tuple_unwalkableId_2
		else
			set ttype_1 = ttype2
		endif
	else
		set temp_2 = ttype2
		call dispatch_RegionData_RegionData_RegionData_getTypeSet(rdata)
		set tuple_temp_14 = dispatch_RegionData_RegionData_RegionData_getTypeSet_return_unwalkableId
		set temp_tuple_unwalkableId_3 = tuple_temp_14
		if temp_2 == temp_tuple_unwalkableId_3 then
			set ttype_1 = ttype1
		else
			set ttype_1 = GetTerrainType(Entity_pos_x[this_1], Entity_pos_y[this_1])
		endif
	endif
	if ttype_1 == BuilderConstants_CONTROLLABLEICE then
		if w == null then
			call unit_setFacing(UnitEntity_actor[this_1], vec3_angleTo2d(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1], orderPos_x_1, orderPos_y_1))
		else
			call unit_setFacing(UnitEntity_actor[this_1], vec3_angleTo2d(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1], widgetPos_x, widgetPos_y))
		endif
	elseif ttype_1 == BuilderConstants_REVICE then
		if OrderId2String(id) == "lightningshield" then
			call unit_setFacing(UnitEntity_actor[this_1], vec3_angleTo2d(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1], orderPos_x_1, orderPos_y_1))
		elseif w == null then
			call unit_setFacing(UnitEntity_actor[this_1], angle_op_minus(vec3_angleTo2d(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1], orderPos_x_1, orderPos_y_1), real_asAngleDegrees(180.)))
		else
			call unit_setFacing(UnitEntity_actor[this_1], angle_op_minus(vec3_angleTo2d(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1], widgetPos_x, widgetPos_y), real_asAngleDegrees(180.)))
		endif
	endif
endfunction

function dispatch_Escaper_Escaper_Escaper_changeAngle takes integer this_1 returns nothing
	if Serializable_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling Escaper.changeAngle")
		else
			call error("Called Escaper.changeAngle on invalid object.")
		endif
	endif
	call Escaper_changeAngle(this_1)
endfunction

function onEvent_add_Escaper_Escaper takes integer this_1 returns nothing
	call dispatch_Escaper_Escaper_Escaper_changeAngle(this_2932[this_1])
endfunction

function onEvent_add_Escaper_Escaper_3832 takes integer this_1 returns nothing
	call dispatch_Escaper_Escaper_Escaper_changeAngle(this_2933[this_1])
endfunction

function onEvent_add_Escaper_Escaper_3833 takes integer this_1 returns nothing
	call dispatch_Escaper_Escaper_Escaper_kill(this_2934[this_1], 0)
endfunction

function Escaper_onPick takes integer this_1 returns nothing
	local integer id = item_getTypeId(GetManipulatedItem())
	local integer iterator
	local integer pd_1
	if id == 1227895088 then
		call flashEffect(UI_goldCredit, Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1])
		call player_addGold(Entity_owner[this_1], 15)
		set iterator = LinkedList_iterator(PlayerData_escaperPlayers)
		loop
			exitwhen  not LLIterator_hasNext(iterator)
			set pd_1 = LLIterator_next(iterator)
			call player_addGold(PlayerData_p[pd_1], 5)
		endloop
		call LLIterator_close(iterator)
	endif
endfunction

function dispatch_Escaper_Escaper_Escaper_onPick takes integer this_1 returns nothing
	if Serializable_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling Escaper.onPick")
		else
			call error("Called Escaper.onPick on invalid object.")
		endif
	endif
	call Escaper_onPick(this_1)
endfunction

function onEvent_add_Escaper_Escaper_3834 takes integer this_1 returns nothing
	call dispatch_Escaper_Escaper_Escaper_onPick(this_2935[this_1])
endfunction

function alloc_CallbackSingle_doAfter_Escaper_Escaper takes nothing returns integer
	local integer this_1
	if CallbackSingle_firstFree == 0 then
		if CallbackSingle_maxIndex < JASS_MAX_ARRAY_SIZE then
			set CallbackSingle_maxIndex = CallbackSingle_maxIndex + 1
			set this_1 = CallbackSingle_maxIndex
			set CallbackSingle_typeId[this_1] = 682
		else
			call error("Out of memory: Could not create CallbackSingle_doAfter_Escaper_Escaper.")
			set this_1 = 0
		endif
	else
		set CallbackSingle_firstFree = CallbackSingle_firstFree - 1
		set this_1 = CallbackSingle_nextFree[CallbackSingle_firstFree]
		set CallbackSingle_typeId[this_1] = 682
	endif
	return this_1
endfunction

function Entity_addPos takes integer this_1, real pos_x_1, real pos_y_1, real pos_z returns nothing
	local real tuple_temp = vec3_op_plus(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1], pos_x_1, pos_y_1, pos_z)
	local real tuple_temp_1 = vec3_op_plus_return_y
	local real tuple_temp_2 = vec3_op_plus_return_z
	set Entity_pos_x[this_1] = tuple_temp
	set Entity_pos_y[this_1] = tuple_temp_1
	set Entity_pos_z[this_1] = tuple_temp_2
	if pos_z > vec3_getHeightMap(pos_x_1, pos_y_1, pos_z) and Entity_gravity[this_1] != 0. then
		call dispatch_Entity_Entity_Entity_DupletListModule_activate(this_1)
	endif
endfunction

function dispatch_Entity_Entity_Entity_addPos takes integer this_1, real pos_x_1, real pos_y_1, real pos_z returns nothing
	if Serializable_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling Entity.addPos")
		else
			call error("Called Entity.addPos on invalid object.")
		endif
	endif
	call Entity_addPos(this_1, pos_x_1, pos_y_1, pos_z)
endfunction

function Escaper_canCast takes integer this_1 returns boolean
	return  not (Escaper_poisoned[this_1] or Escaper_onLava[this_1] or Escaper_sliding[this_1] or Entity_getCurrentRegion(this_1) == RegionData_regions[21] or Entity_getCurrentRegion(this_1) == RegionData_regions[22] or Entity_getCurrentRegion(this_1) == RegionData_regions[23] or Entity_getCurrentRegion(this_1) == RegionData_regions[24])
endfunction

function dispatch_Escaper_Escaper_Escaper_canCast takes integer this_1 returns boolean
	local boolean Escaper_Escaper_canCast_result
	if Serializable_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling Escaper.canCast")
		else
			call error("Called Escaper.canCast on invalid object.")
		endif
	endif
	set Escaper_Escaper_canCast_result = Escaper_canCast(this_1)
	return Escaper_Escaper_canCast_result
endfunction

function RevivePointModifier_onDestroy takes integer this_1 returns nothing
	call unit_remove(RevivePointModifier_actor[this_1])
endfunction

function dealloc_RevivePointModifier takes integer obj_1 returns nothing
	if RevivePointModifier_typeId[obj_1] == 0 then
		call error("Double free: object of type RevivePointModifier")
	else
		set RevivePointModifier_nextFree[RevivePointModifier_firstFree] = obj_1
		set RevivePointModifier_firstFree = RevivePointModifier_firstFree + 1
		set RevivePointModifier_typeId[obj_1] = 0
	endif
endfunction

function destroyRevivePointModifier takes integer this_1 returns nothing
	call RevivePointModifier_onDestroy(this_1)
	call dealloc_RevivePointModifier(this_1)
endfunction

function dispatch_RevivePointModifier_destroyRevivePointModifier takes integer this_1 returns nothing
	if RevivePointModifier_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling RevivePointModifier.RevivePointModifier")
		else
			call error("Called RevivePointModifier.RevivePointModifier on invalid object.")
		endif
	endif
	call destroyRevivePointModifier(this_1)
endfunction

function alloc_OrbProjectile takes nothing returns integer
	local integer this_1
	if Serializable_firstFree == 0 then
		if Serializable_maxIndex < JASS_MAX_ARRAY_SIZE then
			set Serializable_maxIndex = Serializable_maxIndex + 1
			set this_1 = Serializable_maxIndex
			set Serializable_typeId[this_1] = 1146
		else
			call error("Out of memory: Could not create OrbProjectile.")
			set this_1 = 0
		endif
	else
		set Serializable_firstFree = Serializable_firstFree - 1
		set this_1 = Serializable_nextFree[Serializable_firstFree]
		set Serializable_typeId[this_1] = 1146
	endif
	return this_1
endfunction

function OrbProjectile_init takes integer this_1 returns nothing
	set OrbProjectile_e[this_1] = 0
endfunction

function Projectile_setAcc takes integer this_1, real factor returns nothing
	set Projectile_acc[this_1] = factor
endfunction

function dispatch_Projectile_Projectile_Projectile_setAcc takes integer this_1, real factor returns nothing
	if Serializable_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling Projectile.setAcc")
		else
			call error("Called Projectile.setAcc on invalid object.")
		endif
	endif
	call Projectile_setAcc(this_1, factor)
endfunction

function Projectile_setRanged_1085 takes integer this_1, real maxDistance, boolean use3DDistance returns nothing
	set Projectile_maxDist[this_1] = maxDistance * maxDistance
	set Projectile_use3DDistance[this_1] = use3DDistance
	set Projectile_ranged[this_1] = true
endfunction

function dispatch_Projectile_Projectile_Projectile_setRanged_3108 takes integer this_1, real maxDistance, boolean use3DDistance returns nothing
	if Serializable_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling Projectile.setRanged")
		else
			call error("Called Projectile.setRanged on invalid object.")
		endif
	endif
	call Projectile_setRanged_1085(this_1, maxDistance, use3DDistance)
endfunction

function Projectile_setRanged takes integer this_1, real maxDistance returns nothing
	call dispatch_Projectile_Projectile_Projectile_setRanged_3108(this_1, maxDistance, Projectile_use3DDistance[this_1])
endfunction

function dispatch_Projectile_Projectile_Projectile_setRanged takes integer this_1, real maxDistance returns nothing
	if Serializable_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling Projectile.setRanged")
		else
			call error("Called Projectile.setRanged on invalid object.")
		endif
	endif
	call Projectile_setRanged(this_1, maxDistance)
endfunction

function real_op_mult_3965 takes real this_1, real v_x, real v_y, real v_z returns real
	set real_op_mult_return_x_2601 = v_x * this_1
	set real_op_mult_return_y_2603 = v_y * this_1
	set real_op_mult_return_z = v_z * this_1
	return real_op_mult_return_x_2601
endfunction

function vec3_normalizedPointerTo takes real this_x, real this_y, real this_z, real target_x, real target_y, real target_z returns real
	local real tuple_temp = vec3_op_minus(target_x, target_y, target_z, this_x, this_y, this_z)
	local real tuple_temp_1 = vec3_op_minus_return_y
	local real tuple_temp_2 = vec3_op_minus_return_z
	local real diff_x = tuple_temp
	local real diff_y = tuple_temp_1
	local real diff_z = tuple_temp_2
	local real len = vec3_length(diff_x, diff_y, diff_z)
	local real tuple_temp_3
	local real tuple_temp_4
	local real tuple_temp_5
	local real tuple_temp_6
	local real tuple_temp_7
	local real tuple_temp_8
	if len > 0. then
		set tuple_temp_3 = vec3_op_mult(diff_x, diff_y, diff_z, 1. / len)
		set tuple_temp_4 = vec3_op_mult_return_y
		set tuple_temp_5 = vec3_op_mult_return_z
		set diff_x = tuple_temp_3
		set diff_y = tuple_temp_4
		set diff_z = tuple_temp_5
	else
		set tuple_temp_6 = 1.
		set tuple_temp_7 = 0.
		set tuple_temp_8 = 0.
		set diff_x = tuple_temp_6
		set diff_y = tuple_temp_7
		set diff_z = tuple_temp_8
	endif
	set vec3_normalizedPointerTo_return_x = diff_x
	set vec3_normalizedPointerTo_return_y = diff_y
	set vec3_normalizedPointerTo_return_z = diff_z
	return vec3_normalizedPointerTo_return_x
endfunction

function vec3_moveTowards takes real this_x, real this_y, real this_z, real target_x, real target_y, real target_z, real dist returns real
	set vec3_moveTowards_return_x = vec3_op_plus(this_x, this_y, this_z, real_op_mult_3965(dist, vec3_normalizedPointerTo(this_x, this_y, this_z, target_x, target_y, target_z), vec3_normalizedPointerTo_return_y, vec3_normalizedPointerTo_return_z), real_op_mult_return_y_2603, real_op_mult_return_z)
	set vec3_moveTowards_return_y = vec3_op_plus_return_y
	set vec3_moveTowards_return_z = vec3_op_plus_return_z
	return vec3_moveTowards_return_x
endfunction

function construct_OrbProjectile takes integer this_1, integer e_1, real target_x, real target_y returns nothing
	call construct_Projectile(this_1, vec3_op_plus(vec3_moveTowards(dispatch_UnitEntity_Entity_UnitEntity_getPos(e_1), dispatch_UnitEntity_Entity_UnitEntity_getPos_return_y, dispatch_UnitEntity_Entity_UnitEntity_getPos_return_z, vec2_toVec3(target_x, target_y), vec2_toVec3_return_y, vec2_toVec3_return_z, 16.), vec3_moveTowards_return_y, vec3_moveTowards_return_z, 0., 0., 16.), vec3_op_plus_return_y, vec3_op_plus_return_z, 16., Entity_owner[e_1], vec3_angleTo2d(Entity_pos_x[e_1], Entity_pos_y[e_1], Entity_pos_z[e_1], target_x, target_y), "TC_EnergyBolt.mdx")
	call OrbProjectile_init(this_1)
	set OrbProjectile_e[this_1] = e_1
	set OrbProjectile_rdata[this_1] = Entity_setCurrentRegion(this_1)
	call dispatch_Projectile_Projectile_Projectile_setAcc(this_1, 0.985)
	call dispatch_Projectile_Projectile_Projectile_setRanged(this_1, 360.)
	call dispatch_Projectile_Projectile_Projectile_setTimed(this_1, 3.)
	call dispatch_Projectile_Projectile_Projectile_setSpeed(this_1, 9.85)
	call dispatch_Fx2_Fx2_Fx2_setTintFromPlayer(Fx2Entity_fx[this_1], Entity_owner[e_1])
endfunction

function new_OrbProjectile takes integer e_1, real target_x, real target_y returns integer
	local integer this_1 = alloc_OrbProjectile()
	call construct_OrbProjectile(this_1, e_1, target_x, target_y)
	return this_1
endfunction

function alloc_RevivePointModifier takes nothing returns integer
	local integer this_1
	if RevivePointModifier_firstFree == 0 then
		if RevivePointModifier_maxIndex < JASS_MAX_ARRAY_SIZE then
			set RevivePointModifier_maxIndex = RevivePointModifier_maxIndex + 1
			set this_1 = RevivePointModifier_maxIndex
			set RevivePointModifier_typeId[this_1] = 1116
		else
			call error("Out of memory: Could not create RevivePointModifier.")
			set this_1 = 0
		endif
	else
		set RevivePointModifier_firstFree = RevivePointModifier_firstFree - 1
		set this_1 = RevivePointModifier_nextFree[RevivePointModifier_firstFree]
		set RevivePointModifier_typeId[this_1] = 1116
	endif
	return this_1
endfunction

function RevivePointModifier_init takes integer this_1 returns nothing
endfunction

function construct_RevivePointModifier takes integer this_1, real position_x, real position_y, player owner returns nothing
	local real tuple_temp
	local real tuple_temp_1
	call RevivePointModifier_init(this_1)
	set RevivePointModifier_actor[this_1] = createUnit(owner, RevivePointModifier_REV_MODIFIER_DUMMY_ID, position_x, position_y, 0.)
	set tuple_temp = position_x
	set tuple_temp_1 = position_y
	set RevivePointModifier_pos_x[this_1] = tuple_temp
	set RevivePointModifier_pos_y[this_1] = tuple_temp_1
endfunction

function new_RevivePointModifier takes real position_x, real position_y, player owner returns integer
	local integer this_1 = alloc_RevivePointModifier()
	call construct_RevivePointModifier(this_1, position_x, position_y, owner)
	return this_1
endfunction

function Escaper_onCast takes integer this_1, integer id returns nothing
	local real angl_radians
	local unit receiver
	local unit receiver_1
	local unit receiver_2
	local unit receiver_3
	local boolean teleport
	local item itm
	local integer i
	local integer ie
	local real tpos_x_1
	local real tpos_y_1
	local integer clVar
	local real tuple_temp
	local real tuple_temp_1
	local real tuple_temp_2
	local real tuple_temp_3
	local real tuple_temp_4
	local real tuple_temp_5
	local real tuple_temp_6
	call unit_setAnimation(UnitEntity_actor[this_1], "spell")
	if id == Escaper_JUMP_SPELL then
		if  not Entity_flying[this_1] then
			call dispatch_Entity_Entity_Entity_addPos(this_1, 0., 0., 1.)
			set tuple_temp = vec3_angleTo2d(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1], EventData_getSpellTargetPos(), EventData_getSpellTargetPos_return_y)
			set angl_radians = tuple_temp
			call effect_destr(addEffect_1565(Abilities_aneuCaster, Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1]))
			if Escaper_sliding[this_1] then
				call dispatch_Entity_Entity_Entity_addVel(this_1, 3. * angle_cos(angl_radians), 3. * angle_sin(angl_radians), 11.75)
			else
				call dispatch_Entity_Entity_Entity_addVel(this_1, 7.75 * angle_cos(angl_radians), 7.75 * angle_sin(angl_radians), 11.75)
			endif
			if RegionData_specialAbil[Entity_getCurrentRegion(this_1)] != Escaper_JUMP_SPELL then
				call unit_removeAbility(UnitEntity_actor[this_1], Escaper_JUMP_SPELL)
			endif
		endif
	elseif id == Escaper_ORB_SPELL then
		set Escaper_orb[this_1] = new_OrbProjectile(this_1, EventData_getSpellTargetPos(), EventData_getSpellTargetPos_return_y)
		call dispatch_Entity_Entity_Entity_addVel(Escaper_orb[this_1], vec3_op_mult(vec3_op_minus_4281(dispatch_Escaper_Escaper_Escaper_getRealVel(this_1), dispatch_Escaper_Escaper_Escaper_getRealVel_return_y, dispatch_Escaper_Escaper_Escaper_getRealVel_return_z, Escaper_walkVel_x[this_1], Escaper_walkVel_y[this_1]), vec3_op_minus_return_y_3125, vec3_op_minus_return_z_3127, 0.65), vec3_op_mult_return_y, vec3_op_mult_return_z)
		call dispatch_Projectile_Projectile_Projectile_setXYAngle(Escaper_orb[this_1], vec2_getAngle(vec3_toVec2(Entity_vel_x[Escaper_orb[this_1]], Entity_vel_y[Escaper_orb[this_1]], Entity_vel_z[Escaper_orb[this_1]]), vec3_toVec2_return_y))
		set receiver = UnitEntity_actor[this_1]
		call unit_removeAbility(receiver, Escaper_ORB_SPELL)
		set receiver_1 = receiver
		call unit_addAbility(receiver_1, Escaper_JAUNT_SPELL)
		if RegionData_specialAbil[Entity_getCurrentRegion(this_1)] != Escaper_ORB_SPELL then
			call unit_removeAbility(UnitEntity_actor[this_1], Escaper_ORB_SPELL)
		endif
	elseif id == Escaper_JAUNT_SPELL then
		if Escaper_orb[this_1] != 0 then
			call dispatch_Escaper_Escaper_Escaper_setXY(this_1, dispatch_Entity_Entity_Entity_getPos(Escaper_orb[this_1]), dispatch_Entity_Entity_Entity_getPos_return_y, dispatch_Entity_Entity_Entity_getPos_return_z)
			set tuple_temp_1 = Vectors_ZERO2_x
			set tuple_temp_2 = Vectors_ZERO2_y
			set Escaper_slideVelocity_x[this_1] = tuple_temp_1
			set Escaper_slideVelocity_y[this_1] = tuple_temp_2
			call dispatch_Entity_Entity_Entity_setVel(this_1, vec3_op_mult(Entity_vel_x[this_1], Entity_vel_y[this_1], Entity_vel_z[this_1], 0.15), vec3_op_mult_return_y, vec3_op_mult_return_z)
			call flashEffect(Abilities_polyMorphTarget, Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1])
			call dispatch_Projectile_Projectile_Projectile_terminate(Escaper_orb[this_1])
		endif
	elseif id == RevivePointModifier_CREATE_REV_MOD_ID then
		set Escaper_revmod[this_1] = new_RevivePointModifier(vec3_toVec2(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1]), vec3_toVec2_return_y, Entity_owner[this_1])
		set receiver_2 = UnitEntity_actor[this_1]
		call unit_removeAbility(receiver_2, RevivePointModifier_CREATE_REV_MOD_ID)
		set receiver_3 = receiver_2
		call unit_addAbility(receiver_3, RevivePointModifier_REMOVE_REV_MOD_ID)
	elseif id == RevivePointModifier_REMOVE_REV_MOD_ID then
		if Escaper_revmod[this_1] != 0 then
			call dispatch_RevivePointModifier_destroyRevivePointModifier(Escaper_revmod[this_1])
			set Escaper_revmod[this_1] = 0
		endif
		call UnitRemoveAbility(UnitEntity_actor[this_1], RevivePointModifier_REMOVE_REV_MOD_ID)
		call UnitAddAbility(UnitEntity_actor[this_1], RevivePointModifier_CREATE_REV_MOD_ID)
	elseif id == Weapon_ATTACK_MELEE or id == Weapon_ATTACK_RANGED then
		call unit_setAnimation(UnitEntity_actor[this_1], "attack")
	elseif id == Escaper_ANK_ITEM_ID then
		if Escaper_poisoned[this_1] or ( not dispatch_Escaper_Escaper_Escaper_canCast(this_1)) then
			call unit_addItemById(UnitEntity_actor[this_1], 1227894860)
			call createFText_2346(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1], 0., .08, "canceled!", 8.5, 2., 255, 0, 0, 255, Entity_owner[this_1])
		else
			if Escaper_revivetomb[this_1] != null then
				call unit_remove(Escaper_revivetomb[this_1])
			endif
			set Escaper_revivetomb[this_1] = createUnit_2356(Entity_owner[this_1], EscaperObjects_TOMB_DUMMY_ID, Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1], 0.)
		endif
	elseif id == Escaper_TELEPORT_ITEM_ID then
		set teleport = true
		set itm = GetManipulatedItem()
		if GetItemCharges(itm) <= 1 then
			call item_remove(itm)
		endif
		set i = 0
		loop
			exitwhen i > 5
			set ie = item_getEntity(UnitItemInSlot(UnitEntity_actor[this_1], i))
			if ie != 0 and Serializable_typeId[ie] == 1157 then
				set teleport = false
				exitwhen true
			endif
			set i = i + 1
		endloop
		if ( not teleport) or Escaper_poisoned[this_1] or Escaper_onLava[this_1] or Escaper_sliding[this_1] or Entity_getCurrentRegion(this_1) == RegionData_regions[21] or Entity_getCurrentRegion(this_1) == RegionData_regions[22] or Entity_getCurrentRegion(this_1) == RegionData_regions[23] or Entity_getCurrentRegion(this_1) == RegionData_regions[24] then
			call createFText_2346(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1], 0., .08, "canceled!", 8.5, 2., 255, 0, 0, 255, Entity_owner[this_1])
		else
			set tuple_temp_3 = EventData_getSpellTargetPos()
			set tuple_temp_4 = EventData_getSpellTargetPos_return_y
			set tpos_x_1 = tuple_temp_3
			set tpos_y_1 = tuple_temp_4
			set clVar = alloc_CallbackSingle_doAfter_Escaper_Escaper()
			call construct_CallbackSingle(clVar)
			set this_2937[clVar] = this_1
			set tuple_temp_5 = tpos_x_1
			set tuple_temp_6 = tpos_y_1
			set tpos_x_3019[clVar] = tuple_temp_5
			set tpos_y_3022[clVar] = tuple_temp_6
			call doAfter(0.15, clVar)
		endif
	else
		call dispatch_JukeBox_JukeBox_JukeBox_checkSpell(JukeBox_jukeBox, id)
	endif
endfunction

function BlindEscaper_onCast takes integer this_1, integer id returns nothing
	call Escaper_onCast(this_1, id)
endfunction

function FxEntity_setPos takes integer this_1, real tpos_x_1, real tpos_y_1, real tpos_z returns nothing
	local real tuple_temp = tpos_x_1
	local real tuple_temp_1 = tpos_y_1
	local real tuple_temp_2 = tpos_z
	set Entity_pos_x[this_1] = tuple_temp
	set Entity_pos_y[this_1] = tuple_temp_1
	set Entity_pos_z[this_1] = tuple_temp_2
	call dispatch_Fx_Fx_Fx_setXYZ(FxEntity_fx[this_1], tpos_x_1, tpos_y_1, tpos_z)
endfunction

function dispatch_FxEntity_FxEntity_FxEntity_setPos takes integer this_1, real tpos_x_1, real tpos_y_1, real tpos_z returns nothing
	if Serializable_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling FxEntity.setPos")
		else
			call error("Called FxEntity.setPos on invalid object.")
		endif
	endif
	call FxEntity_setPos(this_1, tpos_x_1, tpos_y_1, tpos_z)
endfunction

function Fx_setColor takes integer this_1, integer newColor_red, integer newColor_green, integer newColor_blue, integer newColor_alpha returns nothing
	local integer tuple_temp = newColor_red
	local integer tuple_temp_1 = newColor_green
	local integer tuple_temp_2 = newColor_blue
	local integer tuple_temp_3 = newColor_alpha
	set Fx_col_red[this_1] = tuple_temp
	set Fx_col_green[this_1] = tuple_temp_1
	set Fx_col_blue[this_1] = tuple_temp_2
	set Fx_col_alpha[this_1] = tuple_temp_3
	call unit_setVertexColor_4206(Fx_dummy[this_1], newColor_red, newColor_green, newColor_blue, newColor_alpha)
endfunction

function dispatch_Fx_Fx_Fx_setColor takes integer this_1, integer newColor_red, integer newColor_green, integer newColor_blue, integer newColor_alpha returns nothing
	if Fx_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling Fx.setColor")
		else
			call error("Called Fx.setColor on invalid object.")
		endif
	endif
	call Fx_setColor(this_1, newColor_red, newColor_green, newColor_blue, newColor_alpha)
endfunction

function Fx_setScale takes integer this_1, real value returns nothing
	call unit_setScale(Fx_dummy[this_1], value)
endfunction

function dispatch_Fx_Fx_Fx_setScale takes integer this_1, real value returns nothing
	if Fx_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling Fx.setScale")
		else
			call error("Called Fx.setScale on invalid object.")
		endif
	endif
	call Fx_setScale(this_1, value)
endfunction

function construct_Fx6 takes integer this_1, real pos_x_1, real pos_y_1, real pos_z, string fxpath returns nothing
	call Fx_init(this_1)
	set Fx_dummy[this_1] = DummyRecycler_get(vec3_toVec2(pos_x_1, pos_y_1, pos_z), vec3_toVec2_return_y, 0.)
	call dispatch_Fx_Fx_Fx_setFx(this_1, fxpath)
	call dispatch_Fx_Fx_Fx_setZ(this_1, pos_z)
endfunction

function new_Fx_3674 takes real pos_x_1, real pos_y_1, real pos_z, string fxpath returns integer
	local integer this_1 = alloc_Fx()
	call construct_Fx6(this_1, pos_x_1, pos_y_1, pos_z, fxpath)
	return this_1
endfunction

function Portal_setDestiny takes integer this_1, real tpos_x_1, real tpos_y_1 returns nothing
	local real tuple_temp = tpos_x_1
	local real tuple_temp_1 = tpos_y_1
	set Portal_destiny_x[this_1] = tuple_temp
	set Portal_destiny_y[this_1] = tuple_temp_1
	if tpos_x_1 != Vectors_ZERO2_x or tpos_y_1 != Vectors_ZERO2_y then
		if Portal_targetFx[this_1] == 0 then
			set Portal_targetFx[this_1] = new_Fx_3674(vec2_withZ(tpos_x_1, tpos_y_1, 0.), vec2_withZ_return_y, vec2_withZ_return_z, "PulseTC_tgt.mdx")
			call dispatch_Fx_Fx_Fx_setScale(Portal_targetFx[this_1], 0.75)
			call dispatch_Fx_Fx_Fx_setOwner(Portal_targetFx[this_1], Entity_owner[this_1], true)
		endif
		call dispatch_Fx_Fx_Fx_setXYZ(Portal_targetFx[this_1], vec2_withZ(Portal_destiny_x[this_1], Portal_destiny_y[this_1], 0.), vec2_withZ_return_y, vec2_withZ_return_z)
		call dispatch_Entity_Entity_Entity_DupletListModule_activate(this_1)
	else
		call dispatch_Fx_Fx_Fx_hiddenDestroy(Portal_targetFx[this_1])
		set Portal_targetFx[this_1] = 0
		call dispatch_Fx_Fx_Fx_setColor(FxEntity_fx[this_1], 90, 90, 90, 90)
	endif
endfunction

function dispatch_Portal_EscaperClasses_Portal_setDestiny takes integer this_1, real tpos_x_1, real tpos_y_1 returns nothing
	if Serializable_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling Portal.setDestiny")
		else
			call error("Called Portal.setDestiny on invalid object.")
		endif
	endif
	call Portal_setDestiny(this_1, tpos_x_1, tpos_y_1)
endfunction

function alloc_Portal takes nothing returns integer
	local integer this_1
	if Serializable_firstFree == 0 then
		if Serializable_maxIndex < JASS_MAX_ARRAY_SIZE then
			set Serializable_maxIndex = Serializable_maxIndex + 1
			set this_1 = Serializable_maxIndex
			set Serializable_typeId[this_1] = 1151
		else
			call error("Out of memory: Could not create Portal.")
			set this_1 = 0
		endif
	else
		set Serializable_firstFree = Serializable_firstFree - 1
		set this_1 = Serializable_nextFree[Serializable_firstFree]
		set Serializable_typeId[this_1] = 1151
	endif
	return this_1
endfunction

function construct_Portal_Sensor takes integer this_1 returns nothing
endfunction

function Portal_init takes integer this_1 returns nothing
	local real tuple_temp
	local real tuple_temp_1
	set Portal_Sensor_inRangeTrig[this_1] = null
	set Portal_Sensor_actorRef[this_1] = null
	set tuple_temp = Vectors_ZERO2_x
	set tuple_temp_1 = Vectors_ZERO2_y
	set Portal_destiny_x[this_1] = tuple_temp
	set Portal_destiny_y[this_1] = tuple_temp_1
	set Portal_es[this_1] = 0
	set Portal_lerpy[this_1] = 0.
	set Portal_targetFx[this_1] = 0
	call construct_Portal_Sensor(this_1)
endfunction

function alloc_SensorListener_addSensorListener_Portal_EscaperClasses takes nothing returns integer
	local integer this_1
	if SensorListener_firstFree == 0 then
		if SensorListener_maxIndex < JASS_MAX_ARRAY_SIZE then
			set SensorListener_maxIndex = SensorListener_maxIndex + 1
			set this_1 = SensorListener_maxIndex
			set SensorListener_typeId[this_1] = 1124
		else
			call error("Out of memory: Could not create SensorListener_addSensorListener_Portal_EscaperClasses.")
			set this_1 = 0
		endif
	else
		set SensorListener_firstFree = SensorListener_firstFree - 1
		set this_1 = SensorListener_nextFree[SensorListener_firstFree]
		set SensorListener_typeId[this_1] = 1124
	endif
	return this_1
endfunction

function construct_FxEntity takes integer this_1, player owner, real pos_x_1, real pos_y_1, real pos_z, real radius, real xyAngle_radians, string sfxpath returns nothing
	call construct_Entity5(this_1, owner, pos_x_1, pos_y_1, pos_z, radius)
	call FxEntity_init(this_1)
	call dispatch_FxEntity_FxEntity_FxEntity_setupFx(this_1, xyAngle_radians, sfxpath)
endfunction

function Portal_Sensor_addSensorListener takes integer this_1, integer e_1, integer listener_1 returns nothing
	local integer instanceOfTemp
	local integer instanceOfTemp_1
	if listener_1 == 0 then
		call error("Trying to add null listener")
	endif
	set Portal_Sensor_inRangeTrig[this_1] = CreateTrigger()
	set instanceOfTemp = Serializable_typeId[e_1]
	if instanceOfTemp >= 1160 and instanceOfTemp <= 1227 then
		set Portal_Sensor_actorRef[this_1] = UnitEntity_actor[e_1]
	else
		set instanceOfTemp_1 = Serializable_typeId[e_1]
		if instanceOfTemp_1 >= 1149 and instanceOfTemp_1 <= 1151 then
			set Portal_Sensor_actorRef[this_1] = dispatch_FxEntity_FxEntity_FxEntity_getDummy(e_1)
		endif
	endif
	call trigger_registerUnitInRangeSource(Portal_Sensor_inRangeTrig[this_1], Portal_Sensor_actorRef[this_1], Entity_radius[e_1], null)
	call dispatch_HashMap_HashMap_HashMap_put(Portal_Sensor_sensorListeners, triggerToIndex(Portal_Sensor_inRangeTrig[this_1]), listener_1)
	call trigger_addAction(Portal_Sensor_inRangeTrig[this_1], ref_function_code__addAction_Sensor_Portal_EscaperClasses)
endfunction

function dispatch_Portal_EscaperClasses_Portal_Sensor_addSensorListener takes integer this_1, integer e_1, integer listener_1 returns nothing
	if Serializable_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling Portal.addSensorListener")
		else
			call error("Called Portal.addSensorListener on invalid object.")
		endif
	endif
	call Portal_Sensor_addSensorListener(this_1, e_1, listener_1)
endfunction

function construct_Portal takes integer this_1, integer es, integer duration returns nothing
	local integer clVar
	local integer temp
	local integer temp_1
	call construct_FxEntity(this_1, Entity_owner[es], dispatch_UnitEntity_Entity_UnitEntity_getPos(es), dispatch_UnitEntity_Entity_UnitEntity_getPos_return_y, dispatch_UnitEntity_Entity_UnitEntity_getPos_return_z, 28., 0., "PulseTC_fix4.mdx")
	call Portal_init(this_1)
	set FxEntity_silent[this_1] = true
	set Portal_duration[this_1] = duration
	set Portal_es[this_1] = es
	call dispatch_Entity_Entity_Entity_DupletListModule_deactivate(this_1)
	call dispatch_Fx_Fx_Fx_setColor(FxEntity_fx[this_1], 145, 145, 145, 145)
	set temp = this_1
	set temp_1 = this_1
	set clVar = alloc_SensorListener_addSensorListener_Portal_EscaperClasses()
	call construct_SensorListener(clVar)
	set this_2938[clVar] = this_1
	call dispatch_Portal_EscaperClasses_Portal_Sensor_addSensorListener(temp, temp_1, clVar)
endfunction

function new_Portal takes integer es, integer duration returns integer
	local integer this_1 = alloc_Portal()
	call construct_Portal(this_1, es, duration)
	return this_1
endfunction

function unit_resetAbilityCooldown takes unit this_1, integer abilId returns nothing
	local integer lvl = unit_getAbilityLevel(this_1, abilId)
	local unit receiver = this_1
	local unit receiver_1
	local unit receiver_2
	call unit_removeAbility(receiver, abilId)
	set receiver_1 = receiver
	call unit_addAbility(receiver_1, abilId)
	set receiver_2 = receiver_1
	call unit_setAbilityLevel(receiver_2, abilId, lvl)
endfunction

function FastEscaper_onCast takes integer this_1, integer id returns nothing
	local integer receiver
	local integer receiver_1
	call Escaper_onCast(this_1, id)
	if id == EscaperClasses_PORTAL_CREATE_ID then
		if Escaper_sliding[this_1] or ( not dispatch_Escaper_Escaper_Escaper_canCast(this_1)) then
			call unit_resetAbilityCooldown(UnitEntity_actor[this_1], EscaperClasses_PORTAL_CREATE_ID)
			call createFText_2346(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1], 0., .08, "canceled!", 8.5, 2., 255, 0, 0, 255, Entity_owner[this_1])
			return
		endif
		if FastEscaper_portal[this_1] == 0 then
			set FastEscaper_portal[this_1] = new_Portal(this_1, 20 + unit_getAbilityLevel(UnitEntity_actor[this_1], EscaperClasses_PORTAL_CREATE_ID) * 7)
			call unit_resetAbilityCooldown(UnitEntity_actor[this_1], EscaperClasses_PORTAL_CREATE_ID)
		elseif Portal_destiny_x[FastEscaper_portal[this_1]] != Vectors_ZERO2_x or Portal_destiny_y[FastEscaper_portal[this_1]] != Vectors_ZERO2_y then
			set receiver = FastEscaper_portal[this_1]
			call dispatch_FxEntity_FxEntity_FxEntity_setPos(receiver, dispatch_UnitEntity_Entity_UnitEntity_getPos(this_1), dispatch_UnitEntity_Entity_UnitEntity_getPos_return_y, dispatch_UnitEntity_Entity_UnitEntity_getPos_return_z)
			set receiver_1 = receiver
			call dispatch_Portal_EscaperClasses_Portal_setDestiny(receiver_1, Vectors_ZERO2_x, Vectors_ZERO2_y)
			call unit_resetAbilityCooldown(UnitEntity_actor[this_1], EscaperClasses_PORTAL_CREATE_ID)
		else
			call dispatch_Portal_EscaperClasses_Portal_setDestiny(FastEscaper_portal[this_1], vec3_toVec2(dispatch_UnitEntity_Entity_UnitEntity_getPos(this_1), dispatch_UnitEntity_Entity_UnitEntity_getPos_return_y, dispatch_UnitEntity_Entity_UnitEntity_getPos_return_z), vec3_toVec2_return_y)
		endif
	endif
endfunction

function HolyEscaper_onCast takes integer this_1, integer id returns nothing
	call Escaper_onCast(this_1, id)
	if id == EscaperClasses_REINCARNATION_ID then
		if Escaper_poisoned[this_1] or ( not dispatch_Escaper_Escaper_Escaper_canCast(this_1)) then
			call unit_resetAbilityCooldown(UnitEntity_actor[this_1], EscaperClasses_REINCARNATION_ID)
			call createFText_2346(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1], 0., .08, "canceled!", 8.5, 2., 255, 0, 0, 255, Entity_owner[this_1])
		else
			if Escaper_revivetomb[this_1] != null then
				call unit_remove(Escaper_revivetomb[this_1])
			endif
			set Escaper_revivetomb[this_1] = createUnit_2356(Entity_owner[this_1], EscaperObjects_TOMB_DUMMY_ID, Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1], 0.)
		endif
	elseif id == EscaperClasses_TEMP_REV_ID then
		if Escaper_poisoned[this_1] or ( not dispatch_Escaper_Escaper_Escaper_canCast(this_1)) then
			call unit_resetAbilityCooldown(UnitEntity_actor[this_1], EscaperClasses_TEMP_REV_ID)
			call createFText_2346(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1], 0., .08, "canceled!", 8.5, 2., 255, 0, 0, 255, Entity_owner[this_1])
		endif
	endif
endfunction

function IceEscaper_onCast takes integer this_1, integer id returns nothing
	local real angl_radians
	local real value
	local real lvl
	local real tuple_temp
	call Escaper_onCast(this_1, id)
	if id == EscaperClasses_SPEEDWAVE_ID then
		if Escaper_sliding[this_1] then
			set tuple_temp = unit_getFacingAngle(UnitEntity_actor[this_1])
			set angl_radians = tuple_temp
			set value = 10. + GetUnitAbilityLevel(UnitEntity_actor[this_1], EscaperClasses_SPEEDWAVE_ID) * 2.5
			call DestroyEffect(AddSpecialEffect("Abilities\\Spells\\Other\\CrushingWave\\CrushingWaveDamage.mdl", Entity_pos_x[this_1], Entity_pos_y[this_1]))
			call dispatch_Entity_Entity_Entity_addVel(this_1, value * angle_cos(angl_radians), value * angle_sin(angl_radians), 0.)
		endif
	elseif id == EscaperClasses_SLOWWAVE_ID then
		set lvl = unit_getAbilityLevel(UnitEntity_actor[this_1], id) / 4.
		if Escaper_sliding[this_1] then
			set Entity_speedFactor[this_1] = 0.9 + lvl
			call effect_destr(addEffect_1565(Objects_impaleTargetDust, Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1]))
		endif
	endif
endfunction

function StrongEscaper_onCast takes integer this_1, integer id returns nothing
	local real tuple_temp
	local real tuple_temp_1
	call Escaper_onCast(this_1, id)
	if id == EscaperClasses_STAGNANCYSHIELD_ID then
		set StrongEscaper_invulnerable[this_1] = true
		set StrongEscaper_shieldtimer[this_1] = 1. + GetUnitAbilityLevel(UnitEntity_actor[this_1], id) * 2.
		if StrongEscaper_shieldtimer[this_1] > 5. then
			set StrongEscaper_shieldtimer[this_1] = 5.
		endif
		call unit_addAbility(UnitEntity_actor[this_1], 1098282348)
		call unit_setPos(UnitEntity_actor[this_1], vec3_toVec2(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1]), vec3_toVec2_return_y)
		set tuple_temp = vec3_toVec2(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1])
		set tuple_temp_1 = vec3_toVec2_return_y
		set StrongEscaper_shieldPos_x[this_1] = tuple_temp
		set StrongEscaper_shieldPos_y[this_1] = tuple_temp_1
		set StrongEscaper_shieldeffect[this_1] = addEffect("Abilities\\Spells\\Human\\DivineShield\\DivineShieldTarget.mdl", StrongEscaper_shieldPos_x[this_1], StrongEscaper_shieldPos_y[this_1])
	endif
endfunction

function dispatch_Escaper_Escaper_Escaper_onCast takes integer this_1, integer id returns nothing
	if Serializable_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling Escaper.onCast")
		else
			call error("Called Escaper.onCast on invalid object.")
		endif
	endif
	if Serializable_typeId[this_1] <= 1165 then
		if Serializable_typeId[this_1] <= 1164 then
			if Serializable_typeId[this_1] <= 1163 then
				call Escaper_onCast(this_1, id)
			else
				call BlindEscaper_onCast(this_1, id)
			endif
		else
			call FastEscaper_onCast(this_1, id)
		endif
	elseif Serializable_typeId[this_1] <= 1167 then
		if Serializable_typeId[this_1] <= 1166 then
			call HolyEscaper_onCast(this_1, id)
		else
			call IceEscaper_onCast(this_1, id)
		endif
	else
		call StrongEscaper_onCast(this_1, id)
	endif
endfunction

function onEvent_add_Escaper_Escaper_3835 takes integer this_1 returns nothing
	call dispatch_Escaper_Escaper_Escaper_onCast(this_2936[this_1], GetSpellAbilityId())
endfunction

function Executer_addActionAbilsNormal takes integer this_1 returns nothing
	local unit receiver = UnitEntity_actor[this_1]
	local unit receiver_1
	local unit receiver_2
	local unit receiver_3
	local unit receiver_4
	local unit receiver_5
	call unit_addAbility(receiver, Executer_DOOR_CLOSE_ABIL)
	set receiver_1 = receiver
	call unit_addAbility(receiver_1, Executer_DOOR_OPEN_ABIL)
	set receiver_2 = receiver_1
	call unit_addAbility(receiver_2, Executer_DOOR_TOGGLE_ABIL)
	set receiver_3 = receiver_2
	call unit_addAbility(receiver_3, Executer_TERRAIN_CHANGE_ABIL)
	set receiver_4 = receiver_3
	call unit_addAbility(receiver_4, Executer_MOVE_UNIT_DIRECT_ABIL)
	set receiver_5 = receiver_4
	call unit_addAbility(receiver_5, Executer_SPAWN_UNIT_ID)
endfunction

function dispatch_Executer_Executer_Executer_addActionAbilsNormal takes integer this_1 returns nothing
	if Serializable_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling Executer.addActionAbilsNormal")
		else
			call error("Called Executer.addActionAbilsNormal on invalid object.")
		endif
	endif
	call Executer_addActionAbilsNormal(this_1)
endfunction

function Executer_addActionAbilsReversable takes integer this_1 returns nothing
	local unit receiver = UnitEntity_actor[this_1]
	local unit receiver_1
	local unit receiver_2
	local unit receiver_3
	call unit_addAbility(receiver, Executer_DOOR_CLOSE_ABIL)
	set receiver_1 = receiver
	call unit_addAbility(receiver_1, Executer_DOOR_OPEN_ABIL)
	set receiver_2 = receiver_1
	call unit_addAbility(receiver_2, Executer_DOOR_TOGGLE_ABIL)
	set receiver_3 = receiver_2
	call unit_addAbility(receiver_3, Executer_TERRAIN_CHANGE_ABIL)
endfunction

function dispatch_Executer_Executer_Executer_addActionAbilsReversable takes integer this_1 returns nothing
	if Serializable_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling Executer.addActionAbilsReversable")
		else
			call error("Called Executer.addActionAbilsReversable on invalid object.")
		endif
	endif
	call Executer_addActionAbilsReversable(this_1)
endfunction

function Executer_addMoveUnitAdjuster takes integer this_1 returns nothing
	local unit receiver = UnitEntity_actor[this_1]
	local unit receiver_1
	local unit receiver_2
	local unit receiver_3
	call unit_addAbility(receiver, Executer_MOVE_UNIT_STOP_ABIL)
	set receiver_1 = receiver
	call unit_addAbility(receiver_1, Executer_MOVE_UNIT_DIRECT_ABIL)
	set receiver_2 = receiver_1
	call unit_addAbility(receiver_2, Executer_MOVE_UNIT_PATROL_ABIL)
	set receiver_3 = receiver_2
	call unit_addAbility(receiver_3, Executer_MOVE_UNIT_SELECT_ABIL)
endfunction

function dispatch_Executer_Executer_Executer_addMoveUnitAdjuster takes integer this_1 returns nothing
	if Serializable_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling Executer.addMoveUnitAdjuster")
		else
			call error("Called Executer.addMoveUnitAdjuster on invalid object.")
		endif
	endif
	call Executer_addMoveUnitAdjuster(this_1)
endfunction

function Executer_addTerrainAdjuster takes integer this_1 returns nothing
	local unit receiver = UnitEntity_actor[this_1]
	local unit receiver_1
	local unit receiver_2
	local unit receiver_3
	local unit receiver_4
	call unit_addAbility(receiver, Executer_TERRAIN_INCREASE_V_ABIL)
	set receiver_1 = receiver
	call unit_addAbility(receiver_1, Executer_TERRAIN_INCREASE_H_ABIL)
	set receiver_2 = receiver_1
	call unit_addAbility(receiver_2, Executer_TERRAIN_DECREASE_V_ABIL)
	set receiver_3 = receiver_2
	call unit_addAbility(receiver_3, Executer_TERRAIN_DECREASE_H_ABIL)
	set receiver_4 = receiver_3
	call unit_addAbility(receiver_4, Executer_TERRAIN_BOOK_ABIL)
	if Executer_eventMode[this_1] == 3 or Executer_eventMode[this_1] == 4 then
		call UnitAddAbility(UnitEntity_actor[this_1], Executer_TERRAIN_ANTIBOOK_ABIL)
	endif
endfunction

function dispatch_Executer_Executer_Executer_addTerrainAdjuster takes integer this_1 returns nothing
	if Serializable_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling Executer.addTerrainAdjuster")
		else
			call error("Called Executer.addTerrainAdjuster on invalid object.")
		endif
	endif
	call Executer_addTerrainAdjuster(this_1)
endfunction

function Executer_changeVis takes integer this_1, boolean invis returns nothing
	if Executer_eventMode[this_1] == 4 then
		if invis then
			call ShowDestructable(Executer_dummy[this_1], false)
		else
			call ShowDestructable(Executer_dummy[this_1], true)
			call SetDestructableAnimation(Executer_dummy[this_1], "death")
		endif
	elseif Executer_eventMode[this_1] == 3 then
		if invis then
			call ShowDestructable(Executer_dummy[this_1], false)
		else
			call ShowDestructable(Executer_dummy[this_1], true)
			call SetDestructableAnimation(Executer_dummy[this_1], "stand alternate")
		endif
	endif
endfunction

function dispatch_Executer_Executer_Executer_changeVis takes integer this_1, boolean invis returns nothing
	if Serializable_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling Executer.changeVis")
		else
			call error("Called Executer.changeVis on invalid object.")
		endif
	endif
	call Executer_changeVis(this_1, invis)
endfunction

function region_addRect takes region this_1, rect rct returns nothing
	call RegionAddRect(this_1, rct)
endfunction

function region_setRegionData takes region this_1, integer data_1 returns nothing
	call dispatch_HashMap_HashMap_HashMap_put(EventHelper_regionMap, regionToIndex(this_1), data_1)
endfunction

function trigger_clearActions takes trigger this_1 returns nothing
	call TriggerClearActions(this_1)
endfunction

function trigger_clearConditions takes trigger this_1 returns nothing
	call TriggerClearConditions(this_1)
endfunction

function Executer_registerRect takes integer this_1, real centerx, real centery, real offset returns nothing
	local trigger receiver
	local trigger receiver_1
	local trigger receiver_2
	call unit_clearRegister(UnitEntity_actor[this_1])
	set receiver = StaticBaseObject_inRangeTrig[this_1]
	call trigger_clearConditions(receiver)
	set receiver_1 = receiver
	call trigger_clearActions(receiver_1)
	set receiver_2 = receiver_1
	call trigger_destr(receiver_2)
	set Executer_entitiesOnPlate[this_1] = new_LinkedList()
	set Executer_eventRect[this_1] = Rect(centerx - offset, centery - offset, centerx + offset, centery + offset)
	set Executer_eventRegion[this_1] = CreateRegion()
	call region_addRect(Executer_eventRegion[this_1], Executer_eventRect[this_1])
	call region_setRegionData(Executer_eventRegion[this_1], this_1)
	call TriggerRegisterLeaveRegion(Executer_executerUnitLeave, Executer_eventRegion[this_1], null)
	call trigger_addCondition(Executer_executerUnitLeave, Condition(ref_function_code__Condition_addCondition_Executer_Executer))
	call TriggerRegisterEnterRegion(Executer_executerUnitEnter, Executer_eventRegion[this_1], null)
	call trigger_addCondition(Executer_executerUnitEnter, Condition(ref_function_code__Condition_addCondition_Executer_Executer_2638))
endfunction

function dispatch_Executer_Executer_Executer_registerRect takes integer this_1, real centerx, real centery, real offset returns nothing
	if Serializable_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling Executer.registerRect")
		else
			call error("Called Executer.registerRect on invalid object.")
		endif
	endif
	call Executer_registerRect(this_1, centerx, centery, offset)
endfunction

function Executer_removeActionAbils takes integer this_1 returns nothing
	local unit receiver = UnitEntity_actor[this_1]
	local unit receiver_1
	local unit receiver_2
	local unit receiver_3
	local unit receiver_4
	local unit receiver_5
	local unit receiver_6
	call unit_removeAbility(receiver, Executer_DOOR_CLOSE_ABIL)
	set receiver_1 = receiver
	call unit_removeAbility(receiver_1, Executer_DOOR_OPEN_ABIL)
	set receiver_2 = receiver_1
	call unit_removeAbility(receiver_2, Executer_DOOR_TOGGLE_ABIL)
	set receiver_3 = receiver_2
	call unit_removeAbility(receiver_3, Executer_TERRAIN_CHANGE_ABIL)
	set receiver_4 = receiver_3
	call unit_removeAbility(receiver_4, Executer_MOVE_UNIT_DIRECT_ABIL)
	set receiver_5 = receiver_4
	call unit_removeAbility(receiver_5, Executer_SPAWN_UNIT_ID)
	set receiver_6 = UnitEntity_actor[this_1]
	call unit_addAbility(receiver_6, BuilderConstants_TURN_OFF_ID)
endfunction

function dispatch_Executer_Executer_Executer_removeActionAbils takes integer this_1 returns nothing
	if Serializable_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling Executer.removeActionAbils")
		else
			call error("Called Executer.removeActionAbils on invalid object.")
		endif
	endif
	call Executer_removeActionAbils(this_1)
endfunction

function Executer_removeModeAbils takes integer this_1 returns nothing
	local unit receiver = UnitEntity_actor[this_1]
	local unit receiver_1
	local unit receiver_2
	local unit receiver_3
	call unit_removeAbility(receiver, Executer_ONESHOT_ABIL)
	set receiver_1 = receiver
	call unit_removeAbility(receiver_1, Executer_REPEATING_ABIL)
	set receiver_2 = receiver_1
	call unit_removeAbility(receiver_2, Executer_LEVER_ABIL)
	set receiver_3 = receiver_2
	call unit_removeAbility(receiver_3, Executer_PRESSURE_ABIL)
endfunction

function dispatch_Executer_Executer_Executer_removeModeAbils takes integer this_1 returns nothing
	if Serializable_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling Executer.removeModeAbils")
		else
			call error("Called Executer.removeModeAbils on invalid object.")
		endif
	endif
	call Executer_removeModeAbils(this_1)
endfunction

function Executer_onCast takes integer this_1 returns boolean
	local integer id = GetSpellAbilityId()
	local integer temp = id
	local unit target
	if temp == Executer_ONESHOT_ABIL then
		set Executer_eventMode[this_1] = 2
		call dispatch_Executer_Executer_Executer_addActionAbilsNormal(this_1)
		call dispatch_Executer_Executer_Executer_removeModeAbils(this_1)
	elseif temp == Executer_REPEATING_ABIL then
		set Executer_eventMode[this_1] = 1
		call dispatch_Executer_Executer_Executer_addActionAbilsNormal(this_1)
		call dispatch_Executer_Executer_Executer_removeModeAbils(this_1)
	elseif temp == Executer_LEVER_ABIL then
		set Executer_eventMode[this_1] = 3
		call dispatch_Executer_Executer_Executer_addActionAbilsReversable(this_1)
		call dispatch_Executer_Executer_Executer_removeModeAbils(this_1)
		set Executer_dummy[this_1] = CreateDestructable(Executer_LEVER_DUMMY_ID, unit_getX(UnitEntity_actor[this_1]), unit_getY(UnitEntity_actor[this_1]), 0., 1., 0)
		call SetDestructableAnimation(Executer_dummy[this_1], "death")
	elseif temp == Executer_PRESSURE_ABIL then
		set Executer_eventMode[this_1] = 4
		call dispatch_Executer_Executer_Executer_addActionAbilsReversable(this_1)
		call dispatch_Executer_Executer_Executer_removeModeAbils(this_1)
		call dispatch_Executer_Executer_Executer_registerRect(this_1, unit_getX(UnitEntity_actor[this_1]), unit_getY(UnitEntity_actor[this_1]), 54.)
		set Executer_dummy[this_1] = CreateDestructable(Executer_PLATE_DUMMY_ID, unit_getX(UnitEntity_actor[this_1]), unit_getY(UnitEntity_actor[this_1]), 0., 1., 0)
		call SetDestructableAnimation(Executer_dummy[this_1], "stand alternate")
	elseif temp == Executer_REACTIVATE_ABIL then
		set Executer_disabled[this_1] = false
		call SetUnitVertexColor(UnitEntity_actor[this_1], 0, 128, 0, 255)
		call UnitRemoveAbility(UnitEntity_actor[this_1], Executer_REACTIVATE_ABIL)
	elseif temp == BuilderConstants_MAKE_UNIT_VISIBLE_ID then
		call dispatch_Executer_Executer_Executer_changeVis(this_1, false)
	elseif temp == BuilderConstants_MAKE_UNIT_INVISIBLE_ID then
		call dispatch_Executer_Executer_Executer_changeVis(this_1, true)
	elseif temp == BuilderConstants_MODE_KILLERS_ID then
		set Executer_canKillerTrigger[this_1] = true
		set Executer_canEscaperTrigger[this_1] = true
		call UnitRemoveAbility(UnitEntity_actor[this_1], BuilderConstants_MODE_KILLERS_ID)
		call UnitAddAbility(UnitEntity_actor[this_1], BuilderConstants_MODE_BOTH_ID)
	elseif temp == BuilderConstants_MODE_ESCAPERS_ID then
		set Executer_canKillerTrigger[this_1] = true
		set Executer_canEscaperTrigger[this_1] = false
		call UnitRemoveAbility(UnitEntity_actor[this_1], BuilderConstants_MODE_ESCAPERS_ID)
		call UnitAddAbility(UnitEntity_actor[this_1], BuilderConstants_MODE_KILLERS_ID)
	elseif temp == BuilderConstants_MODE_BOTH_ID then
		set Executer_canKillerTrigger[this_1] = false
		set Executer_canEscaperTrigger[this_1] = true
		call UnitRemoveAbility(UnitEntity_actor[this_1], BuilderConstants_MODE_BOTH_ID)
		call UnitAddAbility(UnitEntity_actor[this_1], BuilderConstants_MODE_ESCAPERS_ID)
	elseif temp == Executer_DOOR_OPEN_ABIL then
		set Executer_actionMode[this_1] = 1
		call dispatch_Executer_Executer_Executer_removeActionAbils(this_1)
	elseif temp == Executer_DOOR_CLOSE_ABIL then
		set Executer_actionMode[this_1] = 2
		call dispatch_Executer_Executer_Executer_removeActionAbils(this_1)
	elseif temp == Executer_DOOR_TOGGLE_ABIL then
		set Executer_actionMode[this_1] = 3
		call dispatch_Executer_Executer_Executer_removeActionAbils(this_1)
	elseif temp == Executer_TERRAIN_CHANGE_ABIL then
		set Executer_actionMode[this_1] = 6
		call dispatch_Executer_Executer_Executer_removeActionAbils(this_1)
		call dispatch_Executer_Executer_Executer_addTerrainAdjuster(this_1)
		set Executer_tiletype[this_1] = 808464432
		set Executer_nottiletype[this_1] = 808464433
	elseif temp == Executer_TERRAIN_WALKABLE_ABIL then
		set Executer_tiletype[this_1] = 808464432
	elseif temp == Executer_TERRAIN_W_O_ABIL then
		set Executer_nottiletype[this_1] = 808464432
	elseif temp == Executer_TERRAIN_UNWALKABLE_ABIL then
		set Executer_tiletype[this_1] = 808464433
	elseif temp == Executer_TERRAIN_UW_O_ABIL then
		set Executer_nottiletype[this_1] = 808464433
	elseif temp == Executer_TERRAIN_ICE_ABIL then
		set Executer_tiletype[this_1] = BuilderConstants_CONTROLLABLEICE
	elseif temp == Executer_TERRAIN_REVICE_ABIL then
		set Executer_tiletype[this_1] = BuilderConstants_REVICE
	elseif temp == Executer_TERRAIN_I_O_ABIL then
		set Executer_nottiletype[this_1] = BuilderConstants_CONTROLLABLEICE
	elseif temp == Executer_TERRAIN_UNICE_ABIL then
		set Executer_tiletype[this_1] = BuilderConstants_UNCONTROLLABLEICE
	elseif temp == Executer_TERRAIN_UI_O_ABIL then
		set Executer_nottiletype[this_1] = BuilderConstants_UNCONTROLLABLEICE
	elseif temp == Executer_TERRAIN_RI_O_ABIL then
		set Executer_nottiletype[this_1] = BuilderConstants_REVICE
	elseif temp == Executer_SPAWN_UNIT_ID then
		set Executer_actionMode[this_1] = 4
		set Executer_actionUnit[this_1] = 1
		call dispatch_Executer_Executer_Executer_removeActionAbils(this_1)
		call UnitAddAbility(UnitEntity_actor[this_1], Executer_TRAIN_BOOK_ABIL)
	elseif temp == Executer_TRAIN_BK_ABIL then
		set Executer_actionUnit[this_1] = 4
	elseif temp == Executer_TRAIN_SK_ABIL then
		set Executer_actionUnit[this_1] = 3
	elseif temp == Executer_TRAIN_BRK_ABIL then
		set Executer_actionUnit[this_1] = 6
	elseif temp == Executer_TRAIN_SRK_ABIL then
		set Executer_actionUnit[this_1] = 5
	elseif temp == Executer_TRAIN_TANK_ABIL then
		set Executer_actionUnit[this_1] = 1
	elseif temp == Executer_TRAIN_GLAIVE_ABIL then
		set Executer_actionUnit[this_1] = 2
	elseif temp == Executer_TRAIN_POINTER_ABIL then
		set Executer_actionUnit[this_1] = 7
	elseif temp == Executer_TRAIN_KNOCK_ABIL then
		set Executer_actionUnit[this_1] = 8
	elseif temp == Executer_MOVE_UNIT_DIRECT_ABIL then
		set Executer_moveOrderString[this_1] = "move"
		if Executer_actionMode[this_1] == 0 then
			set Executer_actionMode[this_1] = 5
			call dispatch_Executer_Executer_Executer_removeActionAbils(this_1)
			call dispatch_Executer_Executer_Executer_addMoveUnitAdjuster(this_1)
		endif
	elseif temp == Executer_MOVE_UNIT_PATROL_ABIL then
		set Executer_moveOrderString[this_1] = "patrol"
	elseif temp == Executer_MOVE_UNIT_STOP_ABIL then
		set Executer_moveOrderString[this_1] = "stop"
	elseif temp == Executer_MOVE_UNIT_SELECT_ABIL then
		set target = GetSpellTargetUnit()
		if unit_getOwner(target) == Entity_owner[this_1] and Entity_getCurrentRegion(unit_getEntity(target)) == Entity_getCurrentRegion(this_1) and ( not (Serializable_typeId[unit_getEntity(target)] == 1162)) then
			set Executer_unitToMove[this_1] = target
		endif
	elseif temp == Executer_TERRAIN_INCREASE_H_ABIL then
		if  not (Executer_horizontalTileSize[this_1] > 3) then
			set Executer_horizontalTileSize[this_1] = Executer_horizontalTileSize[this_1] + 1
		endif
	elseif temp == Executer_TERRAIN_INCREASE_V_ABIL then
		if  not (Executer_verticalTileSize[this_1] > 3) then
			set Executer_verticalTileSize[this_1] = Executer_verticalTileSize[this_1] + 1
		endif
	elseif temp == Executer_TERRAIN_DECREASE_H_ABIL then
		if  not (Executer_horizontalTileSize[this_1] < 1) then
			set Executer_horizontalTileSize[this_1] = Executer_horizontalTileSize[this_1] - 1
		endif
	elseif temp == Executer_TERRAIN_DECREASE_V_ABIL then
		if  not (Executer_verticalTileSize[this_1] < 1) then
			set Executer_verticalTileSize[this_1] = Executer_verticalTileSize[this_1] - 1
		endif
	endif
	return false
endfunction

function dispatch_Executer_Executer_Executer_onCast takes integer this_1 returns boolean
	local boolean Executer_Executer_onCast_result
	if Serializable_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling Executer.onCast")
		else
			call error("Called Executer.onCast on invalid object.")
		endif
	endif
	set Executer_Executer_onCast_result = Executer_onCast(this_1)
	return Executer_Executer_onCast_result
endfunction

function onEvent_add_Executer_Executer takes integer this_1 returns boolean
	return dispatch_Executer_Executer_Executer_onCast(this_2954[this_1])
endfunction

function Faceless_onCast takes integer this_1 returns nothing
	local integer id = GetSpellAbilityId()
	local integer temp = id
	if temp == Faceless_UP_VIS_ID then
		call dispatch_ConfigValue_ConfigValue_ConfigValue_increment(Faceless_visibleDur[this_1], this_1, 10.)
	elseif temp == Faceless_DOWN_VIS_ID then
		call dispatch_ConfigValue_ConfigValue_ConfigValue_decrement(Faceless_visibleDur[this_1], this_1, 0.)
	elseif temp == Faceless_UP_INVIS_ID then
		call dispatch_ConfigValue_ConfigValue_ConfigValue_increment(Faceless_invisDur[this_1], this_1, 10.)
	elseif temp == Faceless_DOWN_INVIS_ID then
		call dispatch_ConfigValue_ConfigValue_ConfigValue_decrement(Faceless_invisDur[this_1], this_1, 0.)
	endif
endfunction

function dispatch_Faceless_Faceless_Faceless_onCast takes integer this_1 returns nothing
	if Serializable_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling Faceless.onCast")
		else
			call error("Called Faceless.onCast on invalid object.")
		endif
	endif
	call Faceless_onCast(this_1)
endfunction

function onEvent_add_Faceless_Faceless takes integer this_1 returns nothing
	call dispatch_Faceless_Faceless_Faceless_onCast(this_2981[this_1])
endfunction

function Fountain_onCast takes integer this_1 returns nothing
	local integer id = GetSpellAbilityId()
	local integer temp = id
	local unit receiver
	local unit receiver_1
	local unit receiver_2
	local unit receiver_3
	local unit receiver_4
	local unit receiver_5
	if temp == 1093678903 then
		call dispatch_UnitEntity_Entity_UnitEntity_setNewActor(this_1, CreateUnit(Entity_owner[this_1], BuilderConstants_FOUNTAIN_HEAL_ID, Entity_pos_x[this_1], Entity_pos_y[this_1], 270.))
		call unit_addAbility(UnitEntity_actor[this_1], Basics_LOCUST_ID)
		set Fountain_cure[this_1] = false
		set receiver = StaticSetupObject_setup[this_1]
		call unit_removeAbility(receiver, 1093678903)
		set receiver_1 = receiver
		call unit_addAbility(receiver_1, 1093678904)
	elseif temp == 1093678904 then
		call dispatch_UnitEntity_Entity_UnitEntity_setNewActor(this_1, CreateUnit(Entity_owner[this_1], BuilderConstants_FOUNTAIN_CURE_ID, Entity_pos_x[this_1], Entity_pos_y[this_1], 270.))
		call unit_addAbility(UnitEntity_actor[this_1], Basics_LOCUST_ID)
		set Fountain_cure[this_1] = true
		set receiver_2 = StaticSetupObject_setup[this_1]
		call unit_removeAbility(receiver_2, 1093678904)
		set receiver_3 = receiver_2
		call unit_addAbility(receiver_3, 1093678905)
	elseif temp == 1093678905 then
		call dispatch_UnitEntity_Entity_UnitEntity_setNewActor(this_1, CreateUnit(Entity_owner[this_1], BuilderConstants_FOUNTAIN_BOTH_ID, Entity_pos_x[this_1], Entity_pos_y[this_1], 270.))
		call unit_addAbility(UnitEntity_actor[this_1], Basics_LOCUST_ID)
		set Fountain_cure[this_1] = true
		set receiver_4 = StaticSetupObject_setup[this_1]
		call unit_removeAbility(receiver_4, 1093678905)
		set receiver_5 = receiver_4
		call unit_addAbility(receiver_5, 1093678903)
	endif
endfunction

function dispatch_Fountain_Fountain_Fountain_onCast takes integer this_1 returns nothing
	if Serializable_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling Fountain.onCast")
		else
			call error("Called Fountain.onCast on invalid object.")
		endif
	endif
	call Fountain_onCast(this_1)
endfunction

function onEvent_add_Fountain_Fountain takes integer this_1 returns nothing
	call dispatch_Fountain_Fountain_Fountain_onCast(this_2992[this_1])
endfunction

function onEvent_add_Fountain_Fountain_3839 takes integer this_1 returns nothing
	call dispatch_Fountain_Fountain_Fountain_onCast(this_2993[this_1])
endfunction

function onChangeVisibility takes nothing returns nothing
	local integer id = GetSpellAbilityId()
	local unit caster
	local integer dta
	local integer data_1
	local unit receiver
	local unit receiver_1
	local unit receiver_2
	local unit receiver_3
	local unit receiver_4
	local unit receiver_5
	local unit receiver_6
	local unit receiver_7
	local unit receiver_8
	local unit receiver_9
	local unit receiver_10
	local unit receiver_11
	local unit receiver_12
	local unit receiver_13
	local unit receiver_14
	local integer instanceOfTemp
	if id == BuilderConstants_MAKE_UNIT_VISIBLE_ID or id == BuilderConstants_MAKE_UNIT_INVISIBLE_ID then
		set caster = GetSpellAbilityUnit()
		set dta = unit_getEntity(caster)
		set instanceOfTemp = Serializable_typeId[dta]
		if instanceOfTemp >= 1172 and instanceOfTemp <= 1192 then
			set data_1 = dta
			if id == BuilderConstants_MAKE_UNIT_VISIBLE_ID then
				set receiver = UnitEntity_actor[data_1]
				call unit_removeAbility(receiver, Basics_GHOST_INVIS_ID)
				set receiver_1 = receiver
				call unit_addAbility(receiver_1, Basics_GHOST_VIS_ID)
				set receiver_2 = SetupObject_setup[data_1]
				call unit_removeAbility(receiver_2, BuilderConstants_MAKE_UNIT_VISIBLE_ID)
				set receiver_3 = receiver_2
				call unit_addAbility(receiver_3, BuilderConstants_MAKE_UNIT_INVISIBLE_ID)
			elseif id == BuilderConstants_MAKE_UNIT_INVISIBLE_ID then
				set receiver_4 = UnitEntity_actor[data_1]
				call unit_removeAbility(receiver_4, Basics_GHOST_VIS_ID)
				set receiver_5 = receiver_4
				call unit_addAbility(receiver_5, Basics_GHOST_INVIS_ID)
				set receiver_6 = SetupObject_setup[data_1]
				call unit_removeAbility(receiver_6, BuilderConstants_MAKE_UNIT_INVISIBLE_ID)
				set receiver_7 = receiver_6
				call unit_addAbility(receiver_7, BuilderConstants_MAKE_UNIT_VISIBLE_ID)
			endif
		elseif id == BuilderConstants_MAKE_UNIT_VISIBLE_ID then
			set receiver_8 = caster
			call unit_removeAbility(receiver_8, Basics_GHOST_INVIS_ID)
			set receiver_9 = receiver_8
			call unit_addAbility(receiver_9, Basics_GHOST_VIS_ID)
			set receiver_10 = caster
			call unit_removeAbility(receiver_10, BuilderConstants_MAKE_UNIT_VISIBLE_ID)
			set receiver_11 = receiver_10
			call unit_addAbility(receiver_11, BuilderConstants_MAKE_UNIT_INVISIBLE_ID)
		elseif id == BuilderConstants_MAKE_UNIT_INVISIBLE_ID then
			if unit_hasAbility(caster, Basics_GHOST_VIS_ID) then
				call unit_removeAbility(caster, Basics_GHOST_VIS_ID)
			endif
			set receiver_12 = caster
			call unit_addAbility(receiver_12, Basics_GHOST_INVIS_ID)
			set receiver_13 = receiver_12
			call unit_removeAbility(receiver_13, BuilderConstants_MAKE_UNIT_INVISIBLE_ID)
			set receiver_14 = receiver_13
			call unit_addAbility(receiver_14, BuilderConstants_MAKE_UNIT_VISIBLE_ID)
		endif
	endif
endfunction

function onEvent_add_Invisible takes integer this_1 returns nothing
	call onChangeVisibility()
endfunction

function ItemEntity_setNewActor takes integer this_1, item i returns nothing
	if i == null or ( not item_isAlive(i)) or item_getEntity(i) != 0 then
		call error("invalid actor replacement")
	endif
	call item_setEntity(ItemEntity_actor[this_1], 0)
	call item_remove(ItemEntity_actor[this_1])
	set ItemEntity_actor[this_1] = i
	call item_setEntity(ItemEntity_actor[this_1], this_1)
	call item_setPos(ItemEntity_actor[this_1], vec3_toVec2(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1]), vec3_toVec2_return_y)
endfunction

function dispatch_ItemEntity_Entity_ItemEntity_setNewActor takes integer this_1, item i returns nothing
	if Serializable_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling ItemEntity.setNewActor")
		else
			call error("Called ItemEntity.setNewActor on invalid object.")
		endif
	endif
	call ItemEntity_setNewActor(this_1, i)
endfunction

function Key_recolor takes integer this_1 returns nothing
	call dispatch_ItemEntity_Entity_ItemEntity_setNewActor(this_1, createItem_2353(Key_keyIds[Key_col[this_1]], Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1]))
	if Key_returnSfx[this_1] != null then
		call effect_destr(Key_returnSfx[this_1])
		set Key_returnSfx[this_1] = addEffect_1565("XTex" + int_toString(Key_col[this_1]) + ".mdx", Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1])
	endif
endfunction

function dispatch_Key_Key_Key_recolor takes integer this_1 returns nothing
	if Serializable_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling Key.recolor")
		else
			call error("Called Key.recolor on invalid object.")
		endif
	endif
	call Key_recolor(this_1)
endfunction

function Key_setFollow takes integer this_1, boolean flag returns nothing
	if flag and Key_returnSfx[this_1] != null then
		call effect_destr(Key_returnSfx[this_1])
		set Key_returnSfx[this_1] = null
	elseif ( not flag) and Key_returnSfx[this_1] == null then
		set Key_returnSfx[this_1] = addEffect_1565("XTex" + int_toString(Key_col[this_1]) + ".mdx", Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1])
	endif
	set Key_followWalkable[this_1] = flag
endfunction

function dispatch_Key_Key_Key_setFollow takes integer this_1, boolean flag returns nothing
	if Serializable_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling Key.setFollow")
		else
			call error("Called Key.setFollow on invalid object.")
		endif
	endif
	call Key_setFollow(this_1, flag)
endfunction

function dispatch_IterableMap_HashMap_IterableMap_flush takes integer this_1 returns nothing
	if Table_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling IterableMap.flush")
		else
			call error("Called IterableMap.flush on invalid object.")
		endif
	endif
	call IterableMap_flush(this_1)
endfunction

function Key_setInfinite takes integer this_1, boolean flag returns nothing
	if ( not flag) and Key_infinite[this_1] then
		call effect_destr(Key_infiniteEff[this_1])
		set Key_infiniteEff[this_1] = null
		call dispatch_Key_Key_Key_clearKeys(this_1)
		call dispatch_IterableMap_HashMap_IterableMap_flush(Key_effectMap[this_1])
	elseif flag and ( not Key_infinite[this_1]) then
		set Key_infiniteEff[this_1] = addEffect(Abilities_generalAuraTarget, item_getPos(ItemEntity_actor[this_1]), item_getPos_return_y)
	endif
	set Key_infinite[this_1] = flag
endfunction

function dispatch_Key_Key_Key_setInfinite takes integer this_1, boolean flag returns nothing
	if Serializable_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling Key.setInfinite")
		else
			call error("Called Key.setInfinite on invalid object.")
		endif
	endif
	call Key_setInfinite(this_1, flag)
endfunction

function Key_onCast takes integer this_1 returns nothing
	local integer id = GetSpellAbilityId()
	local integer temp = id
	local unit receiver
	local unit receiver_1
	local unit receiver_2
	local unit receiver_3
	local integer i
	if temp == Key_DYN_ID then
		call dispatch_Key_Key_Key_setInfinite(this_1, false)
		call dispatch_Key_Key_Key_setFollow(this_1, false)
		set receiver = UnitEntity_actor[ItemObject_setup[this_1]]
		call unit_removeAbility(receiver, Key_DYN_ID)
		set receiver_1 = receiver
		call unit_addAbility(receiver_1, Key_STATIC_ID)
	elseif temp == Key_STATIC_ID then
		call dispatch_Key_Key_Key_setInfinite(this_1, false)
		call dispatch_Key_Key_Key_setFollow(this_1, true)
		set receiver_2 = UnitEntity_actor[ItemObject_setup[this_1]]
		call unit_removeAbility(receiver_2, Key_STATIC_ID)
		set receiver_3 = receiver_2
		call unit_addAbility(receiver_3, Key_DYN_ID)
	elseif temp == Key_INFINITE_ID then
		call dispatch_Key_Key_Key_setInfinite(this_1,  not Key_infinite[this_1])
		call dispatch_Key_Key_Key_setFollow(this_1, false)
	endif
	set i = 0
	loop
		exitwhen i > 8
		if BuilderConstants_colorSpells[i] == id then
			set Key_col[this_1] = i
			exitwhen true
		endif
		set i = i + 1
	endloop
	call dispatch_Key_Key_Key_recolor(this_1)
endfunction

function dispatch_Key_Key_Key_onCast takes integer this_1 returns nothing
	if Serializable_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling Key.onCast")
		else
			call error("Called Key.onCast on invalid object.")
		endif
	endif
	call Key_onCast(this_1)
endfunction

function onEvent_add_Key_Key takes integer this_1 returns nothing
	call dispatch_Key_Key_Key_onCast(this_2966[this_1])
endfunction

function Knockbacker_onCast takes integer this_1 returns boolean
	local integer id = GetSpellAbilityId()
	local integer temp = id
	if temp == Knockbacker_KNOCK_INC_ID then
		call dispatch_ConfigValue_ConfigValue_ConfigValue_increment(Knockbacker_kforce[this_1], this_1, 75.)
	elseif temp == Knockbacker_KNOCK_DEC_ID then
		call dispatch_ConfigValue_ConfigValue_ConfigValue_decrement(Knockbacker_kforce[this_1], this_1, -75.)
	elseif temp == Knockbacker_DMG_INC_ID then
		call dispatch_ConfigValue_ConfigValue_ConfigValue_increment(Knockbacker_damage[this_1], this_1, 500.)
	elseif temp == Knockbacker_DMG_DEC_ID then
		call dispatch_ConfigValue_ConfigValue_ConfigValue_decrement(Knockbacker_damage[this_1], this_1, 0.)
	endif
	return false
endfunction

function dispatch_Knockbacker_Knockbacker_Knockbacker_onCast takes integer this_1 returns boolean
	local boolean Knockbacker_Knockbacker_onCast_result
	if Serializable_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling Knockbacker.onCast")
		else
			call error("Called Knockbacker.onCast on invalid object.")
		endif
	endif
	set Knockbacker_Knockbacker_onCast_result = Knockbacker_onCast(this_1)
	return Knockbacker_Knockbacker_onCast_result
endfunction

function onEvent_add_Knockbacker_Knockbacker takes integer this_1 returns boolean
	return dispatch_Knockbacker_Knockbacker_Knockbacker_onCast(this_2982[this_1])
endfunction

function onEvent_add_Knockbacker_Knockbacker_3843 takes integer this_1 returns boolean
	return dispatch_Knockbacker_Knockbacker_Knockbacker_onCast(this_2983[this_1])
endfunction

function alloc_ShipProjectile takes nothing returns integer
	local integer this_1
	if Serializable_firstFree == 0 then
		if Serializable_maxIndex < JASS_MAX_ARRAY_SIZE then
			set Serializable_maxIndex = Serializable_maxIndex + 1
			set this_1 = Serializable_maxIndex
			set Serializable_typeId[this_1] = 1147
		else
			call error("Out of memory: Could not create ShipProjectile.")
			set this_1 = 0
		endif
	else
		set Serializable_firstFree = Serializable_firstFree - 1
		set this_1 = Serializable_nextFree[Serializable_firstFree]
		set Serializable_typeId[this_1] = 1147
	endif
	return this_1
endfunction

function ShipProjectile_init takes integer this_1 returns nothing
endfunction

function construct_ShipProjectile takes integer this_1, integer ship returns nothing
	local real tuple_temp
	local real tuple_temp_1
	local real tuple_temp_2
	call construct_Projectile(this_1, vec2_withZ(vec2_polarOffset(vec3_toVec2(dispatch_UnitEntity_Entity_UnitEntity_getPos(ship), dispatch_UnitEntity_Entity_UnitEntity_getPos_return_y, dispatch_UnitEntity_Entity_UnitEntity_getPos_return_z), vec3_toVec2_return_y, unit_getFacingAngle(UnitEntity_actor[ship]), 16.), vec2_polarOffset_return_y, 64.), vec2_withZ_return_y, vec2_withZ_return_z, 16., Entity_owner[ship], unit_getFacingAngle(UnitEntity_actor[ship]), Abilities_faerieDragonMissile)
	call ShipProjectile_init(this_1)
	call dispatch_Fx2_Fx2_Fx2_setTintFromPlayer(Fx2Entity_fx[this_1], Entity_owner[this_1])
	call dispatch_Projectile_Projectile_Projectile_setSpeed(this_1, 8.)
	call effect_setScale(Fx2_eff[Fx2Entity_fx[this_1]], 0.75)
	set tuple_temp = vec3_op_plus(Entity_vel_x[this_1], Entity_vel_y[this_1], Entity_vel_z[this_1], Entity_vel_x[ship], Entity_vel_y[ship], Entity_vel_z[ship])
	set tuple_temp_1 = vec3_op_plus_return_y
	set tuple_temp_2 = vec3_op_plus_return_z
	set Entity_vel_x[this_1] = tuple_temp
	set Entity_vel_y[this_1] = tuple_temp_1
	set Entity_vel_z[this_1] = tuple_temp_2
	set ShipProjectile_ship[this_1] = ship
endfunction

function new_ShipProjectile takes integer ship returns integer
	local integer this_1 = alloc_ShipProjectile()
	call construct_ShipProjectile(this_1, ship)
	return this_1
endfunction

function Spaceship_shoot takes integer this_1 returns nothing
	if Entity_DupletListModule_active[this_1] and dispatch_LinkedList_LinkedList_LinkedList_size(Spaceship_projectiles[this_1]) < 4 then
		call unit_setAnimation(UnitEntity_actor[this_1], "attack")
		call dispatch_LinkedList_LinkedList_LinkedList_add_1(Spaceship_projectiles[this_1], new_ShipProjectile(this_1))
	endif
endfunction

function dispatch_Spaceship_MGSpacey_Spaceship_shoot takes integer this_1 returns nothing
	if Serializable_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling Spaceship.shoot")
		else
			call error("Called Spaceship.shoot on invalid object.")
		endif
	endif
	call Spaceship_shoot(this_1)
endfunction

function onEvent_add_MGSpacey_MGSpacey takes integer this_1 returns nothing
	local integer iterator = LinkedList_iterator(MGSpacey_ships)
	local integer ship
	loop
		exitwhen  not LLIterator_hasNext(iterator)
		set ship = LLIterator_next(iterator)
		if Entity_owner[ship] == GetTriggerPlayer() then
			call dispatch_Spaceship_MGSpacey_Spaceship_shoot(ship)
			exitwhen true
		endif
	endloop
	call LLIterator_close(iterator)
endfunction

function unit_getMoveSpeed takes unit this_1 returns real
	return GetUnitMoveSpeed(this_1)
endfunction

function onChangeSpeed takes nothing returns nothing
	local integer id = GetSpellAbilityId()
	local unit caster = GetSpellAbilityUnit()
	local integer data_1 = unit_getEntity(caster)
	local integer ddata
	local real speed
	local integer instanceOfTemp
	local boolean andLeft
	if id == MoveSpeed_INC_SPEED_ID or id == MoveSpeed_DEC_SPEED_ID then
		set instanceOfTemp = Serializable_typeId[data_1]
		set andLeft = instanceOfTemp >= 1172 and instanceOfTemp <= 1192
	else
		set andLeft = false
	endif
	if andLeft then
		set ddata = data_1
		set speed = real_round(unit_getMoveSpeed(SetupObject_setup[ddata]) / 25.) * 25.
		if id == MoveSpeed_INC_SPEED_ID then
			if speed <= 500. then
				call unit_setMoveSpeed(SetupObject_setup[ddata], speed + 25.)
				call unit_setMoveSpeed(UnitEntity_actor[ddata], speed + 25.)
				call createFText_2346(dispatch_UnitEntity_Entity_UnitEntity_getPos(data_1), dispatch_UnitEntity_Entity_UnitEntity_getPos_return_y, dispatch_UnitEntity_Entity_UnitEntity_getPos_return_z, 0., 0.05, real_toString(speed + 25.), 10., 2., 255, 255, 255, 0, Entity_owner[ddata])
			endif
		elseif id == MoveSpeed_DEC_SPEED_ID then
			if speed > 50.5 then
				call unit_setMoveSpeed(SetupObject_setup[ddata], speed - 25.)
				call unit_setMoveSpeed(UnitEntity_actor[ddata], speed - 25.)
				call createFText_2346(dispatch_UnitEntity_Entity_UnitEntity_getPos(data_1), dispatch_UnitEntity_Entity_UnitEntity_getPos_return_y, dispatch_UnitEntity_Entity_UnitEntity_getPos_return_z, 0., 0.05, real_toString(speed - 25.), 10., 2., 255, 255, 255, 0, Entity_owner[ddata])
			endif
		endif
	endif
endfunction

function onEvent_add_MoveSpeed takes integer this_1 returns nothing
	call onChangeSpeed()
endfunction

function alloc_ForGroupCallback_forUnitsSelected_add_Pointer takes nothing returns integer
	local integer this_1
	if ForGroupCallback_firstFree == 0 then
		if ForGroupCallback_maxIndex < JASS_MAX_ARRAY_SIZE then
			set ForGroupCallback_maxIndex = ForGroupCallback_maxIndex + 1
			set this_1 = ForGroupCallback_maxIndex
			set ForGroupCallback_typeId[this_1] = 884
		else
			call error("Out of memory: Could not create ForGroupCallback_forUnitsSelected_add_Pointer.")
			set this_1 = 0
		endif
	else
		set ForGroupCallback_firstFree = ForGroupCallback_firstFree - 1
		set this_1 = ForGroupCallback_nextFree[ForGroupCallback_firstFree]
		set ForGroupCallback_typeId[this_1] = 884
	endif
	return this_1
endfunction

function forUnitsSelected takes player p, integer c returns nothing
	call pushCallback(c)
	call GroupEnumUnitsSelected(ClosureForGroups_DUMMY_GROUP, p, ClosureForGroups_filter)
	call popCallback()
endfunction

function onEvent_add_Pointer takes integer this_1 returns nothing
	local string text = GetEventPlayerChatString()
	local integer tokens_1 = string_split(text, " ")
	local string cmd = stringFromIndex(dispatch_LinkedList_LinkedList_LinkedList_dequeue(tokens_1))
	local real angle_radians_2
	local integer clVar
	local player temp
	local real tuple_temp
	local real tuple_temp_1
	if cmd == "-setangle" or cmd == "-sa" then
		set tuple_temp = real_fromDeg(string_toReal(stringFromIndex(dispatch_LinkedList_LinkedList_LinkedList_dequeue(tokens_1))))
		set angle_radians_2 = tuple_temp
		set temp = GetTriggerPlayer()
		set clVar = alloc_ForGroupCallback_forUnitsSelected_add_Pointer()
		set tuple_temp_1 = angle_radians_2
		set angle_radians[clVar] = tuple_temp_1
		call forUnitsSelected(temp, clVar)
	endif
endfunction

function Pointer_onCast takes integer this_1 returns nothing
	local integer id = GetSpellAbilityId()
	local integer temp = id
	local unit receiver
	local unit receiver_1
	local unit receiver_2
	local unit receiver_3
	local real tuple_temp
	if temp == Pointer_INC_ID then
		if Pointer_turnspeed[this_1] < 6. then
			set Pointer_turnspeed[this_1] = Pointer_turnspeed[this_1] + 0.5
			call createFText_2346(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1], 0., 0.05, "Turnspeed: " + R2SW(Pointer_turnspeed[this_1], 1, 2), 10., 2., Colors_COLOR_WHITE_red, Colors_COLOR_WHITE_green, Colors_COLOR_WHITE_blue, Colors_COLOR_WHITE_alpha, Entity_owner[this_1])
		else
			call createFText_2346(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1], 0., 0.05, "Maximum Speed", 10., 2., Colors_COLOR_WHITE_red, Colors_COLOR_WHITE_green, Colors_COLOR_WHITE_blue, Colors_COLOR_WHITE_alpha, Entity_owner[this_1])
		endif
	elseif temp == Pointer_DEC_ID then
		if Pointer_turnspeed[this_1] > ( - 6.) then
			set Pointer_turnspeed[this_1] = Pointer_turnspeed[this_1] - 0.5
			call createFText_2346(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1], 0., 0.05, "Turnspeed: " + R2SW(Pointer_turnspeed[this_1], 1, 2), 10., 2., Colors_COLOR_WHITE_red, Colors_COLOR_WHITE_green, Colors_COLOR_WHITE_blue, Colors_COLOR_WHITE_alpha, Entity_owner[this_1])
		else
			call createFText_2346(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1], 0., 0.05, "Minimum Speed", 10., 2., Colors_COLOR_WHITE_red, Colors_COLOR_WHITE_green, Colors_COLOR_WHITE_blue, Colors_COLOR_WHITE_alpha, Entity_owner[this_1])
		endif
	elseif temp == Pointer_START_ID then
		set Pointer_turning[this_1] = true
		set tuple_temp = unit_getFacingAngle(UnitEntity_actor[this_1])
		set Pointer_angl_radians[this_1] = tuple_temp
		call dispatch_Entity_Entity_Entity_DupletListModule_activate(this_1)
		set receiver = SetupObject_setup[this_1]
		call unit_removeAbility(receiver, Pointer_START_ID)
		set receiver_1 = receiver
		call unit_addAbility(receiver_1, Pointer_STOP_ID)
	elseif temp == Pointer_STOP_ID then
		set Pointer_turning[this_1] = false
		call dispatch_Entity_Entity_Entity_DupletListModule_deactivate(this_1)
		set receiver_2 = SetupObject_setup[this_1]
		call unit_removeAbility(receiver_2, Pointer_STOP_ID)
		set receiver_3 = receiver_2
		call unit_addAbility(receiver_3, Pointer_START_ID)
	endif
endfunction

function dispatch_Pointer_Pointer_Pointer_onCast takes integer this_1 returns nothing
	if Serializable_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling Pointer.onCast")
		else
			call error("Called Pointer.onCast on invalid object.")
		endif
	endif
	call Pointer_onCast(this_1)
endfunction

function onEvent_add_Pointer_Pointer takes integer this_1 returns nothing
	call dispatch_Pointer_Pointer_Pointer_onCast(this_2984[this_1])
endfunction

function ConfigValue_setVal takes integer this_1, real wval returns nothing
	set ConfigValue_value[this_1] = wval
endfunction

function dispatch_ConfigValue_ConfigValue_ConfigValue_setVal takes integer this_1, real wval returns nothing
	if ConfigValue_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling ConfigValue.setVal")
		else
			call error("Called ConfigValue.setVal on invalid object.")
		endif
	endif
	call ConfigValue_setVal(this_1, wval)
endfunction

function alloc_Link takes nothing returns integer
	local integer this_1
	if Link_firstFree == 0 then
		if Link_maxIndex < JASS_MAX_ARRAY_SIZE then
			set Link_maxIndex = Link_maxIndex + 1
			set this_1 = Link_maxIndex
			set Link_typeId[this_1] = 997
		else
			call error("Out of memory: Could not create Link.")
			set this_1 = 0
		endif
	else
		set Link_firstFree = Link_firstFree - 1
		set this_1 = Link_nextFree[Link_firstFree]
		set Link_typeId[this_1] = 997
	endif
	return this_1
endfunction

function Link_init takes integer this_1 returns nothing
	set Link_next[this_1] = 0
	set Link_prev[this_1] = 0
endfunction

function construct_Link takes integer this_1, integer parent, integer target, lightning sfx, integer ltype returns nothing
	call Link_init(this_1)
	set Link_parent[this_1] = parent
	set Link_target[this_1] = target
	set Link_sfx[this_1] = sfx
	set Link_ltype[this_1] = ltype
	if Powernode_firstLink[parent] != 0 then
		set Link_next[this_1] = Powernode_firstLink[parent]
		set Link_prev[Powernode_firstLink[parent]] = this_1
	endif
	set Powernode_firstLink[parent] = this_1
endfunction

function new_Link takes integer parent, integer target, lightning sfx, integer ltype returns integer
	local integer this_1 = alloc_Link()
	call construct_Link(this_1, parent, target, sfx, ltype)
	return this_1
endfunction

function Powernode_link takes integer this_1, integer p, integer ltype returns nothing
	local integer temp = ltype
	if temp == 0 then
		call new_Link(this_1, p, AddLightning(Powernode_EFFECT_STRING, false, Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_x[p], Entity_pos_y[p]), ltype)
	elseif temp == 1 then
		call new_Link(this_1, p, AddLightning(Powernode_EFFECT_BOUNCE_STRING, false, Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_x[p], Entity_pos_y[p]), ltype)
	elseif temp == 4 then
		call new_Link(this_1, p, AddLightning(Powernode_EFFECT_DIODE_STRING, false, Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_x[p], Entity_pos_y[p]), ltype)
	elseif temp == 3 then
		call new_Link(this_1, p, AddLightning(Powernode_EFFECT_TETHER_BOTH_STRING, false, Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_x[p], Entity_pos_y[p]), ltype)
	elseif temp == 2 then
		call new_Link(this_1, p, AddLightning(Powernode_EFFECT_TETHER_AIR_STRING, false, Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_x[p], Entity_pos_y[p]), ltype)
	else
		call new_Link(this_1, p, AddLightning(Powernode_EFFECT_ORB_STRING, false, Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_x[p], Entity_pos_y[p]), ltype)
	endif
endfunction

function dispatch_Powernode_Powernode_Powernode_link takes integer this_1, integer p, integer ltype returns nothing
	if Serializable_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling Powernode.link")
		else
			call error("Called Powernode.link on invalid object.")
		endif
	endif
	call Powernode_link(this_1, p, ltype)
endfunction

function SetupObject_setEnabled takes integer this_1, boolean flag returns nothing
	local unit receiver
	local unit receiver_1
	local unit receiver_2
	local unit receiver_3
	if flag and ( not SetupObject_enabled[this_1]) then
		set SetupObject_enabled[this_1] = true
		set receiver = SetupObject_setup[this_1]
		call unit_removeAbility(receiver, BuilderConstants_TURN_ON_ID)
		set receiver_1 = receiver
		call unit_addAbility(receiver_1, BuilderConstants_TURN_OFF_ID)
	elseif SetupObject_enabled[this_1] then
		set SetupObject_enabled[this_1] = false
		set receiver_2 = SetupObject_setup[this_1]
		call unit_removeAbility(receiver_2, BuilderConstants_TURN_OFF_ID)
		set receiver_3 = receiver_2
		call unit_addAbility(receiver_3, BuilderConstants_TURN_ON_ID)
	endif
endfunction

function boolean_toInt takes boolean this_1 returns integer
	local integer cond_result
	if this_1 then
		set cond_result = 1
	else
		set cond_result = 0
	endif
	return cond_result
endfunction

function int_toReal takes integer this_1 returns real
	return this_1 * 1.
endfunction

function Powernode_setEnabled takes integer this_1, boolean b returns nothing
	local real v
	local integer l
	call SetupObject_setEnabled(this_1, b)
	set v = int_toReal(boolean_toInt(b))
	set l = Powernode_firstLink[this_1]
	loop
		exitwhen  not (l != 0)
		call SetLightningColor(Link_sfx[l], v, v, v, v)
		set l = Link_next[l]
	endloop
endfunction

function dispatch_Powernode_Powernode_Powernode_setEnabled takes integer this_1, boolean b returns nothing
	if Serializable_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling Powernode.setEnabled")
		else
			call error("Called Powernode.setEnabled on invalid object.")
		endif
	endif
	call Powernode_setEnabled(this_1, b)
endfunction

function Powernode_onCast takes integer this_1 returns nothing
	local integer id = GetSpellAbilityId()
	local unit target = GetSpellTargetUnit()
	local integer node = unit_getEntity(GetTriggerUnit())
	local integer data_1
	local integer pdata
	local boolean isNew
	local integer l
	local integer link
	local integer link_1
	if id == Powernode_LINK_KILL_ID or id == Powernode_LINK_B_GROUND_ID or id == Powernode_LINK_DIODE_GROUND_ID or id == Powernode_LINK_B_AIR_ID or id == Powernode_LINK_ORB_ID or id == Powernode_LINK_B_BOTH_ID then
		set data_1 = unit_getEntity(target)
		if Serializable_typeId[data_1] == 1189 then
			set pdata = data_1
			set isNew = true
			set l = Powernode_firstLink[node]
			loop
				exitwhen  not (l != 0)
				if Link_target[l] == pdata then
					call dispatch_Link_destroyLink(l)
					set isNew = false
					exitwhen true
				endif
				set l = Link_next[l]
			endloop
			if isNew then
				if id == Powernode_LINK_KILL_ID then
					call dispatch_Powernode_Powernode_Powernode_link(node, data_1, 0)
				elseif id == Powernode_LINK_B_GROUND_ID then
					call dispatch_Powernode_Powernode_Powernode_link(node, data_1, 1)
				elseif id == Powernode_LINK_B_BOTH_ID then
					call dispatch_Powernode_Powernode_Powernode_link(node, data_1, 3)
				elseif id == Powernode_LINK_DIODE_GROUND_ID then
					call dispatch_Powernode_Powernode_Powernode_link(node, data_1, 4)
				elseif id == Powernode_LINK_ORB_ID then
					call dispatch_Powernode_Powernode_Powernode_link(node, data_1, 5)
				elseif id == Powernode_LINK_B_AIR_ID then
					call dispatch_Powernode_Powernode_Powernode_link(node, data_1, 2)
				endif
			endif
		endif
	elseif id == Powernode_INCREASE_BOUNCE_ID then
		call dispatch_ConfigValue_ConfigValue_ConfigValue_increment(Powernode_bounciness[node], node, 8.)
		set link = Powernode_firstLink[node]
		loop
			exitwhen  not (link != 0)
			if Link_target[link] != this_1 then
				call dispatch_ConfigValue_ConfigValue_ConfigValue_setVal(Powernode_bounciness[Link_target[link]], dispatch_ConfigValue_ConfigValue_ConfigValue_get(Powernode_bounciness[node]))
			endif
			set link = Link_next[link]
		endloop
	elseif id == Powernode_DECREASE_BOUNCE_ID then
		call dispatch_ConfigValue_ConfigValue_ConfigValue_decrement(Powernode_bounciness[node], node, 0.)
		set link_1 = Powernode_firstLink[node]
		loop
			exitwhen  not (link_1 != 0)
			if Link_target[link_1] != this_1 then
				call dispatch_ConfigValue_ConfigValue_ConfigValue_setVal(Powernode_bounciness[Link_target[link_1]], dispatch_ConfigValue_ConfigValue_ConfigValue_get(Powernode_bounciness[node]))
			endif
			set link_1 = Link_next[link_1]
		endloop
	elseif id == BuilderConstants_TURN_ON_ID then
		call dispatch_Powernode_Powernode_Powernode_setEnabled(this_1, true)
		call unit_abortOrder(SetupObject_setup[this_1])
	elseif id == BuilderConstants_TURN_OFF_ID then
		call dispatch_Powernode_Powernode_Powernode_setEnabled(this_1, false)
		call unit_abortOrder(SetupObject_setup[this_1])
	endif
endfunction

function dispatch_Powernode_Powernode_Powernode_onCast takes integer this_1 returns nothing
	if Serializable_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling Powernode.onCast")
		else
			call error("Called Powernode.onCast on invalid object.")
		endif
	endif
	call Powernode_onCast(this_1)
endfunction

function onEvent_add_Powernode_Powernode takes integer this_1 returns nothing
	call dispatch_Powernode_Powernode_Powernode_onCast(this_2994[this_1])
endfunction

function flashEffect_3284 takes string path, real pos_x_1, real pos_y_1, real scale, real yaw_radians returns nothing
	local effect receiver = addEffect(path, pos_x_1, pos_y_1)
	local effect receiver_1
	local effect receiver_2
	call effect_setScale(receiver, scale)
	set receiver_1 = receiver
	call effect_setYaw(receiver_1, yaw_radians)
	set receiver_2 = receiver_1
	call effect_destr(receiver_2)
endfunction

function flashEffect_3282 takes string path, real pos_x_1, real pos_y_1 returns nothing
	call flashEffect_3284(path, pos_x_1, pos_y_1, 1.0, real_fromDeg(GetRandomReal(0., 359.)))
endfunction

function onRemoveObject takes nothing returns nothing
	local integer id = GetSpellAbilityId()
	local unit u_1
	local integer data_1
	local unit receiver
	if id == BuilderConstants_REMOVE_OBJECT_ID then
		set u_1 = GetSpellAbilityUnit()
		set data_1 = unit_getEntity(u_1)
		if data_1 != 0 and ( not Entity_done[data_1]) then
			call flashEffect_3282(Abilities_aIamTarget, unit_getPos(u_1), unit_getPos_return_y)
			call cyc_RevivePoint_terminate(18, data_1)
			set receiver = u_1
			call unit_removeAbility(receiver, BuilderConstants_REMOVE_OBJECT_ID)
		endif
	endif
endfunction

function onEvent_add_Remove takes integer this_1 returns nothing
	call onRemoveObject()
endfunction

function EscaperDefinition_LinkedListModule_getPrev takes integer this_1 returns integer
	if EscaperDefinition_LinkedListModule_prev[this_1] == 0 then
		return EscaperDefinition_LinkedListModule_last
	endif
	return EscaperDefinition_LinkedListModule_prev[this_1]
endfunction

function dispatch_EscaperDefinition_PickSystem_EscaperDefinition_LinkedListModule_getPrev takes integer this_1 returns integer
	local integer PickSystem_EscaperDefinition_LinkedListModule_getPrev_result
	if EscaperDefinition_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling EscaperDefinition.getPrev")
		else
			call error("Called EscaperDefinition.getPrev on invalid object.")
		endif
	endif
	set PickSystem_EscaperDefinition_LinkedListModule_getPrev_result = EscaperDefinition_LinkedListModule_getPrev(this_1)
	return PickSystem_EscaperDefinition_LinkedListModule_getPrev_result
endfunction

function create_setCallback_PickSystem takes integer this_1, integer pd_1 returns nothing
	set PlayerData_escaper[pd_1] = new_HolyEscaper(vec2_withZ(Escaper_currentRevivepoint_x, Escaper_currentRevivepoint_y, 100.), vec2_withZ_return_y, vec2_withZ_return_z, PlayerData_p[pd_1])
endfunction

function create_setCallback_PickSystem_2358 takes integer this_1, integer pd_1 returns nothing
	set PlayerData_escaper[pd_1] = new_StrongEscaper(vec2_withZ(Escaper_currentRevivepoint_x, Escaper_currentRevivepoint_y, 100.), vec2_withZ_return_y, vec2_withZ_return_z, PlayerData_p[pd_1])
endfunction

function create_setCallback_PickSystem_2359 takes integer this_1, integer pd_1 returns nothing
	set PlayerData_escaper[pd_1] = new_FastEscaper(vec2_withZ(Escaper_currentRevivepoint_x, Escaper_currentRevivepoint_y, 100.), vec2_withZ_return_y, vec2_withZ_return_z, PlayerData_p[pd_1])
endfunction

function create_setCallback_PickSystem_2360 takes integer this_1, integer pd_1 returns nothing
	set PlayerData_escaper[pd_1] = new_IceEscaper(vec2_withZ(Escaper_currentRevivepoint_x, Escaper_currentRevivepoint_y, 100.), vec2_withZ_return_y, vec2_withZ_return_z, PlayerData_p[pd_1])
endfunction

function alloc_BlindEscaper takes nothing returns integer
	local integer this_1
	if Serializable_firstFree == 0 then
		if Serializable_maxIndex < JASS_MAX_ARRAY_SIZE then
			set Serializable_maxIndex = Serializable_maxIndex + 1
			set this_1 = Serializable_maxIndex
			set Serializable_typeId[this_1] = 1164
		else
			call error("Out of memory: Could not create BlindEscaper.")
			set this_1 = 0
		endif
	else
		set Serializable_firstFree = Serializable_firstFree - 1
		set this_1 = Serializable_nextFree[Serializable_firstFree]
		set Serializable_typeId[this_1] = 1164
	endif
	return this_1
endfunction

function BlindEscaper_init takes integer this_1 returns nothing
endfunction

function construct_BlindEscaper takes integer this_1, real pos_x_1, real pos_y_1, real pos_z, player owner returns nothing
	call construct_Escaper(this_1, pos_x_1, pos_y_1, pos_z, owner, BuilderConstants_ESC_BLIND_ID)
	call BlindEscaper_init(this_1)
endfunction

function new_BlindEscaper takes real pos_x_1, real pos_y_1, real pos_z, player owner returns integer
	local integer this_1 = alloc_BlindEscaper()
	call construct_BlindEscaper(this_1, pos_x_1, pos_y_1, pos_z, owner)
	return this_1
endfunction

function create_setCallback_PickSystem_2361 takes integer this_1, integer pd_1 returns nothing
	set PlayerData_escaper[pd_1] = new_BlindEscaper(vec2_withZ(Escaper_currentRevivepoint_x, Escaper_currentRevivepoint_y, 100.), vec2_withZ_return_y, vec2_withZ_return_z, PlayerData_p[pd_1])
endfunction

function dispatch_EscaperClsr_PickSystem_EscaperClsr_create takes integer this_1, integer pd_1 returns nothing
	if EscaperClsr_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling EscaperClsr.create")
		else
			call error("Called EscaperClsr.create on invalid object.")
		endif
	endif
	if EscaperClsr_typeId[this_1] <= 748 then
		if EscaperClsr_typeId[this_1] <= 747 then
			if EscaperClsr_typeId[this_1] <= 746 then
				call create_setCallback_PickSystem(this_1, pd_1)
			else
				call create_setCallback_PickSystem_2358(this_1, pd_1)
			endif
		else
			call create_setCallback_PickSystem_2359(this_1, pd_1)
		endif
	elseif EscaperClsr_typeId[this_1] <= 749 then
		call create_setCallback_PickSystem_2360(this_1, pd_1)
	else
		call create_setCallback_PickSystem_2361(this_1, pd_1)
	endif
endfunction

function player_selectSingle takes player this_1, unit u_1 returns nothing
	if Player_localPlayer == this_1 then
		call ClearSelection()
		call SelectUnit(u_1, true)
	endif
endfunction

function EscaperDefinition_createFor takes integer this_1, integer pd_1 returns nothing
	local unit receiver
	local unit receiver_1
	call dispatch_EscaperClsr_PickSystem_EscaperClsr_create(EscaperDefinition_cb[this_1], pd_1)
	call ResetToGameCameraForPlayer(PlayerData_p[pd_1], 0.5)
	if isBuilderPlayer(PlayerData_p[pd_1]) then
		set receiver = UnitEntity_actor[PlayerData_escaper[pd_1]]
		call unit_addAbility(receiver, PickSystem_BLINK_ID)
		set receiver_1 = receiver
		call unit_addAbility(receiver_1, RevivePointModifier_CREATE_REV_MOD_ID)
		set Escaper_selectatrevive[PlayerData_escaper[pd_1]] = false
		set Escaper_camOnRevive[PlayerData_escaper[pd_1]] = false
		call PanCameraToTimedForPlayer(PlayerData_p[pd_1], unit_getX(UnitEntity_actor[PlayerData_builder[pd_1]]), unit_getY(UnitEntity_actor[PlayerData_builder[pd_1]]), 0.)
		call player_selectSingle(PlayerData_p[pd_1], UnitEntity_actor[PlayerData_builder[pd_1]])
		call printTimedToPlayer("\tYou are a |cff528CDEBuilder|r!", 20., PlayerData_p[pd_1])
	else
		call PanCameraToTimedForPlayer(PlayerData_p[pd_1], PickSystem_START_x, PickSystem_START_y, 0.)
		call player_selectSingle(PlayerData_p[pd_1], UnitEntity_actor[PlayerData_escaper[pd_1]])
		call printTimedToPlayer("\tYou are an |cff528CDEEscaper|r!", 20., PlayerData_p[pd_1])
	endif
	set PlayerData_icon[pd_1] = EscaperDefinition_mbicon[this_1]
endfunction

function dispatch_EscaperDefinition_PickSystem_EscaperDefinition_createFor takes integer this_1, integer pd_1 returns nothing
	if EscaperDefinition_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling EscaperDefinition.createFor")
		else
			call error("Called EscaperDefinition.createFor on invalid object.")
		endif
	endif
	call EscaperDefinition_createFor(this_1, pd_1)
endfunction

function EscaperDefinition_hide takes integer this_1, integer pd_1 returns nothing
	local texttag receiver
	if Player_localPlayer == PlayerData_p[pd_1] then
		set receiver = FText_tt[EscaperDefinition_nameTt[this_1]]
		call texttag_setVisibility(receiver, false)
		call unit_setVertexColor_4206(EscaperDefinition_escaper[this_1], Colors_COLOR_BLACK_red, Colors_COLOR_BLACK_green, Colors_COLOR_BLACK_blue, Colors_COLOR_BLACK_alpha)
	endif
endfunction

function dispatch_EscaperDefinition_PickSystem_EscaperDefinition_hide takes integer this_1, integer pd_1 returns nothing
	if EscaperDefinition_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling EscaperDefinition.hide")
		else
			call error("Called EscaperDefinition.hide on invalid object.")
		endif
	endif
	call EscaperDefinition_hide(this_1, pd_1)
endfunction

function dispatch_Selector_destroySelector takes integer this_1 returns nothing
	if Serializable_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling Selector.Selector")
		else
			call error("Called Selector.Selector on invalid object.")
		endif
	endif
	call destroySelector(this_1)
endfunction

function Selector_onCast takes integer this_1 returns nothing
	local integer id = GetSpellAbilityId()
	local integer pd_1 = PlayerData_pData[player_getId(unit_getOwner(UnitEntity_actor[this_1]))]
	local integer temp = id
	if temp == PickSystem_PREV_ID then
		call dispatch_EscaperDefinition_PickSystem_EscaperDefinition_hide(PickSystem_currentView[PlayerData_id[pd_1]], pd_1)
		set PickSystem_currentView[PlayerData_id[pd_1]] = dispatch_EscaperDefinition_PickSystem_EscaperDefinition_LinkedListModule_getPrev(PickSystem_currentView[PlayerData_id[pd_1]])
		call dispatch_EscaperDefinition_PickSystem_EscaperDefinition_showTo(PickSystem_currentView[PlayerData_id[pd_1]], pd_1)
	elseif temp == PickSystem_NEXT_ID then
		call dispatch_EscaperDefinition_PickSystem_EscaperDefinition_hide(PickSystem_currentView[PlayerData_id[pd_1]], pd_1)
		set PickSystem_currentView[PlayerData_id[pd_1]] = dispatch_EscaperDefinition_PickSystem_EscaperDefinition_LinkedListModule_getNext(PickSystem_currentView[PlayerData_id[pd_1]])
		call dispatch_EscaperDefinition_PickSystem_EscaperDefinition_showTo(PickSystem_currentView[PlayerData_id[pd_1]], pd_1)
	elseif temp == PickSystem_PICK_ID then
		call dispatch_EscaperDefinition_PickSystem_EscaperDefinition_hide(PickSystem_currentView[PlayerData_id[pd_1]], pd_1)
		call printTimedToPlayer("|cffE68C19Welcome to |cff086BC5Escape Builder Reloaded|cffE68C19!\n\t|r", 20., PlayerData_p[pd_1])
		call dispatch_EscaperDefinition_PickSystem_EscaperDefinition_createFor(PickSystem_currentView[PlayerData_id[pd_1]], pd_1)
		call dispatch_Selector_destroySelector(this_1)
	endif
endfunction

function dispatch_Selector_PickSystem_Selector_onCast takes integer this_1 returns nothing
	if Serializable_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling Selector.onCast")
		else
			call error("Called Selector.onCast on invalid object.")
		endif
	endif
	call Selector_onCast(this_1)
endfunction

function onEvent_add_Selector_PickSystem takes integer this_1 returns nothing
	call dispatch_Selector_PickSystem_Selector_onCast(this_2940[this_1])
endfunction

function alloc_ForGroupCallback_forUnitsInRect_SetupBox_SetupBox takes nothing returns integer
	local integer this_1
	if ForGroupCallback_firstFree == 0 then
		if ForGroupCallback_maxIndex < JASS_MAX_ARRAY_SIZE then
			set ForGroupCallback_maxIndex = ForGroupCallback_maxIndex + 1
			set this_1 = ForGroupCallback_maxIndex
			set ForGroupCallback_typeId[this_1] = 876
		else
			call error("Out of memory: Could not create ForGroupCallback_forUnitsInRect_SetupBox_SetupBox.")
			set this_1 = 0
		endif
	else
		set ForGroupCallback_firstFree = ForGroupCallback_firstFree - 1
		set this_1 = ForGroupCallback_nextFree[ForGroupCallback_firstFree]
		set ForGroupCallback_typeId[this_1] = 876
	endif
	return this_1
endfunction

function Builder_setBossMenu takes integer this_1 returns nothing
	call unit_addAbility(UnitEntity_actor[this_1], BuilderConstants_MENU_BOSS)
endfunction

function dispatch_Builder_Builder_Builder_setBossMenu takes integer this_1 returns nothing
	if Serializable_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling Builder.setBossMenu")
		else
			call error("Called Builder.setBossMenu on invalid object.")
		endif
	endif
	call Builder_setBossMenu(this_1)
endfunction

function RegionData_allow takes integer this_1, player p returns nothing
	call dispatch_HashMap_HashMap_HashMap_put(RegionData_permissions[this_1], playerToIndex(p), 1)
endfunction

function dispatch_RegionData_RegionData_RegionData_allow takes integer this_1, player p returns nothing
	if RegionData_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling RegionData.allow")
		else
			call error("Called RegionData.allow on invalid object.")
		endif
	endif
	call RegionData_allow(this_1, p)
endfunction

function RegionData_disallow takes integer this_1, player p returns nothing
	call dispatch_HashMap_HashMap_HashMap_put(RegionData_permissions[this_1], playerToIndex(p), 0)
endfunction

function dispatch_RegionData_RegionData_RegionData_disallow takes integer this_1, player p returns nothing
	if RegionData_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling RegionData.disallow")
		else
			call error("Called RegionData.disallow on invalid object.")
		endif
	endif
	call RegionData_disallow(this_1, p)
endfunction

function alloc_ForForceCallback_execute_RegionData takes nothing returns integer
	local integer this_1
	if ForForceCallback_firstFree == 0 then
		if ForForceCallback_maxIndex < JASS_MAX_ARRAY_SIZE then
			set ForForceCallback_maxIndex = ForForceCallback_maxIndex + 1
			set this_1 = ForForceCallback_maxIndex
			set ForForceCallback_typeId[this_1] = 847
		else
			call error("Out of memory: Could not create ForForceCallback_execute_RegionData.")
			set this_1 = 0
		endif
	else
		set ForForceCallback_firstFree = ForForceCallback_firstFree - 1
		set this_1 = ForForceCallback_nextFree[ForForceCallback_firstFree]
		set ForForceCallback_typeId[this_1] = 847
	endif
	return this_1
endfunction

function rect_changeTerrain takes rect this_1, integer ttype_1 returns nothing
	local real xmax_1 = rect_getMaxX(this_1) - 32.
	local real xmin_1 = rect_getMinX(this_1) + 32.
	local real ymax = rect_getMaxY(this_1) - 32.
	local real ymin = rect_getMinY(this_1) + 32.
	local integer clVar
	set RegionData_x = xmin_1
	set RegionData_y = ymin
	loop
		exitwhen  not (RegionData_y <= ymax)
		set clVar = alloc_ForForceCallback_execute_RegionData()
		set xmax[clVar] = xmax_1
		set ttype[clVar] = ttype_1
		set xmin[clVar] = xmin_1
		call execute(clVar)
	endloop
endfunction

function RegionData_resetTiles takes integer this_1 returns nothing
	local integer temp_tuple_unwalkableId
	local rect temp
	local integer tuple_temp
	if RegionData_rtype[this_1] != 0 then
		set temp = RegionData_theRect[this_1]
		call RegionType_getTypeSet(RegionData_rtype[this_1])
		set tuple_temp = RegionType_getTypeSet_return_unwalkableId
		set temp_tuple_unwalkableId = tuple_temp
		call rect_changeTerrain(temp, temp_tuple_unwalkableId)
	endif
endfunction

function dispatch_RegionData_RegionData_RegionData_resetTiles takes integer this_1 returns nothing
	if RegionData_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling RegionData.resetTiles")
		else
			call error("Called RegionData.resetTiles on invalid object.")
		endif
	endif
	call RegionData_resetTiles(this_1)
endfunction

function RegionData_setBossRegion takes integer this_1 returns nothing
	set RegionData_bossRegion[this_1] = true
endfunction

function dispatch_RegionData_RegionData_RegionData_setBossRegion takes integer this_1 returns nothing
	if RegionData_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling RegionData.setBossRegion")
		else
			call error("Called RegionData.setBossRegion on invalid object.")
		endif
	endif
	call RegionData_setBossRegion(this_1)
endfunction

function SetupBox_onCast takes integer this_1 returns nothing
	local integer id = GetSpellAbilityId()
	local player owner = unit_getOwner(UnitEntity_actor[this_1])
	local integer temp = id
	local unit u_1
	local player p
	local integer clVar
	local integer rdata
	local integer escaper
	local integer from
	local integer escaper_1
	local integer from_1
	local integer rdata_1
	local integer escaper_2
	local integer from_2
	local integer escaper_3
	local integer from_3
	local integer rdata_2
	local integer escaper_4
	local integer from_4
	local integer builder
	local unit receiver
	local unit receiver_1
	local unit receiver_2
	local unit receiver_3
	local unit receiver_4
	local unit receiver_5
	local unit receiver_6
	local unit receiver_7
	local unit receiver_8
	local unit receiver_9
	local unit receiver_10
	local unit receiver_11
	local unit receiver_12
	local unit receiver_13
	local unit receiver_14
	local unit receiver_15
	local unit receiver_16
	local unit receiver_17
	local unit receiver_18
	local unit receiver_19
	local unit receiver_20
	local unit receiver_21
	local unit receiver_22
	local unit receiver_23
	local unit receiver_24
	local unit receiver_25
	local unit receiver_26
	local unit receiver_27
	local unit receiver_28
	local unit receiver_29
	local unit receiver_30
	local unit receiver_31
	local unit receiver_32
	local unit receiver_33
	local integer escaper_5
	local integer from_5
	local integer escaper_6
	local integer from_6
	local unit receiver_34
	local unit receiver_35
	local unit receiver_36
	local unit receiver_37
	local unit receiver_38
	local unit receiver_39
	local unit receiver_40
	local unit receiver_41
	local rect temp_1
	if temp == SetupBox_ICEI_ID then
		if RegionData_slidespeed[SetupBox_rdata[this_1]] >= SetupBox_MAX_SLIDESPEED then
			call DisplayTextToPlayer(owner, 0., 0., "Slidespeed is on Maximum")
		else
			set RegionData_slidespeed[SetupBox_rdata[this_1]] = RegionData_slidespeed[SetupBox_rdata[this_1]] + .25
			call DisplayTextToPlayer(owner, 0., 0., "Slidespeed: " + real_toString(RegionData_slidespeed[SetupBox_rdata[this_1]]))
		endif
	elseif temp == SetupBox_ICED_ID then
		if RegionData_slidespeed[SetupBox_rdata[this_1]] <= ( - SetupBox_MAX_SLIDESPEED) then
			call DisplayTextToPlayer(owner, 0., 0., "Slidespeed is on Minimum")
		else
			set RegionData_slidespeed[SetupBox_rdata[this_1]] = RegionData_slidespeed[SetupBox_rdata[this_1]] - .25
			call DisplayTextToPlayer(owner, 0., 0., "Slidespeed: " + real_toString(RegionData_slidespeed[SetupBox_rdata[this_1]]))
		endif
	elseif temp == SetupBox_PI_ID then
		if RegionData_poisonDmg[SetupBox_rdata[this_1]] >= SetupBox_MAX_DOT_DMG then
			call DisplayTextToPlayer(owner, 0., 0., "Poisondamage is on Maximum")
		else
			set RegionData_poisonDmg[SetupBox_rdata[this_1]] = RegionData_poisonDmg[SetupBox_rdata[this_1]] + .25
			call DisplayTextToPlayer(owner, 0., 0., "Poisondamage: " + real_toString(RegionData_poisonDmg[SetupBox_rdata[this_1]]))
		endif
	elseif temp == SetupBox_PD_ID then
		if RegionData_poisonDmg[SetupBox_rdata[this_1]] <= .25 then
			call DisplayTextToPlayer(owner, 0., 0., "Poisondamage is on Minimum")
		else
			set RegionData_poisonDmg[SetupBox_rdata[this_1]] = RegionData_poisonDmg[SetupBox_rdata[this_1]] - .25
			call DisplayTextToPlayer(owner, 0., 0., "Poisondamage: " + real_toString(RegionData_poisonDmg[SetupBox_rdata[this_1]]))
		endif
	elseif temp == SetupBox_LI_ID then
		if RegionData_lavaDmg[SetupBox_rdata[this_1]] >= SetupBox_MAX_DOT_DMG then
			call DisplayTextToPlayer(owner, 0., 0., "Lavadmg is on Maximum")
		else
			set RegionData_lavaDmg[SetupBox_rdata[this_1]] = RegionData_lavaDmg[SetupBox_rdata[this_1]] + .25
			call DisplayTextToPlayer(owner, 0., 0., "Lavadmg: " + real_toString(RegionData_lavaDmg[SetupBox_rdata[this_1]]))
		endif
	elseif temp == SetupBox_LD_ID then
		if RegionData_lavaDmg[SetupBox_rdata[this_1]] <= .25 then
			call DisplayTextToPlayer(owner, 0., 0., "Lavadmg is on Minimum")
		else
			set RegionData_lavaDmg[SetupBox_rdata[this_1]] = RegionData_lavaDmg[SetupBox_rdata[this_1]] - .25
			call DisplayTextToPlayer(owner, 0., 0., "Lavadmg: " + real_toString(RegionData_lavaDmg[SetupBox_rdata[this_1]]))
		endif
	elseif temp == SetupBox_ALLOW_ID then
		set u_1 = GetSpellTargetUnit()
		set p = unit_getOwner(u_1)
		if isBuilderPlayer(p) and p != owner then
			call effect_destr(addEffect("Abilities\\Spells\\Human\\Invisibility\\InvisibilityTarget.mdl", unit_getPos(u_1), unit_getPos_return_y))
			if dispatch_RegionData_RegionData_RegionData_canBuild(SetupBox_rdata[this_1], p) and ( not (PlayerData_title[PlayerData_pData[player_getId(p)]] == 2)) then
				call dispatch_RegionData_RegionData_RegionData_disallow(SetupBox_rdata[this_1], p)
				call printTimedToPlayer("|cff9C0808Disallowed|r " + player_getNameColored_3918(p) + " |cffffcc00to build in your region.", 25., owner)
				call printTimedToPlayer(player_getNameColored_3918(owner) + " |cff9C0808disallowed|r|cffffcc00 you to build in his region.", 25., p)
				if GetLocalPlayer() == p then
					call PingMinimapEx((GetRectMinX(RegionData_theRect[SetupBox_rdata[this_1]]) + GetRectMaxX(RegionData_theRect[SetupBox_rdata[this_1]])) / 2., (GetRectMinY(RegionData_theRect[SetupBox_rdata[this_1]]) + GetRectMaxY(RegionData_theRect[SetupBox_rdata[this_1]])) / 2., 3., 156, 8, 8, false)
				endif
			else
				call dispatch_RegionData_RegionData_RegionData_allow(SetupBox_rdata[this_1], p)
				call printTimedToPlayer("|cff08B552Allowed|r " + player_getNameColored_3918(p) + " |cffffcc00to build in your region.", 25., owner)
				call printTimedToPlayer(player_getNameColored_3918(owner) + " |cff08B552allowed|r|cffffcc00 you to build in his region.", 25., p)
				if GetLocalPlayer() == p then
					call PingMinimapEx((GetRectMaxX(RegionData_theRect[SetupBox_rdata[this_1]]) + GetRectMinX(RegionData_theRect[SetupBox_rdata[this_1]])) / 2., (GetRectMaxY(RegionData_theRect[SetupBox_rdata[this_1]]) + GetRectMinY(RegionData_theRect[SetupBox_rdata[this_1]])) / 2., 3., 8, 181, 82, false)
				endif
			endif
		else
			call printTimedToPlayer("|cffC51019Why would you do this!", 15., owner)
		endif
	elseif temp == SetupBox_CLEAR_ID then
		set temp_1 = RegionData_theRect[SetupBox_rdata[this_1]]
		set clVar = alloc_ForGroupCallback_forUnitsInRect_SetupBox_SetupBox()
		set this_2927[clVar] = this_1
		call forUnitsInRect(temp_1, clVar)
		call dispatch_RegionData_RegionData_RegionData_resetTiles(SetupBox_rdata[this_1])
	elseif temp == SetupBox_JUMP_TOGGLE_ID then
		set rdata = getRegionData(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1])
		if RegionData_specialAbil[rdata] > 0 then
			set from = dispatch_RegionData_RegionData_RegionData_getEscapers(rdata)
			loop
				exitwhen  not LLIterator_hasNext(from)
				set escaper = LLIterator_next(from)
				call unit_removeAbility(UnitEntity_actor[escaper], RegionData_specialAbil[rdata])
			endloop
		endif
		set RegionData_specialAbil[rdata] = SetupBox_JUMP_SPELL_ID
		call printTimedToPlayer("|cffFF8C29Escapers can now jump in this region!", 25., owner)
		set from_1 = dispatch_RegionData_RegionData_RegionData_getEscapers(rdata)
		loop
			exitwhen  not LLIterator_hasNext(from_1)
			set escaper_1 = LLIterator_next(from_1)
			call unit_addAbility(UnitEntity_actor[escaper_1], RegionData_specialAbil[rdata])
		endloop
	elseif temp == SetupBox_ORB_TOGGLE_ID then
		set rdata_1 = getRegionData(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1])
		if RegionData_specialAbil[rdata_1] > 0 then
			set from_2 = dispatch_RegionData_RegionData_RegionData_getEscapers(rdata_1)
			loop
				exitwhen  not LLIterator_hasNext(from_2)
				set escaper_2 = LLIterator_next(from_2)
				call unit_removeAbility(UnitEntity_actor[escaper_2], RegionData_specialAbil[rdata_1])
			endloop
		endif
		set RegionData_specialAbil[rdata_1] = SetupBox_ORB_SPELL_ID
		call printTimedToPlayer("|cffFF8C29Escapers can now use the orb in this region!", 25., owner)
		set from_3 = dispatch_RegionData_RegionData_RegionData_getEscapers(rdata_1)
		loop
			exitwhen  not LLIterator_hasNext(from_3)
			set escaper_3 = LLIterator_next(from_3)
			call unit_addAbility(UnitEntity_actor[escaper_3], RegionData_specialAbil[rdata_1])
		endloop
	elseif temp == SetupBox_CANCEL_TOGGLE_ID then
		set rdata_2 = getRegionData(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1])
		if RegionData_specialAbil[rdata_2] > 0 then
			set from_4 = dispatch_RegionData_RegionData_RegionData_getEscapers(rdata_2)
			loop
				exitwhen  not LLIterator_hasNext(from_4)
				set escaper_4 = LLIterator_next(from_4)
				call unit_removeAbility(UnitEntity_actor[escaper_4], RegionData_specialAbil[rdata_2])
			endloop
		endif
		set RegionData_specialAbil[rdata_2] = 0
		call printTimedToPlayer("|cffFF8C29Removed all abilities!", 25., owner)
	elseif temp == SetupBox_BOSS_MODE_ID then
		if PlayerData_XP[PlayerData_pData[player_getId(owner)]] >= 0 then
			call dispatch_SoundDefinition_SoundUtils_SoundDefinition_play(SetupBox_BOSS_SOUND)
			call unit_removeAbility(UnitEntity_actor[this_1], SetupBox_BOSS_MODE_ID)
			call dispatch_RegionData_RegionData_RegionData_setBossRegion(SetupBox_rdata[this_1])
			call printTimedToPlayer("|cff63BD4AYou converted your area to a |cff086BBDB|r|cff0C5CB0o|r|cff104DA3s|r|cff143E96s|r|cff182F89r|r|cff1C207Ce|r|cff590E4Fg|r|cff750D41i|r|cff910C33o|r|cffAD0B25n|r", 15., owner)
			call effect_destr(addEffect("Abilities\\Spells\\Other\\Doom\\DoomDeath.mdl", unit_getPos(UnitEntity_actor[this_1]), unit_getPos_return_y))
			set builder = PlayerData_builder[PlayerData_pData[player_getId(owner)]]
			call SelectUnitForPlayerSingle(UnitEntity_actor[builder], owner)
			call dispatch_Builder_Builder_Builder_setBossMenu(builder)
		else
			call DisplayTextToPlayer(owner, 0., 0., "|cffFFD621[Info]|r - You need to have at least the |cffFFE6AD3:Novice|r Rank to be able to make a BossRegion.\nYou accumulate Rank-XP over time by playing.")
		endif
	elseif temp == SetupBox_SECOND_PAGE then
		set receiver = UnitEntity_actor[this_1]
		call unit_removeAbility(receiver, SetupBox_ALLOW_ID)
		set receiver_1 = receiver
		call unit_removeAbility(receiver_1, SetupBox_ABIL_WIZARD)
		set receiver_2 = receiver_1
		call unit_removeAbility(receiver_2, SetupBox_CLEAR_ID)
		set receiver_3 = receiver_2
		call unit_removeAbility(receiver_3, SetupBox_SECOND_PAGE)
		set receiver_4 = receiver_3
		call unit_removeAbility(receiver_4, SetupBox_INC_GRAVITY)
		set receiver_5 = receiver_4
		call unit_removeAbility(receiver_5, SetupBox_DEC_GRAVITY)
		set receiver_6 = receiver_5
		call unit_removeAbility(receiver_6, SetupBox_TURND_ID)
		set receiver_7 = receiver_6
		call unit_removeAbility(receiver_7, SetupBox_TURNI_ID)
		set receiver_8 = receiver_7
		call unit_removeAbility(receiver_8, SetupBox_CUT_ALLOW)
		set receiver_9 = receiver_8
		call unit_removeAbility(receiver_9, SetupBox_CUT_DISABLE)
		set receiver_10 = receiver_9
		call unit_removeAbility(receiver_10, SetupBox_EASY_DISABLE)
		set receiver_11 = receiver_10
		call unit_removeAbility(receiver_11, SetupBox_EASY_ENABLE)
		set receiver_12 = UnitEntity_actor[this_1]
		call unit_addAbility(receiver_12, SetupBox_ICEI_ID)
		set receiver_13 = receiver_12
		call unit_addAbility(receiver_13, SetupBox_ICED_ID)
		set receiver_14 = receiver_13
		call unit_addAbility(receiver_14, SetupBox_PI_ID)
		set receiver_15 = receiver_14
		call unit_addAbility(receiver_15, SetupBox_PD_ID)
		set receiver_16 = receiver_15
		call unit_addAbility(receiver_16, SetupBox_LI_ID)
		set receiver_17 = receiver_16
		call unit_addAbility(receiver_17, SetupBox_LD_ID)
		set receiver_18 = receiver_17
		call unit_addAbility(receiver_18, SetupBox_FIRST_PAGE)
	elseif temp == SetupBox_FIRST_PAGE then
		set receiver_19 = UnitEntity_actor[this_1]
		call unit_removeAbility(receiver_19, SetupBox_ICEI_ID)
		set receiver_20 = receiver_19
		call unit_removeAbility(receiver_20, SetupBox_ICED_ID)
		set receiver_21 = receiver_20
		call unit_removeAbility(receiver_21, SetupBox_PI_ID)
		set receiver_22 = receiver_21
		call unit_removeAbility(receiver_22, SetupBox_PD_ID)
		set receiver_23 = receiver_22
		call unit_removeAbility(receiver_23, SetupBox_LI_ID)
		set receiver_24 = receiver_23
		call unit_removeAbility(receiver_24, SetupBox_LD_ID)
		set receiver_25 = receiver_24
		call unit_removeAbility(receiver_25, SetupBox_FIRST_PAGE)
		set receiver_26 = UnitEntity_actor[this_1]
		call unit_addAbility(receiver_26, SetupBox_ALLOW_ID)
		set receiver_27 = receiver_26
		call unit_addAbility(receiver_27, SetupBox_ABIL_WIZARD)
		set receiver_28 = receiver_27
		call unit_addAbility(receiver_28, SetupBox_CLEAR_ID)
		set receiver_29 = receiver_28
		call unit_addAbility(receiver_29, SetupBox_SECOND_PAGE)
		set receiver_30 = receiver_29
		call unit_addAbility(receiver_30, SetupBox_INC_GRAVITY)
		set receiver_31 = receiver_30
		call unit_addAbility(receiver_31, SetupBox_DEC_GRAVITY)
		set receiver_32 = receiver_31
		call unit_addAbility(receiver_32, SetupBox_TURND_ID)
		set receiver_33 = receiver_32
		call unit_addAbility(receiver_33, SetupBox_TURNI_ID)
		if RegionData_allowCut[SetupBox_rdata[this_1]] then
			call unit_addAbility(UnitEntity_actor[this_1], SetupBox_CUT_DISABLE)
		else
			call unit_addAbility(UnitEntity_actor[this_1], SetupBox_CUT_ALLOW)
		endif
		if RegionData_easyMode[SetupBox_rdata[this_1]] then
			call unit_addAbility(UnitEntity_actor[this_1], SetupBox_EASY_DISABLE)
		else
			call unit_addAbility(UnitEntity_actor[this_1], SetupBox_EASY_ENABLE)
		endif
	elseif temp == SetupBox_INC_GRAVITY then
		if RegionData_gravity[SetupBox_rdata[this_1]] > -10. then
			set RegionData_gravity[SetupBox_rdata[this_1]] = RegionData_gravity[SetupBox_rdata[this_1]] - 0.1
			call printTimedToPlayer("Gravity: " + real_toString(RegionData_gravity[SetupBox_rdata[this_1]]), 10., owner)
		endif
	elseif temp == SetupBox_DEC_GRAVITY then
		if RegionData_gravity[SetupBox_rdata[this_1]] < ( - .2) then
			set RegionData_gravity[SetupBox_rdata[this_1]] = RegionData_gravity[SetupBox_rdata[this_1]] + 0.1
			call printTimedToPlayer("Gravity: " + real_toString(RegionData_gravity[SetupBox_rdata[this_1]]), 10., owner)
		endif
	elseif temp == SetupBox_TURND_ID then
		if RegionData_turnSpeed[SetupBox_rdata[this_1]] > 0. then
			set RegionData_turnSpeed[SetupBox_rdata[this_1]] = RegionData_turnSpeed[SetupBox_rdata[this_1]] - .25
			if RegionData_turnSpeed[SetupBox_rdata[this_1]] <= 0.01 then
				set RegionData_turnSpeed[SetupBox_rdata[this_1]] = 0.01
			endif
			call printTimedToPlayer("Turnspeed: " + real_toString(RegionData_turnSpeed[SetupBox_rdata[this_1]]), 10., owner)
		endif
		set from_5 = dispatch_RegionData_RegionData_RegionData_getEscapers(SetupBox_rdata[this_1])
		loop
			exitwhen  not LLIterator_hasNext(from_5)
			set escaper_5 = LLIterator_next(from_5)
			call unit_setTurnSpeed(UnitEntity_actor[escaper_5], RegionData_turnSpeed[SetupBox_rdata[this_1]])
		endloop
	elseif temp == SetupBox_TURNI_ID then
		if RegionData_turnSpeed[SetupBox_rdata[this_1]] < 5.0 then
			if RegionData_turnSpeed[SetupBox_rdata[this_1]] <= 0.01 then
				set RegionData_turnSpeed[SetupBox_rdata[this_1]] = 0.
			endif
			set RegionData_turnSpeed[SetupBox_rdata[this_1]] = RegionData_turnSpeed[SetupBox_rdata[this_1]] + .25
			call printTimedToPlayer("Turnspeed: " + real_toString(RegionData_turnSpeed[SetupBox_rdata[this_1]]), 10., owner)
		endif
		set from_6 = dispatch_RegionData_RegionData_RegionData_getEscapers(SetupBox_rdata[this_1])
		loop
			exitwhen  not LLIterator_hasNext(from_6)
			set escaper_6 = LLIterator_next(from_6)
			call unit_setTurnSpeed(UnitEntity_actor[escaper_6], RegionData_turnSpeed[SetupBox_rdata[this_1]])
		endloop
	elseif temp == SetupBox_CUT_ALLOW then
		set RegionData_allowCut[SetupBox_rdata[this_1]] = true
		set receiver_34 = UnitEntity_actor[this_1]
		call unit_removeAbility(receiver_34, SetupBox_CUT_ALLOW)
		set receiver_35 = receiver_34
		call unit_addAbility(receiver_35, SetupBox_CUT_DISABLE)
		call printTimedToPlayer("|cffFF9C29Escapers can now cut diagonal tiles", 15., owner)
	elseif temp == SetupBox_CUT_DISABLE then
		set RegionData_allowCut[SetupBox_rdata[this_1]] = false
		set receiver_36 = UnitEntity_actor[this_1]
		call unit_removeAbility(receiver_36, SetupBox_CUT_DISABLE)
		set receiver_37 = receiver_36
		call unit_addAbility(receiver_37, SetupBox_CUT_ALLOW)
		call printTimedToPlayer("|cffFF9C29Escapers can no longer cut diagonal tiles.", 15., owner)
	elseif temp == SetupBox_EASY_ENABLE then
		set RegionData_easyMode[SetupBox_rdata[this_1]] = true
		set receiver_38 = UnitEntity_actor[this_1]
		call unit_removeAbility(receiver_38, SetupBox_EASY_ENABLE)
		set receiver_39 = receiver_38
		call unit_addAbility(receiver_39, SetupBox_EASY_DISABLE)
		call printTimedToPlayer("|cffFF9C29Activated easy mode", 15., owner)
	elseif temp == SetupBox_EASY_DISABLE then
		set RegionData_easyMode[SetupBox_rdata[this_1]] = false
		set receiver_40 = UnitEntity_actor[this_1]
		call unit_removeAbility(receiver_40, SetupBox_EASY_DISABLE)
		set receiver_41 = receiver_40
		call unit_addAbility(receiver_41, SetupBox_EASY_ENABLE)
		call printTimedToPlayer("|cffFF9C29Deactivated easy mode", 15., owner)
	endif
endfunction

function dispatch_SetupBox_SetupBox_SetupBox_onCast takes integer this_1 returns nothing
	if Serializable_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling SetupBox.onCast")
		else
			call error("Called SetupBox.onCast on invalid object.")
		endif
	endif
	call SetupBox_onCast(this_1)
endfunction

function onEvent_add_SetupBox_SetupBox takes integer this_1 returns nothing
	call dispatch_SetupBox_SetupBox_SetupBox_onCast(this_2926[this_1])
endfunction

function getOffset takes nothing returns real
	set SetupObject_count = SetupObject_count + 1
	if SetupObject_count > 50 then
		set SetupObject_count = -1
	endif
	set getOffset_return_x = SetupObject_offsets_x[SetupObject_count]
	set getOffset_return_y = SetupObject_offsets_y[SetupObject_count]
	return getOffset_return_x
endfunction

function unit_getPos3Zero takes unit this_1 returns real
	set unit_getPos3Zero_return_x = unit_getX(this_1)
	set unit_getPos3Zero_return_y = unit_getY(this_1)
	set unit_getPos3Zero_return_z = 0.
	return unit_getPos3Zero_return_x
endfunction

function unit_issueImmediateOrder takes unit this_1, string order returns boolean
	return IssueImmediateOrder(this_1, order)
endfunction

function unit_issueImmediateOrderById takes unit this_1, integer id returns boolean
	return IssueImmediateOrderById(this_1, id)
endfunction

function unit_setXY_4210 takes unit this_1, real pos_x_1, real pos_y_1, real pos_z returns nothing
	local unit receiver = this_1
	local unit receiver_1
	call unit_setX(receiver, pos_x_1)
	set receiver_1 = receiver
	call unit_setY(receiver_1, pos_y_1)
endfunction

function SetupObject_onOrderEvent takes integer this_1 returns nothing
	local integer order = GetIssuedOrderId()
	local real tuple_temp = EventData_getOrderPos()
	local real tuple_temp_1 = EventData_getOrderPos_return_y
	local real targetPos_x = tuple_temp
	local real targetPos_y = tuple_temp_1
	local unit u_1 = GetOrderTargetUnit()
	local string orderS = OrderId2String(order)
	local unit receiver
	local unit receiver_1
	local unit receiver_2
	local real tuple_temp_2
	local real tuple_temp_3
	local real tuple_temp_4
	if orderS == "smart" or orderS == "move" or orderS == "attack" or orderS == "patrol" or orderS == "holdposition" or orderS == "stop" then
		call Log_trace("actor mimick move order")
		if orderS == "smart" and u_1 == null then
			call unit_issuePointOrder(UnitEntity_actor[this_1], "move", vec2_op_plus(targetPos_x, targetPos_y, getOffset(), getOffset_return_y), vec2_op_plus_return_y)
		elseif u_1 != null then
			call unit_issueTargetOrderById(UnitEntity_actor[this_1], order, u_1)
		elseif targetPos_x != 0. then
			call unit_issuePointOrderById(UnitEntity_actor[this_1], order, targetPos_x, targetPos_y)
		else
			call unit_issueImmediateOrderById(UnitEntity_actor[this_1], order)
		endif
	elseif ( not (orderS == "waterelemental")) and ( not (orderS == "roar")) and ( not (order == 851974)) then
		call unit_issueImmediateOrder(UnitEntity_actor[this_1], "stop")
		call Log_trace("stopping actor")
	endif
	set tuple_temp_2 = unit_getPos3Zero(SetupObject_setup[this_1])
	set tuple_temp_3 = unit_getPos3Zero_return_y
	set tuple_temp_4 = unit_getPos3Zero_return_z
	set Entity_pos_x[this_1] = tuple_temp_2
	set Entity_pos_y[this_1] = tuple_temp_3
	set Entity_pos_z[this_1] = tuple_temp_4
	set receiver = UnitEntity_actor[this_1]
	call unit_setXY_4210(receiver, Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1])
	set receiver_1 = receiver
	call unit_setFacing(receiver_1, unit_getFacingAngle(SetupObject_setup[this_1]))
	set receiver_2 = receiver_1
	call unit_setTurnSpeed(receiver_2, GetUnitTurnSpeed(SetupObject_setup[this_1]))
endfunction

function dispatch_SetupObject_SetupObject_SetupObject_onOrderEvent takes integer this_1 returns nothing
	if Serializable_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling SetupObject.onOrderEvent")
		else
			call error("Called SetupObject.onOrderEvent on invalid object.")
		endif
	endif
	call SetupObject_onOrderEvent(this_1)
endfunction

function onEvent_add_SetupObject_SetupObject takes integer this_1 returns nothing
	call dispatch_SetupObject_SetupObject_SetupObject_onOrderEvent(this_2909[this_1])
endfunction

function onEvent_add_SetupObject_SetupObject_3853 takes integer this_1 returns nothing
	call dispatch_SetupObject_SetupObject_SetupObject_onOrderEvent(this_2910[this_1])
endfunction

function onEvent_add_SetupObject_SetupObject_3854 takes integer this_1 returns nothing
	call dispatch_SetupObject_SetupObject_SetupObject_onOrderEvent(this_2911[this_1])
endfunction

function unit_setVertexColor takes unit this_1, integer r, integer g, integer b, integer a returns nothing
	call SetUnitVertexColor(this_1, r, g, b, a)
endfunction

function SpellTarget_onCast takes integer this_1 returns nothing
	local integer id = GetSpellAbilityId()
	local integer temp = id
	local unit receiver
	local unit receiver_1
	local unit receiver_2
	local unit receiver_3
	local unit receiver_4
	local unit receiver_5
	if temp == BossSpellTarget_AOE_ID then
		set SpellTarget_stype[this_1] = 1
		set receiver = UnitEntity_actor[this_1]
		call unit_setVertexColor(receiver, 255, 255, 0, 255)
		set receiver_1 = receiver
		call unit_removeAbility(receiver_1, BossSpellTarget_AOE_ID)
		set receiver_2 = receiver_1
		call unit_addAbility(receiver_2, BossSpellTarget_MISSILE_ID)
	elseif temp == BossSpellTarget_MISSILE_ID then
		set SpellTarget_stype[this_1] = 3
		set receiver_3 = UnitEntity_actor[this_1]
		call unit_setVertexColor(receiver_3, 0, 255, 255, 255)
		set receiver_4 = receiver_3
		call unit_removeAbility(receiver_4, BossSpellTarget_MISSILE_ID)
		set receiver_5 = receiver_4
		call unit_addAbility(receiver_5, BossSpellTarget_AOE_ID)
	endif
endfunction

function dispatch_SpellTarget_BossSpellTarget_SpellTarget_onCast takes integer this_1 returns nothing
	if Serializable_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling SpellTarget.onCast")
		else
			call error("Called SpellTarget.onCast on invalid object.")
		endif
	endif
	call SpellTarget_onCast(this_1)
endfunction

function onEvent_add_SpellTarget_BossSpellTarget takes integer this_1 returns nothing
	call dispatch_SpellTarget_BossSpellTarget_SpellTarget_onCast(this_2913[this_1])
endfunction

function alloc_ForGroupCallback_forUnitsInRange_Spinner_Spinner takes nothing returns integer
	local integer this_1
	if ForGroupCallback_firstFree == 0 then
		if ForGroupCallback_maxIndex < JASS_MAX_ARRAY_SIZE then
			set ForGroupCallback_maxIndex = ForGroupCallback_maxIndex + 1
			set this_1 = ForGroupCallback_maxIndex
			set ForGroupCallback_typeId[this_1] = 865
		else
			call error("Out of memory: Could not create ForGroupCallback_forUnitsInRange_Spinner_Spinner.")
			set this_1 = 0
		endif
	else
		set ForGroupCallback_firstFree = ForGroupCallback_firstFree - 1
		set this_1 = ForGroupCallback_nextFree[ForGroupCallback_firstFree]
		set ForGroupCallback_typeId[this_1] = 865
	endif
	return this_1
endfunction

function CongaLineHead_setEnabled takes integer this_1, boolean b returns nothing
endfunction

function ObjectTarget_setEnabled takes integer this_1, boolean b returns nothing
endfunction

function TerrainChanger_setEnabled takes integer this_1, boolean b returns nothing
endfunction

function dispatch_SetupObject_SetupObject_SetupObject_setEnabled takes integer this_1, boolean flag returns nothing
	if Serializable_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling SetupObject.setEnabled")
		else
			call error("Called SetupObject.setEnabled on invalid object.")
		endif
	endif
	if Serializable_typeId[this_1] <= 1188 then
		if Serializable_typeId[this_1] <= 1174 then
			if Serializable_typeId[this_1] <= 1173 then
				call SetupObject_setEnabled(this_1, flag)
			else
				call CongaLineHead_setEnabled(this_1, flag)
			endif
		elseif Serializable_typeId[this_1] <= 1187 then
			call SetupObject_setEnabled(this_1, flag)
		else
			call ObjectTarget_setEnabled(this_1, flag)
		endif
	elseif Serializable_typeId[this_1] <= 1191 then
		if Serializable_typeId[this_1] <= 1189 then
			call Powernode_setEnabled(this_1, flag)
		else
			call SetupObject_setEnabled(this_1, flag)
		endif
	else
		call TerrainChanger_setEnabled(this_1, flag)
	endif
endfunction

function alloc_SpinNode takes nothing returns integer
	local integer this_1
	if SpinNode_firstFree == 0 then
		if SpinNode_maxIndex < JASS_MAX_ARRAY_SIZE then
			set SpinNode_maxIndex = SpinNode_maxIndex + 1
			set this_1 = SpinNode_maxIndex
			set SpinNode_typeId[this_1] = 1238
		else
			call error("Out of memory: Could not create SpinNode.")
			set this_1 = 0
		endif
	else
		set SpinNode_firstFree = SpinNode_firstFree - 1
		set this_1 = SpinNode_nextFree[SpinNode_firstFree]
		set SpinNode_typeId[this_1] = 1238
	endif
	return this_1
endfunction

function SpinNode_init takes integer this_1 returns nothing
	set SpinNode_next[this_1] = 0
	set SpinNode_prev[this_1] = 0
endfunction

function construct_SpinNode takes integer this_1, integer ent, real ang, real dist returns nothing
	call SpinNode_init(this_1)
	set SpinNode_obj[this_1] = ent
	set SpinNode_angl[this_1] = ang
	set SpinNode_dist[this_1] = dist
endfunction

function new_SpinNode takes integer ent, real ang, real dist returns integer
	local integer this_1 = alloc_SpinNode()
	call construct_SpinNode(this_1, ent, ang, dist)
	return this_1
endfunction

function vec3_distanceTo takes real this_x, real this_y, real this_z, real v_x, real v_y, real v_z returns real
	return SquareRoot(real_squared(v_x - this_x) + real_squared(v_y - this_y) + real_squared(v_z - this_z))
endfunction

function Spinner_checkObj takes integer this_1, integer e_1 returns nothing
	local integer instanceOfTemp = Serializable_typeId[e_1]
	local integer dobj
	local boolean isNew
	local integer node
	local integer newnode
	local integer instanceOfTemp_1
	local boolean andLeft
	if instanceOfTemp >= 1172 and instanceOfTemp <= 1192 then
		set instanceOfTemp_1 = Serializable_typeId[e_1]
		set andLeft =  not (instanceOfTemp_1 >= 1217 and instanceOfTemp_1 <= 1221)
	else
		set andLeft = false
	endif
	if andLeft then
		set dobj = e_1
		set isNew = true
		set node = Spinner_firstNode[this_1]
		loop
			exitwhen  not (node != 0)
			if SpinNode_obj[node] == dobj then
				set isNew = false
				if Spinner_firstNode[this_1] == node then
					set Spinner_firstNode[this_1] = SpinNode_next[node]
				endif
				call dispatch_SpinNode_destroySpinNode(node)
				exitwhen true
			endif
			set node = SpinNode_next[node]
		endloop
		if isNew and unit_hasAbility(SetupObject_setup[dobj], BuilderConstants_REMOVE_OBJECT_ID) or Entity_owner[dobj] == GameConstants_STAFF_PLAYER then
			call unit_removeAbility(SetupObject_setup[dobj], BuilderConstants_REMOVE_OBJECT_ID)
			set newnode = new_SpinNode(dobj, angle_radians_1(vec3_angleTo2d_4263(dispatch_UnitEntity_Entity_UnitEntity_getPos(this_1), dispatch_UnitEntity_Entity_UnitEntity_getPos_return_y, dispatch_UnitEntity_Entity_UnitEntity_getPos_return_z, dispatch_UnitEntity_Entity_UnitEntity_getPos(dobj), dispatch_UnitEntity_Entity_UnitEntity_getPos_return_y, dispatch_UnitEntity_Entity_UnitEntity_getPos_return_z)), vec3_distanceTo(dispatch_UnitEntity_Entity_UnitEntity_getPos(this_1), dispatch_UnitEntity_Entity_UnitEntity_getPos_return_y, dispatch_UnitEntity_Entity_UnitEntity_getPos_return_z, dispatch_UnitEntity_Entity_UnitEntity_getPos(dobj), dispatch_UnitEntity_Entity_UnitEntity_getPos_return_y, dispatch_UnitEntity_Entity_UnitEntity_getPos_return_z))
			if Spinner_firstNode[this_1] != 0 then
				set SpinNode_prev[Spinner_firstNode[this_1]] = newnode
				set SpinNode_next[newnode] = Spinner_firstNode[this_1]
			endif
			set Spinner_firstNode[this_1] = newnode
		endif
	endif
endfunction

function dispatch_Spinner_Spinner_Spinner_checkObj takes integer this_1, integer e_1 returns nothing
	if Serializable_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling Spinner.checkObj")
		else
			call error("Called Spinner.checkObj on invalid object.")
		endif
	endif
	call Spinner_checkObj(this_1, e_1)
endfunction

function callback_forEachFrom_LinkedList takes integer this_1, unit u_1 returns nothing
	call dispatch_LinkedList_LinkedList_LinkedList_add_1(result[this_1], unitToIndex(u_1))
endfunction

function callback_forEachFrom_Preloader takes integer this_1, unit u_1 returns nothing
	call unit_remove(u_1)
endfunction

function callback_forUnitsInRange_Jumper_Jumper takes integer this_1, unit u_1 returns nothing
	if u_1 != UnitEntity_actor[this_2956[this_1]] and unit_getTypeId(u_1) == BuilderConstants_JUMPER_ID then
		call dispatch_SoundDefinition_SoundUtils_SoundDefinition_play(Jumper_snd)
		call unit_addAbility(u_1, Jumper_SPECIAL_ID)
		call Log_debug("Jumper Terminate")
		call cyc_RevivePoint_terminate(18, this_2956[this_1])
	endif
endfunction

function MemoryAccessPedestal_addObj takes integer this_1, integer serializable, boolean removeIfExists returns nothing
	local integer instanceOfTemp = Serializable_typeId[serializable]
	local integer io
	local integer so
	local integer ue
	local integer instanceOfTemp_1
	local integer instanceOfTemp_2
	local integer instanceOfTemp_3
	if (instanceOfTemp >= 1163 and instanceOfTemp <= 1168) or Serializable_typeId[serializable] == 1162 or Serializable_typeId[serializable] == 1202 then
		return
	endif
	if dispatch_RegionData_RegionData_RegionData_canBuild(getRegionData(dispatch_Entity_Entity_Entity_getPos(serializable), dispatch_Entity_Entity_Entity_getPos_return_y, dispatch_Entity_Entity_Entity_getPos_return_z), Entity_owner[this_1]) then
		if dispatch_HashList_HashList_HashList_has(MemoryAccessPedestal_entities[this_1], serializable) then
			if removeIfExists then
				call dispatch_HashList_HashList_HashList_remove(MemoryAccessPedestal_entities[this_1], serializable)
			endif
			return
		endif
		call dispatch_HashList_HashList_HashList_add_1(MemoryAccessPedestal_entities[this_1], serializable)
		call flashEffect(Abilities_healTarget, dispatch_Entity_Entity_Entity_getPos(serializable), dispatch_Entity_Entity_Entity_getPos_return_y, dispatch_Entity_Entity_Entity_getPos_return_z)
		set instanceOfTemp_1 = Serializable_typeId[serializable]
		if instanceOfTemp_1 >= 1153 and instanceOfTemp_1 <= 1158 then
			set io = serializable
			call dispatch_HashMap_HashMap_HashMap_put(MemoryAccessPedestal_effects[this_1], serializable, effectToIndex(widget_addEffect(UnitEntity_actor[ItemObject_setup[io]], Abilities_innerFireTarget, "overhead")))
		else
			set instanceOfTemp_2 = Serializable_typeId[serializable]
			if instanceOfTemp_2 >= 1212 and instanceOfTemp_2 <= 1222 then
				set so = serializable
				call dispatch_HashMap_HashMap_HashMap_put(MemoryAccessPedestal_effects[this_1], serializable, effectToIndex(widget_addEffect(StaticSetupObject_setup[so], Abilities_innerFireTarget, "overhead")))
			else
				set instanceOfTemp_3 = Serializable_typeId[serializable]
				if instanceOfTemp_3 >= 1160 and instanceOfTemp_3 <= 1227 then
					set ue = serializable
					call dispatch_HashMap_HashMap_HashMap_put(MemoryAccessPedestal_effects[this_1], serializable, effectToIndex(widget_addEffect(UnitEntity_actor[ue], Abilities_innerFireTarget, "overhead")))
				endif
			endif
		endif
	endif
endfunction

function dispatch_MemoryAccessPedestal_Pedestal_MemoryAccessPedestal_addObj takes integer this_1, integer serializable, boolean removeIfExists returns nothing
	if Serializable_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling MemoryAccessPedestal.addObj")
		else
			call error("Called MemoryAccessPedestal.addObj on invalid object.")
		endif
	endif
	call MemoryAccessPedestal_addObj(this_1, serializable, removeIfExists)
endfunction

function callback_forUnitsInRange_MemoryAccessPedestal_Pedestal takes integer this_1, unit u_1 returns nothing
	local integer ed
	if u_1 != UnitEntity_actor[this_3011[this_1]] then
		if unit_getEntity(u_1) != 0 then
			set ed = unit_getEntity(u_1)
			if Entity_owner[ed] == Entity_owner[this_3011[this_1]] then
				call dispatch_MemoryAccessPedestal_Pedestal_MemoryAccessPedestal_addObj(this_3011[this_1], ed, false)
			endif
		endif
	endif
endfunction

function dispatch_OnHitListener_Projectile_OnHitListener_run takes integer this_1, unit target returns nothing
endfunction

function group_add_1 takes group this_1, unit units_0 returns integer
	local integer i = 0
	if GroupAddUnit(this_1, units_0) then
		set i = i + 1
	endif
	return i
endfunction

function group_has takes group this_1, unit u_1 returns boolean
	return IsUnitInGroup(u_1, this_1)
endfunction

function callback_forUnitsInRange_Projectile_Projectile takes integer this_1, unit target returns nothing
	if ( not Entity_done[this[this_1]]) and ( not group_has(Projectile_hitGroup[this[this_1]], target)) then
		call group_add_1(Projectile_hitGroup[this[this_1]], target)
		call dispatch_OnHitListener_Projectile_OnHitListener_run(Projectile_onHit[this[this_1]], target)
	endif
endfunction

function callback_forUnitsInRange_Spinner_Spinner takes integer this_1, unit u_1 returns nothing
	local integer ed
	if u_1 != UnitEntity_actor[this_2997[this_1]] and u_1 != SetupObject_setup[this_2997[this_1]] then
		if unit_getUserData(u_1) > 0 then
			set ed = unit_getEntity(u_1)
			if Entity_owner[ed] == Entity_owner[this_2997[this_1]] then
				call dispatch_Spinner_Spinner_Spinner_checkObj(this_2997[this_1], ed)
			endif
		endif
	endif
endfunction

function InstantDummyCaster_castTarget_745 takes player owner, integer abilityId, integer lvl, string order, widget target returns boolean
	return InstantDummyCaster_castTarget_744(owner, abilityId, lvl, OrderId(order), target)
endfunction

function StaticBaseObject_getRallyPoint takes integer this_1 returns real
	if StaticBaseObject_rallyUnit[this_1] == null or ( not widget_isAliveTrick(StaticBaseObject_rallyUnit[this_1])) then
		set StaticBaseObject_getRallyPoint_return_x = StaticBaseObject_rallyPoint_x[this_1]
		set StaticBaseObject_getRallyPoint_return_y = StaticBaseObject_rallyPoint_y[this_1]
		set StaticBaseObject_getRallyPoint_return_z = StaticBaseObject_rallyPoint_z[this_1]
		return StaticBaseObject_getRallyPoint_return_x
	elseif unit_getOwner(StaticBaseObject_rallyUnit[this_1]) != Basics_DUMMY_PLAYER then
		set StaticBaseObject_getRallyPoint_return_x = unit_getPos3with(StaticBaseObject_rallyUnit[this_1], 0.)
		set StaticBaseObject_getRallyPoint_return_y = unit_getPos3with_return_y
		set StaticBaseObject_getRallyPoint_return_z = unit_getPos3with_return_z
		return StaticBaseObject_getRallyPoint_return_x
	else
		set StaticBaseObject_getRallyPoint_return_x = Entity_pos_x[this_1]
		set StaticBaseObject_getRallyPoint_return_y = Entity_pos_y[this_1]
		set StaticBaseObject_getRallyPoint_return_z = Entity_pos_z[this_1]
		return StaticBaseObject_getRallyPoint_return_x
	endif
endfunction

function dispatch_StaticBaseObject_BaseObject_StaticBaseObject_getRallyPoint takes integer this_1 returns real
	local real BaseObject_StaticBaseObject_getRallyPoint_result_x
	local real BaseObject_StaticBaseObject_getRallyPoint_result_y
	local real BaseObject_StaticBaseObject_getRallyPoint_result_z
	local real tuple_temp
	local real tuple_temp_1
	local real tuple_temp_2
	if Serializable_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling StaticBaseObject.getRallyPoint")
		else
			call error("Called StaticBaseObject.getRallyPoint on invalid object.")
		endif
	endif
	set tuple_temp = StaticBaseObject_getRallyPoint(this_1)
	set tuple_temp_1 = StaticBaseObject_getRallyPoint_return_y
	set tuple_temp_2 = StaticBaseObject_getRallyPoint_return_z
	set BaseObject_StaticBaseObject_getRallyPoint_result_x = tuple_temp
	set BaseObject_StaticBaseObject_getRallyPoint_result_y = tuple_temp_1
	set BaseObject_StaticBaseObject_getRallyPoint_result_z = tuple_temp_2
	set dispatch_StaticBaseObject_BaseObject_StaticBaseObject_getRallyPoint_return_x = BaseObject_StaticBaseObject_getRallyPoint_result_x
	set dispatch_StaticBaseObject_BaseObject_StaticBaseObject_getRallyPoint_return_y = BaseObject_StaticBaseObject_getRallyPoint_result_y
	set dispatch_StaticBaseObject_BaseObject_StaticBaseObject_getRallyPoint_return_z = BaseObject_StaticBaseObject_getRallyPoint_result_z
	return dispatch_StaticBaseObject_BaseObject_StaticBaseObject_getRallyPoint_return_x
endfunction

function newEventPlayer takes player p, real m returns nothing
	local integer i = GetPlayerId(p)
	set Camerashakes_playerCurrentShake[i] = Camerashakes_playerCurrentShake[i] + m
	if  not IsPlayerInForce(p, Camerashakes_shakingPlayers) then
		call ForceAddPlayer(Camerashakes_shakingPlayers, p)
	endif
endfunction

function Trap_doEffect takes integer this_1, integer e_1 returns nothing
	local integer temp = Trap_a[this_1]
	local integer level
	local real rallyPos_x_1
	local real rallyPos_y_1
	local real rallyPos_z_1
	local real angl_radians
	local real tuple_temp
	local real tuple_temp_1
	local real tuple_temp_2
	local real tuple_temp_3
	local real tuple_temp_4
	local real tuple_temp_5
	if temp == 0 then
		call dispatch_Escaper_Escaper_Escaper_kill(e_1, this_1)
	elseif temp == 1 then
		call InstantDummyCaster_castTarget_745(Basics_DUMMY_PLAYER, Trap_STUN_BUFF, real_toInt(Trap_duration[this_1]), "thunderbolt", UnitEntity_actor[e_1])
	elseif temp == 5 then
		call newEventPlayer(Entity_owner[e_1], Trap_value[this_1])
	elseif temp == 2 then
		call dispatch_Escaper_Escaper_Escaper_setPoison(e_1, true)
	elseif temp == 3 then
		set level = ModuloInteger(real_toInt(Trap_value[this_1] / 20.), 10)
		call printLog(0, "Level: " + int_toString(level))
		if level > 5 then
			call InstantDummyCaster_castTarget_745(Basics_DUMMY_PLAYER, Trap_SPEED_BUFF_POS, level - 5, "bloodlust", UnitEntity_actor[e_1])
		elseif level < 5 then
			call InstantDummyCaster_castTarget_745(Basics_DUMMY_PLAYER, Trap_SPEED_BUFF_NEG, level, "bloodlust", UnitEntity_actor[e_1])
		endif
	elseif temp == 4 then
		call IssueImmediateOrder(UnitEntity_actor[e_1], "stop")
		set tuple_temp = dispatch_StaticBaseObject_BaseObject_StaticBaseObject_getRallyPoint(this_1)
		set tuple_temp_1 = dispatch_StaticBaseObject_BaseObject_StaticBaseObject_getRallyPoint_return_y
		set tuple_temp_2 = dispatch_StaticBaseObject_BaseObject_StaticBaseObject_getRallyPoint_return_z
		set rallyPos_x_1 = tuple_temp
		set rallyPos_y_1 = tuple_temp_1
		set rallyPos_z_1 = tuple_temp_2
		if vec3_distanceTo2dSq(rallyPos_x_1, rallyPos_y_1, rallyPos_z_1, vec3_toVec2(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1]), vec3_toVec2_return_y) < 20 * 20 then
			if Trap_pull[this_1] then
				set tuple_temp_3 = angle_op_minus(vec3_angleTo2d_4263(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1], Entity_pos_x[e_1], Entity_pos_y[e_1], Entity_pos_z[e_1]), real_asAngleDegrees(180.))
				set angl_radians = tuple_temp_3
			else
				set tuple_temp_4 = vec3_angleTo2d_4263(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1], Entity_pos_x[e_1], Entity_pos_y[e_1], Entity_pos_z[e_1])
				set angl_radians = tuple_temp_4
			endif
		else
			set tuple_temp_5 = vec3_angleTo2d_4263(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1], rallyPos_x_1, rallyPos_y_1, rallyPos_z_1)
			set angl_radians = tuple_temp_5
		endif
		call dispatch_Entity_Entity_Entity_addVel(e_1, vec2_toVec3(angle_toVec(angl_radians, Trap_value[this_1]), angle_toVec_return_y), vec2_toVec3_return_y, vec2_toVec3_return_z)
	endif
endfunction

function dispatch_Trap_Trap_Trap_doEffect takes integer this_1, integer e_1 returns nothing
	if Serializable_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling Trap.doEffect")
		else
			call error("Called Trap.doEffect on invalid object.")
		endif
	endif
	call Trap_doEffect(this_1, e_1)
endfunction

function callback_forUnitsInRange_Trap_Trap takes integer this_1, unit u_1 returns nothing
	local integer e_1 = unit_getEntity(u_1)
	local integer instanceOfTemp = Serializable_typeId[e_1]
	local integer escaper
	if instanceOfTemp >= 1163 and instanceOfTemp <= 1168 then
		set escaper = e_1
		call dispatch_Trap_Trap_Trap_doEffect(this_2960[this_1], escaper)
	endif
endfunction

function callback_forUnitsInRange_Waypoint_Waypoint takes integer this_1, unit u_1 returns nothing
	local integer data_1 = unit_getEntity(u_1)
	local integer instanceOfTemp
	local integer instanceOfTemp_1
	local integer instanceOfTemp_2
	local boolean andLeft
	local boolean andLeft_1
	if Entity_owner[this_2961[this_1]] == Entity_owner[data_1] then
		set instanceOfTemp = Serializable_typeId[data_1]
		set andLeft =  not (instanceOfTemp >= 1163 and instanceOfTemp <= 1168)
	else
		set andLeft = false
	endif
	if andLeft and ( not (Serializable_typeId[data_1] == 1162)) then
		set instanceOfTemp_1 = Serializable_typeId[data_1]
		set andLeft_1 =  not (instanceOfTemp_1 >= 1194 and instanceOfTemp_1 <= 1211)
	else
		set andLeft_1 = false
	endif
	if andLeft_1 then
		set instanceOfTemp_2 = Serializable_typeId[data_1]
		if instanceOfTemp_2 >= 1172 and instanceOfTemp_2 <= 1192 then
			call unit_issuePointOrder(SetupObject_setup[data_1], "move", vec3_toVec2(rallyPos_x[this_1], rallyPos_y[this_1], rallyPos_z[this_1]), vec3_toVec2_return_y)
		else
			call unit_issuePointOrder(UnitEntity_actor[data_1], "move", vec3_toVec2(rallyPos_x[this_1], rallyPos_y[this_1], rallyPos_z[this_1]), vec3_toVec2_return_y)
		endif
	endif
endfunction

function alloc_CallbackSingle_doAfter_Minion_Minion takes nothing returns integer
	local integer this_1
	if CallbackSingle_firstFree == 0 then
		if CallbackSingle_maxIndex < JASS_MAX_ARRAY_SIZE then
			set CallbackSingle_maxIndex = CallbackSingle_maxIndex + 1
			set this_1 = CallbackSingle_maxIndex
			set CallbackSingle_typeId[this_1] = 695
		else
			call error("Out of memory: Could not create CallbackSingle_doAfter_Minion_Minion.")
			set this_1 = 0
		endif
	else
		set CallbackSingle_firstFree = CallbackSingle_firstFree - 1
		set this_1 = CallbackSingle_nextFree[CallbackSingle_firstFree]
		set CallbackSingle_typeId[this_1] = 695
	endif
	return this_1
endfunction

function CustomBar_fadeOut takes integer this_1, real overTime, boolean followThrough, real xVel, real yVel returns nothing
	local texttag receiver
	local texttag receiver_1
	local texttag receiver_2
	local timer receiver_3
	local timer receiver_4
	if CustomBar_t[this_1] != null then
		set receiver = CustomBar_t[this_1]
		call texttag_setLifespan(receiver, overTime)
		set receiver_1 = receiver
		call texttag_setAge(receiver_1, 0.)
		set receiver_2 = receiver_1
		call texttag_setFadepoint(receiver_2, 0.)
		call texttag_setPermanent(receiver_2, false)
		if  not CustomBar_locked[this_1] then
			call texttag_setVelocity(CustomBar_t[this_1], TextTagSpeed2Velocity(xVel), TextTagSpeed2Velocity(yVel))
		endif
	endif
	if followThrough then
		set receiver_3 = getTimer()
		call timer_setData(receiver_3, this_1)
		set receiver_4 = receiver_3
		call timer_start(receiver_4, overTime, ref_function_CustomBar_fadeOutCallback)
	else
		set CustomBar_t[this_1] = null
		call dispatch_CustomBar_destroyCustomBar(this_1)
	endif
endfunction

function dispatch_CustomBar_CustomBar_CustomBar_fadeOut takes integer this_1, real overTime, boolean followThrough, real xVel, real yVel returns nothing
	if CustomBar_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling CustomBar.fadeOut")
		else
			call error("Called CustomBar.fadeOut on invalid object.")
		endif
	endif
	call CustomBar_fadeOut(this_1, overTime, followThrough, xVel, yVel)
endfunction

function Minion_onDamage takes integer this_1, integer w_escaper, real dmg returns nothing
	local integer clVar
	set Minion_currentHP[this_1] = Minion_currentHP[this_1] - dmg
	if Minion_currentHP[this_1] < 1. then
		call unit_kill(UnitEntity_actor[this_1])
		call unit_abortOrder(SetupObject_setup[this_1])
		call dispatch_CustomBar_CustomBar_CustomBar_fadeOut(Minion_hpBar[this_1], 1.5, true, 0., 0.)
		set Entity_sleeps[this_1] = true
		set clVar = alloc_CallbackSingle_doAfter_Minion_Minion()
		call construct_CallbackSingle(clVar)
		set this_2916[clVar] = this_1
		call doAfter(3., clVar)
	endif
endfunction

function dispatch_Minion_Minion_Minion_onDamage takes integer this_1, integer w_escaper, real dmg returns nothing
	if Serializable_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling Minion.onDamage")
		else
			call error("Called Minion.onDamage on invalid object.")
		endif
	endif
	call Minion_onDamage(this_1, w_escaper, dmg)
endfunction

function damageTarget takes integer entity_1, integer escaper, real damage returns nothing
	local integer b
	local integer m
	if entity_1 != 0 then
		if Serializable_typeId[entity_1] == 1173 then
			set b = entity_1
			call dispatch_Boss_Boss_Boss_onDamage(b, escaper, damage)
		endif
		if Serializable_typeId[entity_1] == 1183 then
			set m = entity_1
			call dispatch_Minion_Minion_Minion_onDamage(m, escaper, damage)
		endif
	endif
endfunction

function callback_forUnitsInRange_WeaponTypes takes integer this_1, unit u_1 returns nothing
	local integer entity_1 = unit_getEntity(u_1)
	call damageTarget(entity_1, e[this_1], 20.)
endfunction

function callback_forUnitsInRange_WeaponTypes_2036 takes integer this_1, unit u_1 returns nothing
	local integer entity_1 = unit_getEntity(u_1)
	call damageTarget(entity_1, e_2342[this_1], 20.)
endfunction

function callback_forUnitsInRange_WeaponTypes_2037 takes integer this_1, unit u_1 returns nothing
	local integer entity_1 = unit_getEntity(u_1)
	call damageTarget(entity_1, e_2343[this_1], 20.)
endfunction

function Minion_doDamage takes integer this_1, integer e_1 returns nothing
	call unit_damageTarget_4137(UnitEntity_actor[this_1], UnitEntity_actor[e_1], Minion_ATTACK_DAMAGE)
endfunction

function dispatch_Minion_Minion_Minion_doDamage takes integer this_1, integer e_1 returns nothing
	if Serializable_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling Minion.doDamage")
		else
			call error("Called Minion.doDamage on invalid object.")
		endif
	endif
	call Minion_doDamage(this_1, e_1)
endfunction

function callback_forUnitsInRange_doAfter_Minion_Minion takes integer this_1, unit u_1 returns nothing
	local integer entity_1 = unit_getEntity(u_1)
	local integer e_1
	local integer instanceOfTemp
	local boolean andLeft
	if entity_1 != 0 then
		set instanceOfTemp = Serializable_typeId[entity_1]
		set andLeft = instanceOfTemp >= 1163 and instanceOfTemp <= 1168
	else
		set andLeft = false
	endif
	if andLeft then
		set e_1 = entity_1
		call dispatch_Minion_Minion_Minion_doDamage(this_2919[this_1], e_1)
	endif
endfunction

function callback_forUnitsInRange_doAfter_SpellTarget_BossSpellTarget takes integer this_1, unit u_1 returns nothing
	local integer instanceOfTemp = Serializable_typeId[unit_getEntity(u_1)]
	local integer escaper
	if instanceOfTemp >= 1163 and instanceOfTemp <= 1168 then
		call unit_damageTarget_4137(UnitEntity_actor[this_2915[this_1]], u_1, 100.)
		set escaper = unit_getEntity(u_1)
		call dispatch_Entity_Entity_Entity_addVel(escaper, vec3_op_mult(vec3_op_minus_4281(Entity_pos_x[escaper], Entity_pos_y[escaper], Entity_pos_z[escaper], tpos_x_3018[this_1], tpos_y_3021[this_1]), vec3_op_minus_return_y_3125, vec3_op_minus_return_z_3127, 0.5), vec3_op_mult_return_y, vec3_op_mult_return_z)
	endif
endfunction

function callback_forUnitsInRect_MGAgar_MGAgar takes integer this_1, unit u_1 returns nothing
	local integer data_1 = unit_getEntity(u_1)
	local integer instanceOfTemp
	local boolean andLeft
	if data_1 != 0 then
		set instanceOfTemp = Serializable_typeId[data_1]
		set andLeft =  not (instanceOfTemp >= 1163 and instanceOfTemp <= 1168)
	else
		set andLeft = false
	endif
	if andLeft and ( not (Serializable_typeId[data_1] == 1162)) then
		call cyc_RevivePoint_terminate(18, data_1)
	endif
endfunction

function callback_forUnitsInRect_MGSlide_MGSlide takes integer this_1, unit u_1 returns nothing
	local integer data_1 = unit_getEntity(u_1)
	local integer instanceOfTemp
	local boolean andLeft
	if data_1 != 0 then
		set instanceOfTemp = Serializable_typeId[data_1]
		set andLeft =  not (instanceOfTemp >= 1163 and instanceOfTemp <= 1168)
	else
		set andLeft = false
	endif
	if andLeft and ( not (Serializable_typeId[data_1] == 1162)) then
		call cyc_RevivePoint_terminate(18, data_1)
	endif
endfunction

function callback_forUnitsInRect_MGSlide_MGSlide_2042 takes integer this_1, unit u_1 returns nothing
	local integer data_1 = unit_getEntity(u_1)
	local integer instanceOfTemp
	local boolean andLeft
	if data_1 != 0 then
		set instanceOfTemp = Serializable_typeId[data_1]
		set andLeft =  not (instanceOfTemp >= 1163 and instanceOfTemp <= 1168)
	else
		set andLeft = false
	endif
	if andLeft and ( not (Serializable_typeId[data_1] == 1162)) then
		call cyc_RevivePoint_terminate(18, data_1)
	endif
endfunction

function callback_forUnitsInRect_SetupBox_SetupBox takes integer this_1, unit u_1 returns nothing
	local integer data_1 = unit_getEntity(u_1)
	local integer instanceOfTemp
	local boolean andLeft
	if data_1 != 0 then
		set instanceOfTemp = Serializable_typeId[data_1]
		set andLeft =  not (instanceOfTemp >= 1163 and instanceOfTemp <= 1168)
	else
		set andLeft = false
	endif
	if andLeft and ( not (Serializable_typeId[data_1] == 1162)) and u_1 != UnitEntity_actor[this_2927[this_1]] then
		call Log_debug("SetupBox Terminate")
		call cyc_RevivePoint_terminate(18, data_1)
	endif
endfunction

function alloc_BigKiller takes nothing returns integer
	local integer this_1
	if Serializable_firstFree == 0 then
		if Serializable_maxIndex < JASS_MAX_ARRAY_SIZE then
			set Serializable_maxIndex = Serializable_maxIndex + 1
			set this_1 = Serializable_maxIndex
			set Serializable_typeId[this_1] = 1177
		else
			call error("Out of memory: Could not create BigKiller.")
			set this_1 = 0
		endif
	else
		set Serializable_firstFree = Serializable_firstFree - 1
		set this_1 = Serializable_nextFree[Serializable_firstFree]
		set Serializable_typeId[this_1] = 1177
	endif
	return this_1
endfunction

function BigKiller_init takes integer this_1 returns nothing
endfunction

function alloc_SensorListener_addSensorListener_EscaperSensorSetup_EscaperSensor_1891 takes nothing returns integer
	local integer this_1
	if SensorListener_firstFree == 0 then
		if SensorListener_maxIndex < JASS_MAX_ARRAY_SIZE then
			set SensorListener_maxIndex = SensorListener_maxIndex + 1
			set this_1 = SensorListener_maxIndex
			set SensorListener_typeId[this_1] = 1123
		else
			call error("Out of memory: Could not create SensorListener_addSensorListener_EscaperSensorSetup_EscaperSensor.")
			set this_1 = 0
		endif
	else
		set SensorListener_firstFree = SensorListener_firstFree - 1
		set this_1 = SensorListener_nextFree[SensorListener_firstFree]
		set SensorListener_typeId[this_1] = 1123
	endif
	return this_1
endfunction

function dispatch_SetupObject_SetupObject_SetupObject_setXY takes integer this_1, real pos_x_1, real pos_y_1, real pos_z returns nothing
	if Serializable_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling SetupObject.setXY")
		else
			call error("Called SetupObject.setXY on invalid object.")
		endif
	endif
	call SetupObject_setXY(this_1, pos_x_1, pos_y_1, pos_z)
endfunction

function construct_EscaperSensorSetup4 takes integer this_1, unit pactor, real radius, real sensorHeight returns nothing
	local integer temp = this_1
	local unit receiver = createUnit_2356(unit_getOwner(pactor), unit_getTypeId(pactor), unit_getPos3Zero(pactor), unit_getPos3Zero_return_y, unit_getPos3Zero_return_z, unit_getFacingAngle(pactor))
	local integer clVar
	local integer temp_1
	local integer temp_2
	call unit_addAbility(receiver, Basics_LOCUST_ID)
	call construct_SetupObject(temp, receiver, pactor, radius)
	call EscaperSensorSetup_init(this_1)
	set EscaperSensorSetup_sensorHeight[this_1] = sensorHeight
	call dispatch_SetupObject_SetupObject_SetupObject_setXY(this_1, vec3_op_plus_4284(vec2_toVec3(unit_getPos(pactor), unit_getPos_return_y), vec2_toVec3_return_y, vec2_toVec3_return_z, 0.01, 0.), vec3_op_plus_return_y_3134, vec3_op_plus_return_z_3136)
	set temp_1 = this_1
	set temp_2 = this_1
	set clVar = alloc_SensorListener_addSensorListener_EscaperSensorSetup_EscaperSensor_1891()
	call construct_SensorListener(clVar)
	set this_2980[clVar] = this_1
	call dispatch_EscaperSensorSetup_EscaperSensor_EscaperSensorSetup_Sensor_addSensorListener(temp_1, temp_2, clVar)
endfunction

function construct_BigKiller3 takes integer this_1, unit existing returns nothing
	call construct_EscaperSensorSetup4(this_1, existing, EscaperKillers_COLL_SIZE_BK, EscaperKillers_COLL_SIZE_BK)
	call BigKiller_init(this_1)
endfunction

function new_BigKiller_3619 takes unit existing returns integer
	local integer this_1 = alloc_BigKiller()
	call construct_BigKiller3(this_1, existing)
	return this_1
endfunction

function callback_forUnitsOfPlayer_SecondDesertMaze_SecondDesert takes integer this_1, unit u_1 returns nothing
	if unit_getTypeId(u_1) == BuilderConstants_BIG_SAND_KILLER_ID then
		call new_BigKiller_3619(u_1)
	endif
endfunction

function construct_SmallKiller3 takes integer this_1, unit existing returns nothing
	call construct_EscaperSensorSetup4(this_1, existing, EscaperKillers_COLL_SIZE_SK, EscaperKillers_COLL_SIZE_SK + 16.)
	call SmallKiller_init(this_1)
endfunction

function new_SmallKiller_3744 takes unit existing returns integer
	local integer this_1 = alloc_SmallKiller()
	call construct_SmallKiller3(this_1, existing)
	return this_1
endfunction

function callback_forUnitsOfPlayer_SecondDesertMaze_SecondDesert_2045 takes integer this_1, unit u_1 returns nothing
	if unit_getTypeId(u_1) == BuilderConstants_SMALL_SAND_KILLER_ID then
		call new_SmallKiller_3744(u_1)
	endif
endfunction

function alloc_Arcanery takes nothing returns integer
	local integer this_1
	if Serializable_firstFree == 0 then
		if Serializable_maxIndex < JASS_MAX_ARRAY_SIZE then
			set Serializable_maxIndex = Serializable_maxIndex + 1
			set this_1 = Serializable_maxIndex
			set Serializable_typeId[this_1] = 1195
		else
			call error("Out of memory: Could not create Arcanery.")
			set this_1 = 0
		endif
	else
		set Serializable_firstFree = Serializable_firstFree - 1
		set this_1 = Serializable_nextFree[Serializable_firstFree]
		set Serializable_typeId[this_1] = 1195
	endif
	return this_1
endfunction

function Arcanery_init takes integer this_1 returns nothing
	set Arcanery_arcMode[this_1] = 0
	set Arcanery_expMode[this_1] = 1
endfunction

function Arcanery_recreateEffect takes integer this_1 returns nothing
	local integer temp
	if Arcanery_currentEffect[this_1] != 0 then
		set temp = Arcanery_arcMode[this_1]
		if temp == 0 then
			call dispatch_Fx_Fx_Fx_setFx(Arcanery_currentEffect[this_1], Abilities_silenceTarget)
		elseif temp == 1 then
			call dispatch_Fx_Fx_Fx_setFx(Arcanery_currentEffect[this_1], "war3mapImported\\BootsofSpeed.mdx")
		else
			call dispatch_Fx_Fx_Fx_setFx(Arcanery_currentEffect[this_1], "TC_EnergyBolt.mdx")
		endif
	endif
endfunction

function dispatch_Arcanery_Arcanery_Arcanery_recreateEffect takes integer this_1 returns nothing
	if Serializable_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling Arcanery.recreateEffect")
		else
			call error("Called Arcanery.recreateEffect on invalid object.")
		endif
	endif
	call Arcanery_recreateEffect(this_1)
endfunction

function construct_Fx5 takes integer this_1, real pos_x_1, real pos_y_1, real pos_z, real facing_radians returns nothing
	call Fx_init(this_1)
	set Fx_dummy[this_1] = DummyRecycler_get(vec3_toVec2(pos_x_1, pos_y_1, pos_z), vec3_toVec2_return_y, facing_radians)
	call dispatch_Fx_Fx_Fx_setZ(this_1, pos_z)
endfunction

function new_Fx takes real pos_x_1, real pos_y_1, real pos_z, real facing_radians returns integer
	local integer this_1 = alloc_Fx()
	call construct_Fx5(this_1, pos_x_1, pos_y_1, pos_z, facing_radians)
	return this_1
endfunction

function construct_Arcanery takes integer this_1, unit existing returns nothing
	local integer receiver
	call construct_StaticBaseObject(this_1, unit_getPos(existing), unit_getPos_return_y, existing, 102., ref_function_Arcanery_onEnterEv, ref_function_code__Arcanery_Arcanery)
	call Arcanery_init(this_1)
	call dispatch_StaticBaseObject_BaseObject_StaticBaseObject_clearQuestionmark(this_1)
	set receiver = new_Fx(vec3_op_plus(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1], 0., 0., 76.), vec3_op_plus_return_y, vec3_op_plus_return_z, 0.)
	call dispatch_Fx_Fx_Fx_setScale(receiver, 1.25)
	set Arcanery_currentEffect[this_1] = receiver
	call dispatch_Arcanery_Arcanery_Arcanery_recreateEffect(this_1)
endfunction

function new_Arcanery takes unit existing returns integer
	local integer this_1 = alloc_Arcanery()
	call construct_Arcanery(this_1, existing)
	return this_1
endfunction

function construct_StaticEscaperSensorSetup4 takes integer this_1, unit pactor, real radius, real sensorHeight returns nothing
	local integer temp = this_1
	local unit receiver = createUnit_2356(unit_getOwner(pactor), unit_getTypeId(pactor), unit_getPos3Zero(pactor), unit_getPos3Zero_return_y, unit_getPos3Zero_return_z, unit_getFacingAngle(pactor))
	call unit_addAbility(receiver, Basics_LOCUST_ID)
	call construct_StaticSetupObject(temp, receiver, pactor, radius, ref_function_code__StaticEscaperSensorSetup_EscaperSensor_2648)
	call StaticEscaperSensorSetup_init(this_1)
	set StaticEscaperSensorSetup_sensorHeight[this_1] = sensorHeight
	call dispatch_UnitEntity_Entity_UnitEntity_setXY(this_1, vec3_op_plus_4284(vec2_toVec3(unit_getPos(pactor), unit_getPos_return_y), vec2_toVec3_return_y, vec2_toVec3_return_z, 0.01, 0.), vec3_op_plus_return_y_3134, vec3_op_plus_return_z_3136)
endfunction

function construct_BigObstacle takes integer this_1, unit existing returns nothing
	call construct_StaticEscaperSensorSetup4(this_1, existing, Obstacle_EVENT_RADIUS_BIG, Obstacle_EVENT_RADIUS_BIG)
	call BigObstacle_init(this_1)
endfunction

function new_BigObstacle takes unit existing returns integer
	local integer this_1 = alloc_BigObstacle()
	call construct_BigObstacle(this_1, existing)
	return this_1
endfunction

function alloc_Door takes nothing returns integer
	local integer this_1
	if Serializable_firstFree == 0 then
		if Serializable_maxIndex < JASS_MAX_ARRAY_SIZE then
			set Serializable_maxIndex = Serializable_maxIndex + 1
			set this_1 = Serializable_maxIndex
			set Serializable_typeId[this_1] = 1214
		else
			call error("Out of memory: Could not create Door.")
			set this_1 = 0
		endif
	else
		set Serializable_firstFree = Serializable_firstFree - 1
		set this_1 = Serializable_nextFree[Serializable_firstFree]
		set Serializable_typeId[this_1] = 1214
	endif
	return this_1
endfunction

function Door_init takes integer this_1 returns nothing
	set Door_col[this_1] = 0
	set Door_vertical[this_1] = false
	set Door_opened[this_1] = false
endfunction

function construct_Door takes integer this_1, unit existing returns nothing
	call construct_StaticSetupObject(this_1, createUnit(unit_getOwner(existing), BuilderConstants_DOORDUMMY_ID, unit_getPos(existing), unit_getPos_return_y, real_asAngleDegrees(270.)), existing, Door_EVENT_RADIUS, ref_function_Door_keyopen)
	call Door_init(this_1)
	set Door_pathing[this_1] = createUnit_2356(Entity_owner[this_1], Door_DOORPATH, Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1], real_fromDeg(270.))
endfunction

function new_Door takes unit existing returns integer
	local integer this_1 = alloc_Door()
	call construct_Door(this_1, existing)
	return this_1
endfunction

function construct_GlaiveKiller3 takes integer this_1, unit existing returns nothing
	call construct_EscaperSensorSetup4(this_1, existing, EscaperKillers_COLL_SIZE_GLAIVE, EscaperKillers_COLL_SIZE_GLAIVE)
	call GlaiveKiller_init(this_1)
endfunction

function new_GlaiveKiller_3679 takes unit existing returns integer
	local integer this_1 = alloc_GlaiveKiller()
	call construct_GlaiveKiller3(this_1, existing)
	return this_1
endfunction

function alloc_HighObstacle takes nothing returns integer
	local integer this_1
	if Serializable_firstFree == 0 then
		if Serializable_maxIndex < JASS_MAX_ARRAY_SIZE then
			set Serializable_maxIndex = Serializable_maxIndex + 1
			set this_1 = Serializable_maxIndex
			set Serializable_typeId[this_1] = 1219
		else
			call error("Out of memory: Could not create HighObstacle.")
			set this_1 = 0
		endif
	else
		set Serializable_firstFree = Serializable_firstFree - 1
		set this_1 = Serializable_nextFree[Serializable_firstFree]
		set Serializable_typeId[this_1] = 1219
	endif
	return this_1
endfunction

function HighObstacle_init takes integer this_1 returns nothing
endfunction

function construct_HighObstacle takes integer this_1, unit existing returns nothing
	call construct_StaticEscaperSensorSetup4(this_1, existing, Obstacle_EVENT_RADIUS_HIGH, Obstacle_EVENT_HEIGHT_HIGH)
	call HighObstacle_init(this_1)
endfunction

function new_HighObstacle takes unit existing returns integer
	local integer this_1 = alloc_HighObstacle()
	call construct_HighObstacle(this_1, existing)
	return this_1
endfunction

function alloc_RevivePoint takes nothing returns integer
	local integer this_1
	if Serializable_firstFree == 0 then
		if Serializable_maxIndex < JASS_MAX_ARRAY_SIZE then
			set Serializable_maxIndex = Serializable_maxIndex + 1
			set this_1 = Serializable_maxIndex
			set Serializable_typeId[this_1] = 1216
		else
			call error("Out of memory: Could not create RevivePoint.")
			set this_1 = 0
		endif
	else
		set Serializable_firstFree = Serializable_firstFree - 1
		set this_1 = Serializable_nextFree[Serializable_firstFree]
		set Serializable_typeId[this_1] = 1216
	endif
	return this_1
endfunction

function RevivePoint_init takes integer this_1 returns nothing
	set RevivePoint_reached[this_1] = false
	set RevivePoint_startmaze[this_1] = -1
endfunction

function int_bitOr takes integer this_1, integer other returns integer
	return BlzBitOr(this_1, other)
endfunction

function bitset_set takes integer this_val, integer index returns integer
	set bitset_set_return_val = int_bitOr(this_val, BitSet_pows[index])
	return bitset_set_return_val
endfunction

function ebrtile_addModifier takes integer this_x, integer this_y, integer this_key, integer this_currentType, integer this_lastType, integer this_modifiers_val, integer modifier returns nothing
	local hashtable temp = TerrainData_tileMap
	local integer temp_1 = this_key
	local integer tuple_temp = bitset_set(this_modifiers_val, modifier)
	local integer temp_tuple_val = tuple_temp
	call hashtable_saveInt(temp, temp_1, 3, temp_tuple_val)
endfunction

function construct_RevivePoint takes integer this_1, unit existing returns nothing
	local integer tile_x
	local integer tile_y
	local integer tile_key
	local integer tile_currentType
	local integer tile_lastType
	local integer tile_modifiers_val
	local integer tuple_temp
	local integer tuple_temp_1
	local integer tuple_temp_2
	local integer tuple_temp_3
	local integer tuple_temp_4
	local integer tuple_temp_5
	call construct_StaticSetupObject(this_1, existing, createUnit(unit_getOwner(existing), BuilderConstants_REVIVE_POINT_ID, unit_getPos(existing), unit_getPos_return_y, 0.), Revivepoint_EVENT_RADIUS, ref_function_RevivePoint_onReach)
	call RevivePoint_init(this_1)
	set tuple_temp = vec3_getEBRTile(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1])
	set tuple_temp_1 = vec3_getEBRTile_return_y
	set tuple_temp_2 = vec3_getEBRTile_return_key
	set tuple_temp_3 = vec3_getEBRTile_return_currentType
	set tuple_temp_4 = vec3_getEBRTile_return_lastType
	set tuple_temp_5 = vec3_getEBRTile_return_modifiers_val
	set tile_x = tuple_temp
	set tile_y = tuple_temp_1
	set tile_key = tuple_temp_2
	set tile_currentType = tuple_temp_3
	set tile_lastType = tuple_temp_4
	set tile_modifiers_val = tuple_temp_5
	call ebrtile_addModifier(tile_x, tile_y, tile_key, tile_currentType, tile_lastType, tile_modifiers_val, 4)
endfunction

function new_RevivePoint takes unit existing returns integer
	local integer this_1 = alloc_RevivePoint()
	call construct_RevivePoint(this_1, existing)
	return this_1
endfunction

function construct_SmallObstacle takes integer this_1, unit existing returns nothing
	call construct_StaticEscaperSensorSetup4(this_1, existing, Obstacle_EVENT_RADIUS_SMALL, Obstacle_EVENT_RADIUS_SMALL)
	call SmallObstacle_init(this_1)
endfunction

function new_SmallObstacle takes unit existing returns integer
	local integer this_1 = alloc_SmallObstacle()
	call construct_SmallObstacle(this_1, existing)
	return this_1
endfunction

function checkStaffUnit takes unit u_1 returns nothing
	local integer temp
	local integer r
	call Log_debug("check staff unit")
	set temp = unit_getTypeId(u_1)
	if temp == BuilderConstants_REVIVE_POINT_ID then
		call Log_debug("init startmaze rev")
		set r = new_RevivePoint(u_1)
		if u_1 == gg_unit_revp_0002 then
			set RevivePoint_startmaze[r] = 0
		elseif u_1 == gg_unit_revp_0085 then
			set RevivePoint_startmaze[r] = 1
		elseif u_1 == gg_unit_revp_0022 then
			set RevivePoint_startmaze[r] = 2
		elseif u_1 == gg_unit_revp_0226 then
			set RevivePoint_startmaze[r] = 3
		elseif u_1 == gg_unit_revp_0322 then
			set RevivePoint_startmaze[r] = 4
			set Startmazes_svRev = r
		endif
	elseif temp == BuilderConstants_DOORORDER_ID then
		if u_1 != gg_unit_dor2_0023 and u_1 != gg_unit_dor2_0011 then
			call new_Door(u_1)
		endif
	elseif temp == ObstacleObjects_BOBS_ICE_ID then
		call new_BigObstacle(u_1)
	elseif temp == ObstacleObjects_SOBS_DESERT_ID then
		call new_SmallObstacle(u_1)
	elseif temp == ObstacleObjects_BOBS_CITADEL_ID then
		call new_BigObstacle(u_1)
	elseif temp == ObstacleObjects_SOBS_CITADEL_ID then
		call new_SmallObstacle(u_1)
	elseif temp == BuilderConstants_SMALL_GRASS_KILLER_ID then
		call new_SmallKiller_3744(u_1)
	elseif temp == BuilderConstants_BIG_GRASS_KILLER_ID then
		call new_BigKiller_3619(u_1)
	elseif temp == ObstacleObjects_BOBS_DESERT_ID then
		call new_BigObstacle(u_1)
	elseif temp == ObstacleObjects_SOBS_ICE_ID then
		call new_SmallObstacle(u_1)
	elseif temp == BuilderConstants_BIG_ICE_KILLER_ID then
		call new_BigKiller_3619(u_1)
	elseif temp == BuilderConstants_SMALL_ICE_KILLER_ID then
		call new_SmallKiller_3744(u_1)
	elseif temp == BuilderConstants_BIG_CITADEL_KILLER_ID then
		call new_BigKiller_3619(u_1)
	elseif temp == BuilderConstants_SMALL_CITADEL_KILLER_ID then
		call new_SmallKiller_3744(u_1)
	elseif temp == EscaperKillers_GLAIVE_KILLER_ID then
		call new_GlaiveKiller_3679(u_1)
	elseif temp == ObstacleObjects_SOBS_GRASS_ID then
		call new_SmallObstacle(u_1)
	elseif temp == ObstacleObjects_BOBS_GRASS_ID then
		call new_BigObstacle(u_1)
	elseif temp == ObstacleObjects_HOBS_GRASS_ID then
		call new_HighObstacle(u_1)
	elseif temp == BuilderConstants_ARCANERY_ID then
		call new_Arcanery(u_1)
	endif
endfunction

function callback_forUnitsOfPlayer_Startmazes takes integer this_1, unit u_1 returns nothing
	call checkStaffUnit(u_1)
endfunction

function LinkedList_joinBy takes integer this_1, string separator returns string
	local string joined = ""
	local integer iter = dispatch_LinkedList_LinkedList_LinkedList_iterator(this_1)
	local integer from = iter
	local string str
	loop
		exitwhen  not LLIterator_hasNext(from)
		set str = stringFromIndex(LLIterator_next(from))
		if dispatch_LLIterator_LinkedList_LLIterator_hasNext(iter) then
			set joined = joined + str + separator
		else
			set joined = joined + str
		endif
	endloop
	call dispatch_LLIterator_LinkedList_LLIterator_close(iter)
	return joined
endfunction

function Texter_setText takes integer this_1, string txt returns nothing
	call dispatch_StaticBaseObject_BaseObject_StaticBaseObject_clearQuestionmark(this_1)
	call texttag_center(FText_tt[Texter_text[this_1]], dispatch_UnitEntity_Entity_UnitEntity_getPos(this_1), dispatch_UnitEntity_Entity_UnitEntity_getPos_return_y, dispatch_UnitEntity_Entity_UnitEntity_getPos_return_z, txt, 10.)
	if Texter_hidden[this_1] then
		call createFText_2346(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1], 0., 0.05, txt, 10., 2., Colors_COLOR_WHITE_red, Colors_COLOR_WHITE_green, Colors_COLOR_WHITE_blue, Colors_COLOR_WHITE_alpha, Entity_owner[this_1])
	endif
endfunction

function dispatch_Texter_Texter_Texter_setText takes integer this_1, string txt returns nothing
	if Serializable_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling Texter.setText")
		else
			call error("Called Texter.setText on invalid object.")
		endif
	endif
	call Texter_setText(this_1, txt)
endfunction

function run_forSelectedTexters_add_Texter takes integer this_1, integer t returns nothing
	call dispatch_Texter_Texter_Texter_setText(t, LinkedList_joinBy(tokens[this_1], " "))
endfunction

function run_forSelectedTexters_add_Texter_4025 takes integer this_1, integer t returns nothing
	call dispatch_Texter_Texter_Texter_show(t)
endfunction

function run_forSelectedTexters_add_Texter_4026 takes integer this_1, integer t returns nothing
	call dispatch_Texter_Texter_Texter_hide(t)
endfunction

function dispatch_TexterClsr_Texter_TexterClsr_run takes integer this_1, integer texter returns nothing
	if TexterClsr_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling TexterClsr.run")
		else
			call error("Called TexterClsr.run on invalid object.")
		endif
	endif
	if TexterClsr_typeId[this_1] <= 1499 then
		if TexterClsr_typeId[this_1] <= 1498 then
			call run_forSelectedTexters_add_Texter(this_1, texter)
		else
			call run_forSelectedTexters_add_Texter_4025(this_1, texter)
		endif
	else
		call run_forSelectedTexters_add_Texter_4026(this_1, texter)
	endif
endfunction

function callback_forUnitsOfPlayer_Texter takes integer this_1, unit u_1 returns nothing
	if IsUnitSelected(u_1, GetTriggerPlayer()) and unit_getTypeId(u_1) == BuilderConstants_TEXTER_ID then
		call dispatch_TexterClsr_Texter_TexterClsr_run(cb_2284[this_1], unit_getEntity(u_1))
	endif
endfunction

function callback_forUnitsOfPlayer_Texter_Texter takes integer this_1, unit u_1 returns nothing
	local integer ent
	local integer obj_1
	if IsUnitSelected(u_1, Entity_owner[this_2957[this_1]]) then
		set ent = unit_getEntity(u_1)
		if Serializable_typeId[ent] == 1206 then
			set obj_1 = unit_getEntity(u_1)
			call dispatch_Texter_Texter_Texter_show(obj_1)
		endif
	endif
endfunction

function callback_forUnitsOfPlayer_Texter_Texter_2049 takes integer this_1, unit u_1 returns nothing
	local integer ent
	local integer obj_1
	if IsUnitSelected(u_1, Entity_owner[this_2958[this_1]]) then
		set ent = unit_getEntity(u_1)
		if Serializable_typeId[ent] == 1206 then
			set obj_1 = unit_getEntity(u_1)
			call dispatch_Texter_Texter_Texter_hide(obj_1)
		endif
	endif
endfunction

function getColorFromString takes string s returns integer
	local boolean isstdcolor = false
	local integer tuple_temp = 255
	local integer tuple_temp_1 = 255
	local integer tuple_temp_2 = 255
	local integer stringcolor_red = tuple_temp
	local integer stringcolor_green = tuple_temp_1
	local integer stringcolor_blue = tuple_temp_2
	local integer i = 1
	local integer component
	local string tempstring
	local integer ii
	local integer temp
	local integer temp_1
	local integer tuple_temp_3
	local integer tuple_temp_4
	local integer tuple_temp_5
	loop
		exitwhen i > 12
		if Texter_stdcolors[i] + " " == s then
			set tuple_temp_3 = playercolor_toColor(player_getColor(Player_players[i - 1]))
			set tuple_temp_4 = playercolor_toColor_return_green
			set tuple_temp_5 = playercolor_toColor_return_blue
			set stringcolor_red = tuple_temp_3
			set stringcolor_green = tuple_temp_4
			set stringcolor_blue = tuple_temp_5
			set isstdcolor = true
		endif
		set i = i + 1
	endloop
	if  not isstdcolor then
		set component = 0
		set tempstring = ""
		set ii = 0
		set temp = StringLength(s) - 1
		loop
			exitwhen ii > temp
			if SubString(s, ii, ii + 1) != " " then
				set tempstring = tempstring + SubString(s, ii, ii + 1)
			else
				set temp_1 = component
				if temp_1 == 0 then
					set stringcolor_red = S2I(tempstring)
				elseif temp_1 == 1 then
					set stringcolor_green = S2I(tempstring)
				elseif temp_1 == 2 then
					set stringcolor_blue = S2I(tempstring)
				endif
				set component = component + 1
				set tempstring = ""
			endif
			set ii = ii + 1
		endloop
	endif
	set getColorFromString_return_red = stringcolor_red
	set getColorFromString_return_green = stringcolor_green
	set getColorFromString_return_blue = stringcolor_blue
	return getColorFromString_return_red
endfunction

function unit_setVertexColor_4207 takes unit this_1, integer col_red, integer col_green, integer col_blue returns nothing
	call SetUnitVertexColor(this_1, col_red, col_green, col_blue, 255)
endfunction

function Texter_setColor takes integer ent, string color returns nothing
	local integer tuple_temp = getColorFromString(color + " ")
	local integer tuple_temp_1 = getColorFromString_return_green
	local integer tuple_temp_2 = getColorFromString_return_blue
	local integer textcolor_red = tuple_temp
	local integer textcolor_green = tuple_temp_1
	local integer textcolor_blue = tuple_temp_2
	local integer obj_1
	local integer obj_2
	local integer obj_3
	local integer instanceOfTemp
	local integer tuple_temp_3
	local integer tuple_temp_4
	local integer tuple_temp_5
	if Serializable_typeId[ent] == 1206 then
		set obj_1 = ent
		if Texter_col_red[obj_1] != textcolor_red or Texter_col_green[obj_1] != textcolor_green or Texter_col_blue[obj_1] != textcolor_blue then
			set tuple_temp_3 = textcolor_red
			set tuple_temp_4 = textcolor_green
			set tuple_temp_5 = textcolor_blue
			set Texter_col_red[obj_1] = tuple_temp_3
			set Texter_col_green[obj_1] = tuple_temp_4
			set Texter_col_blue[obj_1] = tuple_temp_5
			call texttag_setColor(FText_tt[Texter_text[obj_1]], Texter_col_red[obj_1], Texter_col_green[obj_1], Texter_col_blue[obj_1], 0)
			call createFText_2346(Entity_pos_x[obj_1], Entity_pos_y[obj_1], Entity_pos_z[obj_1], 0., 0.05, "Color Set", 10., 2., color_withAlpha(Texter_col_red[obj_1], Texter_col_green[obj_1], Texter_col_blue[obj_1], 0), color_withAlpha_return_green, color_withAlpha_return_blue, color_withAlpha_return_alpha, Entity_owner[obj_1])
		endif
	elseif Serializable_typeId[ent] == 1213 then
		set obj_2 = ent
		call unit_setVertexColor_4207(UnitEntity_actor[obj_2], textcolor_red, textcolor_green, textcolor_blue)
		call unit_setVertexColor_4207(StaticSetupObject_setup[obj_2], textcolor_red, textcolor_green, textcolor_blue)
	else
		set instanceOfTemp = Serializable_typeId[ent]
		if instanceOfTemp >= 1172 and instanceOfTemp <= 1192 then
			set obj_3 = ent
			call unit_setVertexColor_4207(UnitEntity_actor[obj_3], textcolor_red, textcolor_green, textcolor_blue)
			call unit_setVertexColor_4207(SetupObject_setup[obj_3], textcolor_red, textcolor_green, textcolor_blue)
		endif
	endif
endfunction

function callback_forUnitsOfPlayer_add_Texter takes integer this_1, unit u_1 returns nothing
	if IsUnitSelected(u_1, GetTriggerPlayer()) then
		call Texter_setColor(unit_getEntity(u_1), LinkedList_joinBy(tokens_3016[this_1], " "))
	endif
endfunction

function SetupObject_setFacing takes integer this_1, real angl_radians returns nothing
	call unit_setFacing(UnitEntity_actor[this_1], angl_radians)
	call unit_setFacing(SetupObject_setup[this_1], angl_radians)
endfunction

function dispatch_SetupObject_SetupObject_SetupObject_setFacing takes integer this_1, real angl_radians returns nothing
	if Serializable_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling SetupObject.setFacing")
		else
			call error("Called SetupObject.setFacing on invalid object.")
		endif
	endif
	call SetupObject_setFacing(this_1, angl_radians)
endfunction

function callback_forUnitsSelected_add_Pointer takes integer this_1, unit u_1 returns nothing
	local integer pointer
	if Serializable_typeId[unit_getEntity(u_1)] == 1184 then
		set pointer = unit_getEntity(u_1)
		call dispatch_SetupObject_SetupObject_SetupObject_setFacing(pointer, angle_radians[this_1])
	endif
endfunction

function dispatch_ForGroupCallback_ClosureForGroups_ForGroupCallback_callback takes integer this_1, unit u_1 returns nothing
	if ForGroupCallback_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling ForGroupCallback.callback")
		else
			call error("Called ForGroupCallback.callback on invalid object.")
		endif
	endif
	if ForGroupCallback_typeId[this_1] <= 872 then
		if ForGroupCallback_typeId[this_1] <= 866 then
			if ForGroupCallback_typeId[this_1] <= 863 then
				if ForGroupCallback_typeId[this_1] <= 861 then
					if ForGroupCallback_typeId[this_1] <= 860 then
						call callback_forEachFrom_LinkedList(this_1, u_1)
					else
						call callback_forEachFrom_Preloader(this_1, u_1)
					endif
				elseif ForGroupCallback_typeId[this_1] <= 862 then
					call callback_forUnitsInRange_Jumper_Jumper(this_1, u_1)
				else
					call callback_forUnitsInRange_MemoryAccessPedestal_Pedestal(this_1, u_1)
				endif
			elseif ForGroupCallback_typeId[this_1] <= 865 then
				if ForGroupCallback_typeId[this_1] <= 864 then
					call callback_forUnitsInRange_Projectile_Projectile(this_1, u_1)
				else
					call callback_forUnitsInRange_Spinner_Spinner(this_1, u_1)
				endif
			else
				call callback_forUnitsInRange_Trap_Trap(this_1, u_1)
			endif
		elseif ForGroupCallback_typeId[this_1] <= 869 then
			if ForGroupCallback_typeId[this_1] <= 868 then
				if ForGroupCallback_typeId[this_1] <= 867 then
					call callback_forUnitsInRange_Waypoint_Waypoint(this_1, u_1)
				else
					call callback_forUnitsInRange_WeaponTypes(this_1, u_1)
				endif
			else
				call callback_forUnitsInRange_WeaponTypes_2036(this_1, u_1)
			endif
		elseif ForGroupCallback_typeId[this_1] <= 871 then
			if ForGroupCallback_typeId[this_1] <= 870 then
				call callback_forUnitsInRange_WeaponTypes_2037(this_1, u_1)
			else
				call callback_forUnitsInRange_doAfter_Minion_Minion(this_1, u_1)
			endif
		else
			call callback_forUnitsInRange_doAfter_SpellTarget_BossSpellTarget(this_1, u_1)
		endif
	elseif ForGroupCallback_typeId[this_1] <= 878 then
		if ForGroupCallback_typeId[this_1] <= 875 then
			if ForGroupCallback_typeId[this_1] <= 874 then
				if ForGroupCallback_typeId[this_1] <= 873 then
					call callback_forUnitsInRect_MGAgar_MGAgar(this_1, u_1)
				else
					call callback_forUnitsInRect_MGSlide_MGSlide(this_1, u_1)
				endif
			else
				call callback_forUnitsInRect_MGSlide_MGSlide_2042(this_1, u_1)
			endif
		elseif ForGroupCallback_typeId[this_1] <= 877 then
			if ForGroupCallback_typeId[this_1] <= 876 then
				call callback_forUnitsInRect_SetupBox_SetupBox(this_1, u_1)
			else
				call callback_forUnitsOfPlayer_SecondDesertMaze_SecondDesert(this_1, u_1)
			endif
		else
			call callback_forUnitsOfPlayer_SecondDesertMaze_SecondDesert_2045(this_1, u_1)
		endif
	elseif ForGroupCallback_typeId[this_1] <= 881 then
		if ForGroupCallback_typeId[this_1] <= 880 then
			if ForGroupCallback_typeId[this_1] <= 879 then
				call callback_forUnitsOfPlayer_Startmazes(this_1, u_1)
			else
				call callback_forUnitsOfPlayer_Texter(this_1, u_1)
			endif
		else
			call callback_forUnitsOfPlayer_Texter_Texter(this_1, u_1)
		endif
	elseif ForGroupCallback_typeId[this_1] <= 883 then
		if ForGroupCallback_typeId[this_1] <= 882 then
			call callback_forUnitsOfPlayer_Texter_Texter_2049(this_1, u_1)
		else
			call callback_forUnitsOfPlayer_add_Texter(this_1, u_1)
		endif
	else
		call callback_forUnitsSelected_add_Pointer(this_1, u_1)
	endif
endfunction

function forUnitsInRange_3288 takes real pos_x_1, real pos_y_1, real radius, boolean collisionSizeFiltering, integer c returns nothing
	local unit u_1
	local group from
	if collisionSizeFiltering then
		call pushCallback(c)
		call GroupEnumUnitsInRange(Group_ENUM_GROUP, pos_x_1, pos_y_1, radius + Basics_MAX_COLLISION_SIZE, null)
		set from = Group_ENUM_GROUP
		loop
			exitwhen  not group_hasNext(from)
			set u_1 = group_next(from)
			if IsUnitInRangeXY(u_1, pos_x_1, pos_y_1, radius) then
				call dispatch_ForGroupCallback_ClosureForGroups_ForGroupCallback_callback(c, u_1)
			endif
		endloop
		call popCallback()
	else
		call pushCallback(c)
		call GroupEnumUnitsInRange(ClosureForGroups_DUMMY_GROUP, pos_x_1, pos_y_1, radius, ClosureForGroups_filter)
		call popCallback()
	endif
endfunction

function forUnitsInRange takes real pos_x_1, real pos_y_1, real radius, integer c returns nothing
	call forUnitsInRange_3288(pos_x_1, pos_y_1, radius, false, c)
endfunction

function Spinner_onCast takes integer this_1 returns nothing
	local integer id = GetSpellAbilityId()
	local integer temp = id
	local unit u_1
	local integer data_1
	local integer clVar
	local real temp_x
	local real temp_y
	local real tuple_temp
	local real tuple_temp_1
	if temp == BuilderConstants_TURN_ON_ID then
		call dispatch_SetupObject_SetupObject_SetupObject_setEnabled(this_1, true)
	elseif temp == BuilderConstants_TURN_OFF_ID then
		call dispatch_SetupObject_SetupObject_SetupObject_setEnabled(this_1, false)
	elseif temp == SpinnerObjects_SPIN_ADD_SINGLE_ID then
		set u_1 = GetSpellTargetUnit()
		set data_1 = unit_getEntity(u_1)
		if Entity_owner[this_1] == Entity_owner[this_1] then
			call dispatch_Spinner_Spinner_Spinner_checkObj(this_1, data_1)
		endif
	elseif temp == SpinnerObjects_SPIN_ADD_GROUP_ID then
		set tuple_temp = EventData_getSpellTargetPos()
		set tuple_temp_1 = EventData_getSpellTargetPos_return_y
		set temp_x = tuple_temp
		set temp_y = tuple_temp_1
		set clVar = alloc_ForGroupCallback_forUnitsInRange_Spinner_Spinner()
		set this_2997[clVar] = this_1
		call forUnitsInRange(temp_x, temp_y, 300., clVar)
	elseif temp == SpinnerObjects_SPIN_INC_SPEED_ID then
		call dispatch_ConfigValue_ConfigValue_ConfigValue_increment(Spinner_spinSpeed[this_1], this_1, 10. * Angle_DEGTORAD)
	elseif temp == SpinnerObjects_SPIN_DEC_SPEED_ID then
		call dispatch_ConfigValue_ConfigValue_ConfigValue_decrement(Spinner_spinSpeed[this_1], this_1,  - (10. * Angle_DEGTORAD))
	elseif temp == SpinnerObjects_SPIN_COS_INC_ID then
		call dispatch_ConfigValue_ConfigValue_ConfigValue_increment(Spinner_cosFactor[this_1], this_1, 1.)
	elseif temp == SpinnerObjects_SPIN_COS_DEC_ID then
		if dispatch_ConfigValue_ConfigValue_ConfigValue_get(Spinner_cosFactor[this_1]) == 0. and dispatch_ConfigValue_ConfigValue_ConfigValue_get(Spinner_sinFactor[this_1]) == 0. then
			set Spinner_useSuperFormula[this_1] =  not Spinner_useSuperFormula[this_1]
		else
			call dispatch_ConfigValue_ConfigValue_ConfigValue_decrement(Spinner_cosFactor[this_1], this_1, 0.)
		endif
	elseif temp == SpinnerObjects_SPIN_SIN_INC_ID then
		call dispatch_ConfigValue_ConfigValue_ConfigValue_increment(Spinner_sinFactor[this_1], this_1, 1.)
	elseif temp == SpinnerObjects_SPIN_SIN_DEC_ID then
		call dispatch_ConfigValue_ConfigValue_ConfigValue_decrement(Spinner_sinFactor[this_1], this_1, 0.)
	endif
endfunction

function dispatch_Spinner_Spinner_Spinner_onCast takes integer this_1 returns nothing
	if Serializable_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling Spinner.onCast")
		else
			call error("Called Spinner.onCast on invalid object.")
		endif
	endif
	call Spinner_onCast(this_1)
endfunction

function onEvent_add_Spinner_Spinner takes integer this_1 returns nothing
	call dispatch_Spinner_Spinner_Spinner_onCast(this_2995[this_1])
endfunction

function onEvent_add_Spinner_Spinner_3857 takes integer this_1 returns nothing
	call dispatch_Spinner_Spinner_Spinner_onCast(this_2996[this_1])
endfunction

function StaticBaseObject_setRallyPoint takes integer this_1, real tpos_x_1, real tpos_y_1 returns nothing
	local real tuple_temp = vec2_toVec3(tpos_x_1, tpos_y_1)
	local real tuple_temp_1 = vec2_toVec3_return_y
	local real tuple_temp_2 = vec2_toVec3_return_z
	local real tuple_temp_3
	set StaticBaseObject_rallyPoint_x[this_1] = tuple_temp
	set StaticBaseObject_rallyPoint_y[this_1] = tuple_temp_1
	set StaticBaseObject_rallyPoint_z[this_1] = tuple_temp_2
	set StaticBaseObject_rallyUnit[this_1] = null
	set tuple_temp_3 = vec3_angleTo2d_4263(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1], StaticBaseObject_rallyPoint_x[this_1], StaticBaseObject_rallyPoint_y[this_1], StaticBaseObject_rallyPoint_z[this_1])
	set StaticBaseObject_rallyAngle_radians[this_1] = tuple_temp_3
	call dispatch_StaticBaseObject_BaseObject_StaticBaseObject_clearQuestionmark(this_1)
endfunction

function dispatch_StaticBaseObject_BaseObject_StaticBaseObject_setRallyPoint takes integer this_1, real tpos_x_1, real tpos_y_1 returns nothing
	if Serializable_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling StaticBaseObject.setRallyPoint")
		else
			call error("Called StaticBaseObject.setRallyPoint on invalid object.")
		endif
	endif
	call StaticBaseObject_setRallyPoint(this_1, tpos_x_1, tpos_y_1)
endfunction

function StaticBaseObject_adjustRally takes integer this_1 returns nothing
	local widget target = GetOrderTarget()
	local unit utarget = GetOrderTargetUnit()
	local item itm = GetOrderTargetItem()
	local real tuple_temp = GetOrderPointX()
	local real tuple_temp_1 = GetOrderPointY()
	local real targetPoint_x = tuple_temp
	local real targetPoint_y = tuple_temp_1
	local integer orderid = GetIssuedOrderId()
	local integer data_1
	local integer instanceOfTemp
	local boolean andLeft
	local real tuple_temp_2
	local real tuple_temp_3
	local real tuple_temp_4
	if orderid == 851980 or orderid == 851971 then
		if target == null then
			if itm == null then
				call dispatch_StaticBaseObject_BaseObject_StaticBaseObject_setRallyPoint(this_1, targetPoint_x, targetPoint_y)
			else
				call dispatch_StaticBaseObject_BaseObject_StaticBaseObject_setRallyPoint(this_1, item_getPos(itm), item_getPos_return_y)
			endif
		else
			if utarget != null then
				set data_1 = unit_getEntity(utarget)
				if data_1 != 0 then
					set instanceOfTemp = Serializable_typeId[data_1]
					set andLeft = instanceOfTemp >= 1172 and instanceOfTemp <= 1192
				else
					set andLeft = false
				endif
				if andLeft then
					set StaticBaseObject_rallyUnit[this_1] = UnitEntity_actor[data_1]
				else
					set StaticBaseObject_rallyUnit[this_1] = utarget
				endif
				call dispatch_StaticBaseObject_BaseObject_StaticBaseObject_clearQuestionmark(this_1)
			endif
			set tuple_temp_2 = vec2_toVec3(widget_getPos(target), widget_getPos_return_y)
			set tuple_temp_3 = vec2_toVec3_return_y
			set tuple_temp_4 = vec2_toVec3_return_z
			set StaticBaseObject_rallyPoint_x[this_1] = tuple_temp_2
			set StaticBaseObject_rallyPoint_y[this_1] = tuple_temp_3
			set StaticBaseObject_rallyPoint_z[this_1] = tuple_temp_4
		endif
		if StaticBaseObject_noRally[this_1] != null then
			call effect_destr(StaticBaseObject_noRally[this_1])
			set StaticBaseObject_noRally[this_1] = null
		endif
	endif
endfunction

function dispatch_StaticBaseObject_BaseObject_StaticBaseObject_adjustRally takes integer this_1 returns nothing
	if Serializable_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling StaticBaseObject.adjustRally")
		else
			call error("Called StaticBaseObject.adjustRally on invalid object.")
		endif
	endif
	call StaticBaseObject_adjustRally(this_1)
endfunction

function onEvent_add_StaticBaseObject_BaseObject takes integer this_1 returns nothing
	call dispatch_StaticBaseObject_BaseObject_StaticBaseObject_adjustRally(unit_getEntity(GetOrderedUnit()))
endfunction

function onEvent_add_StaticBaseObject_BaseObject_3859 takes integer this_1 returns nothing
	call dispatch_StaticBaseObject_BaseObject_StaticBaseObject_adjustRally(unit_getEntity(GetOrderedUnit()))
endfunction

function StaticBaseObject_setEnabled takes integer this_1, boolean flag returns nothing
	local unit receiver
	local unit receiver_1
	local unit receiver_2
	local unit receiver_3
	local string path
	if flag and ( not StaticBaseObject_enabled[this_1]) then
		set StaticBaseObject_enabled[this_1] = true
		call dispatch_Entity_Entity_Entity_DupletListModule_activate(this_1)
		set receiver = UnitEntity_actor[this_1]
		call unit_removeAbility(receiver, BuilderConstants_TURN_ON_ID)
		set receiver_1 = receiver
		call unit_addAbility(receiver_1, BuilderConstants_TURN_OFF_ID)
		call flashEffect(Abilities_ancestralSpiritCaster, Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1])
		if StaticBaseObject_disFx[this_1] != null then
			call effect_destr(StaticBaseObject_disFx[this_1])
		endif
	elseif StaticBaseObject_enabled[this_1] then
		set StaticBaseObject_enabled[this_1] = false
		call dispatch_Entity_Entity_Entity_DupletListModule_deactivate(this_1)
		set receiver_2 = UnitEntity_actor[this_1]
		call unit_removeAbility(receiver_2, BuilderConstants_TURN_OFF_ID)
		set receiver_3 = receiver_2
		call unit_addAbility(receiver_3, BuilderConstants_TURN_ON_ID)
		if StaticBaseObject_disFx[this_1] != null then
			call effect_destr(StaticBaseObject_disFx[this_1])
		endif
		set path = ""
		if Player_localPlayer == Entity_owner[this_1] then
			set path = Abilities_sleepTarget
		endif
		set StaticBaseObject_disFx[this_1] = addEffect_1565(path, Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1])
	endif
endfunction

function dispatch_StaticBaseObject_BaseObject_StaticBaseObject_setEnabled takes integer this_1, boolean flag returns nothing
	if Serializable_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling StaticBaseObject.setEnabled")
		else
			call error("Called StaticBaseObject.setEnabled on invalid object.")
		endif
	endif
	call StaticBaseObject_setEnabled(this_1, flag)
endfunction

function StaticBaseObject_onCast takes integer this_1 returns nothing
	local integer id = GetSpellAbilityId()
	local integer temp = id
	if temp == BuilderConstants_TURN_ON_ID then
		call dispatch_StaticBaseObject_BaseObject_StaticBaseObject_setEnabled(this_1, true)
	elseif temp == BuilderConstants_TURN_OFF_ID then
		call dispatch_StaticBaseObject_BaseObject_StaticBaseObject_setEnabled(this_1, false)
	endif
endfunction

function Booster_onCast takes integer this_1 returns nothing
	local integer id
	local integer temp
	call StaticBaseObject_onCast(this_1)
	set id = GetSpellAbilityId()
	set temp = id
	if temp == Booster_SPEED_UP_ID then
		call dispatch_ConfigValue_ConfigValue_ConfigValue_increment(Booster_boostspeed[this_1], this_1, 525.)
	elseif temp == Booster_SPEED_DOWN_ID then
		call dispatch_ConfigValue_ConfigValue_ConfigValue_decrement(Booster_boostspeed[this_1], this_1, 25.)
	endif
endfunction

function Jumper_goos_set takes integer instanceId, integer arrayIndex, integer value returns nothing
	if arrayIndex < 0 or arrayIndex >= 5 then
		call error("Index out of Bounds")
	elseif arrayIndex <= 2 then
		if arrayIndex <= 1 then
			if arrayIndex <= 0 then
				set Jumper_goos_0[instanceId] = value
			else
				set Jumper_goos_1[instanceId] = value
			endif
		else
			set Jumper_goos_2[instanceId] = value
		endif
	elseif arrayIndex <= 3 then
		set Jumper_goos_3[instanceId] = value
	else
		set Jumper_goos_4[instanceId] = value
	endif
endfunction

function createImage takes string path, real pos_x_1, real pos_y_1, real sizeX, real sizeY returns image
	return CreateImage(path, sizeX, sizeY, 0., pos_x_1, pos_y_1, 0., sizeX / 2., sizeY / 2., 0., 1)
endfunction

function image_show takes image this_1 returns nothing
	call SetImageRenderAlways(this_1, true)
endfunction

function alloc_Goo takes nothing returns integer
	local integer this_1
	if Goo_firstFree == 0 then
		if Goo_maxIndex < JASS_MAX_ARRAY_SIZE then
			set Goo_maxIndex = Goo_maxIndex + 1
			set this_1 = Goo_maxIndex
			set Goo_typeId[this_1] = 890
		else
			call error("Out of memory: Could not create Goo.")
			set this_1 = 0
		endif
	else
		set Goo_firstFree = Goo_firstFree - 1
		set this_1 = Goo_nextFree[Goo_firstFree]
		set Goo_typeId[this_1] = 890
	endif
	return this_1
endfunction

function Goo_init takes integer this_1 returns nothing
endfunction

function construct_Goo takes integer this_1, image img, real pos_x_1, real pos_y_1 returns nothing
	local real tuple_temp
	local real tuple_temp_1
	call Goo_init(this_1)
	set Goo_img[this_1] = img
	set tuple_temp = pos_x_1
	set tuple_temp_1 = pos_y_1
	set Goo_pos_x[this_1] = tuple_temp
	set Goo_pos_y[this_1] = tuple_temp_1
endfunction

function new_Goo takes image img, real pos_x_1, real pos_y_1 returns integer
	local integer this_1 = alloc_Goo()
	call construct_Goo(this_1, img, pos_x_1, pos_y_1)
	return this_1
endfunction

function Jumper_onCast takes integer this_1 returns nothing
	local integer id
	local integer temp
	local unit receiver
	local unit receiver_1
	local unit receiver_2
	local unit receiver_3
	local unit receiver_4
	local unit receiver_5
	local real tpos_x_1
	local real tpos_y_1
	local image goo
	local image receiver_6
	local unit receiver_7
	local unit receiver_8
	local unit receiver_9
	local unit receiver_10
	local unit receiver_11
	local unit receiver_12
	local real tuple_temp
	local real tuple_temp_1
	call StaticBaseObject_onCast(this_1)
	set id = GetSpellAbilityId()
	set temp = id
	if temp == Jumper_MODE_FORCED_ID then
		set receiver = UnitEntity_actor[this_1]
		call unit_removeAbility(receiver, Jumper_MODE_FORCED_ID)
		set receiver_1 = receiver
		call unit_addAbility(receiver_1, Jumper_MODE_UNFORCED_ID)
		set receiver_2 = receiver_1
		call unit_setVertexColor_4207(receiver_2, 75, 95, 205)
		set Jumper_mode[this_1] = 1
		call dispatch_StaticBaseObject_BaseObject_StaticBaseObject_clearQuestionmark(this_1)
	elseif temp == Jumper_MODE_UNFORCED_ID then
		set receiver_3 = UnitEntity_actor[this_1]
		call unit_removeAbility(receiver_3, Jumper_MODE_UNFORCED_ID)
		set receiver_4 = receiver_3
		call unit_addAbility(receiver_4, Jumper_MODE_FORCED_ID)
		set receiver_5 = receiver_4
		call unit_setVertexColor_4207(receiver_5, 50, 50, 255)
		set Jumper_mode[this_1] = 0
	elseif temp == Jumper_DECREASE_FORCE_ID then
		call dispatch_ConfigValue_ConfigValue_ConfigValue_decrement(Jumper_jumpForce[this_1], this_1, 6.)
	elseif temp == Jumper_INCREASE_FORCE_ID then
		call dispatch_ConfigValue_ConfigValue_ConfigValue_increment(Jumper_jumpForce[this_1], this_1, 30.)
	elseif temp == Jumper_SPECIAL_ID then
		if Jumper_goocounter[this_1] < 5 then
			set tuple_temp = EventData_getSpellTargetPos()
			set tuple_temp_1 = EventData_getSpellTargetPos_return_y
			set tpos_x_1 = tuple_temp
			set tpos_y_1 = tuple_temp_1
			set receiver_6 = createImage("textures\\blugoo.blp", tpos_x_1, tpos_y_1, 128., 128.)
			call image_show(receiver_6)
			set goo = receiver_6
			call Jumper_goos_set(this_1, Jumper_goocounter[this_1], new_Goo(goo, tpos_x_1, tpos_y_1))
			set Jumper_goocounter[this_1] = Jumper_goocounter[this_1] + 1
			call ebrtile_addModifier(vec2_getEBRTile(EventData_getSpellTargetPos(), EventData_getSpellTargetPos_return_y), vec2_getEBRTile_return_y, vec2_getEBRTile_return_key, vec2_getEBRTile_return_currentType, vec2_getEBRTile_return_lastType, vec2_getEBRTile_return_modifiers_val, 2)
		endif
	elseif temp == BuilderConstants_MODE_BOTH_ID then
		set receiver_7 = UnitEntity_actor[this_1]
		call unit_removeAbility(receiver_7, BuilderConstants_MODE_BOTH_ID)
		set receiver_8 = receiver_7
		call unit_addAbility(receiver_8, BuilderConstants_MODE_ESCAPERS_ID)
		set Jumper_permission[this_1] = 0
	elseif temp == BuilderConstants_MODE_ESCAPERS_ID then
		set receiver_9 = UnitEntity_actor[this_1]
		call unit_removeAbility(receiver_9, BuilderConstants_MODE_ESCAPERS_ID)
		set receiver_10 = receiver_9
		call unit_addAbility(receiver_10, BuilderConstants_MODE_KILLERS_ID)
		set Jumper_permission[this_1] = 1
	elseif temp == BuilderConstants_MODE_KILLERS_ID then
		set receiver_11 = UnitEntity_actor[this_1]
		call unit_removeAbility(receiver_11, BuilderConstants_MODE_KILLERS_ID)
		set receiver_12 = receiver_11
		call unit_addAbility(receiver_12, BuilderConstants_MODE_BOTH_ID)
		set Jumper_permission[this_1] = 2
	endif
endfunction

function alloc_ForGroupCallback_forUnitsInRange_MemoryAccessPedestal_Pedestal takes nothing returns integer
	local integer this_1
	if ForGroupCallback_firstFree == 0 then
		if ForGroupCallback_maxIndex < JASS_MAX_ARRAY_SIZE then
			set ForGroupCallback_maxIndex = ForGroupCallback_maxIndex + 1
			set this_1 = ForGroupCallback_maxIndex
			set ForGroupCallback_typeId[this_1] = 863
		else
			call error("Out of memory: Could not create ForGroupCallback_forUnitsInRange_MemoryAccessPedestal_Pedestal.")
			set this_1 = 0
		endif
	else
		set ForGroupCallback_firstFree = ForGroupCallback_firstFree - 1
		set this_1 = ForGroupCallback_nextFree[ForGroupCallback_firstFree]
		set ForGroupCallback_typeId[this_1] = 863
	endif
	return this_1
endfunction

function getTileFromType takes real pos_x_1, real pos_y_1 returns integer
	local integer ttype_1 = GetTerrainType(pos_x_1, pos_y_1)
	local integer rdat = getRegionData_3304(pos_x_1, pos_y_1)
	local integer temp = ttype_1
	local integer temp_1 = temp
	local integer temp_tuple_walkableId
	local integer tuple_temp
	call dispatch_RegionData_RegionData_RegionData_getTypeSet(rdat)
	set tuple_temp = dispatch_RegionData_RegionData_RegionData_getTypeSet_return_walkableId
	set temp_tuple_walkableId = tuple_temp
	if temp_1 == temp_tuple_walkableId then
		return 1
	elseif temp == BuilderConstants_REVICE then
		return 6
	elseif temp == BuilderConstants_CONTROLLABLEICE then
		return 4
	elseif temp == BuilderConstants_UNCONTROLLABLEICE then
		return 5
	elseif temp == 1147958883 then
		return 2
	elseif temp == BuilderConstants_POISON then
		return 3
	endif
	return 0
endfunction

function alloc_TileData takes nothing returns integer
	local integer this_1
	if Serializable_firstFree == 0 then
		if Serializable_maxIndex < JASS_MAX_ARRAY_SIZE then
			set Serializable_maxIndex = Serializable_maxIndex + 1
			set this_1 = Serializable_maxIndex
			set Serializable_typeId[this_1] = 1228
		else
			call error("Out of memory: Could not create TileData.")
			set this_1 = 0
		endif
	else
		set Serializable_firstFree = Serializable_firstFree - 1
		set this_1 = Serializable_nextFree[Serializable_firstFree]
		set Serializable_typeId[this_1] = 1228
	endif
	return this_1
endfunction

function TileData_init takes integer this_1 returns nothing
	set TileData_tile[this_1] = 1
endfunction

function construct_TileData2 takes integer this_1, real realpos_x, real realpos_y, integer xoff, integer yoff, player owner returns nothing
	local real tuple_temp
	local real tuple_temp_1
	call TileData_init(this_1)
	set tuple_temp = realpos_x
	set tuple_temp_1 = realpos_y
	set TileData_pos_x[this_1] = tuple_temp
	set TileData_pos_y[this_1] = tuple_temp_1
	set TileData_xoff[this_1] = xoff
	set TileData_yoff[this_1] = yoff
	set TileData_owner[this_1] = owner
	set TileData_fx[this_1] = addEffect(Abilities_vengeanceMissile, TileData_pos_x[this_1], TileData_pos_y[this_1])
endfunction

function new_TileData_3773 takes real realpos_x, real realpos_y, integer xoff, integer yoff, player owner returns integer
	local integer this_1 = alloc_TileData()
	call construct_TileData2(this_1, realpos_x, realpos_y, xoff, yoff, owner)
	return this_1
endfunction

function vec2_toTile takes real this_x, real this_y returns real
	set vec2_toTile_return_x = real_round(this_x / 128.) * 128.
	set vec2_toTile_return_y = real_round(this_y / 128.) * 128.
	return vec2_toTile_return_x
endfunction

function MemoryAccessPedestal_addTile takes integer this_1, real tpos_x_1, real tpos_y_1, boolean w_removeIfExists returns nothing
	local real tuple_temp = vec2_toTile(tpos_x_1, tpos_y_1)
	local real tuple_temp_1 = vec2_toTile_return_y
	local real targPos_x = tuple_temp
	local real targPos_y = tuple_temp_1
	local integer mtile_x
	local integer mtile_y
	local integer mtile_key
	local integer tdata
	local integer tuple_temp_2
	local integer tuple_temp_3
	local integer tuple_temp_4
	if dispatch_RegionData_RegionData_RegionData_canBuild(getRegionData_3304(targPos_x, targPos_y), Entity_owner[this_1]) then
		set tuple_temp_2 = vec2_getEBRTile(targPos_x, targPos_y)
		set tuple_temp_3 = vec2_getEBRTile_return_y
		set tuple_temp_4 = vec2_getEBRTile_return_key
		set mtile_x = tuple_temp_2
		set mtile_y = tuple_temp_3
		set mtile_key = tuple_temp_4
		if  not dispatch_HashMap_HashMap_HashMap_has(MemoryAccessPedestal_tileMap[this_1], mtile_key) then
			if getTileFromType(targPos_x, targPos_y) != 0 then
				set tdata = new_TileData_3773(targPos_x, targPos_y, mtile_x, mtile_y, Entity_owner[this_1])
				call dispatch_LinkedList_LinkedList_LinkedList_add_1(MemoryAccessPedestal_tiles[this_1], tdata)
				call dispatch_HashMap_HashMap_HashMap_put(MemoryAccessPedestal_tileMap[this_1], mtile_key, tdata)
			endif
		endif
	endif
endfunction

function dispatch_MemoryAccessPedestal_Pedestal_MemoryAccessPedestal_addTile takes integer this_1, real tpos_x_1, real tpos_y_1, boolean w_removeIfExists returns nothing
	if Serializable_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling MemoryAccessPedestal.addTile")
		else
			call error("Called MemoryAccessPedestal.addTile on invalid object.")
		endif
	endif
	call MemoryAccessPedestal_addTile(this_1, tpos_x_1, tpos_y_1, w_removeIfExists)
endfunction

function alloc_CallbackSingle_nullTimer_MemoryAccessPedestal_Pedestal takes nothing returns integer
	local integer this_1
	if CallbackSingle_firstFree == 0 then
		if CallbackSingle_maxIndex < JASS_MAX_ARRAY_SIZE then
			set CallbackSingle_maxIndex = CallbackSingle_maxIndex + 1
			set this_1 = CallbackSingle_maxIndex
			set CallbackSingle_typeId[this_1] = 712
		else
			call error("Out of memory: Could not create CallbackSingle_nullTimer_MemoryAccessPedestal_Pedestal.")
			set this_1 = 0
		endif
	else
		set CallbackSingle_firstFree = CallbackSingle_firstFree - 1
		set this_1 = CallbackSingle_nextFree[CallbackSingle_firstFree]
		set CallbackSingle_typeId[this_1] = 712
	endif
	return this_1
endfunction

function MemoryAccessPedestal_loadSlot takes integer this_1, integer slotId_1 returns nothing
	local integer clVar = alloc_CallbackSingle_nullTimer_MemoryAccessPedestal_Pedestal()
	call construct_CallbackSingle(clVar)
	set this_3000[clVar] = this_1
	set slotId[clVar] = slotId_1
	call nullTimer(clVar)
endfunction

function dispatch_MemoryAccessPedestal_Pedestal_MemoryAccessPedestal_loadSlot takes integer this_1, integer slotId_1 returns nothing
	if Serializable_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling MemoryAccessPedestal.loadSlot")
		else
			call error("Called MemoryAccessPedestal.loadSlot on invalid object.")
		endif
	endif
	call MemoryAccessPedestal_loadSlot(this_1, slotId_1)
endfunction

function alloc_CallbackSingle_nullTimer_MemoryAccessPedestal_Pedestal_1640 takes nothing returns integer
	local integer this_1
	if CallbackSingle_firstFree == 0 then
		if CallbackSingle_maxIndex < JASS_MAX_ARRAY_SIZE then
			set CallbackSingle_maxIndex = CallbackSingle_maxIndex + 1
			set this_1 = CallbackSingle_maxIndex
			set CallbackSingle_typeId[this_1] = 713
		else
			call error("Out of memory: Could not create CallbackSingle_nullTimer_MemoryAccessPedestal_Pedestal.")
			set this_1 = 0
		endif
	else
		set CallbackSingle_firstFree = CallbackSingle_firstFree - 1
		set this_1 = CallbackSingle_nextFree[CallbackSingle_firstFree]
		set CallbackSingle_typeId[this_1] = 713
	endif
	return this_1
endfunction

function MemoryAccessPedestal_saveSlot takes integer this_1, integer slotId_1 returns nothing
	local integer clVar
	call Log_debug("Save slot " + int_toString(slotId_1))
	set clVar = alloc_CallbackSingle_nullTimer_MemoryAccessPedestal_Pedestal_1640()
	call construct_CallbackSingle(clVar)
	set this_3007[clVar] = this_1
	set slotId_2878[clVar] = slotId_1
	call nullTimer(clVar)
endfunction

function dispatch_MemoryAccessPedestal_Pedestal_MemoryAccessPedestal_saveSlot takes integer this_1, integer slotId_1 returns nothing
	if Serializable_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling MemoryAccessPedestal.saveSlot")
		else
			call error("Called MemoryAccessPedestal.saveSlot on invalid object.")
		endif
	endif
	call MemoryAccessPedestal_saveSlot(this_1, slotId_1)
endfunction

function MemoryAccessPedestal_onCast takes integer this_1 returns nothing
	local integer id
	local real tpos_x_1
	local real tpos_y_1
	local integer temp
	local integer clVar
	local integer wval
	local integer x
	local integer temp_1
	local integer y
	local integer temp_2
	local real temp_x
	local real temp_y
	local real temp_3
	local real tuple_temp
	local real tuple_temp_1
	local real tuple_temp_2
	local real tuple_temp_3
	call StaticBaseObject_onCast(this_1)
	set id = GetSpellAbilityId()
	set tuple_temp = EventData_getSpellTargetPos()
	set tuple_temp_1 = EventData_getSpellTargetPos_return_y
	set tpos_x_1 = tuple_temp
	set tpos_y_1 = tuple_temp_1
	set temp = id
	if temp == PedestalObjects_SELECT_AOE_ID then
		set tuple_temp_2 = tpos_x_1
		set tuple_temp_3 = tpos_y_1
		set temp_x = tuple_temp_2
		set temp_y = tuple_temp_3
		set temp_3 = PedestalObjects_AOE_PICK_RANGE
		set clVar = alloc_ForGroupCallback_forUnitsInRange_MemoryAccessPedestal_Pedestal()
		set this_3011[clVar] = this_1
		call forUnitsInRange(temp_x, temp_y, temp_3, clVar)
	elseif temp == PedestalObjects_SELECT_SINGLE_ID then
		if Entity_owner[unit_getEntity(GetSpellTargetUnit())] == Entity_owner[this_1] then
			call dispatch_MemoryAccessPedestal_Pedestal_MemoryAccessPedestal_addObj(this_1, unit_getEntity(GetSpellTargetUnit()), true)
		endif
	elseif temp == PedestalObjects_SELECT_TILE_ID then
		call dispatch_MemoryAccessPedestal_Pedestal_MemoryAccessPedestal_addTile(this_1, tpos_x_1, tpos_y_1, true)
	elseif temp == PedestalObjects_SAVE1_ID then
		call dispatch_MemoryAccessPedestal_Pedestal_MemoryAccessPedestal_saveSlot(this_1, 1)
	elseif temp == PedestalObjects_SAVE2_ID then
		call dispatch_MemoryAccessPedestal_Pedestal_MemoryAccessPedestal_saveSlot(this_1, 2)
	elseif temp == PedestalObjects_SAVE3_ID then
		call dispatch_MemoryAccessPedestal_Pedestal_MemoryAccessPedestal_saveSlot(this_1, 3)
	elseif temp == PedestalObjects_SAVE4_ID then
		call dispatch_MemoryAccessPedestal_Pedestal_MemoryAccessPedestal_saveSlot(this_1, 4)
	elseif temp == PedestalObjects_LOAD1_ID then
		call dispatch_MemoryAccessPedestal_Pedestal_MemoryAccessPedestal_loadSlot(this_1, 1)
	elseif temp == PedestalObjects_LOAD2_ID then
		call dispatch_MemoryAccessPedestal_Pedestal_MemoryAccessPedestal_loadSlot(this_1, 2)
	elseif temp == PedestalObjects_LOAD3_ID then
		call dispatch_MemoryAccessPedestal_Pedestal_MemoryAccessPedestal_loadSlot(this_1, 3)
	elseif temp == PedestalObjects_LOAD4_ID then
		call dispatch_MemoryAccessPedestal_Pedestal_MemoryAccessPedestal_loadSlot(this_1, 4)
	elseif temp == PedestalObjects_SELECT_AOE_TILE_ID then
		set wval = real_round(PedestalObjects_AOE_PICK_RANGE / 128.)
		set x =  - wval
		set temp_1 = wval
		loop
			exitwhen x > temp_1
			set y =  - wval
			set temp_2 = wval
			loop
				exitwhen y > temp_2
				call dispatch_MemoryAccessPedestal_Pedestal_MemoryAccessPedestal_addTile(this_1, vec2_op_plus(tpos_x_1, tpos_y_1, x * 128., y * 128.), vec2_op_plus_return_y, false)
				set y = y + 1
			endloop
			set x = x + 1
		endloop
	endif
endfunction

function Teleporter_onCast takes integer this_1 returns nothing
	local integer id
	local integer temp
	local unit receiver
	local unit receiver_1
	local unit receiver_2
	local unit receiver_3
	local unit receiver_4
	local unit receiver_5
	call StaticBaseObject_onCast(this_1)
	set id = GetSpellAbilityId()
	set temp = id
	if temp == BuilderConstants_MODE_BOTH_ID then
		set receiver = UnitEntity_actor[this_1]
		call unit_removeAbility(receiver, BuilderConstants_MODE_BOTH_ID)
		set receiver_1 = receiver
		call unit_addAbility(receiver_1, BuilderConstants_MODE_ESCAPERS_ID)
		set Teleporter_mode[this_1] = 0
	elseif temp == BuilderConstants_MODE_ESCAPERS_ID then
		set receiver_2 = UnitEntity_actor[this_1]
		call unit_removeAbility(receiver_2, BuilderConstants_MODE_ESCAPERS_ID)
		set receiver_3 = receiver_2
		call unit_addAbility(receiver_3, BuilderConstants_MODE_KILLERS_ID)
		set Teleporter_mode[this_1] = 1
	elseif temp == BuilderConstants_MODE_KILLERS_ID then
		set receiver_4 = UnitEntity_actor[this_1]
		call unit_removeAbility(receiver_4, BuilderConstants_MODE_KILLERS_ID)
		set receiver_5 = receiver_4
		call unit_addAbility(receiver_5, BuilderConstants_MODE_BOTH_ID)
		set Teleporter_mode[this_1] = 2
	endif
endfunction

function realToIndex takes real r returns integer
	return real_toInt(r * TypeCasting_R2I_PRECISION)
endfunction

function UnitCreator_refreshDelays takes integer this_1 returns nothing
	local integer i
	local integer temp
	if UnitCreator_tmode[this_1] == 1 then
		call dispatch_LinkedList_LinkedList_LinkedList_clear(UnitCreator_delays[this_1])
		set i = 2 + GetRandomInt(0, 1)
		set temp = real_toInt(UnitCreator_interval[this_1]) * 4
		loop
			exitwhen i > temp
			call dispatch_LinkedList_LinkedList_LinkedList_add_1(UnitCreator_delays[this_1], realToIndex(i * 0.25))
			set i = i + 1
		endloop
		call dispatch_LinkedList_LinkedList_LinkedList_shuffle(UnitCreator_delays[this_1])
		call dispatch_LinkedList_LinkedList_LinkedList_shuffle(UnitCreator_delays[this_1])
	endif
endfunction

function dispatch_UnitCreator_Unitcreator_UnitCreator_refreshDelays takes integer this_1 returns nothing
	if Serializable_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling UnitCreator.refreshDelays")
		else
			call error("Called UnitCreator.refreshDelays on invalid object.")
		endif
	endif
	call UnitCreator_refreshDelays(this_1)
endfunction

function UnitCreator_onCast takes integer this_1 returns nothing
	local integer id
	local integer temp
	local unit receiver
	local unit receiver_1
	local unit receiver_2
	local unit receiver_3
	call StaticBaseObject_onCast(this_1)
	set id = GetSpellAbilityId()
	set temp = id
	if temp == Unitcreator_INCREASE_INTERVAL_ID then
		if UnitCreator_interval[this_1] >= 15. then
			call createFText_2346(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1], 0., 0.05, "|cffC51019Max", 10., 2., 255, 255, 255, 0, Entity_owner[this_1])
		else
			set UnitCreator_interval[this_1] = UnitCreator_interval[this_1] + 0.25
			call createFText_2346(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1], 0., 0.05, "|cffC51019Intervall " + R2SW(UnitCreator_interval[this_1], 1, 2), 10., 2., 255, 255, 255, 0, Entity_owner[this_1])
		endif
		call dispatch_UnitCreator_Unitcreator_UnitCreator_refreshDelays(this_1)
	elseif temp == Unitcreator_DECREASE_INTERVAL_ID then
		if UnitCreator_interval[this_1] < 0.75 then
			call createFText_2346(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1], 0., 0.05, "|cffC51019Min", 10., 2., 255, 255, 255, 0, Entity_owner[this_1])
		else
			set UnitCreator_interval[this_1] = UnitCreator_interval[this_1] - 0.25
			call createFText_2346(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1], 0., 0.05, "|cffC51019Intervall " + R2SW(UnitCreator_interval[this_1], 1, 2), 10., 2., 255, 255, 255, 0, Entity_owner[this_1])
		endif
		call dispatch_UnitCreator_Unitcreator_UnitCreator_refreshDelays(this_1)
	elseif temp == Unitcreator_UTYPE_BK then
		set UnitCreator_spawnUnitType[this_1] = 1112098635
	elseif temp == Unitcreator_UTYPE_SK then
		set UnitCreator_spawnUnitType[this_1] = 1397571916
	elseif temp == Unitcreator_UTYPE_BRK then
		set UnitCreator_spawnUnitType[this_1] = EscaperKillers_BIG_RANDOM_KILLER_ID
	elseif temp == Unitcreator_UTYPE_POINTER then
		set UnitCreator_spawnUnitType[this_1] = Pointer_POINTER_ID
	elseif temp == Unitcreator_UTYPE_GLAIVE then
		set UnitCreator_spawnUnitType[this_1] = EscaperKillers_GLAIVE_KILLER_ID
	elseif temp == Unitcreator_UTYPE_TANK then
		set UnitCreator_spawnUnitType[this_1] = EscaperKillers_TANK_KILLER_ID
	elseif temp == Unitcreator_UTYPE_SRK then
		set UnitCreator_spawnUnitType[this_1] = EscaperKillers_SMALL_RANDOM_KILLER_ID
	elseif temp == Unitcreator_UTYPE_KNOCKER then
		set UnitCreator_spawnUnitType[this_1] = Knockbacker_KNOCKBACKER_ID
	elseif temp == Unitcreator_FIXED_ID then
		set receiver = UnitEntity_actor[this_1]
		call unit_removeAbility(receiver, Unitcreator_FIXED_ID)
		set receiver_1 = receiver
		call unit_addAbility(receiver_1, Unitcreator_RANDOM_ID)
		set UnitCreator_tmode[this_1] = 1
		call dispatch_UnitCreator_Unitcreator_UnitCreator_refreshDelays(this_1)
	elseif temp == Unitcreator_RANDOM_ID then
		set receiver_2 = UnitEntity_actor[this_1]
		call unit_removeAbility(receiver_2, Unitcreator_RANDOM_ID)
		set receiver_3 = receiver_2
		call unit_addAbility(receiver_3, Unitcreator_FIXED_ID)
		set UnitCreator_tmode[this_1] = 0
	endif
endfunction

function alloc_HLItrClosure_forEach_Waypoint_Waypoint takes nothing returns integer
	local integer this_1
	if HLItrClosure_firstFree == 0 then
		if HLItrClosure_maxIndex < JASS_MAX_ARRAY_SIZE then
			set HLItrClosure_maxIndex = HLItrClosure_maxIndex + 1
			set this_1 = HLItrClosure_maxIndex
			set HLItrClosure_typeId[this_1] = 893
		else
			call error("Out of memory: Could not create HLItrClosure_forEach_Waypoint_Waypoint.")
			set this_1 = 0
		endif
	else
		set HLItrClosure_firstFree = HLItrClosure_firstFree - 1
		set this_1 = HLItrClosure_nextFree[HLItrClosure_firstFree]
		set HLItrClosure_typeId[this_1] = 893
	endif
	return this_1
endfunction

function HashList_addAll takes integer this_1, integer elems returns nothing
	local integer iterator = HashList_iterator(elems)
	local integer elem
	loop
		exitwhen  not HLIterator_hasNext(iterator)
		set elem = HLIterator_next(iterator)
		call dispatch_HashList_HashList_HashList_add_1(this_1, elem)
	endloop
	call HLIterator_close(iterator)
endfunction

function dispatch_HashList_HashList_HashList_addAll takes integer this_1, integer elems returns nothing
	if HashList_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling HashList.addAll")
		else
			call error("Called HashList.addAll on invalid object.")
		endif
	endif
	call HashList_addAll(this_1, elems)
endfunction

function run_forEach_Waypoint_Waypoint takes integer this_1, integer waypoint returns nothing
	if waypoint != 0 then
		call dispatch_HashSet_HashSet_HashSet_remove(Waypoint_linked[waypoint], this_2962[this_1])
	endif
endfunction

function dispatch_HLItrClosure_HashList_HLItrClosure_run takes integer this_1, integer t returns nothing
	if HLItrClosure_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling HLItrClosure.run")
		else
			call error("Called HLItrClosure.run on invalid object.")
		endif
	endif
	call run_forEach_Waypoint_Waypoint(this_1, t)
endfunction

function dealloc_HLItrClosure takes integer obj_1 returns nothing
	if HLItrClosure_typeId[obj_1] == 0 then
		call error("Double free: object of type HLItrClosure")
	else
		set HLItrClosure_nextFree[HLItrClosure_firstFree] = obj_1
		set HLItrClosure_firstFree = HLItrClosure_firstFree + 1
		set HLItrClosure_typeId[obj_1] = 0
	endif
endfunction

function destroyHLItrClosure takes integer this_1 returns nothing
	call dealloc_HLItrClosure(this_1)
endfunction

function dispatch_HLItrClosure_destroyHLItrClosure takes integer this_1 returns nothing
	if HLItrClosure_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling HLItrClosure.HLItrClosure")
		else
			call error("Called HLItrClosure.HLItrClosure on invalid object.")
		endif
	endif
	call destroyHLItrClosure(this_1)
endfunction

function HashList_forEach takes integer this_1, integer itr_1 returns integer
	local integer i = 0
	local integer temp = dispatch_HashList_HashList_HashList_size(this_1) - 1
	loop
		exitwhen i > temp
		call dispatch_HLItrClosure_HashList_HLItrClosure_run(itr_1, dispatch_HashList_HashList_HashList_get(this_1, i))
		set i = i + 1
	endloop
	call dispatch_HLItrClosure_destroyHLItrClosure(itr_1)
	return this_1
endfunction

function dispatch_HashList_HashList_HashList_forEach takes integer this_1, integer itr_1 returns integer
	local integer HashList_HashList_forEach_result
	if HashList_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling HashList.forEach")
		else
			call error("Called HashList.forEach on invalid object.")
		endif
	endif
	set HashList_HashList_forEach_result = HashList_forEach(this_1, itr_1)
	return HashList_HashList_forEach_result
endfunction

function dispatch_HashSet_HashSet_HashSet_add_1 takes integer this_1, integer elems_0 returns nothing
	if HashList_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling HashSet.add")
		else
			call error("Called HashSet.add on invalid object.")
		endif
	endif
	call HashSet_add_1(this_1, elems_0)
endfunction

function dispatch_HashSet_HashSet_HashSet_clear takes integer this_1 returns nothing
	if HashList_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling HashSet.clear")
		else
			call error("Called HashSet.clear on invalid object.")
		endif
	endif
	call HashSet_clear(this_1)
endfunction

function alloc_HashSet takes nothing returns integer
	local integer this_1
	if HashList_firstFree == 0 then
		if HashList_maxIndex < JASS_MAX_ARRAY_SIZE then
			set HashList_maxIndex = HashList_maxIndex + 1
			set this_1 = HashList_maxIndex
			set HashList_typeId[this_1] = 895
		else
			call error("Out of memory: Could not create HashSet.")
			set this_1 = 0
		endif
	else
		set HashList_firstFree = HashList_firstFree - 1
		set this_1 = HashList_nextFree[HashList_firstFree]
		set HashList_typeId[this_1] = 895
	endif
	return this_1
endfunction

function HashSet_init takes integer this_1 returns nothing
endfunction

function construct_HashSet takes integer this_1 returns nothing
	call construct_HashList(this_1)
	call HashSet_init(this_1)
endfunction

function new_HashSet takes nothing returns integer
	local integer this_1 = alloc_HashSet()
	call construct_HashSet(this_1)
	return this_1
endfunction

function Waypoint_onCast takes integer this_1 returns nothing
	local integer id
	local integer temp
	local integer target
	local integer twp
	local integer iterator
	local integer link
	local integer clVar
	local integer temp_1
	call StaticBaseObject_onCast(this_1)
	set id = GetSpellAbilityId()
	set temp = id
	if temp == WaypointObjects_INCREASE_DELAY_ID then
		call dispatch_ConfigValue_ConfigValue_ConfigValue_increment(Waypoint_delay[this_1], this_1, 5.)
	elseif temp == WaypointObjects_DECREASE_DELAY_ID then
		call dispatch_ConfigValue_ConfigValue_ConfigValue_decrement(Waypoint_delay[this_1], this_1, 0.)
	elseif temp == WaypointObjects_NO_WISPS_ID then
		if Waypoint_wisps[this_1] then
			set Waypoint_wisps[this_1] = false
			call createFText_2346(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1], 0., 0.05, "Wisps |cffAD0821inactive", 10., 2., Colors_COLOR_WHITE_red, Colors_COLOR_WHITE_green, Colors_COLOR_WHITE_blue, Colors_COLOR_WHITE_alpha, Entity_owner[this_1])
		else
			set Waypoint_wisps[this_1] = true
			call createFText_2346(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1], 0., 0.05, "Wisps |cff08BD52active", 10., 2., Colors_COLOR_WHITE_red, Colors_COLOR_WHITE_green, Colors_COLOR_WHITE_blue, Colors_COLOR_WHITE_alpha, Entity_owner[this_1])
		endif
	elseif temp == WaypointObjects_AND_CONNECTION_ID then
		if Waypoint_linked[this_1] == 0 then
			set Waypoint_linked[this_1] = new_HashSet()
		endif
		set target = unit_getEntity(GetSpellTargetUnit())
		if target != 0 and Serializable_typeId[target] == 1211 then
			set twp = target
			if dispatch_HashList_HashList_HashList_has(Waypoint_linked[this_1], twp) then
				call createFText_2346(dispatch_UnitEntity_Entity_UnitEntity_getPos(target), dispatch_UnitEntity_Entity_UnitEntity_getPos_return_y, dispatch_UnitEntity_Entity_UnitEntity_getPos_return_z, 0., 0.08, "|cff0873C5Unlinked", 9., 1.75, Colors_COLOR_WHITE_red, Colors_COLOR_WHITE_green, Colors_COLOR_WHITE_blue, Colors_COLOR_WHITE_alpha, Entity_owner[this_1])
				call dispatch_HashSet_HashSet_HashSet_remove(Waypoint_linked[this_1], twp)
			else
				if Waypoint_linked[twp] == 0 then
					set Waypoint_linked[twp] = new_HashSet()
				endif
				call dispatch_HashList_HashList_HashList_addAll(Waypoint_linked[twp], Waypoint_linked[this_1])
				set iterator = HashList_iterator(Waypoint_linked[this_1])
				loop
					exitwhen  not HLIterator_hasNext(iterator)
					set link = HLIterator_next(iterator)
					call dispatch_HashSet_HashSet_HashSet_add_1(Waypoint_linked[link], twp)
				endloop
				call HLIterator_close(iterator)
				call dispatch_HashSet_HashSet_HashSet_add_1(Waypoint_linked[this_1], twp)
				call dispatch_HashSet_HashSet_HashSet_add_1(Waypoint_linked[twp], this_1)
				call createFText_2346(dispatch_UnitEntity_Entity_UnitEntity_getPos(target), dispatch_UnitEntity_Entity_UnitEntity_getPos_return_y, dispatch_UnitEntity_Entity_UnitEntity_getPos_return_z, 0., 0.08, "|cff0873C5Linked", 9., 1.75, Colors_COLOR_WHITE_red, Colors_COLOR_WHITE_green, Colors_COLOR_WHITE_blue, Colors_COLOR_WHITE_alpha, Entity_owner[this_1])
			endif
		endif
	elseif temp == WaypointObjects_CLEAR_CONNECTION_ID then
		if Waypoint_linked[this_1] != 0 then
			set temp_1 = Waypoint_linked[this_1]
			set clVar = alloc_HLItrClosure_forEach_Waypoint_Waypoint()
			set this_2962[clVar] = this_1
			call dispatch_HashList_HashList_HashList_forEach(temp_1, clVar)
			call dispatch_HashSet_HashSet_HashSet_clear(Waypoint_linked[this_1])
		endif
	endif
endfunction

function dispatch_StaticBaseObject_BaseObject_StaticBaseObject_onCast takes integer this_1 returns nothing
	if Serializable_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling StaticBaseObject.onCast")
		else
			call error("Called StaticBaseObject.onCast on invalid object.")
		endif
	endif
	if Serializable_typeId[this_1] <= 1202 then
		if Serializable_typeId[this_1] <= 1199 then
			if Serializable_typeId[this_1] <= 1197 then
				if Serializable_typeId[this_1] <= 1196 then
					call StaticBaseObject_onCast(this_1)
				else
					call Booster_onCast(this_1)
				endif
			else
				call StaticBaseObject_onCast(this_1)
			endif
		elseif Serializable_typeId[this_1] <= 1201 then
			if Serializable_typeId[this_1] <= 1200 then
				call Jumper_onCast(this_1)
			else
				call StaticBaseObject_onCast(this_1)
			endif
		else
			call MemoryAccessPedestal_onCast(this_1)
		endif
	elseif Serializable_typeId[this_1] <= 1207 then
		if Serializable_typeId[this_1] <= 1204 then
			if Serializable_typeId[this_1] <= 1203 then
				call StaticBaseObject_onCast(this_1)
			else
				call Teleporter_onCast(this_1)
			endif
		else
			call StaticBaseObject_onCast(this_1)
		endif
	elseif Serializable_typeId[this_1] <= 1210 then
		if Serializable_typeId[this_1] <= 1208 then
			call UnitCreator_onCast(this_1)
		else
			call StaticBaseObject_onCast(this_1)
		endif
	else
		call Waypoint_onCast(this_1)
	endif
endfunction

function onEvent_add_StaticBaseObject_BaseObject_3860 takes integer this_1 returns nothing
	call dispatch_StaticBaseObject_BaseObject_StaticBaseObject_onCast(this_2908[this_1])
endfunction

function StrongEscaper_onSkill takes integer this_1 returns nothing
	local integer learnedId = GetLearnedSkill()
	local integer lvl = GetLearnedSkillLevel()
	local unit receiver
	local unit receiver_1
	local unit receiver_2
	local unit receiver_3
	local unit receiver_4
	if learnedId == EscaperClasses_INNER_STRENGTH_ID then
		if lvl == 1 then
			set receiver = UnitEntity_actor[this_1]
			call unit_addAbility(receiver, EscaperObjects_HP_GAIN_50)
		elseif lvl == 2 then
			set receiver_1 = UnitEntity_actor[this_1]
			call unit_removeAbility(receiver_1, EscaperObjects_HP_GAIN_50)
			set receiver_2 = receiver_1
			call unit_addAbility(receiver_2, EscaperObjects_HP_GAIN_75)
		elseif lvl == 3 then
			set receiver_3 = UnitEntity_actor[this_1]
			call unit_removeAbility(receiver_3, EscaperObjects_HP_GAIN_75)
			set receiver_4 = receiver_3
			call unit_addAbility(receiver_4, EscaperObjects_HP_GAIN_100)
		endif
	endif
endfunction

function dispatch_StrongEscaper_EscaperClasses_StrongEscaper_onSkill takes integer this_1 returns nothing
	if Serializable_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling StrongEscaper.onSkill")
		else
			call error("Called StrongEscaper.onSkill on invalid object.")
		endif
	endif
	call StrongEscaper_onSkill(this_1)
endfunction

function onEvent_add_StrongEscaper_EscaperClasses takes integer this_1 returns nothing
	call dispatch_StrongEscaper_EscaperClasses_StrongEscaper_onSkill(this_2939[this_1])
endfunction

function SetupObject_checkReposition takes integer this_1 returns nothing
	if SetupObject_time[this_1] < 0. then
		call unit_setXY_4210(SetupObject_setup[this_1], dispatch_UnitEntity_Entity_UnitEntity_getPos(this_1), dispatch_UnitEntity_Entity_UnitEntity_getPos_return_y, dispatch_UnitEntity_Entity_UnitEntity_getPos_return_z)
		call unit_setFacing(SetupObject_setup[this_1], unit_getFacingAngle(UnitEntity_actor[this_1]))
		set SetupObject_time[this_1] = GetRandomReal(30., 45.)
	endif
endfunction

function dispatch_SetupObject_SetupObject_SetupObject_checkReposition takes integer this_1 returns nothing
	if Serializable_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling SetupObject.checkReposition")
		else
			call error("Called SetupObject.checkReposition on invalid object.")
		endif
	endif
	call SetupObject_checkReposition(this_1)
endfunction

function SetupObject_update takes integer this_1 returns nothing
	call UnitEntity_update(this_1)
	set SetupObject_time[this_1] = SetupObject_time[this_1] - Basics_ANIMATION_PERIOD
	call dispatch_SetupObject_SetupObject_SetupObject_checkReposition(this_1)
endfunction

function ConfigValue_getInt takes integer this_1 returns integer
	return real_toInt(ConfigValue_value[this_1])
endfunction

function dispatch_ConfigValue_ConfigValue_ConfigValue_getInt takes integer this_1 returns integer
	local integer ConfigValue_ConfigValue_getInt_result
	if ConfigValue_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling ConfigValue.getInt")
		else
			call error("Called ConfigValue.getInt on invalid object.")
		endif
	endif
	set ConfigValue_ConfigValue_getInt_result = ConfigValue_getInt(this_1)
	return ConfigValue_ConfigValue_getInt_result
endfunction

function ebrtile_setType takes integer this_x, integer this_y, integer this_key, integer this_currentType, integer this_lastType, integer this_modifiers_val, integer ttype_1 returns nothing
	if  not ebrtile_hasModifier(this_x, this_y, this_key, this_currentType, this_lastType, this_modifiers_val, 4) then
		call SetTerrainType(this_x * 128., this_y * 128., ttype_1, -1, 1, 0)
		call hashtable_saveInt(TerrainData_tileMap, this_key, 2, this_currentType)
		call hashtable_saveInt(TerrainData_tileMap, this_key, 1, ttype_1)
	endif
endfunction

function getTile takes integer x, integer y returns integer
	set getTile_return_x = hashtable_loadTile(TerrainData_tileMap, x, y)
	set getTile_return_y = hashtable_loadTile_return_y
	set getTile_return_key = hashtable_loadTile_return_key
	set getTile_return_currentType = hashtable_loadTile_return_currentType
	set getTile_return_lastType = hashtable_loadTile_return_lastType
	set getTile_return_modifiers_val = hashtable_loadTile_return_modifiers_val
	return getTile_return_x
endfunction

function TerrainChanger_checkAndSetTile takes integer this_1, integer rdata, integer x, integer y, integer id returns nothing
	local integer tuple_temp = getTile(x, y)
	local integer tuple_temp_1 = getTile_return_y
	local integer tuple_temp_2 = getTile_return_key
	local integer tuple_temp_3 = getTile_return_currentType
	local integer tuple_temp_4 = getTile_return_lastType
	local integer tuple_temp_5 = getTile_return_modifiers_val
	local integer tile_x = tuple_temp
	local integer tile_y = tuple_temp_1
	local integer tile_key = tuple_temp_2
	local integer tile_currentType = tuple_temp_3
	local integer tile_lastType = tuple_temp_4
	local integer tile_modifiers_val = tuple_temp_5
	local real newP_x
	local real newP_y
	local real tuple_temp_6
	local real tuple_temp_7
	if  not ebrtile_hasModifier(tile_x, tile_y, tile_key, tile_currentType, tile_lastType, tile_modifiers_val, 1) then
		set tuple_temp_6 = x * 128.
		set tuple_temp_7 = y * 128.
		set newP_x = tuple_temp_6
		set newP_y = tuple_temp_7
		if rect_contains(RegionData_theRect[rdata], newP_x, newP_y) then
			call ebrtile_setType(tile_x, tile_y, tile_key, tile_currentType, tile_lastType, tile_modifiers_val, id)
		endif
	endif
endfunction

function dispatch_TerrainChanger_TerrainChanger_TerrainChanger_checkAndSetTile takes integer this_1, integer rdata, integer x, integer y, integer id returns nothing
	if Serializable_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling TerrainChanger.checkAndSetTile")
		else
			call error("Called TerrainChanger.checkAndSetTile on invalid object.")
		endif
	endif
	call TerrainChanger_checkAndSetTile(this_1, rdata, x, y, id)
endfunction

function TerrainChanger_update takes integer this_1 returns nothing
	local integer rdata
	local integer tileID
	local integer tX
	local integer tY
	local integer sizeXI
	local integer sizeYI
	local integer xoffset
	local integer yoffset
	local integer i
	local integer temp
	local integer i_1
	local integer temp_1
	local integer j
	local integer temp_2
	local integer j_1
	local integer temp_3
	local integer i_2
	local integer temp_4
	local integer j_2
	local integer temp_5
	local integer stile_x
	local integer stile_y
	local integer stile_key
	local integer stile_currentType
	local integer stile_lastType
	local integer stile_modifiers_val
	local integer tuple_temp
	local integer tuple_temp_1
	local integer tuple_temp_2
	local integer tuple_temp_3
	local integer tuple_temp_4
	local integer tuple_temp_5
	local integer tuple_temp_6
	local integer tuple_temp_7
	call SetupObject_update(this_1)
	set rdata = getRegionData(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1])
	if  not dispatch_RegionData_RegionData_RegionData_canBuild(rdata, Entity_owner[this_1]) then
		return
	endif
	set tX = real_round(Entity_pos_x[this_1] / 128.)
	set tY = real_round(Entity_pos_y[this_1] / 128.)
	if tX != TerrainChanger_currentTile_x[this_1] or tY != TerrainChanger_currentTile_y[this_1] then
		set sizeXI = dispatch_ConfigValue_ConfigValue_ConfigValue_getInt(TerrainChanger_sizeX[this_1])
		set sizeYI = dispatch_ConfigValue_ConfigValue_ConfigValue_getInt(TerrainChanger_sizeY[this_1])
		set xoffset = 0
		set yoffset = 0
		if tX < TerrainChanger_currentTile_x[this_1] then
			set xoffset = sizeXI * 2
			set i =  - sizeYI
			set temp = sizeYI
			loop
				exitwhen i > temp
				call dispatch_TerrainChanger_TerrainChanger_TerrainChanger_checkAndSetTile(this_1, rdata, tX + sizeXI + 1, tY + i, TerrainChanger_outerTile[this_1])
				set i = i + 1
			endloop
		elseif tX > TerrainChanger_currentTile_x[this_1] then
			set xoffset =  - (sizeXI * 2)
			set i_1 =  - sizeYI
			set temp_1 = sizeYI
			loop
				exitwhen i_1 > temp_1
				call dispatch_TerrainChanger_TerrainChanger_TerrainChanger_checkAndSetTile(this_1, rdata, tX - sizeXI - 1, tY + i_1, TerrainChanger_outerTile[this_1])
				set i_1 = i_1 + 1
			endloop
		endif
		if tY < TerrainChanger_currentTile_y[this_1] then
			set yoffset = sizeYI * 2
			set j =  - sizeXI
			set temp_2 = sizeXI
			loop
				exitwhen j > temp_2
				call dispatch_TerrainChanger_TerrainChanger_TerrainChanger_checkAndSetTile(this_1, rdata, tX + j, tY + sizeYI + 1, TerrainChanger_outerTile[this_1])
				set j = j + 1
			endloop
		elseif tY > TerrainChanger_currentTile_y[this_1] then
			set yoffset =  - (sizeYI * 2)
			set j_1 =  - sizeXI
			set temp_3 = sizeXI
			loop
				exitwhen j_1 > temp_3
				call dispatch_TerrainChanger_TerrainChanger_TerrainChanger_checkAndSetTile(this_1, rdata, tX + j_1, tY - sizeYI - 1, TerrainChanger_outerTile[this_1])
				set j_1 = j_1 + 1
			endloop
		endif
		if xoffset != 0 and yoffset != 0 then
			call dispatch_TerrainChanger_TerrainChanger_TerrainChanger_checkAndSetTile(this_1, rdata, tX + xoffset, tY + yoffset, TerrainChanger_outerTile[this_1])
		endif
		set tuple_temp = vec3_getEBRTile(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1])
		set tuple_temp_1 = vec3_getEBRTile_return_y
		set TerrainChanger_currentTile_x[this_1] = tuple_temp
		set TerrainChanger_currentTile_y[this_1] = tuple_temp_1
		set i_2 =  - sizeYI
		set temp_4 = sizeYI
		loop
			exitwhen i_2 > temp_4
			set j_2 =  - sizeXI
			set temp_5 = sizeXI
			loop
				exitwhen j_2 > temp_5
				set tuple_temp_2 = getTile(tX + j_2, tY + i_2)
				set tuple_temp_3 = getTile_return_y
				set tuple_temp_4 = getTile_return_key
				set tuple_temp_5 = getTile_return_currentType
				set tuple_temp_6 = getTile_return_lastType
				set tuple_temp_7 = getTile_return_modifiers_val
				set stile_x = tuple_temp_2
				set stile_y = tuple_temp_3
				set stile_key = tuple_temp_4
				set stile_currentType = tuple_temp_5
				set stile_lastType = tuple_temp_6
				set stile_modifiers_val = tuple_temp_7
				if  not ebrtile_hasModifier(stile_x, stile_y, stile_key, stile_currentType, stile_lastType, stile_modifiers_val, 1) then
					set tileID = TerrainChanger_innerTile[this_1]
					call ebrtile_setType(stile_x, stile_y, stile_key, stile_currentType, stile_lastType, stile_modifiers_val, tileID)
				endif
				set j_2 = j_2 + 1
			endloop
			set i_2 = i_2 + 1
		endloop
	endif
endfunction

function dispatch_TerrainChanger_TerrainChanger_TerrainChanger_update takes integer this_1 returns nothing
	if Serializable_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling TerrainChanger.update")
		else
			call error("Called TerrainChanger.update on invalid object.")
		endif
	endif
	call TerrainChanger_update(this_1)
endfunction

function TerrainChanger_cleanArea takes integer this_1 returns nothing
	local integer tin = TerrainChanger_innerTile[this_1]
	local integer tout = TerrainChanger_outerTile[this_1]
	local integer temp_tuple_unwalkableId
	local integer temp_tuple_unwalkableId_1
	local integer tuple_temp
	local integer tuple_temp_1
	call dispatch_RegionData_RegionData_RegionData_getTypeSet(Entity_getCurrentRegion(this_1))
	set tuple_temp = dispatch_RegionData_RegionData_RegionData_getTypeSet_return_unwalkableId
	set temp_tuple_unwalkableId = tuple_temp
	set TerrainChanger_innerTile[this_1] = temp_tuple_unwalkableId
	call dispatch_RegionData_RegionData_RegionData_getTypeSet(Entity_getCurrentRegion(this_1))
	set tuple_temp_1 = dispatch_RegionData_RegionData_RegionData_getTypeSet_return_unwalkableId
	set temp_tuple_unwalkableId_1 = tuple_temp_1
	set TerrainChanger_outerTile[this_1] = temp_tuple_unwalkableId_1
	call dispatch_TerrainChanger_TerrainChanger_TerrainChanger_update(this_1)
	set TerrainChanger_innerTile[this_1] = tin
	set TerrainChanger_outerTile[this_1] = tout
endfunction

function dispatch_TerrainChanger_TerrainChanger_TerrainChanger_cleanArea takes integer this_1 returns nothing
	if Serializable_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling TerrainChanger.cleanArea")
		else
			call error("Called TerrainChanger.cleanArea on invalid object.")
		endif
	endif
	call TerrainChanger_cleanArea(this_1)
endfunction

function TerrainChanger_onCast takes integer this_1 returns nothing
	local integer i = GetSpellAbilityId()
	local integer temp = i
	local integer temp_tuple_walkableId
	local integer temp_tuple_unwalkableId
	local integer temp_tuple_walkableId_1
	local integer temp_tuple_unwalkableId_1
	local integer tuple_temp
	local integer tuple_temp_1
	local integer tuple_temp_2
	local integer tuple_temp_3
	if temp == TerrainChanger_TERRAIN_INC_H_ID then
		call dispatch_ConfigValue_ConfigValue_ConfigValue_increment(TerrainChanger_sizeX[this_1], this_1, 3.)
	elseif temp == TerrainChanger_TERRAIN_INC_V_ID then
		call dispatch_ConfigValue_ConfigValue_ConfigValue_increment(TerrainChanger_sizeY[this_1], this_1, 3.)
	elseif temp == TerrainChanger_TERRAIN_DEC_H_ID then
		call dispatch_TerrainChanger_TerrainChanger_TerrainChanger_cleanArea(this_1)
		call dispatch_ConfigValue_ConfigValue_ConfigValue_decrement(TerrainChanger_sizeX[this_1], this_1, 0.)
	elseif temp == TerrainChanger_TERRAIN_DEC_V_ID then
		call dispatch_TerrainChanger_TerrainChanger_TerrainChanger_cleanArea(this_1)
		call dispatch_ConfigValue_ConfigValue_ConfigValue_decrement(TerrainChanger_sizeY[this_1], this_1, 0.)
	elseif temp == TerrainChanger_TERRAIN_I_WALKABLE_ID then
		call dispatch_RegionData_RegionData_RegionData_getTypeSet(Entity_getCurrentRegion(this_1))
		set tuple_temp = dispatch_RegionData_RegionData_RegionData_getTypeSet_return_walkableId
		set temp_tuple_walkableId = tuple_temp
		set TerrainChanger_innerTile[this_1] = temp_tuple_walkableId
	elseif temp == TerrainChanger_TERRAIN_I_UNWALKABLE_ID then
		call dispatch_RegionData_RegionData_RegionData_getTypeSet(Entity_getCurrentRegion(this_1))
		set tuple_temp_1 = dispatch_RegionData_RegionData_RegionData_getTypeSet_return_unwalkableId
		set temp_tuple_unwalkableId = tuple_temp_1
		set TerrainChanger_innerTile[this_1] = temp_tuple_unwalkableId
	elseif temp == TerrainChanger_TERRAIN_I_ICE_ID then
		set TerrainChanger_innerTile[this_1] = BuilderConstants_CONTROLLABLEICE
	elseif temp == TerrainChanger_TERRAIN_I_UNICE_ID then
		set TerrainChanger_innerTile[this_1] = BuilderConstants_UNCONTROLLABLEICE
	elseif temp == TerrainChanger_TERRAIN_O_WALKABLE_ID then
		call dispatch_RegionData_RegionData_RegionData_getTypeSet(Entity_getCurrentRegion(this_1))
		set tuple_temp_2 = dispatch_RegionData_RegionData_RegionData_getTypeSet_return_walkableId
		set temp_tuple_walkableId_1 = tuple_temp_2
		set TerrainChanger_outerTile[this_1] = temp_tuple_walkableId_1
	elseif temp == TerrainChanger_TERRAIN_O_UNWALKABLE_ID then
		call dispatch_RegionData_RegionData_RegionData_getTypeSet(Entity_getCurrentRegion(this_1))
		set tuple_temp_3 = dispatch_RegionData_RegionData_RegionData_getTypeSet_return_unwalkableId
		set temp_tuple_unwalkableId_1 = tuple_temp_3
		set TerrainChanger_outerTile[this_1] = temp_tuple_unwalkableId_1
	elseif temp == TerrainChanger_TERRAIN_O_ICE_ID then
		set TerrainChanger_outerTile[this_1] = BuilderConstants_CONTROLLABLEICE
	elseif temp == TerrainChanger_TERRAIN_O_UNICE_ID then
		set TerrainChanger_outerTile[this_1] = BuilderConstants_UNCONTROLLABLEICE
	endif
	call dispatch_TerrainChanger_TerrainChanger_TerrainChanger_update(this_1)
endfunction

function dispatch_TerrainChanger_TerrainChanger_TerrainChanger_onCast takes integer this_1 returns nothing
	if Serializable_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling TerrainChanger.onCast")
		else
			call error("Called TerrainChanger.onCast on invalid object.")
		endif
	endif
	call TerrainChanger_onCast(this_1)
endfunction

function onEvent_add_TerrainChanger_TerrainChanger takes integer this_1 returns nothing
	call dispatch_TerrainChanger_TerrainChanger_TerrainChanger_onCast(this_2985[this_1])
endfunction

function vec2_setTerrain takes real this_x, real this_y, integer ttype_1, real off_x, real off_y, player caster returns nothing
	local real tuple_temp = vec2_op_plus(this_x, this_y, off_x, off_y)
	local real tuple_temp_1 = vec2_op_plus_return_y
	local real offset_x = tuple_temp
	local real offset_y = tuple_temp_1
	local integer rdata
	set offset_x = real_round(offset_x / 128.) * 128.
	set offset_y = real_round(offset_y / 128.) * 128.
	set rdata = getRegionData_3304(offset_x, offset_y)
	if rdata != 0 and dispatch_RegionData_RegionData_RegionData_canBuild(rdata, caster) then
		call ebrtile_setType(vec2_getEBRTile(offset_x, offset_y), vec2_getEBRTile_return_y, vec2_getEBRTile_return_key, vec2_getEBRTile_return_currentType, vec2_getEBRTile_return_lastType, vec2_getEBRTile_return_modifiers_val, ttype_1)
	endif
endfunction

function vec2_changeRect takes real this_x, real this_y, integer ttype_1, integer hsize, integer vsize, player caster returns nothing
	local integer hhalf = hsize * 2 / 2
	local integer vhalf = vsize * 2 / 2
	local integer i =  - hhalf
	local integer temp = hhalf
	local integer j
	local integer temp_1
	loop
		exitwhen i > temp
		set j =  - vhalf
		set temp_1 = vhalf
		loop
			exitwhen j > temp_1
			call vec2_setTerrain(this_x, this_y, ttype_1, i * 128., j * 128., caster)
			set j = j + 1
		endloop
		set i = i + 1
	endloop
endfunction

function vec2_changeCircle takes real this_x, real this_y, integer ttype_1, integer hsize, integer vsize, player caster returns nothing
	local integer hhalf = hsize * 2 / 2
	local integer vhalf = vsize * 2 / 2
	local integer i =  - hhalf
	local integer temp = hhalf
	local integer j
	local integer temp_1
	loop
		exitwhen i > temp
		set j =  - vhalf
		set temp_1 = vhalf
		loop
			exitwhen j > temp_1
			if i == 0 or j == 0 then
				call vec2_setTerrain(this_x, this_y, ttype_1, i * 128., j * 128., caster)
			endif
			set j = j + 1
		endloop
		set i = i + 1
	endloop
	if vsize > 1 and hsize > 1 then
		call vec2_changeRect(this_x, this_y, ttype_1, 1, 1, caster)
	endif
endfunction

function vec2_changeTerrain takes real this_x, real this_y, integer ttype_1, integer hsize, integer vsize, integer shape, player caster returns nothing
	local integer temp = shape
	if temp == 0 then
		call vec2_changeRect(this_x, this_y, ttype_1, hsize, vsize, caster)
	else
		call vec2_changeCircle(this_x, this_y, ttype_1, hsize, vsize, caster)
	endif
endfunction

function TerrainModder_changeTerrain takes integer this_1 returns nothing
	local real tuple_temp = EventData_getOrderPos()
	local real tuple_temp_1 = EventData_getOrderPos_return_y
	local real orderPos_x_1 = tuple_temp
	local real orderPos_y_1 = tuple_temp_1
	local widget oW = GetOrderTarget()
	local integer rdata
	local player owner
	local integer id
	local integer temp_tuple_modifiers_val
	local integer temp_tuple_walkableId
	local integer temp_tuple_unwalkableId
	local boolean andLeft
	local real temp_x
	local real temp_y
	local real temp_x_1
	local real temp_y_1
	local real tuple_temp_2
	local real tuple_temp_3
	local integer tuple_temp_4
	local real tuple_temp_5
	local real tuple_temp_6
	local integer tuple_temp_7
	local real tuple_temp_8
	local real tuple_temp_9
	local integer tuple_temp_10
	if oW != null then
		set tuple_temp_2 = widget_getPos(oW)
		set tuple_temp_3 = widget_getPos_return_y
		set orderPos_x_1 = tuple_temp_2
		set orderPos_y_1 = tuple_temp_3
	endif
	set rdata = getRegionData_3304(orderPos_x_1, orderPos_y_1)
	if rdata == 0 then
		return
	endif
	set owner = unit_getOwner(UnitEntity_actor[this_1])
	set id = GetUnitTypeId(UnitEntity_actor[this_1])
	if dispatch_RegionData_RegionData_RegionData_canBuild(rdata, owner) then
		call vec2_getEBRTile(orderPos_x_1, orderPos_y_1)
		set tuple_temp_4 = vec2_getEBRTile_return_modifiers_val
		set temp_tuple_modifiers_val = tuple_temp_4
		set andLeft =  not bitset_get(temp_tuple_modifiers_val, 4)
	else
		set andLeft = false
	endif
	if andLeft then
		set Entity_idleSeconds[this_1] = 0
		if id == TerrainModder_SLIDEABLE_ICE_ID then
			if TerrainModder_modification[this_1] == 1 then
				call vec2_changeTerrain(orderPos_x_1, orderPos_y_1, BuilderConstants_REVICE, TerrainModder_brushsize[this_1], TerrainModder_brushsize[this_1], TerrainModder_brushshape[this_1], owner)
			else
				call vec2_changeTerrain(orderPos_x_1, orderPos_y_1, BuilderConstants_CONTROLLABLEICE, TerrainModder_brushsize[this_1], TerrainModder_brushsize[this_1], TerrainModder_brushshape[this_1], owner)
			endif
		elseif id == TerrainModder_SLIDEABLE_UNC_ICE_ID then
			call vec2_changeTerrain(orderPos_x_1, orderPos_y_1, BuilderConstants_UNCONTROLLABLEICE, TerrainModder_brushsize[this_1], TerrainModder_brushsize[this_1], TerrainModder_brushshape[this_1], owner)
		elseif id == TerrainModder_WALKABLE_ID then
			set tuple_temp_5 = orderPos_x_1
			set tuple_temp_6 = orderPos_y_1
			set temp_x = tuple_temp_5
			set temp_y = tuple_temp_6
			call dispatch_RegionData_RegionData_RegionData_getTypeSet(rdata)
			set tuple_temp_7 = dispatch_RegionData_RegionData_RegionData_getTypeSet_return_walkableId
			set temp_tuple_walkableId = tuple_temp_7
			call vec2_changeTerrain(temp_x, temp_y, temp_tuple_walkableId, TerrainModder_brushsize[this_1], TerrainModder_brushsize[this_1], TerrainModder_brushshape[this_1], owner)
		elseif id == TerrainModder_UNWALKABLE_ID then
			if TerrainModder_modification[this_1] == 0 then
				set tuple_temp_8 = orderPos_x_1
				set tuple_temp_9 = orderPos_y_1
				set temp_x_1 = tuple_temp_8
				set temp_y_1 = tuple_temp_9
				call dispatch_RegionData_RegionData_RegionData_getTypeSet(rdata)
				set tuple_temp_10 = dispatch_RegionData_RegionData_RegionData_getTypeSet_return_unwalkableId
				set temp_tuple_unwalkableId = tuple_temp_10
				call vec2_changeTerrain(temp_x_1, temp_y_1, temp_tuple_unwalkableId, TerrainModder_brushsize[this_1], TerrainModder_brushsize[this_1], TerrainModder_brushshape[this_1], owner)
			elseif TerrainModder_modification[this_1] == 1 then
				call vec2_changeTerrain(orderPos_x_1, orderPos_y_1, BuilderConstants_LAVA, TerrainModder_brushsize[this_1], TerrainModder_brushsize[this_1], TerrainModder_brushshape[this_1], owner)
			elseif TerrainModder_modification[this_1] == 2 then
				call vec2_changeTerrain(orderPos_x_1, orderPos_y_1, BuilderConstants_POISON, TerrainModder_brushsize[this_1], TerrainModder_brushsize[this_1], TerrainModder_brushshape[this_1], owner)
			endif
		endif
	else
		call DisplayTextToPlayer(owner, 0., 0., "|cffC51019You have no permission to change terrain here!")
	endif
endfunction

function dispatch_TerrainModder_TerrainModder_TerrainModder_changeTerrain takes integer this_1 returns nothing
	if Serializable_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling TerrainModder.changeTerrain")
		else
			call error("Called TerrainModder.changeTerrain on invalid object.")
		endif
	endif
	call TerrainModder_changeTerrain(this_1)
endfunction

function onEvent_add_TerrainModder_TerrainModder takes integer this_1 returns nothing
	call dispatch_TerrainModder_TerrainModder_TerrainModder_changeTerrain(this_2928[this_1])
endfunction

function onEvent_add_TerrainModder_TerrainModder_3864 takes integer this_1 returns nothing
	call dispatch_TerrainModder_TerrainModder_TerrainModder_changeTerrain(this_2929[this_1])
endfunction

function TerrainModder_removeAllActive takes integer this_1 returns nothing
	if unit_removeAbility(UnitEntity_actor[this_1], TerrainModder_BRUSH_1_ACTIVE_ABILITY) then
		call unit_addAbility(UnitEntity_actor[this_1], TerrainModder_BRUSH_1_IDLE_ABILITY)
	endif
	if unit_removeAbility(UnitEntity_actor[this_1], TerrainModder_BRUSH_3_ACTIVE_ABILITY) then
		call unit_addAbility(UnitEntity_actor[this_1], TerrainModder_BRUSH_3_IDLE_ABILITY)
	endif
	if unit_removeAbility(UnitEntity_actor[this_1], TerrainModder_BRUSH_5_ACTIVE_ABILITY) then
		call unit_addAbility(UnitEntity_actor[this_1], TerrainModder_BRUSH_5_IDLE_ABILITY)
	endif
endfunction

function dispatch_TerrainModder_TerrainModder_TerrainModder_removeAllActive takes integer this_1 returns nothing
	if Serializable_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling TerrainModder.removeAllActive")
		else
			call error("Called TerrainModder.removeAllActive on invalid object.")
		endif
	endif
	call TerrainModder_removeAllActive(this_1)
endfunction

function TerrainModder_switchMode takes integer this_1 returns nothing
	local integer spell_id = GetSpellAbilityId()
	local integer temp
	local unit receiver
	local unit receiver_1
	local unit receiver_2
	local unit receiver_3
	local unit receiver_4
	local unit receiver_5
	local unit receiver_6
	local unit receiver_7
	local unit receiver_8
	local unit receiver_9
	set Entity_idleSeconds[this_1] = 0
	set temp = spell_id
	if temp == TerrainModder_UNWALKABLE_MOD_ABILITY_ID[1] then
		call UnitRemoveAbility(UnitEntity_actor[this_1], TerrainModder_UNWALKABLE_MOD_ABILITY_ID[1])
		call UnitAddAbility(UnitEntity_actor[this_1], TerrainModder_UNWALKABLE_MOD_ABILITY_ID[TerrainModder_modification[this_1]])
		set TerrainModder_modification[this_1] = 1
		call DisplayTextToPlayer(GetOwningPlayer(GetSpellAbilityUnit()), 0., 0., "Poison")
	elseif temp == TerrainModder_UNWALKABLE_MOD_ABILITY_ID[2] then
		call UnitRemoveAbility(UnitEntity_actor[this_1], TerrainModder_UNWALKABLE_MOD_ABILITY_ID[2])
		call UnitAddAbility(UnitEntity_actor[this_1], TerrainModder_UNWALKABLE_MOD_ABILITY_ID[TerrainModder_modification[this_1]])
		set TerrainModder_modification[this_1] = 2
		call DisplayTextToPlayer(GetOwningPlayer(GetSpellAbilityUnit()), 0., 0., "Lava")
	elseif temp == TerrainModder_UNWALKABLE_MOD_ABILITY_ID[0] then
		call UnitRemoveAbility(UnitEntity_actor[this_1], TerrainModder_UNWALKABLE_MOD_ABILITY_ID[0])
		call UnitAddAbility(UnitEntity_actor[this_1], TerrainModder_UNWALKABLE_MOD_ABILITY_ID[TerrainModder_modification[this_1]])
		set TerrainModder_modification[this_1] = 0
		call DisplayTextToPlayer(GetOwningPlayer(GetSpellAbilityUnit()), 0., 0., "Normal")
	elseif temp == TerrainModder_ICE_ABILITY then
		call UnitRemoveAbility(UnitEntity_actor[this_1], TerrainModder_ICE_ABILITY)
		call UnitAddAbility(UnitEntity_actor[this_1], TerrainModder_REVICE_ABILITY)
		set TerrainModder_modification[this_1] = 0
		call DisplayTextToPlayer(GetOwningPlayer(GetSpellAbilityUnit()), 0., 0., "Normal")
	elseif temp == TerrainModder_REVICE_ABILITY then
		call UnitRemoveAbility(UnitEntity_actor[this_1], TerrainModder_REVICE_ABILITY)
		call UnitAddAbility(UnitEntity_actor[this_1], TerrainModder_ICE_ABILITY)
		set TerrainModder_modification[this_1] = 1
		call DisplayTextToPlayer(GetOwningPlayer(GetSpellAbilityUnit()), 0., 0., "Reverse")
	elseif temp == TerrainModder_BRUSH_1_IDLE_ABILITY then
		call dispatch_TerrainModder_TerrainModder_TerrainModder_removeAllActive(this_1)
		set receiver = UnitEntity_actor[this_1]
		call unit_removeAbility(receiver, TerrainModder_BRUSH_1_IDLE_ABILITY)
		set receiver_1 = receiver
		call unit_addAbility(receiver_1, TerrainModder_BRUSH_1_ACTIVE_ABILITY)
		set TerrainModder_brushsize[this_1] = 0
	elseif temp == TerrainModder_BRUSH_3_IDLE_ABILITY then
		call dispatch_TerrainModder_TerrainModder_TerrainModder_removeAllActive(this_1)
		set receiver_2 = UnitEntity_actor[this_1]
		call unit_removeAbility(receiver_2, TerrainModder_BRUSH_3_IDLE_ABILITY)
		set receiver_3 = receiver_2
		call unit_addAbility(receiver_3, TerrainModder_BRUSH_3_ACTIVE_ABILITY)
		set TerrainModder_brushsize[this_1] = 1
	elseif temp == TerrainModder_BRUSH_5_IDLE_ABILITY then
		call dispatch_TerrainModder_TerrainModder_TerrainModder_removeAllActive(this_1)
		set receiver_4 = UnitEntity_actor[this_1]
		call unit_removeAbility(receiver_4, TerrainModder_BRUSH_5_IDLE_ABILITY)
		set receiver_5 = receiver_4
		call unit_addAbility(receiver_5, TerrainModder_BRUSH_5_ACTIVE_ABILITY)
		set TerrainModder_brushsize[this_1] = 2
	elseif temp == TerrainModder_BRUSH_RECT_ID then
		set TerrainModder_brushshape[this_1] = 1
		set receiver_6 = UnitEntity_actor[this_1]
		call unit_removeAbility(receiver_6, TerrainModder_BRUSH_RECT_ID)
		set receiver_7 = receiver_6
		call unit_addAbility(receiver_7, TerrainModder_BRUSH_CIRCLE_ID)
	elseif temp == TerrainModder_BRUSH_CIRCLE_ID then
		set TerrainModder_brushshape[this_1] = 0
		set receiver_8 = UnitEntity_actor[this_1]
		call unit_removeAbility(receiver_8, TerrainModder_BRUSH_CIRCLE_ID)
		set receiver_9 = receiver_8
		call unit_addAbility(receiver_9, TerrainModder_BRUSH_RECT_ID)
	endif
endfunction

function dispatch_TerrainModder_TerrainModder_TerrainModder_switchMode takes integer this_1 returns nothing
	if Serializable_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling TerrainModder.switchMode")
		else
			call error("Called TerrainModder.switchMode on invalid object.")
		endif
	endif
	call TerrainModder_switchMode(this_1)
endfunction

function onEvent_add_TerrainModder_TerrainModder_3865 takes integer this_1 returns nothing
	call dispatch_TerrainModder_TerrainModder_TerrainModder_switchMode(this_2930[this_1])
endfunction

function alloc_ForGroupCallback_forUnitsOfPlayer_add_Texter takes nothing returns integer
	local integer this_1
	if ForGroupCallback_firstFree == 0 then
		if ForGroupCallback_maxIndex < JASS_MAX_ARRAY_SIZE then
			set ForGroupCallback_maxIndex = ForGroupCallback_maxIndex + 1
			set this_1 = ForGroupCallback_maxIndex
			set ForGroupCallback_typeId[this_1] = 883
		else
			call error("Out of memory: Could not create ForGroupCallback_forUnitsOfPlayer_add_Texter.")
			set this_1 = 0
		endif
	else
		set ForGroupCallback_firstFree = ForGroupCallback_firstFree - 1
		set this_1 = ForGroupCallback_nextFree[ForGroupCallback_firstFree]
		set ForGroupCallback_typeId[this_1] = 883
	endif
	return this_1
endfunction

function alloc_TexterClsr_forSelectedTexters_add_Texter takes nothing returns integer
	local integer this_1
	if TexterClsr_firstFree == 0 then
		if TexterClsr_maxIndex < JASS_MAX_ARRAY_SIZE then
			set TexterClsr_maxIndex = TexterClsr_maxIndex + 1
			set this_1 = TexterClsr_maxIndex
			set TexterClsr_typeId[this_1] = 1498
		else
			call error("Out of memory: Could not create TexterClsr_forSelectedTexters_add_Texter.")
			set this_1 = 0
		endif
	else
		set TexterClsr_firstFree = TexterClsr_firstFree - 1
		set this_1 = TexterClsr_nextFree[TexterClsr_firstFree]
		set TexterClsr_typeId[this_1] = 1498
	endif
	return this_1
endfunction

function alloc_TexterClsr_forSelectedTexters_add_Texter_1929 takes nothing returns integer
	local integer this_1
	if TexterClsr_firstFree == 0 then
		if TexterClsr_maxIndex < JASS_MAX_ARRAY_SIZE then
			set TexterClsr_maxIndex = TexterClsr_maxIndex + 1
			set this_1 = TexterClsr_maxIndex
			set TexterClsr_typeId[this_1] = 1499
		else
			call error("Out of memory: Could not create TexterClsr_forSelectedTexters_add_Texter.")
			set this_1 = 0
		endif
	else
		set TexterClsr_firstFree = TexterClsr_firstFree - 1
		set this_1 = TexterClsr_nextFree[TexterClsr_firstFree]
		set TexterClsr_typeId[this_1] = 1499
	endif
	return this_1
endfunction

function alloc_TexterClsr_forSelectedTexters_add_Texter_1930 takes nothing returns integer
	local integer this_1
	if TexterClsr_firstFree == 0 then
		if TexterClsr_maxIndex < JASS_MAX_ARRAY_SIZE then
			set TexterClsr_maxIndex = TexterClsr_maxIndex + 1
			set this_1 = TexterClsr_maxIndex
			set TexterClsr_typeId[this_1] = 1500
		else
			call error("Out of memory: Could not create TexterClsr_forSelectedTexters_add_Texter.")
			set this_1 = 0
		endif
	else
		set TexterClsr_firstFree = TexterClsr_firstFree - 1
		set this_1 = TexterClsr_nextFree[TexterClsr_firstFree]
		set TexterClsr_typeId[this_1] = 1500
	endif
	return this_1
endfunction

function alloc_ForGroupCallback_forUnitsOfPlayer_Texter takes nothing returns integer
	local integer this_1
	if ForGroupCallback_firstFree == 0 then
		if ForGroupCallback_maxIndex < JASS_MAX_ARRAY_SIZE then
			set ForGroupCallback_maxIndex = ForGroupCallback_maxIndex + 1
			set this_1 = ForGroupCallback_maxIndex
			set ForGroupCallback_typeId[this_1] = 880
		else
			call error("Out of memory: Could not create ForGroupCallback_forUnitsOfPlayer_Texter.")
			set this_1 = 0
		endif
	else
		set ForGroupCallback_firstFree = ForGroupCallback_firstFree - 1
		set this_1 = ForGroupCallback_nextFree[ForGroupCallback_firstFree]
		set ForGroupCallback_typeId[this_1] = 880
	endif
	return this_1
endfunction

function forUnitsOfPlayer takes player p, integer c returns nothing
	call pushCallback(c)
	call GroupEnumUnitsOfPlayer(ClosureForGroups_DUMMY_GROUP, p, ClosureForGroups_filter)
	call popCallback()
endfunction

function forSelectedTexters takes integer cb_1 returns nothing
	local player p = GetTriggerPlayer()
	local player temp = p
	local integer clVar = alloc_ForGroupCallback_forUnitsOfPlayer_Texter()
	set cb_2284[clVar] = cb_1
	call forUnitsOfPlayer(temp, clVar)
endfunction

function onEvent_add_Texter takes integer this_1 returns nothing
	local string text = GetEventPlayerChatString()
	local integer tokens_1
	local string temp
	local integer clVar
	local integer clVar_1
	local string temp_1
	local integer clVar_2
	local integer clVar_3
	local player temp_2
	if string_contains(text, " ") then
		set tokens_1 = string_split(text, " ")
		set temp = stringFromIndex(dispatch_LinkedList_LinkedList_LinkedList_dequeue(tokens_1))
		if temp == "-st" then
			set clVar = alloc_TexterClsr_forSelectedTexters_add_Texter()
			set tokens[clVar] = tokens_1
			call forSelectedTexters(clVar)
		elseif temp == "-sc" then
			set temp_2 = GetTriggerPlayer()
			set clVar_1 = alloc_ForGroupCallback_forUnitsOfPlayer_add_Texter()
			set tokens_3016[clVar_1] = tokens_1
			call forUnitsOfPlayer(temp_2, clVar_1)
		endif
	else
		set temp_1 = text
		if temp_1 == "-sht" then
			set clVar_2 = alloc_TexterClsr_forSelectedTexters_add_Texter_1929()
			call forSelectedTexters(clVar_2)
		elseif temp_1 == "-ht" then
			set clVar_3 = alloc_TexterClsr_forSelectedTexters_add_Texter_1930()
			call forSelectedTexters(clVar_3)
		endif
	endif
endfunction

function Tracks_recreateDummy takes integer this_1 returns nothing
	call dispatch_UnitEntity_Entity_UnitEntity_setNewActor(this_1, createUnit_2356(Entity_owner[this_1], Tracks_TRACKS[Tracks_tsize[this_1]], Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1], angle_op_minus(vec2_getAngle(Tracks_dir_x[this_1], Tracks_dir_y[this_1]), real_asAngleDegrees(90.))))
endfunction

function dispatch_Tracks_Tracks_Tracks_recreateDummy takes integer this_1 returns nothing
	if Serializable_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling Tracks.recreateDummy")
		else
			call error("Called Tracks.recreateDummy on invalid object.")
		endif
	endif
	call Tracks_recreateDummy(this_1)
endfunction

function Tracks_updateTrack takes integer this_1 returns nothing
	local real tuple_temp
	local real tuple_temp_1
	local real tuple_temp_2
	local real tuple_temp_3
	local real tuple_temp_4
	local real tuple_temp_5
	local real tuple_temp_6
	local real tuple_temp_7
	if (Tracks_dir_x[this_1] == Vectors_UP_x and Tracks_dir_y[this_1] == Vectors_UP_y) or (Tracks_dir_x[this_1] == Vectors_DOWN_x and Tracks_dir_y[this_1] == Vectors_DOWN_y) then
		set tuple_temp = Entity_pos_x[this_1] - 64.
		set tuple_temp_1 = Entity_pos_y[this_1] - Tracks_tsize[this_1] * 128 - 64.
		set tuple_temp_2 = Entity_pos_x[this_1] + 64.
		set tuple_temp_3 = Entity_pos_y[this_1] + Tracks_tsize[this_1] * 128 + 64.
		set Tracks_rct_min_x[this_1] = tuple_temp
		set Tracks_rct_min_y[this_1] = tuple_temp_1
		set Tracks_rct_max_x[this_1] = tuple_temp_2
		set Tracks_rct_max_y[this_1] = tuple_temp_3
	else
		set tuple_temp_4 = Entity_pos_x[this_1] - Tracks_tsize[this_1] * 128 - 64.
		set tuple_temp_5 = Entity_pos_y[this_1] - 64.
		set tuple_temp_6 = Entity_pos_x[this_1] + Tracks_tsize[this_1] * 128 + 64.
		set tuple_temp_7 = Entity_pos_y[this_1] + 64.
		set Tracks_rct_min_x[this_1] = tuple_temp_4
		set Tracks_rct_min_y[this_1] = tuple_temp_5
		set Tracks_rct_max_x[this_1] = tuple_temp_6
		set Tracks_rct_max_y[this_1] = tuple_temp_7
	endif
	call dispatch_Tracks_Tracks_Tracks_recreateDummy(this_1)
endfunction

function dispatch_Tracks_Tracks_Tracks_updateTrack takes integer this_1 returns nothing
	if Serializable_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling Tracks.updateTrack")
		else
			call error("Called Tracks.updateTrack on invalid object.")
		endif
	endif
	call Tracks_updateTrack(this_1)
endfunction

function unit_setTimeScale takes unit this_1, real scale returns nothing
	call SetUnitTimeScale(this_1, scale)
endfunction

function Tracks_onCast takes integer this_1 returns nothing
	local integer id = GetSpellAbilityId()
	local integer temp = id
	local real tuple_temp
	local real tuple_temp_1
	local real tuple_temp_2
	local real tuple_temp_3
	local real tuple_temp_4
	local real tuple_temp_5
	local real tuple_temp_6
	local real tuple_temp_7
	local real tuple_temp_8
	local real tuple_temp_9
	local real tuple_temp_10
	local real tuple_temp_11
	local real tuple_temp_12
	local real tuple_temp_13
	local real tuple_temp_14
	local real tuple_temp_15
	if temp == Tracks_INC_ID then
		call dispatch_ConfigValue_ConfigValue_ConfigValue_increment(Tracks_trackSpeed[this_1], this_1, 20.)
	elseif temp == Tracks_DEC_ID then
		call dispatch_ConfigValue_ConfigValue_ConfigValue_decrement(Tracks_trackSpeed[this_1], this_1, 1.)
	elseif temp == Tracks_INCLENGTH_ID then
		if Tracks_tsize[this_1] < 2 then
			set Tracks_tsize[this_1] = Tracks_tsize[this_1] + 1
			call dispatch_Tracks_Tracks_Tracks_updateTrack(this_1)
		endif
	elseif temp == Tracks_DECLENGTH_ID then
		if Tracks_tsize[this_1] > 0 then
			set Tracks_tsize[this_1] = Tracks_tsize[this_1] - 1
			call dispatch_Tracks_Tracks_Tracks_updateTrack(this_1)
		endif
	elseif temp == Tracks_LEFT_ID then
		if Tracks_dir_x[this_1] == Vectors_UP_x and Tracks_dir_y[this_1] == Vectors_UP_y then
			set tuple_temp = Vectors_LEFT_x
			set tuple_temp_1 = Vectors_LEFT_y
			set Tracks_dir_x[this_1] = tuple_temp
			set Tracks_dir_y[this_1] = tuple_temp_1
		elseif Tracks_dir_x[this_1] == Vectors_LEFT_x and Tracks_dir_y[this_1] == Vectors_LEFT_y then
			set tuple_temp_2 = Vectors_DOWN_x
			set tuple_temp_3 = Vectors_DOWN_y
			set Tracks_dir_x[this_1] = tuple_temp_2
			set Tracks_dir_y[this_1] = tuple_temp_3
		elseif Tracks_dir_x[this_1] == Vectors_DOWN_x and Tracks_dir_y[this_1] == Vectors_DOWN_y then
			set tuple_temp_4 = Vectors_RIGHT_x
			set tuple_temp_5 = Vectors_RIGHT_y
			set Tracks_dir_x[this_1] = tuple_temp_4
			set Tracks_dir_y[this_1] = tuple_temp_5
		else
			set tuple_temp_6 = Vectors_UP_x
			set tuple_temp_7 = Vectors_UP_y
			set Tracks_dir_x[this_1] = tuple_temp_6
			set Tracks_dir_y[this_1] = tuple_temp_7
		endif
		call dispatch_Tracks_Tracks_Tracks_updateTrack(this_1)
	elseif temp == Tracks_RIGHT_ID then
		if Tracks_dir_x[this_1] == Vectors_UP_x and Tracks_dir_y[this_1] == Vectors_UP_y then
			set tuple_temp_8 = Vectors_RIGHT_x
			set tuple_temp_9 = Vectors_RIGHT_y
			set Tracks_dir_x[this_1] = tuple_temp_8
			set Tracks_dir_y[this_1] = tuple_temp_9
		elseif Tracks_dir_x[this_1] == Vectors_RIGHT_x and Tracks_dir_y[this_1] == Vectors_RIGHT_y then
			set tuple_temp_10 = Vectors_DOWN_x
			set tuple_temp_11 = Vectors_DOWN_y
			set Tracks_dir_x[this_1] = tuple_temp_10
			set Tracks_dir_y[this_1] = tuple_temp_11
		elseif Tracks_dir_x[this_1] == Vectors_DOWN_x and Tracks_dir_y[this_1] == Vectors_DOWN_y then
			set tuple_temp_12 = Vectors_LEFT_x
			set tuple_temp_13 = Vectors_LEFT_y
			set Tracks_dir_x[this_1] = tuple_temp_12
			set Tracks_dir_y[this_1] = tuple_temp_13
		else
			set tuple_temp_14 = Vectors_UP_x
			set tuple_temp_15 = Vectors_UP_y
			set Tracks_dir_x[this_1] = tuple_temp_14
			set Tracks_dir_y[this_1] = tuple_temp_15
		endif
		call dispatch_Tracks_Tracks_Tracks_updateTrack(this_1)
	endif
	call unit_setTimeScale(UnitEntity_actor[this_1], 0.5 + dispatch_ConfigValue_ConfigValue_ConfigValue_get(Tracks_trackSpeed[this_1]) / 6.)
endfunction

function dispatch_Tracks_Tracks_Tracks_onCast takes integer this_1 returns nothing
	if Serializable_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling Tracks.onCast")
		else
			call error("Called Tracks.onCast on invalid object.")
		endif
	endif
	call Tracks_onCast(this_1)
endfunction

function onEvent_add_Tracks_Tracks takes integer this_1 returns nothing
	call dispatch_Tracks_Tracks_Tracks_onCast(this_2998[this_1])
endfunction

function Trap_addConfiger takes integer this_1, boolean dur, boolean wval returns nothing
	call UnitRemoveAbility(UnitEntity_actor[this_1], Trap_INSTANT_KILL_ID)
	call UnitRemoveAbility(UnitEntity_actor[this_1], Trap_STUN_ID)
	call UnitRemoveAbility(UnitEntity_actor[this_1], Trap_SHAKE_ID)
	call UnitRemoveAbility(UnitEntity_actor[this_1], Trap_SPEED_ID)
	call UnitRemoveAbility(UnitEntity_actor[this_1], Trap_KNOCKBACK_ID)
	call UnitRemoveAbility(UnitEntity_actor[this_1], Trap_POISON_ID)
	call UnitAddAbility(UnitEntity_actor[this_1], Trap_INCREASE_INTERVAL_ID)
	call UnitAddAbility(UnitEntity_actor[this_1], Trap_DECREASE_INTERVAL_ID)
	call UnitAddAbility(UnitEntity_actor[this_1], Trap_START_ID)
	call UnitAddAbility(UnitEntity_actor[this_1], Trap_NEXT_EFFECT_ID)
	call UnitAddAbility(UnitEntity_actor[this_1], Trap_PREVIOUS_EFFECT_ID)
	if dur then
		call UnitAddAbility(UnitEntity_actor[this_1], Trap_INCREASE_DURATION_ID)
		call UnitAddAbility(UnitEntity_actor[this_1], Trap_DECREASE_DURATION_ID)
	endif
	if wval then
		call UnitAddAbility(UnitEntity_actor[this_1], Trap_INCREASE_VALUE_ID)
		call UnitAddAbility(UnitEntity_actor[this_1], Trap_DECREASE_VALUE_ID)
	endif
	if StaticBaseObject_noRally[this_1] != null then
		call effect_destr(StaticBaseObject_noRally[this_1])
		set StaticBaseObject_noRally[this_1] = null
	endif
endfunction

function dispatch_Trap_Trap_Trap_addConfiger takes integer this_1, boolean dur, boolean wval returns nothing
	if Serializable_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling Trap.addConfiger")
		else
			call error("Called Trap.addConfiger on invalid object.")
		endif
	endif
	call Trap_addConfiger(this_1, dur, wval)
endfunction

function Trap_onCast takes integer this_1 returns boolean
	local integer spell_id = GetSpellAbilityId()
	local real tuple_temp = EventData_getSpellTargetPos()
	local real tuple_temp_1 = EventData_getSpellTargetPos_return_y
	local real tpos_x_1 = tuple_temp
	local real tpos_y_1 = tuple_temp_1
	local integer temp = spell_id
	local integer temp_1
	local integer temp_2
	local integer temp_3
	local integer temp_4
	local integer tile_x
	local integer tile_y
	local integer tile_key
	local integer tile_currentType
	local integer tile_lastType
	local integer tile_modifiers_val
	local image goo
	local image receiver
	local integer tuple_temp_2
	local integer tuple_temp_3
	local integer tuple_temp_4
	local integer tuple_temp_5
	local integer tuple_temp_6
	local integer tuple_temp_7
	if temp == Trap_NEXT_EFFECT_ID then
		if Trap_sfxid[this_1] >= Trap_SFX_COUNT then
			set Trap_sfxid[this_1] = 0
		else
			set Trap_sfxid[this_1] = Trap_sfxid[this_1] + 1
		endif
		if Trap_sfxid[this_1] < Trap_SFX_COUNT then
			call DestroyEffect(AddSpecialEffect(Trap_SFX_STRINGS[Trap_sfxid[this_1]], unit_getX(UnitEntity_actor[this_1]), unit_getY(UnitEntity_actor[this_1])))
		else
			call createFText_2346(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1], 0., 0.05, "|cffC51019No Effect", 14., 2., 255, 255, 255, 0, Entity_owner[this_1])
		endif
	elseif temp == Trap_PREVIOUS_EFFECT_ID then
		if Trap_sfxid[this_1] <= 0 then
			set Trap_sfxid[this_1] = Trap_SFX_COUNT
		else
			set Trap_sfxid[this_1] = Trap_sfxid[this_1] - 1
		endif
		if Trap_sfxid[this_1] < Trap_SFX_COUNT then
			call DestroyEffect(AddSpecialEffect(Trap_SFX_STRINGS[Trap_sfxid[this_1]], unit_getX(UnitEntity_actor[this_1]), unit_getY(UnitEntity_actor[this_1])))
		else
			call createFText_2346(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1], 0., 0.05, "|cffC51019No Effect", 14., 2., 255, 255, 255, 0, Entity_owner[this_1])
		endif
	elseif temp == Trap_INSTANT_KILL_ID then
		set Trap_a[this_1] = 0
		call dispatch_Trap_Trap_Trap_addConfiger(this_1, false, false)
	elseif temp == Trap_STUN_ID then
		set Trap_a[this_1] = 1
		set Trap_duration[this_1] = 1.
		call dispatch_Trap_Trap_Trap_addConfiger(this_1, true, false)
	elseif temp == Trap_SPEED_ID then
		set Trap_a[this_1] = 3
		set Trap_value[this_1] = 120.
		set Trap_duration[this_1] = 1.
		call dispatch_Trap_Trap_Trap_addConfiger(this_1, false, true)
	elseif temp == Trap_SHAKE_ID then
		set Trap_a[this_1] = 5
		set Trap_value[this_1] = 500.
		set Trap_duration[this_1] = 3.
		call dispatch_Trap_Trap_Trap_addConfiger(this_1, true, true)
	elseif temp == Trap_KNOCKBACK_ID then
		set Trap_a[this_1] = 4
		set Trap_value[this_1] = 10.
		call unit_addAbility(UnitEntity_actor[this_1], 1095917932)
		call unit_addAbility(UnitEntity_actor[this_1], Trap_KNOCKBACK_PULL_ID)
		call dispatch_Trap_Trap_Trap_addConfiger(this_1, false, true)
	elseif temp == Trap_POISON_ID then
		set Trap_a[this_1] = 2
		call dispatch_Trap_Trap_Trap_addConfiger(this_1, false, false)
	elseif temp == Trap_INCREASE_INTERVAL_ID then
		if Trap_interval[this_1] >= 10. then
			call createFText_2346(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1], 0., 0.05, "|cffC51019Max", 10., 2., 255, 255, 255, 0, Entity_owner[this_1])
		else
			set Trap_interval[this_1] = Trap_interval[this_1] + 0.25
			call createFText_2346(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1], 0., 0.05, "|cffC51019Intervall " + R2SW(Trap_interval[this_1], 1, 2), 10., 2., 255, 255, 255, 0, Entity_owner[this_1])
		endif
	elseif temp == Trap_DECREASE_INTERVAL_ID then
		if Trap_interval[this_1] < 0.75 then
			call createFText_2346(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1], 0., 0.05, "|cffC51019Min", 10., 2., 255, 255, 255, 0, Entity_owner[this_1])
		else
			set Trap_interval[this_1] = Trap_interval[this_1] - 0.25
			call createFText_2346(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1], 0., 0.05, "|cffC51019Intervall " + R2SW(Trap_interval[this_1], 1, 2), 10., 2., 255, 255, 255, 0, Entity_owner[this_1])
		endif
	elseif temp == Trap_INCREASE_VALUE_ID then
		set temp_1 = Trap_a[this_1]
		if temp_1 == 4 then
			if Trap_value[this_1] >= 200. then
				call createFText_2346(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1], 0., 0.05, "|cffC51019Max Force", 10., 2., 255, 255, 255, 0, Entity_owner[this_1])
			else
				set Trap_value[this_1] = Trap_value[this_1] + 5.
				call createFText_2346(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1], 0., 0.05, "|cffC51019Force " + R2SW(Trap_value[this_1], 1, 0), 10., 2., 255, 255, 255, 0, Entity_owner[this_1])
			endif
		elseif temp_1 == 5 then
			if Trap_value[this_1] >= 1500. then
				call createFText_2346(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1], 0., 0.05, "|cffC51019Intensity Max", 10., 2., 255, 255, 255, 0, Entity_owner[this_1])
			else
				set Trap_value[this_1] = Trap_value[this_1] + 100.
				call createFText_2346(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1], 0., 0.05, "|cffC51019Intensity " + R2SW(Trap_value[this_1], 1, 0), 10., 2., 255, 255, 255, 0, Entity_owner[this_1])
			endif
		elseif temp_1 == 3 then
			if Trap_value[this_1] >= 180. then
				set Trap_uptimes[this_1] = Trap_uptimes[this_1] + 1
				call createFText_2346(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1], 0., 0.05, "|cffC51019Max Speed", 10., 2., 255, 255, 255, 0, Entity_owner[this_1])
			else
				set Trap_value[this_1] = Trap_value[this_1] + 20.
				call createFText_2346(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1], 0., 0.05, "|cffC51019Speed Bonus " + R2SW(Trap_value[this_1], 1, 0) + "%", 10., 2., 255, 255, 255, 0, Entity_owner[this_1])
			endif
			if Trap_uptimes[this_1] > 10 then
				set Trap_uptimes[this_1] = -99999999
				call printTimedToPlayer("|cff08C5E6Relax|r, it's already |cffCE2919max|r... |cffFF7B29But maybe this will help you!", 20., Entity_owner[this_1])
				call unit_addAbility(UnitEntity_actor[this_1], Trap_SPECIAL_ID)
			endif
		endif
	elseif temp == Trap_DECREASE_VALUE_ID then
		set temp_2 = Trap_a[this_1]
		if temp_2 == 4 then
			if Trap_value[this_1] <= 5. then
				call createFText_2346(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1], 0., 0.05, "|cffC51019Min Force", 10., 2., 255, 255, 255, 0, Entity_owner[this_1])
			else
				set Trap_value[this_1] = Trap_value[this_1] - 5.
				call createFText_2346(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1], 0., 0.05, "|cffC51019Force " + int_toString(real_toInt(Trap_value[this_1])), 10., 2., 255, 255, 255, 0, Entity_owner[this_1])
			endif
		elseif temp_2 == 5 then
			if Trap_value[this_1] <= 100. then
				call createFText_2346(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1], 0., 0.05, "|cffC51019Min Intensity", 10., 2., 255, 255, 255, 0, Entity_owner[this_1])
			else
				set Trap_value[this_1] = Trap_value[this_1] - 100.
				call createFText_2346(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1], 0., 0.05, "|cffC51019Intensity " + int_toString(real_toInt(Trap_value[this_1])), 10., 2., 255, 255, 255, 0, Entity_owner[this_1])
			endif
		elseif temp_2 == 3 then
			if Trap_value[this_1] <= 20. then
				call createFText_2346(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1], 0., 0.05, "|cffC51019Min Speed", 10., 2., 255, 255, 255, 0, Entity_owner[this_1])
			else
				set Trap_value[this_1] = Trap_value[this_1] - 20.
				call createFText_2346(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1], 0., 0.05, "|cffC51019Speed Bonus " + int_toString(real_toInt(Trap_value[this_1])) + "%", 10., 2., 255, 255, 255, 0, Entity_owner[this_1])
			endif
		endif
	elseif temp == Trap_INCREASE_DURATION_ID then
		set temp_3 = Trap_a[this_1]
		if temp_3 == 1 then
			if Trap_duration[this_1] >= 4. then
				call createFText_2346(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1], 0., 0.05, "|cffC51019Max Duration", 10., 2., 255, 255, 255, 0, Entity_owner[this_1])
			else
				set Trap_duration[this_1] = Trap_duration[this_1] + 1.
				call createFText_2346(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1], 0., 0.05, "|cffC51019Duration " + R2SW(Trap_duration[this_1], 1, 0), 10., 2., 255, 255, 255, 0, Entity_owner[this_1])
			endif
		elseif temp_3 == 5 then
			if Trap_duration[this_1] >= 5. then
				call createFText_2346(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1], 0., 0.05, "|cffC51019Max Duration", 10., 2., 255, 255, 255, 0, Entity_owner[this_1])
			else
				set Trap_duration[this_1] = Trap_duration[this_1] + 1.
				call createFText_2346(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1], 0., 0.05, "|cffC51019Duration " + R2SW(Trap_duration[this_1], 1, 0), 10., 2., 255, 255, 255, 0, Entity_owner[this_1])
			endif
		elseif temp_3 == 3 then
			if Trap_duration[this_1] >= 20. then
				call createFText_2346(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1], 0., 0.05, "|cffC51019Max Duration", 10., 2., 255, 255, 255, 0, Entity_owner[this_1])
			else
				set Trap_duration[this_1] = Trap_duration[this_1] + 1.
				call createFText_2346(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1], 0., 0.05, "|cffC51019Duration " + R2SW(Trap_duration[this_1], 1, 0), 10., 2., 255, 255, 255, 0, Entity_owner[this_1])
			endif
		endif
	elseif temp == Trap_DECREASE_DURATION_ID then
		set temp_4 = Trap_a[this_1]
		if temp_4 == 1 then
			if Trap_duration[this_1] <= 1. then
				call createFText_2346(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1], 0., 0.05, "|cffC51019Min Duration", 10., 2., 255, 255, 255, 0, Entity_owner[this_1])
			else
				set Trap_duration[this_1] = Trap_duration[this_1] - 1.
				call createFText_2346(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1], 0., 0.05, "|cffC51019Duration " + R2SW(Trap_duration[this_1], 1, 0), 10., 2., 255, 255, 255, 0, Entity_owner[this_1])
			endif
		elseif temp_4 == 5 then
			if Trap_duration[this_1] <= 1. then
				call createFText_2346(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1], 0., 0.05, "|cffC51019Min Duration", 10., 2., 255, 255, 255, 0, Entity_owner[this_1])
			else
				set Trap_duration[this_1] = Trap_duration[this_1] - 1.
				call createFText_2346(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1], 0., 0.05, "|cffC51019Duration " + R2SW(Trap_duration[this_1], 1, 0), 10., 2., 255, 255, 255, 0, Entity_owner[this_1])
			endif
		elseif temp_4 == 3 then
			if Trap_duration[this_1] <= 1. then
				call createFText_2346(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1], 0., 0.05, "|cffC51019Min Duration", 10., 2., 255, 255, 255, 0, Entity_owner[this_1])
			else
				set Trap_duration[this_1] = Trap_duration[this_1] - 1.
				call createFText_2346(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1], 0., 0.05, "|cffC51019Duration " + R2SW(Trap_duration[this_1], 1, 0), 10., 2., 255, 255, 255, 0, Entity_owner[this_1])
			endif
		endif
	elseif temp == Trap_START_ID then
		call dispatch_Entity_Entity_Entity_DupletListModule_activate(this_1)
		call UnitRemoveAbility(UnitEntity_actor[this_1], Trap_START_ID)
		call UnitAddAbility(UnitEntity_actor[this_1], Trap_STOP_ID)
	elseif temp == Trap_STOP_ID then
		call dispatch_Entity_Entity_Entity_DupletListModule_deactivate(this_1)
		set Trap_timerreal[this_1] = 0.
		call UnitRemoveAbility(UnitEntity_actor[this_1], Trap_STOP_ID)
		call UnitAddAbility(UnitEntity_actor[this_1], Trap_START_ID)
	elseif temp == Trap_KNOCKBACK_PULL_ID then
		set Trap_pull[this_1] = true
		call unit_removeAbility(UnitEntity_actor[this_1], Trap_KNOCKBACK_PULL_ID)
		call unit_addAbility(UnitEntity_actor[this_1], Trap_KNOCKBACK_PUSH_ID)
	elseif temp == Trap_KNOCKBACK_PUSH_ID then
		set Trap_pull[this_1] = false
		call unit_removeAbility(UnitEntity_actor[this_1], Trap_KNOCKBACK_PUSH_ID)
		call unit_addAbility(UnitEntity_actor[this_1], Trap_KNOCKBACK_PULL_ID)
	elseif temp == Trap_SPECIAL_ID then
		set tuple_temp_2 = vec2_getEBRTile(tpos_x_1, tpos_y_1)
		set tuple_temp_3 = vec2_getEBRTile_return_y
		set tuple_temp_4 = vec2_getEBRTile_return_key
		set tuple_temp_5 = vec2_getEBRTile_return_currentType
		set tuple_temp_6 = vec2_getEBRTile_return_lastType
		set tuple_temp_7 = vec2_getEBRTile_return_modifiers_val
		set tile_x = tuple_temp_2
		set tile_y = tuple_temp_3
		set tile_key = tuple_temp_4
		set tile_currentType = tuple_temp_5
		set tile_lastType = tuple_temp_6
		set tile_modifiers_val = tuple_temp_7
		if ( not ebrtile_hasModifier(tile_x, tile_y, tile_key, tile_currentType, tile_lastType, tile_modifiers_val, 3)) and Trap_goocounter[this_1] < 4 then
			set receiver = createImage("textures\\orangegoo.blp", tpos_x_1, tpos_y_1, 128., 128.)
			call image_show(receiver)
			set goo = receiver
			call Trap_goos_set(this_1, Trap_goocounter[this_1], new_Goo(goo, tpos_x_1, tpos_y_1))
			set Trap_goocounter[this_1] = Trap_goocounter[this_1] + 1
			call ebrtile_addModifier(tile_x, tile_y, tile_key, tile_currentType, tile_lastType, tile_modifiers_val, 3)
		endif
	endif
	return false
endfunction

function dispatch_Trap_Trap_Trap_onCast takes integer this_1 returns boolean
	local boolean Trap_Trap_onCast_result
	if Serializable_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling Trap.onCast")
		else
			call error("Called Trap.onCast on invalid object.")
		endif
	endif
	set Trap_Trap_onCast_result = Trap_onCast(this_1)
	return Trap_Trap_onCast_result
endfunction

function onEvent_add_Trap_Trap takes integer this_1 returns boolean
	return dispatch_Trap_Trap_Trap_onCast(this_2959[this_1])
endfunction

function alloc_AirKiller takes nothing returns integer
	local integer this_1
	if Serializable_firstFree == 0 then
		if Serializable_maxIndex < JASS_MAX_ARRAY_SIZE then
			set Serializable_maxIndex = Serializable_maxIndex + 1
			set this_1 = Serializable_maxIndex
			set Serializable_typeId[this_1] = 1176
		else
			call error("Out of memory: Could not create AirKiller.")
			set this_1 = 0
		endif
	else
		set Serializable_firstFree = Serializable_firstFree - 1
		set this_1 = Serializable_nextFree[Serializable_firstFree]
		set Serializable_typeId[this_1] = 1176
	endif
	return this_1
endfunction

function AirKiller_init takes integer this_1 returns nothing
endfunction

function construct_AirKiller2 takes integer this_1, real pos_x_1, real pos_y_1, player owner returns nothing
	call construct_EscaperSensorSetup3(this_1, vec2_toVec3(pos_x_1, pos_y_1), vec2_toVec3_return_y, vec2_toVec3_return_z, owner, EscaperKillers_AIR_KILLER_ID, EscaperKillers_COLL_SIZE_AIR_XY, EscaperKillers_COLL_SIZE_AIR_Z)
	call AirKiller_init(this_1)
endfunction

function new_AirKiller_3608 takes real pos_x_1, real pos_y_1, player owner returns integer
	local integer this_1 = alloc_AirKiller()
	call construct_AirKiller2(this_1, pos_x_1, pos_y_1, owner)
	return this_1
endfunction

function EventListener_addSpellInternal takes unit u_1, integer abilId, integer listener_1 returns integer
	local integer index
	set OnCastListener_abilId[listener_1] = abilId
	if u_1 != null then
		set OnCastListener_eventUnit[listener_1] = u_1
		set index = unit_getIndex(u_1)
		if EventListener_castMapCasters[index] != 0 then
			set OnCastListener_prev[EventListener_castMapCasters[index]] = listener_1
			set OnCastListener_next[listener_1] = EventListener_castMapCasters[index]
		endif
		set EventListener_castMapCasters[index] = listener_1
	else
		if dispatch_HashMap_HashMap_HashMap_has(EventListener_castMap, abilId) then
			set OnCastListener_prev[dispatch_HashMap_HashMap_HashMap_get(EventListener_castMap, abilId)] = listener_1
			set OnCastListener_next[listener_1] = dispatch_HashMap_HashMap_HashMap_get(EventListener_castMap, abilId)
		endif
		call dispatch_HashMap_HashMap_HashMap_put(EventListener_castMap, abilId, listener_1)
	endif
	return listener_1
endfunction

function EventListener_onCast takes unit u_1, integer listener_1 returns integer
	return EventListener_addSpellInternal(u_1, -1, listener_1)
endfunction

function alloc_OnCast_onCast_Arcanery_Arcanery takes nothing returns integer
	local integer this_1
	if OnCastListener_firstFree == 0 then
		if OnCastListener_maxIndex < JASS_MAX_ARRAY_SIZE then
			set OnCastListener_maxIndex = OnCastListener_maxIndex + 1
			set this_1 = OnCastListener_maxIndex
			set OnCastListener_typeId[this_1] = 1021
		else
			call error("Out of memory: Could not create OnCast_onCast_Arcanery_Arcanery.")
			set this_1 = 0
		endif
	else
		set OnCastListener_firstFree = OnCastListener_firstFree - 1
		set this_1 = OnCastListener_nextFree[OnCastListener_firstFree]
		set OnCastListener_typeId[this_1] = 1021
	endif
	return this_1
endfunction

function OnCast_init takes integer this_1 returns nothing
endfunction

function OnCastListener_init takes integer this_1 returns nothing
	set OnCastListener_next[this_1] = 0
	set OnCastListener_prev[this_1] = 0
	set OnCastListener_eventUnit[this_1] = null
endfunction

function construct_OnCastListener takes integer this_1 returns nothing
	call OnCastListener_init(this_1)
endfunction

function construct_OnCast takes integer this_1 returns nothing
	call construct_OnCastListener(this_1)
	call OnCast_init(this_1)
endfunction

function construct_Arcanery2 takes integer this_1, real position_x, real position_y, player owner returns nothing
	local integer receiver
	local integer clVar
	local unit temp
	call construct_StaticBaseObject(this_1, position_x, position_y, createUnit(owner, BuilderConstants_ARCANERY_ID, position_x, position_y, 0.), 102., ref_function_Arcanery_onEnterEv, ref_function_code__Arcanery_Arcanery_2635)
	call Arcanery_init(this_1)
	call dispatch_StaticBaseObject_BaseObject_StaticBaseObject_clearQuestionmark(this_1)
	set receiver = new_Fx(vec3_op_plus(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1], 0., 0., 76.), vec3_op_plus_return_y, vec3_op_plus_return_z, 0.)
	call dispatch_Fx_Fx_Fx_setScale(receiver, 1.25)
	set Arcanery_currentEffect[this_1] = receiver
	call dispatch_Arcanery_Arcanery_Arcanery_recreateEffect(this_1)
	set temp = UnitEntity_actor[this_1]
	set clVar = alloc_OnCast_onCast_Arcanery_Arcanery()
	call construct_OnCast(clVar)
	set this_2953[clVar] = this_1
	call EventListener_onCast(temp, clVar)
endfunction

function new_Arcanery_3611 takes real position_x, real position_y, player owner returns integer
	local integer this_1 = alloc_Arcanery()
	call construct_Arcanery2(this_1, position_x, position_y, owner)
	return this_1
endfunction

function construct_BigKiller2 takes integer this_1, real pos_x_1, real pos_y_1, player owner returns nothing
	local integer temp = this_1
	local real tuple_temp = vec2_toVec3(pos_x_1, pos_y_1)
	local real tuple_temp_1 = vec2_toVec3_return_y
	local real tuple_temp_2 = vec2_toVec3_return_z
	local real temp_x = tuple_temp
	local real temp_y = tuple_temp_1
	local real temp_z = tuple_temp_2
	local player temp_1 = owner
	local integer temp_tuple_bigKillerId
	local integer tuple_temp_3
	call dispatch_RegionData_RegionData_RegionData_getTypeSet(getRegionData_3304(pos_x_1, pos_y_1))
	set tuple_temp_3 = dispatch_RegionData_RegionData_RegionData_getTypeSet_return_bigKillerId
	set temp_tuple_bigKillerId = tuple_temp_3
	call construct_EscaperSensorSetup3(temp, temp_x, temp_y, temp_z, temp_1, temp_tuple_bigKillerId, EscaperKillers_COLL_SIZE_BK, EscaperKillers_COLL_SIZE_BK * 0.75)
	call BigKiller_init(this_1)
endfunction

function new_BigKiller_3618 takes real pos_x_1, real pos_y_1, player owner returns integer
	local integer this_1 = alloc_BigKiller()
	call construct_BigKiller2(this_1, pos_x_1, pos_y_1, owner)
	return this_1
endfunction

function alloc_Bomber takes nothing returns integer
	local integer this_1
	if Serializable_firstFree == 0 then
		if Serializable_maxIndex < JASS_MAX_ARRAY_SIZE then
			set Serializable_maxIndex = Serializable_maxIndex + 1
			set this_1 = Serializable_maxIndex
			set Serializable_typeId[this_1] = 1161
		else
			call error("Out of memory: Could not create Bomber.")
			set this_1 = 0
		endif
	else
		set Serializable_firstFree = Serializable_firstFree - 1
		set this_1 = Serializable_nextFree[Serializable_firstFree]
		set Serializable_typeId[this_1] = 1161
	endif
	return this_1
endfunction

function Bomber_init takes integer this_1 returns nothing
	set Bomber_realorder[this_1] = true
endfunction

function alloc_EventListener_add_Bomber_Bomber takes nothing returns integer
	local integer this_1
	if EventListener_firstFree == 0 then
		if EventListener_maxIndex < JASS_MAX_ARRAY_SIZE then
			set EventListener_maxIndex = EventListener_maxIndex + 1
			set this_1 = EventListener_maxIndex
			set EventListener_typeId[this_1] = 756
		else
			call error("Out of memory: Could not create EventListener_add_Bomber_Bomber.")
			set this_1 = 0
		endif
	else
		set EventListener_firstFree = EventListener_firstFree - 1
		set this_1 = EventListener_nextFree[EventListener_firstFree]
		set EventListener_typeId[this_1] = 756
	endif
	return this_1
endfunction

function alloc_EventListener_add_Bomber_Bomber_1675 takes nothing returns integer
	local integer this_1
	if EventListener_firstFree == 0 then
		if EventListener_maxIndex < JASS_MAX_ARRAY_SIZE then
			set EventListener_maxIndex = EventListener_maxIndex + 1
			set this_1 = EventListener_maxIndex
			set EventListener_typeId[this_1] = 757
		else
			call error("Out of memory: Could not create EventListener_add_Bomber_Bomber.")
			set this_1 = 0
		endif
	else
		set EventListener_firstFree = EventListener_firstFree - 1
		set this_1 = EventListener_nextFree[EventListener_firstFree]
		set EventListener_typeId[this_1] = 757
	endif
	return this_1
endfunction

function alloc_EventListener_add_Bomber_Bomber_1676 takes nothing returns integer
	local integer this_1
	if EventListener_firstFree == 0 then
		if EventListener_maxIndex < JASS_MAX_ARRAY_SIZE then
			set EventListener_maxIndex = EventListener_maxIndex + 1
			set this_1 = EventListener_maxIndex
			set EventListener_typeId[this_1] = 758
		else
			call error("Out of memory: Could not create EventListener_add_Bomber_Bomber.")
			set this_1 = 0
		endif
	else
		set EventListener_firstFree = EventListener_firstFree - 1
		set this_1 = EventListener_nextFree[EventListener_firstFree]
		set EventListener_typeId[this_1] = 758
	endif
	return this_1
endfunction

function alloc_EventListener_add_Bomber_Bomber_1677 takes nothing returns integer
	local integer this_1
	if EventListener_firstFree == 0 then
		if EventListener_maxIndex < JASS_MAX_ARRAY_SIZE then
			set EventListener_maxIndex = EventListener_maxIndex + 1
			set this_1 = EventListener_maxIndex
			set EventListener_typeId[this_1] = 759
		else
			call error("Out of memory: Could not create EventListener_add_Bomber_Bomber.")
			set this_1 = 0
		endif
	else
		set EventListener_firstFree = EventListener_firstFree - 1
		set this_1 = EventListener_nextFree[EventListener_firstFree]
		set EventListener_typeId[this_1] = 759
	endif
	return this_1
endfunction

function alloc_EventListener_add_Bomber_Bomber_1678 takes nothing returns integer
	local integer this_1
	if EventListener_firstFree == 0 then
		if EventListener_maxIndex < JASS_MAX_ARRAY_SIZE then
			set EventListener_maxIndex = EventListener_maxIndex + 1
			set this_1 = EventListener_maxIndex
			set EventListener_typeId[this_1] = 760
		else
			call error("Out of memory: Could not create EventListener_add_Bomber_Bomber.")
			set this_1 = 0
		endif
	else
		set EventListener_firstFree = EventListener_firstFree - 1
		set this_1 = EventListener_nextFree[EventListener_firstFree]
		set EventListener_typeId[this_1] = 760
	endif
	return this_1
endfunction

function construct_Bomber takes integer this_1, real pos_x_1, real pos_y_1, player owner returns nothing
	local unit receiver
	local unit receiver_1
	local unit receiver_2
	local integer clVar
	local integer clVar_1
	local integer clVar_2
	local integer clVar_3
	local integer clVar_4
	local unit temp
	local playerunitevent temp_1
	local unit temp_2
	local playerunitevent temp_3
	local unit temp_4
	local playerunitevent temp_5
	local unit temp_6
	local playerunitevent temp_7
	local unit temp_8
	local playerunitevent temp_9
	call construct_UnitEntity(this_1, createUnit(owner, Bomber_BOMBER_ID, pos_x_1, pos_y_1, 0.))
	call Bomber_init(this_1)
	call Entity_setCurrentRegion(this_1)
	set receiver = createUnit(owner, Bomber_BOMBER_ID, pos_x_1, pos_y_1, 0.)
	call unit_addAbility(receiver, Basics_GHOST_INVIS_ID)
	set receiver_1 = receiver
	call unit_setEntity(receiver_1, this_1)
	set Bomber_setup[this_1] = receiver_1
	set receiver_2 = UnitEntity_actor[this_1]
	call unit_addAbility(receiver_2, Basics_LOCUST_ID)
	call UnitAddType(Bomber_setup[this_1], UNIT_TYPE_PEON)
	call UnitAddType(UnitEntity_actor[this_1], UNIT_TYPE_PEON)
	set temp = Bomber_setup[this_1]
	set temp_1 = EVENT_PLAYER_UNIT_ISSUED_ORDER
	set clVar = alloc_EventListener_add_Bomber_Bomber()
	call construct_EventListener(clVar)
	set this_2970[clVar] = this_1
	call EventListener_add_436(temp, temp_1, clVar)
	set temp_2 = Bomber_setup[this_1]
	set temp_3 = EVENT_PLAYER_UNIT_ISSUED_POINT_ORDER
	set clVar_1 = alloc_EventListener_add_Bomber_Bomber_1675()
	call construct_EventListener(clVar_1)
	set this_2971[clVar_1] = this_1
	call EventListener_add_436(temp_2, temp_3, clVar_1)
	set temp_4 = Bomber_setup[this_1]
	set temp_5 = EVENT_PLAYER_UNIT_ISSUED_TARGET_ORDER
	set clVar_2 = alloc_EventListener_add_Bomber_Bomber_1676()
	call construct_EventListener(clVar_2)
	set this_2972[clVar_2] = this_1
	call EventListener_add_436(temp_4, temp_5, clVar_2)
	set temp_6 = Bomber_setup[this_1]
	set temp_7 = EVENT_PLAYER_UNIT_ATTACKED
	set clVar_3 = alloc_EventListener_add_Bomber_Bomber_1677()
	call construct_EventListener(clVar_3)
	set this_2973[clVar_3] = this_1
	call EventListener_add_436(temp_6, temp_7, clVar_3)
	set temp_8 = Bomber_setup[this_1]
	set temp_9 = EVENT_PLAYER_UNIT_SPELL_CAST
	set clVar_4 = alloc_EventListener_add_Bomber_Bomber_1678()
	call construct_EventListener(clVar_4)
	set this_2974[clVar_4] = this_1
	call EventListener_add_436(temp_8, temp_9, clVar_4)
	call unit_abortOrder(Bomber_setup[this_1])
	call unit_abortOrder(UnitEntity_actor[this_1])
endfunction

function new_Bomber takes real pos_x_1, real pos_y_1, player owner returns integer
	local integer this_1 = alloc_Bomber()
	call construct_Bomber(this_1, pos_x_1, pos_y_1, owner)
	return this_1
endfunction

function alloc_Bombertower takes nothing returns integer
	local integer this_1
	if Serializable_firstFree == 0 then
		if Serializable_maxIndex < JASS_MAX_ARRAY_SIZE then
			set Serializable_maxIndex = Serializable_maxIndex + 1
			set this_1 = Serializable_maxIndex
			set Serializable_typeId[this_1] = 1196
		else
			call error("Out of memory: Could not create Bombertower.")
			set this_1 = 0
		endif
	else
		set Serializable_firstFree = Serializable_firstFree - 1
		set this_1 = Serializable_nextFree[Serializable_firstFree]
		set Serializable_typeId[this_1] = 1196
	endif
	return this_1
endfunction

function Bombertower_init takes integer this_1 returns nothing
	set Bombertower_skipOrder[this_1] = false
endfunction

function alloc_EventListener_add_Bombertower_Bombertower takes nothing returns integer
	local integer this_1
	if EventListener_firstFree == 0 then
		if EventListener_maxIndex < JASS_MAX_ARRAY_SIZE then
			set EventListener_maxIndex = EventListener_maxIndex + 1
			set this_1 = EventListener_maxIndex
			set EventListener_typeId[this_1] = 761
		else
			call error("Out of memory: Could not create EventListener_add_Bombertower_Bombertower.")
			set this_1 = 0
		endif
	else
		set EventListener_firstFree = EventListener_firstFree - 1
		set this_1 = EventListener_nextFree[EventListener_firstFree]
		set EventListener_typeId[this_1] = 761
	endif
	return this_1
endfunction

function alloc_EventListener_add_Bombertower_Bombertower_1680 takes nothing returns integer
	local integer this_1
	if EventListener_firstFree == 0 then
		if EventListener_maxIndex < JASS_MAX_ARRAY_SIZE then
			set EventListener_maxIndex = EventListener_maxIndex + 1
			set this_1 = EventListener_maxIndex
			set EventListener_typeId[this_1] = 762
		else
			call error("Out of memory: Could not create EventListener_add_Bombertower_Bombertower.")
			set this_1 = 0
		endif
	else
		set EventListener_firstFree = EventListener_firstFree - 1
		set this_1 = EventListener_nextFree[EventListener_firstFree]
		set EventListener_typeId[this_1] = 762
	endif
	return this_1
endfunction

function alloc_EventListener_add_Bombertower_Bombertower_1681 takes nothing returns integer
	local integer this_1
	if EventListener_firstFree == 0 then
		if EventListener_maxIndex < JASS_MAX_ARRAY_SIZE then
			set EventListener_maxIndex = EventListener_maxIndex + 1
			set this_1 = EventListener_maxIndex
			set EventListener_typeId[this_1] = 763
		else
			call error("Out of memory: Could not create EventListener_add_Bombertower_Bombertower.")
			set this_1 = 0
		endif
	else
		set EventListener_firstFree = EventListener_firstFree - 1
		set this_1 = EventListener_nextFree[EventListener_firstFree]
		set EventListener_typeId[this_1] = 763
	endif
	return this_1
endfunction

function alloc_OnCast_onCast_Bombertower_Bombertower takes nothing returns integer
	local integer this_1
	if OnCastListener_firstFree == 0 then
		if OnCastListener_maxIndex < JASS_MAX_ARRAY_SIZE then
			set OnCastListener_maxIndex = OnCastListener_maxIndex + 1
			set this_1 = OnCastListener_maxIndex
			set OnCastListener_typeId[this_1] = 1022
		else
			call error("Out of memory: Could not create OnCast_onCast_Bombertower_Bombertower.")
			set this_1 = 0
		endif
	else
		set OnCastListener_firstFree = OnCastListener_firstFree - 1
		set this_1 = OnCastListener_nextFree[OnCastListener_firstFree]
		set OnCastListener_typeId[this_1] = 1022
	endif
	return this_1
endfunction

function construct_Bombertower takes integer this_1, real pos_x_1, real pos_y_1, player owner returns nothing
	local unit receiver
	local unit receiver_1
	local unit receiver_2
	local unit receiver_3
	local unit receiver_4
	local integer clVar
	local integer clVar_1
	local integer clVar_2
	local integer clVar_3
	local unit temp
	local playerunitevent temp_1
	local unit temp_2
	local playerunitevent temp_3
	local unit temp_4
	local playerunitevent temp_5
	local unit temp_6
	call construct_StaticBaseObject(this_1, pos_x_1, pos_y_1, createUnit(owner, BuilderConstants_BOMB_TOWER_ID, pos_x_1, pos_y_1, 0.), 0., null, null)
	call Bombertower_init(this_1)
	set receiver = UnitEntity_actor[this_1]
	call unit_addAbility(receiver, Basics_GHOST_VIS_ID)
	set receiver_1 = receiver
	call unit_addAbility(receiver_1, Basics_LOCUST_ID)
	set Bombertower_dummy[this_1] = createUnit(owner, BuilderConstants_BOMB_TOWER_ID, pos_x_1, pos_y_1, 0.)
	set receiver_2 = Bombertower_dummy[this_1]
	call unit_addAbility(receiver_2, Basics_GHOST_INVIS_ID)
	set receiver_3 = receiver_2
	call unit_setEntity(receiver_3, this_1)
	set receiver_4 = receiver_3
	call unit_setScale(receiver_4, 0.5)
	set temp = Bombertower_dummy[this_1]
	set temp_1 = EVENT_PLAYER_UNIT_ISSUED_ORDER
	set clVar = alloc_EventListener_add_Bombertower_Bombertower()
	call construct_EventListener(clVar)
	set this_2986[clVar] = this_1
	call EventListener_add_436(temp, temp_1, clVar)
	set temp_2 = Bombertower_dummy[this_1]
	set temp_3 = EVENT_PLAYER_UNIT_ISSUED_POINT_ORDER
	set clVar_1 = alloc_EventListener_add_Bombertower_Bombertower_1680()
	call construct_EventListener(clVar_1)
	set this_2987[clVar_1] = this_1
	call EventListener_add_436(temp_2, temp_3, clVar_1)
	set temp_4 = Bombertower_dummy[this_1]
	set temp_5 = EVENT_PLAYER_UNIT_ISSUED_TARGET_ORDER
	set clVar_2 = alloc_EventListener_add_Bombertower_Bombertower_1681()
	call construct_EventListener(clVar_2)
	set this_2988[clVar_2] = this_1
	call EventListener_add_436(temp_4, temp_5, clVar_2)
	set temp_6 = Bombertower_dummy[this_1]
	set clVar_3 = alloc_OnCast_onCast_Bombertower_Bombertower()
	call construct_OnCast(clVar_3)
	set this_2989[clVar_3] = this_1
	call EventListener_onCast(temp_6, clVar_3)
	call SetUnitPathing(Bombertower_dummy[this_1], true)
endfunction

function new_Bombertower takes real pos_x_1, real pos_y_1, player owner returns integer
	local integer this_1 = alloc_Bombertower()
	call construct_Bombertower(this_1, pos_x_1, pos_y_1, owner)
	return this_1
endfunction

function alloc_Booster takes nothing returns integer
	local integer this_1
	if Serializable_firstFree == 0 then
		if Serializable_maxIndex < JASS_MAX_ARRAY_SIZE then
			set Serializable_maxIndex = Serializable_maxIndex + 1
			set this_1 = Serializable_maxIndex
			set Serializable_typeId[this_1] = 1197
		else
			call error("Out of memory: Could not create Booster.")
			set this_1 = 0
		endif
	else
		set Serializable_firstFree = Serializable_firstFree - 1
		set this_1 = Serializable_nextFree[Serializable_firstFree]
		set Serializable_typeId[this_1] = 1197
	endif
	return this_1
endfunction

function alloc_ConfigValue takes nothing returns integer
	local integer this_1
	if ConfigValue_firstFree == 0 then
		if ConfigValue_maxIndex < JASS_MAX_ARRAY_SIZE then
			set ConfigValue_maxIndex = ConfigValue_maxIndex + 1
			set this_1 = ConfigValue_maxIndex
			set ConfigValue_typeId[this_1] = 730
		else
			call error("Out of memory: Could not create ConfigValue.")
			set this_1 = 0
		endif
	else
		set ConfigValue_firstFree = ConfigValue_firstFree - 1
		set this_1 = ConfigValue_nextFree[ConfigValue_firstFree]
		set ConfigValue_typeId[this_1] = 730
	endif
	return this_1
endfunction

function ConfigValue_init takes integer this_1 returns nothing
	set ConfigValue_value[this_1] = 0.
	set ConfigValue_increment[this_1] = 0.
	set ConfigValue_valueName[this_1] = ""
endfunction

function construct_ConfigValue takes integer this_1, real startValue, real increment, string name returns nothing
	call ConfigValue_init(this_1)
	set ConfigValue_value[this_1] = startValue
	set ConfigValue_increment[this_1] = increment
	set ConfigValue_valueName[this_1] = name
endfunction

function new_ConfigValue takes real startValue, real increment, string name returns integer
	local integer this_1 = alloc_ConfigValue()
	call construct_ConfigValue(this_1, startValue, increment, name)
	return this_1
endfunction

function Booster_init takes integer this_1 returns nothing
	set Booster_boostspeed[this_1] = new_ConfigValue(250., 25., "Boostspeed")
endfunction

function construct_Booster takes integer this_1, real pos_x_1, real pos_y_1, player owner returns nothing
	local unit receiver
	local unit receiver_1
	call construct_StaticBaseObject(this_1, pos_x_1, pos_y_1, createUnit(owner, BuilderConstants_BOOSTER_ID, pos_x_1, pos_y_1, 0.), Booster_EVENT_RADIUS, ref_function_Booster_orderMove, null)
	call Booster_init(this_1)
	call dispatch_StaticBaseObject_BaseObject_StaticBaseObject_clearQuestionmark(this_1)
	set receiver = UnitEntity_actor[this_1]
	call unit_addAbility(receiver, BuilderConstants_TURN_OFF_ID)
	set receiver_1 = receiver
	call unit_addAbility(receiver_1, Basics_GHOST_INVIS_ID)
endfunction

function new_Booster takes real pos_x_1, real pos_y_1, player owner returns integer
	local integer this_1 = alloc_Booster()
	call construct_Booster(this_1, pos_x_1, pos_y_1, owner)
	return this_1
endfunction

function alloc_CongaLineHead takes nothing returns integer
	local integer this_1
	if Serializable_firstFree == 0 then
		if Serializable_maxIndex < JASS_MAX_ARRAY_SIZE then
			set Serializable_maxIndex = Serializable_maxIndex + 1
			set this_1 = Serializable_maxIndex
			set Serializable_typeId[this_1] = 1174
		else
			call error("Out of memory: Could not create CongaLineHead.")
			set this_1 = 0
		endif
	else
		set Serializable_firstFree = Serializable_firstFree - 1
		set this_1 = Serializable_nextFree[Serializable_firstFree]
		set Serializable_typeId[this_1] = 1174
	endif
	return this_1
endfunction

function CongaLineHead_init takes integer this_1 returns nothing
	set CongaLineHead_firstSegment[this_1] = 0
	set CongaLineHead_cmode[this_1] = 1
	set CongaLineHead_segLength[this_1] = 75.
endfunction

function alloc_EventListener_add_CongaLineHead_CongaLineHead takes nothing returns integer
	local integer this_1
	if EventListener_firstFree == 0 then
		if EventListener_maxIndex < JASS_MAX_ARRAY_SIZE then
			set EventListener_maxIndex = EventListener_maxIndex + 1
			set this_1 = EventListener_maxIndex
			set EventListener_typeId[this_1] = 773
		else
			call error("Out of memory: Could not create EventListener_add_CongaLineHead_CongaLineHead.")
			set this_1 = 0
		endif
	else
		set EventListener_firstFree = EventListener_firstFree - 1
		set this_1 = EventListener_nextFree[EventListener_firstFree]
		set EventListener_typeId[this_1] = 773
	endif
	return this_1
endfunction

function construct_CongaLineHead takes integer this_1, real pos_x_1, real pos_y_1, player owner returns nothing
	local integer clVar
	local unit temp
	local playerunitevent temp_1
	call construct_SetupObject(this_1, createUnit(owner, BuilderConstants_CONGA_LINE_HEAD_ID, pos_x_1, pos_y_1, 0.), createUnit(owner, BuilderConstants_CONGA_LINE_HEAD_ID, pos_x_1, pos_y_1, 0.), 0.)
	call CongaLineHead_init(this_1)
	set temp = SetupObject_setup[this_1]
	set temp_1 = EVENT_PLAYER_UNIT_SPELL_CAST
	set clVar = alloc_EventListener_add_CongaLineHead_CongaLineHead()
	call construct_EventListener(clVar)
	set this_2990[clVar] = this_1
	call EventListener_add_436(temp, temp_1, clVar)
	set Entity_sleeps[this_1] = false
	call unit_addAbility(SetupObject_setup[this_1], CongaObjects_CONGA_CONFIG_ID)
endfunction

function new_CongaLineHead takes real pos_x_1, real pos_y_1, player owner returns integer
	local integer this_1 = alloc_CongaLineHead()
	call construct_CongaLineHead(this_1, pos_x_1, pos_y_1, owner)
	return this_1
endfunction

function alloc_Decoration takes nothing returns integer
	local integer this_1
	if Serializable_firstFree == 0 then
		if Serializable_maxIndex < JASS_MAX_ARRAY_SIZE then
			set Serializable_maxIndex = Serializable_maxIndex + 1
			set this_1 = Serializable_maxIndex
			set Serializable_typeId[this_1] = 1213
		else
			call error("Out of memory: Could not create Decoration.")
			set this_1 = 0
		endif
	else
		set Serializable_firstFree = Serializable_firstFree - 1
		set this_1 = Serializable_nextFree[Serializable_firstFree]
		set Serializable_typeId[this_1] = 1213
	endif
	return this_1
endfunction

function Decoration_init takes integer this_1 returns nothing
	set Decoration_scale[this_1] = new_ConfigValue(1.0, 0.1, "Scale")
	set Decoration_tid[this_1] = 0
	set Decoration_hasBeenChanged[this_1] = false
endfunction

function alloc_EventListener_add_Decoration_Decoration takes nothing returns integer
	local integer this_1
	if EventListener_firstFree == 0 then
		if EventListener_maxIndex < JASS_MAX_ARRAY_SIZE then
			set EventListener_maxIndex = EventListener_maxIndex + 1
			set this_1 = EventListener_maxIndex
			set EventListener_typeId[this_1] = 778
		else
			call error("Out of memory: Could not create EventListener_add_Decoration_Decoration.")
			set this_1 = 0
		endif
	else
		set EventListener_firstFree = EventListener_firstFree - 1
		set this_1 = EventListener_nextFree[EventListener_firstFree]
		set EventListener_typeId[this_1] = 778
	endif
	return this_1
endfunction

function construct_Decoration takes integer this_1, real pos_x_1, real pos_y_1, player owner, real a, integer tid returns nothing
	local unit receiver
	local unit receiver_1
	local unit receiver_2
	local unit receiver_3
	local integer clVar
	local unit temp
	local playerunitevent temp_1
	call construct_StaticSetupObject(this_1, CreateUnit(owner, InstantBuild_buildorders[tid], pos_x_1, pos_y_1, a), CreateUnit(owner, InstantBuild_buildorders[tid], pos_x_1, pos_y_1, a), 0., null)
	call Decoration_init(this_1)
	set Decoration_tid[this_1] = tid
	set receiver = StaticSetupObject_setup[this_1]
	call unit_addAbility(receiver, Decoration_CHANGE_FACE_ID)
	set receiver_1 = receiver
	call unit_addAbility(receiver_1, Decoration_INC_SCALE)
	set receiver_2 = receiver_1
	call unit_addAbility(receiver_2, Decoration_DEC_SCALE)
	set receiver_3 = receiver_2
	call unit_addAbility(receiver_3, Basics_GHOST_INVIS_ID)
	set temp = StaticSetupObject_setup[this_1]
	set temp_1 = EVENT_PLAYER_UNIT_SPELL_CAST
	set clVar = alloc_EventListener_add_Decoration_Decoration()
	call construct_EventListener(clVar)
	set this_2968[clVar] = this_1
	call EventListener_add_436(temp, temp_1, clVar)
endfunction

function new_Decoration takes real pos_x_1, real pos_y_1, player owner, real a, integer tid returns integer
	local integer this_1 = alloc_Decoration()
	call construct_Decoration(this_1, pos_x_1, pos_y_1, owner, a, tid)
	return this_1
endfunction

function alloc_EventListener_add_Door_Door takes nothing returns integer
	local integer this_1
	if EventListener_firstFree == 0 then
		if EventListener_maxIndex < JASS_MAX_ARRAY_SIZE then
			set EventListener_maxIndex = EventListener_maxIndex + 1
			set this_1 = EventListener_maxIndex
			set EventListener_typeId[this_1] = 779
		else
			call error("Out of memory: Could not create EventListener_add_Door_Door.")
			set this_1 = 0
		endif
	else
		set EventListener_firstFree = EventListener_firstFree - 1
		set this_1 = EventListener_nextFree[EventListener_firstFree]
		set EventListener_typeId[this_1] = 779
	endif
	return this_1
endfunction

function construct_Door2 takes integer this_1, real pos_x_1, real pos_y_1, player owner returns nothing
	local integer clVar
	local unit temp
	local playerunitevent temp_1
	call construct_StaticSetupObject(this_1, createUnit(owner, BuilderConstants_DOORDUMMY_ID, pos_x_1, pos_y_1, real_asAngleDegrees(270.)), createUnit(owner, BuilderConstants_DOORORDER_ID, pos_x_1, pos_y_1, real_fromDeg(0.)), Door_EVENT_RADIUS, ref_function_Door_keyopen)
	call Door_init(this_1)
	set Door_pathing[this_1] = createUnit(Entity_owner[this_1], Door_DOORPATH, pos_x_1, pos_y_1, real_fromDeg(270.))
	set temp = StaticSetupObject_setup[this_1]
	set temp_1 = EVENT_PLAYER_UNIT_SPELL_CAST
	set clVar = alloc_EventListener_add_Door_Door()
	call construct_EventListener(clVar)
	set this_2991[clVar] = this_1
	call EventListener_add_436(temp, temp_1, clVar)
endfunction

function new_Door_3652 takes real pos_x_1, real pos_y_1, player owner returns integer
	local integer this_1 = alloc_Door()
	call construct_Door2(this_1, pos_x_1, pos_y_1, owner)
	return this_1
endfunction

function alloc_Executer takes nothing returns integer
	local integer this_1
	if Serializable_firstFree == 0 then
		if Serializable_maxIndex < JASS_MAX_ARRAY_SIZE then
			set Serializable_maxIndex = Serializable_maxIndex + 1
			set this_1 = Serializable_maxIndex
			set Serializable_typeId[this_1] = 1199
		else
			call error("Out of memory: Could not create Executer.")
			set this_1 = 0
		endif
	else
		set Serializable_firstFree = Serializable_firstFree - 1
		set this_1 = Serializable_nextFree[Serializable_firstFree]
		set Serializable_typeId[this_1] = 1199
	endif
	return this_1
endfunction

function Executer_init takes integer this_1 returns nothing
	set Executer_canKillerTrigger[this_1] = false
	set Executer_canEscaperTrigger[this_1] = true
	set Executer_eventRect[this_1] = null
	set Executer_eventRegion[this_1] = null
	set Executer_entitiesOnPlate[this_1] = 0
	set Executer_eventMode[this_1] = 0
	set Executer_actionMode[this_1] = 0
	set Executer_ON[this_1] = false
	set Executer_nottiletype[this_1] = 808464433
	set Executer_verticalTileSize[this_1] = 0
	set Executer_horizontalTileSize[this_1] = 0
	set Executer_unitToMove[this_1] = null
	set Executer_disabled[this_1] = false
	set Executer_dummy[this_1] = null
endfunction

function alloc_EventListener_add_Executer_Executer takes nothing returns integer
	local integer this_1
	if EventListener_firstFree == 0 then
		if EventListener_maxIndex < JASS_MAX_ARRAY_SIZE then
			set EventListener_maxIndex = EventListener_maxIndex + 1
			set this_1 = EventListener_maxIndex
			set EventListener_typeId[this_1] = 788
		else
			call error("Out of memory: Could not create EventListener_add_Executer_Executer.")
			set this_1 = 0
		endif
	else
		set EventListener_firstFree = EventListener_firstFree - 1
		set this_1 = EventListener_nextFree[EventListener_firstFree]
		set EventListener_typeId[this_1] = 788
	endif
	return this_1
endfunction

function construct_Executer2 takes integer this_1, real pos_x_1, real pos_y_1, player owner returns nothing
	local integer clVar
	local unit temp
	local playerunitevent temp_1
	call construct_StaticBaseObject(this_1, pos_x_1, pos_y_1, createUnit(owner, BuilderConstants_EXECUTER_ID, pos_x_1, pos_y_1, 0.), Executer_EVENT_RADIUS, ref_function_code__Executer_Executer_2641, null)
	call Executer_init(this_1)
	set temp = UnitEntity_actor[this_1]
	set temp_1 = EVENT_PLAYER_UNIT_SPELL_CAST
	set clVar = alloc_EventListener_add_Executer_Executer()
	call construct_EventListener(clVar)
	set this_2954[clVar] = this_1
	call EventListener_add_436(temp, temp_1, clVar)
endfunction

function new_Executer_3657 takes real pos_x_1, real pos_y_1, player owner returns integer
	local integer this_1 = alloc_Executer()
	call construct_Executer2(this_1, pos_x_1, pos_y_1, owner)
	return this_1
endfunction

function alloc_Faceless takes nothing returns integer
	local integer this_1
	if Serializable_firstFree == 0 then
		if Serializable_maxIndex < JASS_MAX_ARRAY_SIZE then
			set Serializable_maxIndex = Serializable_maxIndex + 1
			set this_1 = Serializable_maxIndex
			set Serializable_typeId[this_1] = 1179
		else
			call error("Out of memory: Could not create Faceless.")
			set this_1 = 0
		endif
	else
		set Serializable_firstFree = Serializable_firstFree - 1
		set this_1 = Serializable_nextFree[Serializable_firstFree]
		set Serializable_typeId[this_1] = 1179
	endif
	return this_1
endfunction

function Faceless_init takes integer this_1 returns nothing
	local integer tuple_temp
	local integer tuple_temp_1
	local integer tuple_temp_2
	local integer tuple_temp_3
	set Faceless_visibleDur[this_1] = new_ConfigValue(2., 0.5, "Visible Duration")
	set Faceless_invisDur[this_1] = new_ConfigValue(.5, 0.5, "Invisible Duration")
	set tuple_temp = Colors_COLOR_WHITE_red
	set tuple_temp_1 = Colors_COLOR_WHITE_green
	set tuple_temp_2 = Colors_COLOR_WHITE_blue
	set tuple_temp_3 = Colors_COLOR_WHITE_alpha
	set Faceless_color_red[this_1] = tuple_temp
	set Faceless_color_green[this_1] = tuple_temp_1
	set Faceless_color_blue[this_1] = tuple_temp_2
	set Faceless_color_alpha[this_1] = tuple_temp_3
	set Faceless_fadeDur[this_1] = 1.
	set Faceless_mode[this_1] = 0
	set Faceless_dur[this_1] = dispatch_ConfigValue_ConfigValue_ConfigValue_get(Faceless_visibleDur[this_1])
endfunction

function alloc_EventListener_add_Faceless_Faceless takes nothing returns integer
	local integer this_1
	if EventListener_firstFree == 0 then
		if EventListener_maxIndex < JASS_MAX_ARRAY_SIZE then
			set EventListener_maxIndex = EventListener_maxIndex + 1
			set this_1 = EventListener_maxIndex
			set EventListener_typeId[this_1] = 789
		else
			call error("Out of memory: Could not create EventListener_add_Faceless_Faceless.")
			set this_1 = 0
		endif
	else
		set EventListener_firstFree = EventListener_firstFree - 1
		set this_1 = EventListener_nextFree[EventListener_firstFree]
		set EventListener_typeId[this_1] = 789
	endif
	return this_1
endfunction

function Faceless_setup takes integer this_1 returns nothing
	local unit receiver = SetupObject_setup[this_1]
	local unit receiver_1
	local unit receiver_2
	local unit receiver_3
	local unit receiver_4
	local unit receiver_5
	local integer clVar
	local unit temp
	local playerunitevent temp_1
	call unit_setVertexColor_4206(receiver, 55, 55, 55, 55)
	set receiver_1 = receiver
	call unit_setScale(receiver_1, 0.5)
	set receiver_2 = receiver_1
	call unit_addAbility(receiver_2, Faceless_UP_VIS_ID)
	set receiver_3 = receiver_2
	call unit_addAbility(receiver_3, Faceless_DOWN_VIS_ID)
	set receiver_4 = receiver_3
	call unit_addAbility(receiver_4, Faceless_UP_INVIS_ID)
	set receiver_5 = receiver_4
	call unit_addAbility(receiver_5, Faceless_DOWN_INVIS_ID)
	set temp = SetupObject_setup[this_1]
	set temp_1 = EVENT_PLAYER_UNIT_SPELL_CAST
	set clVar = alloc_EventListener_add_Faceless_Faceless()
	call construct_EventListener(clVar)
	set this_2981[clVar] = this_1
	call EventListener_add_436(temp, temp_1, clVar)
	set Entity_sleeps[this_1] = false
endfunction

function dispatch_Faceless_Faceless_Faceless_setup takes integer this_1 returns nothing
	if Serializable_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling Faceless.setup")
		else
			call error("Called Faceless.setup on invalid object.")
		endif
	endif
	call Faceless_setup(this_1)
endfunction

function construct_Faceless2 takes integer this_1, real pos_x_1, real pos_y_1, player owner returns nothing
	call construct_EscaperSensorSetup3(this_1, vec2_toVec3(pos_x_1, pos_y_1), vec2_toVec3_return_y, vec2_toVec3_return_z, owner, Faceless_DIMENSION_SHIFTER_ID, Faceless_KILL_RADIUS, Faceless_KILL_RADIUS)
	call Faceless_init(this_1)
	call dispatch_Faceless_Faceless_Faceless_setup(this_1)
endfunction

function new_Faceless_3660 takes real pos_x_1, real pos_y_1, player owner returns integer
	local integer this_1 = alloc_Faceless()
	call construct_Faceless2(this_1, pos_x_1, pos_y_1, owner)
	return this_1
endfunction

function alloc_FireKiller takes nothing returns integer
	local integer this_1
	if Serializable_firstFree == 0 then
		if Serializable_maxIndex < JASS_MAX_ARRAY_SIZE then
			set Serializable_maxIndex = Serializable_maxIndex + 1
			set this_1 = Serializable_maxIndex
			set Serializable_typeId[this_1] = 1180
		else
			call error("Out of memory: Could not create FireKiller.")
			set this_1 = 0
		endif
	else
		set Serializable_firstFree = Serializable_firstFree - 1
		set this_1 = Serializable_nextFree[Serializable_firstFree]
		set Serializable_typeId[this_1] = 1180
	endif
	return this_1
endfunction

function FireKiller_init takes integer this_1 returns nothing
endfunction

function construct_FireKiller2 takes integer this_1, real pos_x_1, real pos_y_1, player owner returns nothing
	call construct_EscaperSensorSetup3(this_1, vec2_toVec3(pos_x_1, pos_y_1), vec2_toVec3_return_y, vec2_toVec3_return_z, owner, EscaperKillers_FIRE_KILLER_ID, EscaperKillers_COLL_SIZE_FIRE, EscaperKillers_COLL_SIZE_FIRE)
	call FireKiller_init(this_1)
	call unit_issueImmediateOrder(UnitEntity_actor[this_1], "immolation")
	call unit_removeAbility(SetupObject_setup[this_1], 1093679177)
endfunction

function new_FireKiller_3665 takes real pos_x_1, real pos_y_1, player owner returns integer
	local integer this_1 = alloc_FireKiller()
	call construct_FireKiller2(this_1, pos_x_1, pos_y_1, owner)
	return this_1
endfunction

function alloc_Fountain takes nothing returns integer
	local integer this_1
	if Serializable_firstFree == 0 then
		if Serializable_maxIndex < JASS_MAX_ARRAY_SIZE then
			set Serializable_maxIndex = Serializable_maxIndex + 1
			set this_1 = Serializable_maxIndex
			set Serializable_typeId[this_1] = 1215
		else
			call error("Out of memory: Could not create Fountain.")
			set this_1 = 0
		endif
	else
		set Serializable_firstFree = Serializable_firstFree - 1
		set this_1 = Serializable_nextFree[Serializable_firstFree]
		set Serializable_typeId[this_1] = 1215
	endif
	return this_1
endfunction

function Fountain_init takes integer this_1 returns nothing
	set Fountain_cure[this_1] = true
endfunction

function alloc_EventListener_add_Fountain_Fountain_1709 takes nothing returns integer
	local integer this_1
	if EventListener_firstFree == 0 then
		if EventListener_maxIndex < JASS_MAX_ARRAY_SIZE then
			set EventListener_maxIndex = EventListener_maxIndex + 1
			set this_1 = EventListener_maxIndex
			set EventListener_typeId[this_1] = 791
		else
			call error("Out of memory: Could not create EventListener_add_Fountain_Fountain.")
			set this_1 = 0
		endif
	else
		set EventListener_firstFree = EventListener_firstFree - 1
		set this_1 = EventListener_nextFree[EventListener_firstFree]
		set EventListener_typeId[this_1] = 791
	endif
	return this_1
endfunction

function construct_Fountain2 takes integer this_1, real pos_x_1, real pos_y_1, player owner returns nothing
	local integer clVar
	local unit temp
	local playerunitevent temp_1
	call construct_StaticSetupObject(this_1, createUnit(owner, BuilderConstants_FOUNTAIN_BOTH_ID, pos_x_1, pos_y_1, real_asAngleDegrees(270.)), createUnit(owner, BuilderConstants_FOUNTAIN_BOTH_ID, pos_x_1, pos_y_1, real_asAngleDegrees(270.)), 200., ref_function_Fountain_cure)
	call Fountain_init(this_1)
	set temp = StaticSetupObject_setup[this_1]
	set temp_1 = EVENT_PLAYER_UNIT_SPELL_CAST
	set clVar = alloc_EventListener_add_Fountain_Fountain_1709()
	call construct_EventListener(clVar)
	set this_2993[clVar] = this_1
	call EventListener_add_436(temp, temp_1, clVar)
endfunction

function new_Fountain_3671 takes real pos_x_1, real pos_y_1, player owner returns integer
	local integer this_1 = alloc_Fountain()
	call construct_Fountain2(this_1, pos_x_1, pos_y_1, owner)
	return this_1
endfunction

function construct_HighObstacle2 takes integer this_1, real pos_x_1, real pos_y_1, player owner returns nothing
	local integer temp = this_1
	local real tuple_temp = vec2_withTerrainZ(pos_x_1, pos_y_1)
	local real tuple_temp_1 = vec2_withTerrainZ_return_y
	local real tuple_temp_2 = vec2_withTerrainZ_return_z
	local real temp_x = tuple_temp
	local real temp_y = tuple_temp_1
	local real temp_z = tuple_temp_2
	local player temp_1 = owner
	local integer temp_tuple_highObstacleId
	local integer tuple_temp_3
	call dispatch_RegionData_RegionData_RegionData_getTypeSet(getRegionData_3304(pos_x_1, pos_y_1))
	set tuple_temp_3 = dispatch_RegionData_RegionData_RegionData_getTypeSet_return_highObstacleId
	set temp_tuple_highObstacleId = tuple_temp_3
	call construct_StaticEscaperSensorSetup3(temp, temp_x, temp_y, temp_z, temp_1, temp_tuple_highObstacleId, Obstacle_EVENT_RADIUS_HIGH, Obstacle_EVENT_HEIGHT_HIGH)
	call HighObstacle_init(this_1)
endfunction

function new_HighObstacle_3687 takes real pos_x_1, real pos_y_1, player owner returns integer
	local integer this_1 = alloc_HighObstacle()
	call construct_HighObstacle2(this_1, pos_x_1, pos_y_1, owner)
	return this_1
endfunction

function alloc_Jumper takes nothing returns integer
	local integer this_1
	if Serializable_firstFree == 0 then
		if Serializable_maxIndex < JASS_MAX_ARRAY_SIZE then
			set Serializable_maxIndex = Serializable_maxIndex + 1
			set this_1 = Serializable_maxIndex
			set Serializable_typeId[this_1] = 1200
		else
			call error("Out of memory: Could not create Jumper.")
			set this_1 = 0
		endif
	else
		set Serializable_firstFree = Serializable_firstFree - 1
		set this_1 = Serializable_nextFree[Serializable_firstFree]
		set Serializable_typeId[this_1] = 1200
	endif
	return this_1
endfunction

function Jumper_init takes integer this_1 returns nothing
	set Jumper_goocounter[this_1] = 0
	set Jumper_mode[this_1] = 0
	set Jumper_permission[this_1] = 0
	set Jumper_jumpForce[this_1] = new_ConfigValue(12., 0.5, "Jump Force")
endfunction

function alloc_ForGroupCallback_forUnitsInRange_Jumper_Jumper takes nothing returns integer
	local integer this_1
	if ForGroupCallback_firstFree == 0 then
		if ForGroupCallback_maxIndex < JASS_MAX_ARRAY_SIZE then
			set ForGroupCallback_maxIndex = ForGroupCallback_maxIndex + 1
			set this_1 = ForGroupCallback_maxIndex
			set ForGroupCallback_typeId[this_1] = 862
		else
			call error("Out of memory: Could not create ForGroupCallback_forUnitsInRange_Jumper_Jumper.")
			set this_1 = 0
		endif
	else
		set ForGroupCallback_firstFree = ForGroupCallback_firstFree - 1
		set this_1 = ForGroupCallback_nextFree[ForGroupCallback_firstFree]
		set ForGroupCallback_typeId[this_1] = 862
	endif
	return this_1
endfunction

function construct_Jumper2 takes integer this_1, real pos_x_1, real pos_y_1, player owner returns nothing
	local integer clVar
	local real temp_x
	local real temp_y
	local real tuple_temp
	local real tuple_temp_1
	call construct_StaticBaseObject(this_1, pos_x_1, pos_y_1, createUnit(owner, BuilderConstants_JUMPER_ID, pos_x_1, pos_y_1, 0.), 40., ref_function_Jumper_onInRange, null)
	call Jumper_init(this_1)
	call unit_addAbility(UnitEntity_actor[this_1], BuilderConstants_TURN_OFF_ID)
	set tuple_temp = pos_x_1
	set tuple_temp_1 = pos_y_1
	set temp_x = tuple_temp
	set temp_y = tuple_temp_1
	set clVar = alloc_ForGroupCallback_forUnitsInRange_Jumper_Jumper()
	set this_2956[clVar] = this_1
	call forUnitsInRange(temp_x, temp_y, 8., clVar)
endfunction

function new_Jumper_3703 takes real pos_x_1, real pos_y_1, player owner returns integer
	local integer this_1 = alloc_Jumper()
	call construct_Jumper2(this_1, pos_x_1, pos_y_1, owner)
	return this_1
endfunction

function alloc_Knockbacker takes nothing returns integer
	local integer this_1
	if Serializable_firstFree == 0 then
		if Serializable_maxIndex < JASS_MAX_ARRAY_SIZE then
			set Serializable_maxIndex = Serializable_maxIndex + 1
			set this_1 = Serializable_maxIndex
			set Serializable_typeId[this_1] = 1182
		else
			call error("Out of memory: Could not create Knockbacker.")
			set this_1 = 0
		endif
	else
		set Serializable_firstFree = Serializable_firstFree - 1
		set this_1 = Serializable_nextFree[Serializable_firstFree]
		set Serializable_typeId[this_1] = 1182
	endif
	return this_1
endfunction

function Knockbacker_init takes integer this_1 returns nothing
	set Knockbacker_kforce[this_1] = new_ConfigValue(20., 2.5, "Knockback")
	set Knockbacker_damage[this_1] = new_ConfigValue(50., 25., "Damage")
endfunction

function alloc_EventListener_add_Knockbacker_Knockbacker_1721 takes nothing returns integer
	local integer this_1
	if EventListener_firstFree == 0 then
		if EventListener_maxIndex < JASS_MAX_ARRAY_SIZE then
			set EventListener_maxIndex = EventListener_maxIndex + 1
			set this_1 = EventListener_maxIndex
			set EventListener_typeId[this_1] = 803
		else
			call error("Out of memory: Could not create EventListener_add_Knockbacker_Knockbacker.")
			set this_1 = 0
		endif
	else
		set EventListener_firstFree = EventListener_firstFree - 1
		set this_1 = EventListener_nextFree[EventListener_firstFree]
		set EventListener_typeId[this_1] = 803
	endif
	return this_1
endfunction

function construct_Knockbacker2 takes integer this_1, real pos_x_1, real pos_y_1, player owner, real facing_radians returns nothing
	local unit receiver
	local unit receiver_1
	local unit receiver_2
	local unit receiver_3
	local integer clVar
	local unit temp
	local playerunitevent temp_1
	call construct_EscaperSensorSetup(this_1, vec2_toVec3(pos_x_1, pos_y_1), vec2_toVec3_return_y, vec2_toVec3_return_z, owner, Knockbacker_KNOCKBACKER_ID, facing_radians, 64., 160.)
	call Knockbacker_init(this_1)
	set receiver = SetupObject_setup[this_1]
	call unit_addAbility(receiver, Knockbacker_KNOCK_INC_ID)
	set receiver_1 = receiver
	call unit_addAbility(receiver_1, Knockbacker_KNOCK_DEC_ID)
	set receiver_2 = receiver_1
	call unit_addAbility(receiver_2, Knockbacker_DMG_INC_ID)
	set receiver_3 = receiver_2
	call unit_addAbility(receiver_3, Knockbacker_DMG_DEC_ID)
	set temp = SetupObject_setup[this_1]
	set temp_1 = EVENT_PLAYER_UNIT_SPELL_CAST
	set clVar = alloc_EventListener_add_Knockbacker_Knockbacker_1721()
	call construct_EventListener(clVar)
	set this_2983[clVar] = this_1
	call EventListener_add_436(temp, temp_1, clVar)
endfunction

function new_Knockbacker_3706 takes real pos_x_1, real pos_y_1, player owner, real facing_radians returns integer
	local integer this_1 = alloc_Knockbacker()
	call construct_Knockbacker2(this_1, pos_x_1, pos_y_1, owner, facing_radians)
	return this_1
endfunction

function alloc_MemoryAccessPedestal takes nothing returns integer
	local integer this_1
	if Serializable_firstFree == 0 then
		if Serializable_maxIndex < JASS_MAX_ARRAY_SIZE then
			set Serializable_maxIndex = Serializable_maxIndex + 1
			set this_1 = Serializable_maxIndex
			set Serializable_typeId[this_1] = 1202
		else
			call error("Out of memory: Could not create MemoryAccessPedestal.")
			set this_1 = 0
		endif
	else
		set Serializable_firstFree = Serializable_firstFree - 1
		set this_1 = Serializable_nextFree[Serializable_firstFree]
		set Serializable_typeId[this_1] = 1202
	endif
	return this_1
endfunction

function createFText takes real pos_x_1, real pos_y_1, real pos_z, string text, real size returns integer
	return createFText_2345(pos_x_1, pos_y_1, pos_z, text, size, 0., Vectors_ZERO2_x, Vectors_ZERO2_y)
endfunction

function alloc_BigString takes nothing returns integer
	local integer this_1
	if BigString_firstFree == 0 then
		if BigString_maxIndex < JASS_MAX_ARRAY_SIZE then
			set BigString_maxIndex = BigString_maxIndex + 1
			set this_1 = BigString_maxIndex
			set BigString_typeId[this_1] = 640
		else
			call error("Out of memory: Could not create BigString.")
			set this_1 = 0
		endif
	else
		set BigString_firstFree = BigString_firstFree - 1
		set this_1 = BigString_nextFree[BigString_firstFree]
		set BigString_typeId[this_1] = 640
	endif
	return this_1
endfunction

function BigString_init takes integer this_1 returns nothing
	set BigString_length[this_1] = 0
	set BigString_startoffset[this_1] = 0
endfunction

function BigString_substrings_set takes integer instanceId, integer arrayIndex, string value returns nothing
	if arrayIndex < 0 or arrayIndex >= 25 then
		call error("Index out of Bounds")
	elseif arrayIndex <= 12 then
		if arrayIndex <= 6 then
			if arrayIndex <= 3 then
				if arrayIndex <= 1 then
					if arrayIndex <= 0 then
						set BigString_substrings_0[instanceId] = value
					else
						set BigString_substrings_1[instanceId] = value
					endif
				elseif arrayIndex <= 2 then
					set BigString_substrings_2[instanceId] = value
				else
					set BigString_substrings_3[instanceId] = value
				endif
			elseif arrayIndex <= 5 then
				if arrayIndex <= 4 then
					set BigString_substrings_4[instanceId] = value
				else
					set BigString_substrings_5[instanceId] = value
				endif
			else
				set BigString_substrings_6[instanceId] = value
			endif
		elseif arrayIndex <= 9 then
			if arrayIndex <= 8 then
				if arrayIndex <= 7 then
					set BigString_substrings_7[instanceId] = value
				else
					set BigString_substrings_8[instanceId] = value
				endif
			else
				set BigString_substrings_9[instanceId] = value
			endif
		elseif arrayIndex <= 11 then
			if arrayIndex <= 10 then
				set BigString_substrings_10[instanceId] = value
			else
				set BigString_substrings_11[instanceId] = value
			endif
		else
			set BigString_substrings_12[instanceId] = value
		endif
	elseif arrayIndex <= 18 then
		if arrayIndex <= 15 then
			if arrayIndex <= 14 then
				if arrayIndex <= 13 then
					set BigString_substrings_13[instanceId] = value
				else
					set BigString_substrings_14[instanceId] = value
				endif
			else
				set BigString_substrings_15[instanceId] = value
			endif
		elseif arrayIndex <= 17 then
			if arrayIndex <= 16 then
				set BigString_substrings_16[instanceId] = value
			else
				set BigString_substrings_17[instanceId] = value
			endif
		else
			set BigString_substrings_18[instanceId] = value
		endif
	elseif arrayIndex <= 21 then
		if arrayIndex <= 20 then
			if arrayIndex <= 19 then
				set BigString_substrings_19[instanceId] = value
			else
				set BigString_substrings_20[instanceId] = value
			endif
		else
			set BigString_substrings_21[instanceId] = value
		endif
	elseif arrayIndex <= 23 then
		if arrayIndex <= 22 then
			set BigString_substrings_22[instanceId] = value
		else
			set BigString_substrings_23[instanceId] = value
		endif
	else
		set BigString_substrings_24[instanceId] = value
	endif
endfunction

function BigString_reset takes integer this_1 returns nothing
	local integer i = 0
	local integer temp = BigString_MAX_SUBSTRINGS - 1
	loop
		exitwhen i > temp
		call BigString_substrings_set(this_1, i, "")
		set i = i + 1
	endloop
	set BigString_length[this_1] = 0
	set BigString_startoffset[this_1] = 0
endfunction

function dispatch_BigString_BigString_BigString_reset takes integer this_1 returns nothing
	if BigString_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling BigString.reset")
		else
			call error("Called BigString.reset on invalid object.")
		endif
	endif
	call BigString_reset(this_1)
endfunction

function construct_BigString takes integer this_1 returns nothing
	call BigString_init(this_1)
	call dispatch_BigString_BigString_BigString_reset(this_1)
endfunction

function new_BigString takes nothing returns integer
	local integer this_1 = alloc_BigString()
	call construct_BigString(this_1)
	return this_1
endfunction

function alloc_HashMap takes nothing returns integer
	local integer this_1
	if Table_firstFree == 0 then
		if Table_maxIndex < JASS_MAX_ARRAY_SIZE then
			set Table_maxIndex = Table_maxIndex + 1
			set this_1 = Table_maxIndex
			set Table_typeId[this_1] = 1494
		else
			call error("Out of memory: Could not create HashMap.")
			set this_1 = 0
		endif
	else
		set Table_firstFree = Table_firstFree - 1
		set this_1 = Table_nextFree[Table_firstFree]
		set Table_typeId[this_1] = 1494
	endif
	return this_1
endfunction

function new_HashMap takes nothing returns integer
	local integer this_1 = alloc_HashMap()
	call construct_HashMap(this_1)
	return this_1
endfunction

function alloc_JsonParser takes nothing returns integer
	local integer this_1
	if JsonParser_firstFree == 0 then
		if JsonParser_maxIndex < JASS_MAX_ARRAY_SIZE then
			set JsonParser_maxIndex = JsonParser_maxIndex + 1
			set this_1 = JsonParser_maxIndex
			set JsonParser_typeId[this_1] = 983
		else
			call error("Out of memory: Could not create JsonParser.")
			set this_1 = 0
		endif
	else
		set JsonParser_firstFree = JsonParser_firstFree - 1
		set this_1 = JsonParser_nextFree[JsonParser_firstFree]
		set JsonParser_typeId[this_1] = 983
	endif
	return this_1
endfunction

function alloc_Json takes nothing returns integer
	local integer this_1
	if Json_firstFree == 0 then
		if Json_maxIndex < JASS_MAX_ARRAY_SIZE then
			set Json_maxIndex = Json_maxIndex + 1
			set this_1 = Json_maxIndex
			set Json_typeId[this_1] = 982
		else
			call error("Out of memory: Could not create Json.")
			set this_1 = 0
		endif
	else
		set Json_firstFree = Json_firstFree - 1
		set this_1 = Json_nextFree[Json_firstFree]
		set Json_typeId[this_1] = 982
	endif
	return this_1
endfunction

function Json_init takes integer this_1 returns nothing
	set Json_properties[this_1] = new_HashMap()
	set Json_plist[this_1] = new_LinkedList()
endfunction

function construct_Json takes integer this_1 returns nothing
	call Json_init(this_1)
endfunction

function new_Json takes nothing returns integer
	local integer this_1 = alloc_Json()
	call construct_Json(this_1)
	return this_1
endfunction

function JsonParser_init takes integer this_1 returns nothing
	set JsonParser_bigInput[this_1] = 0
	set JsonParser_currentPosition[this_1] = 0
	set JsonParser_propStartPosition[this_1] = 0
	set JsonParser_squareBracketLvl[this_1] = 0
	set JsonParser_lastType[this_1] = 0
	set JsonParser_currentToken[this_1] = null
	set JsonParser_output[this_1] = new_Json()
	set JsonParser_outputList[this_1] = 0
	set JsonParser_propName[this_1] = 0
	set JsonParser_propVal[this_1] = 0
endfunction

function construct_JsonParser takes integer this_1 returns nothing
	call JsonParser_init(this_1)
endfunction

function new_JsonParser takes nothing returns integer
	local integer this_1 = alloc_JsonParser()
	call construct_JsonParser(this_1)
	return this_1
endfunction

function MemoryAccessPedestal_init takes integer this_1 returns nothing
	set MemoryAccessPedestal_tileMap[this_1] = new_HashMap()
	set MemoryAccessPedestal_entities[this_1] = new_HashList()
	set MemoryAccessPedestal_tiles[this_1] = new_LinkedList()
	set MemoryAccessPedestal_effects[this_1] = new_HashMap()
	set MemoryAccessPedestal_ttag[this_1] = createFText(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1], "", 12.)
	set MemoryAccessPedestal_bs[this_1] = new_BigString()
	set MemoryAccessPedestal_parser[this_1] = new_JsonParser()
	set MemoryAccessPedestal_listparser[this_1] = new_JsonParser()
	set MemoryAccessPedestal_tileString[this_1] = new_BigString()
	set MemoryAccessPedestal_entString[this_1] = new_BigString()
endfunction

function construct_MemoryAccessPedestal takes integer this_1, real pos_x_1, real pos_y_1, player owner returns nothing
	local unit receiver
	local unit receiver_1
	local unit receiver_2
	local unit receiver_3
	local unit receiver_4
	local unit receiver_5
	local unit receiver_6
	local unit receiver_7
	local unit receiver_8
	local unit receiver_9
	local unit receiver_10
	call construct_StaticBaseObject(this_1, pos_x_1, pos_y_1, createUnit(owner, BuilderConstants_PED_ID, pos_x_1, pos_y_1, bj_UNIT_FACING), 0., null, null)
	call MemoryAccessPedestal_init(this_1)
	call dispatch_UnitEntity_Entity_UnitEntity_setPos(this_1, vec2_toVec3(vec2_toTile(pos_x_1, pos_y_1), vec2_toTile_return_y), vec2_toVec3_return_y, vec2_toVec3_return_z)
	call texttag_center(FText_tt[MemoryAccessPedestal_ttag[this_1]], vec2_toVec3(pos_x_1, pos_y_1), vec2_toVec3_return_y, vec2_toVec3_return_z, "|cff4AA542ready", 10.)
	set receiver = UnitEntity_actor[this_1]
	call unit_addAbility(receiver, PedestalObjects_SAVE1_ID)
	set receiver_1 = receiver
	call unit_addAbility(receiver_1, PedestalObjects_LOAD1_ID)
	set receiver_2 = receiver_1
	call unit_addAbility(receiver_2, PedestalObjects_SAVE2_ID)
	set receiver_3 = receiver_2
	call unit_addAbility(receiver_3, PedestalObjects_SAVE3_ID)
	set receiver_4 = receiver_3
	call unit_addAbility(receiver_4, PedestalObjects_SELECT_TILE_ID)
	set receiver_5 = receiver_4
	call unit_addAbility(receiver_5, PedestalObjects_LOAD2_ID)
	set receiver_6 = receiver_5
	call unit_addAbility(receiver_6, PedestalObjects_SELECT_AOE_TILE_ID)
	set receiver_7 = receiver_6
	call unit_addAbility(receiver_7, PedestalObjects_LOAD3_ID)
	set receiver_8 = receiver_7
	call unit_addAbility(receiver_8, BuilderConstants_REMOVE_OBJECT_ID)
	set receiver_9 = receiver_8
	call unit_addAbility(receiver_9, PedestalObjects_SELECT_SINGLE_ID)
	set receiver_10 = receiver_9
	call unit_addAbility(receiver_10, PedestalObjects_SELECT_AOE_ID)
	call dispatch_StaticBaseObject_BaseObject_StaticBaseObject_clearQuestionmark(this_1)
endfunction

function new_MemoryAccessPedestal takes real pos_x_1, real pos_y_1, player owner returns integer
	local integer this_1 = alloc_MemoryAccessPedestal()
	call construct_MemoryAccessPedestal(this_1, pos_x_1, pos_y_1, owner)
	return this_1
endfunction

function alloc_ObjectTarget takes nothing returns integer
	local integer this_1
	if Serializable_firstFree == 0 then
		if Serializable_maxIndex < JASS_MAX_ARRAY_SIZE then
			set Serializable_maxIndex = Serializable_maxIndex + 1
			set this_1 = Serializable_maxIndex
			set Serializable_typeId[this_1] = 1188
		else
			call error("Out of memory: Could not create ObjectTarget.")
			set this_1 = 0
		endif
	else
		set Serializable_firstFree = Serializable_firstFree - 1
		set this_1 = Serializable_nextFree[Serializable_firstFree]
		set Serializable_typeId[this_1] = 1188
	endif
	return this_1
endfunction

function ObjectTarget_init takes integer this_1 returns nothing
endfunction

function construct_ObjectTarget takes integer this_1, real pos_x_1, real pos_y_1, player owner returns nothing
	call construct_SetupObject(this_1, createUnit(owner, ObjectTarget_OBJECT_TARGET_ID, pos_x_1, pos_y_1, 0.), createUnit(owner, ObjectTarget_OBJECT_TARGET_ID, pos_x_1, pos_y_1, 0.), 0.)
	call ObjectTarget_init(this_1)
endfunction

function new_ObjectTarget takes real pos_x_1, real pos_y_1, player owner returns integer
	local integer this_1 = alloc_ObjectTarget()
	call construct_ObjectTarget(this_1, pos_x_1, pos_y_1, owner)
	return this_1
endfunction

function alloc_Pointer takes nothing returns integer
	local integer this_1
	if Serializable_firstFree == 0 then
		if Serializable_maxIndex < JASS_MAX_ARRAY_SIZE then
			set Serializable_maxIndex = Serializable_maxIndex + 1
			set this_1 = Serializable_maxIndex
			set Serializable_typeId[this_1] = 1184
		else
			call error("Out of memory: Could not create Pointer.")
			set this_1 = 0
		endif
	else
		set Serializable_firstFree = Serializable_firstFree - 1
		set this_1 = Serializable_nextFree[Serializable_firstFree]
		set Serializable_typeId[this_1] = 1184
	endif
	return this_1
endfunction

function Pointer_init takes integer this_1 returns nothing
	local real tuple_temp
	set Pointer_turnspeed[this_1] = 2.
	set tuple_temp = real_fromDeg(0.)
	set Pointer_angl_radians[this_1] = tuple_temp
	set Pointer_turning[this_1] = false
endfunction

function alloc_EventListener_add_Pointer_Pointer takes nothing returns integer
	local integer this_1
	if EventListener_firstFree == 0 then
		if EventListener_maxIndex < JASS_MAX_ARRAY_SIZE then
			set EventListener_maxIndex = EventListener_maxIndex + 1
			set this_1 = EventListener_maxIndex
			set EventListener_typeId[this_1] = 807
		else
			call error("Out of memory: Could not create EventListener_add_Pointer_Pointer.")
			set this_1 = 0
		endif
	else
		set EventListener_firstFree = EventListener_firstFree - 1
		set this_1 = EventListener_nextFree[EventListener_firstFree]
		set EventListener_typeId[this_1] = 807
	endif
	return this_1
endfunction

function construct_Pointer takes integer this_1, real pos_x_1, real pos_y_1, player owner, real facing_radians returns nothing
	local integer clVar
	local unit temp
	local playerunitevent temp_1
	local real tuple_temp
	call construct_EscaperSensorSetup(this_1, vec2_toVec3(pos_x_1, pos_y_1), vec2_toVec3_return_y, vec2_toVec3_return_z, owner, Pointer_POINTER_ID, facing_radians, Pointer_POINTER_RADIUS, 16.)
	call Pointer_init(this_1)
	set tuple_temp = facing_radians
	set Pointer_angl_radians[this_1] = tuple_temp
	set temp = SetupObject_setup[this_1]
	set temp_1 = EVENT_PLAYER_UNIT_SPELL_CAST
	set clVar = alloc_EventListener_add_Pointer_Pointer()
	call construct_EventListener(clVar)
	set this_2984[clVar] = this_1
	call EventListener_add_436(temp, temp_1, clVar)
endfunction

function new_Pointer takes real pos_x_1, real pos_y_1, player owner, real facing_radians returns integer
	local integer this_1 = alloc_Pointer()
	call construct_Pointer(this_1, pos_x_1, pos_y_1, owner, facing_radians)
	return this_1
endfunction

function alloc_Powernode takes nothing returns integer
	local integer this_1
	if Serializable_firstFree == 0 then
		if Serializable_maxIndex < JASS_MAX_ARRAY_SIZE then
			set Serializable_maxIndex = Serializable_maxIndex + 1
			set this_1 = Serializable_maxIndex
			set Serializable_typeId[this_1] = 1189
		else
			call error("Out of memory: Could not create Powernode.")
			set this_1 = 0
		endif
	else
		set Serializable_firstFree = Serializable_firstFree - 1
		set this_1 = Serializable_nextFree[Serializable_firstFree]
		set Serializable_typeId[this_1] = 1189
	endif
	return this_1
endfunction

function Powernode_init takes integer this_1 returns nothing
	set Powernode_bounciness[this_1] = new_ConfigValue(0.75, 0.25, "Bounciness")
	set Powernode_firstLink[this_1] = 0
endfunction

function alloc_EventListener_add_Powernode_Powernode takes nothing returns integer
	local integer this_1
	if EventListener_firstFree == 0 then
		if EventListener_maxIndex < JASS_MAX_ARRAY_SIZE then
			set EventListener_maxIndex = EventListener_maxIndex + 1
			set this_1 = EventListener_maxIndex
			set EventListener_typeId[this_1] = 808
		else
			call error("Out of memory: Could not create EventListener_add_Powernode_Powernode.")
			set this_1 = 0
		endif
	else
		set EventListener_firstFree = EventListener_firstFree - 1
		set this_1 = EventListener_nextFree[EventListener_firstFree]
		set EventListener_typeId[this_1] = 808
	endif
	return this_1
endfunction

function construct_Powernode takes integer this_1, real pos_x_1, real pos_y_1, player owner returns nothing
	local unit receiver
	local unit receiver_1
	local unit receiver_2
	local unit receiver_3
	local integer clVar
	local unit temp
	local playerunitevent temp_1
	call construct_SetupObject(this_1, createUnit(owner, BuilderConstants_POWER_NODE_ID, pos_x_1, pos_y_1, 0.), createUnit(owner, BuilderConstants_POWER_NODE_ID, pos_x_1, pos_y_1, 0.), 0.)
	call Powernode_init(this_1)
	set receiver = SetupObject_setup[this_1]
	call unit_addAbility(receiver, Powernode_LINK_SPELLBOOK_ID)
	set receiver_1 = receiver
	call unit_addAbility(receiver_1, Powernode_INCREASE_BOUNCE_ID)
	set receiver_2 = receiver_1
	call unit_addAbility(receiver_2, Powernode_DECREASE_BOUNCE_ID)
	set receiver_3 = receiver_2
	call unit_addAbility(receiver_3, BuilderConstants_TURN_OFF_ID)
	set Entity_sleeps[this_1] = false
	set temp = SetupObject_setup[this_1]
	set temp_1 = EVENT_PLAYER_UNIT_SPELL_CAST
	set clVar = alloc_EventListener_add_Powernode_Powernode()
	call construct_EventListener(clVar)
	set this_2994[clVar] = this_1
	call EventListener_add_436(temp, temp_1, clVar)
endfunction

function new_Powernode takes real pos_x_1, real pos_y_1, player owner returns integer
	local integer this_1 = alloc_Powernode()
	call construct_Powernode(this_1, pos_x_1, pos_y_1, owner)
	return this_1
endfunction

function dispatch_RevivePoint_Revivepoint_RevivePoint_terminate takes integer this_1 returns nothing
	if Serializable_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling RevivePoint.terminate")
		else
			call error("Called RevivePoint.terminate on invalid object.")
		endif
	endif
	call cyc_RevivePoint_terminate(0, this_1)
endfunction

function construct_RevivePoint2 takes integer this_1, real pos_x_1, real pos_y_1, real pos_z, player owner returns nothing
	local integer tile_x
	local integer tile_y
	local integer tile_key
	local integer tile_currentType
	local integer tile_lastType
	local integer tile_modifiers_val
	local integer temp_tuple_walkableId
	local integer temp_x
	local integer temp_y
	local integer temp_key
	local integer temp_currentType
	local integer temp_lastType
	local integer temp_modifiers_val
	local integer tuple_temp
	local integer tuple_temp_1
	local integer tuple_temp_2
	local integer tuple_temp_3
	local integer tuple_temp_4
	local integer tuple_temp_5
	local integer tuple_temp_6
	local integer tuple_temp_7
	local integer tuple_temp_8
	local integer tuple_temp_9
	local integer tuple_temp_10
	local integer tuple_temp_11
	local integer tuple_temp_12
	call construct_StaticSetupObject(this_1, createUnit(owner, BuilderConstants_REVIVE_POINT_ID, vec3_toVec2(pos_x_1, pos_y_1, pos_z), vec3_toVec2_return_y, 0.), createUnit(owner, BuilderConstants_REVIVE_POINT_ID, vec3_toVec2(pos_x_1, pos_y_1, pos_z), vec3_toVec2_return_y, 0.), Revivepoint_EVENT_RADIUS, ref_function_RevivePoint_onReach)
	call RevivePoint_init(this_1)
	set tuple_temp = vec3_getEBRTile(pos_x_1, pos_y_1, pos_z)
	set tuple_temp_1 = vec3_getEBRTile_return_y
	set tuple_temp_2 = vec3_getEBRTile_return_key
	set tuple_temp_3 = vec3_getEBRTile_return_currentType
	set tuple_temp_4 = vec3_getEBRTile_return_lastType
	set tuple_temp_5 = vec3_getEBRTile_return_modifiers_val
	set tile_x = tuple_temp
	set tile_y = tuple_temp_1
	set tile_key = tuple_temp_2
	set tile_currentType = tuple_temp_3
	set tile_lastType = tuple_temp_4
	set tile_modifiers_val = tuple_temp_5
	if ebrtile_hasModifier(tile_x, tile_y, tile_key, tile_currentType, tile_lastType, tile_modifiers_val, 4) then
		call dispatch_RevivePoint_Revivepoint_RevivePoint_terminate(this_1)
	else
		call ebrtile_addModifier(tile_x, tile_y, tile_key, tile_currentType, tile_lastType, tile_modifiers_val, 4)
		set tuple_temp_6 = tile_x
		set tuple_temp_7 = tile_y
		set tuple_temp_8 = tile_key
		set tuple_temp_9 = tile_currentType
		set tuple_temp_10 = tile_lastType
		set tuple_temp_11 = tile_modifiers_val
		set temp_x = tuple_temp_6
		set temp_y = tuple_temp_7
		set temp_key = tuple_temp_8
		set temp_currentType = tuple_temp_9
		set temp_lastType = tuple_temp_10
		set temp_modifiers_val = tuple_temp_11
		call dispatch_RegionData_RegionData_RegionData_getTypeSet(Entity_setCurrentRegion(this_1))
		set tuple_temp_12 = dispatch_RegionData_RegionData_RegionData_getTypeSet_return_walkableId
		set temp_tuple_walkableId = tuple_temp_12
		call ebrtile_setType(temp_x, temp_y, temp_key, temp_currentType, temp_lastType, temp_modifiers_val, temp_tuple_walkableId)
	endif
endfunction

function new_RevivePoint_3735 takes real pos_x_1, real pos_y_1, real pos_z, player owner returns integer
	local integer this_1 = alloc_RevivePoint()
	call construct_RevivePoint2(this_1, pos_x_1, pos_y_1, pos_z, owner)
	return this_1
endfunction

function alloc_Spinner takes nothing returns integer
	local integer this_1
	if Serializable_firstFree == 0 then
		if Serializable_maxIndex < JASS_MAX_ARRAY_SIZE then
			set Serializable_maxIndex = Serializable_maxIndex + 1
			set this_1 = Serializable_maxIndex
			set Serializable_typeId[this_1] = 1191
		else
			call error("Out of memory: Could not create Spinner.")
			set this_1 = 0
		endif
	else
		set Serializable_firstFree = Serializable_firstFree - 1
		set this_1 = Serializable_nextFree[Serializable_firstFree]
		set Serializable_typeId[this_1] = 1191
	endif
	return this_1
endfunction

function Spinner_init takes integer this_1 returns nothing
	set Spinner_firstNode[this_1] = 0
	set Spinner_spinSpeed[this_1] = new_ConfigValue(2. * Angle_DEGTORAD, 0.25 * Angle_DEGTORAD, "Spinspeed")
	set Spinner_cosFactor[this_1] = new_ConfigValue(1., 0.1, "Cos-Factor")
	set Spinner_sinFactor[this_1] = new_ConfigValue(1., 0.1, "Sin-Factor")
	set Spinner_useSuperFormula[this_1] = false
endfunction

function alloc_EventListener_add_Spinner_Spinner_1735 takes nothing returns integer
	local integer this_1
	if EventListener_firstFree == 0 then
		if EventListener_maxIndex < JASS_MAX_ARRAY_SIZE then
			set EventListener_maxIndex = EventListener_maxIndex + 1
			set this_1 = EventListener_maxIndex
			set EventListener_typeId[this_1] = 817
		else
			call error("Out of memory: Could not create EventListener_add_Spinner_Spinner.")
			set this_1 = 0
		endif
	else
		set EventListener_firstFree = EventListener_firstFree - 1
		set this_1 = EventListener_nextFree[EventListener_firstFree]
		set EventListener_typeId[this_1] = 817
	endif
	return this_1
endfunction

function construct_Spinner2 takes integer this_1, real pos_x_1, real pos_y_1, player owner returns nothing
	local integer clVar
	local unit temp
	local playerunitevent temp_1
	call construct_SetupObject(this_1, createUnit(owner, BuilderConstants_SPINNER_ID, pos_x_1, pos_y_1, 0.), createUnit(owner, BuilderConstants_SPINNER_ID, pos_x_1, pos_y_1, 0.), 0.)
	call Spinner_init(this_1)
	set Entity_sleeps[this_1] = false
	call unit_addAbility(SetupObject_setup[this_1], BuilderConstants_TURN_OFF_ID)
	set temp = SetupObject_setup[this_1]
	set temp_1 = EVENT_PLAYER_UNIT_SPELL_EFFECT
	set clVar = alloc_EventListener_add_Spinner_Spinner_1735()
	call construct_EventListener(clVar)
	set this_2996[clVar] = this_1
	call EventListener_add_436(temp, temp_1, clVar)
endfunction

function new_Spinner_3757 takes real pos_x_1, real pos_y_1, player owner returns integer
	local integer this_1 = alloc_Spinner()
	call construct_Spinner2(this_1, pos_x_1, pos_y_1, owner)
	return this_1
endfunction

function alloc_TankKiller takes nothing returns integer
	local integer this_1
	if Serializable_firstFree == 0 then
		if Serializable_maxIndex < JASS_MAX_ARRAY_SIZE then
			set Serializable_maxIndex = Serializable_maxIndex + 1
			set this_1 = Serializable_maxIndex
			set Serializable_typeId[this_1] = 1187
		else
			call error("Out of memory: Could not create TankKiller.")
			set this_1 = 0
		endif
	else
		set Serializable_firstFree = Serializable_firstFree - 1
		set this_1 = Serializable_nextFree[Serializable_firstFree]
		set Serializable_typeId[this_1] = 1187
	endif
	return this_1
endfunction

function TankKiller_init takes integer this_1 returns nothing
endfunction

function construct_TankKiller2 takes integer this_1, real pos_x_1, real pos_y_1, player owner returns nothing
	call construct_EscaperSensorSetup3(this_1, vec2_toVec3(pos_x_1, pos_y_1), vec2_toVec3_return_y, vec2_toVec3_return_z, owner, EscaperKillers_TANK_KILLER_ID, EscaperKillers_COLL_SIZE_TANK, EscaperKillers_COLL_SIZE_TANK)
	call TankKiller_init(this_1)
endfunction

function new_TankKiller_3763 takes real pos_x_1, real pos_y_1, player owner returns integer
	local integer this_1 = alloc_TankKiller()
	call construct_TankKiller2(this_1, pos_x_1, pos_y_1, owner)
	return this_1
endfunction

function alloc_Teleporter takes nothing returns integer
	local integer this_1
	if Serializable_firstFree == 0 then
		if Serializable_maxIndex < JASS_MAX_ARRAY_SIZE then
			set Serializable_maxIndex = Serializable_maxIndex + 1
			set this_1 = Serializable_maxIndex
			set Serializable_typeId[this_1] = 1204
		else
			call error("Out of memory: Could not create Teleporter.")
			set this_1 = 0
		endif
	else
		set Serializable_firstFree = Serializable_firstFree - 1
		set this_1 = Serializable_nextFree[Serializable_firstFree]
		set Serializable_typeId[this_1] = 1204
	endif
	return this_1
endfunction

function Teleporter_init takes integer this_1 returns nothing
	set Teleporter_mode[this_1] = 0
endfunction

function construct_Teleporter takes integer this_1, real pos_x_1, real pos_y_1, player owner returns nothing
	call construct_StaticBaseObject(this_1, pos_x_1, pos_y_1, createUnit(owner, BuilderConstants_TELEPORTER_ID, pos_x_1, pos_y_1, 0.), Teleporter_EVENT_RADIUS, ref_function_Teleporter_teleport, null)
	call Teleporter_init(this_1)
	call unit_addAbility(UnitEntity_actor[this_1], BuilderConstants_TURN_OFF_ID)
endfunction

function new_Teleporter takes real pos_x_1, real pos_y_1, player owner returns integer
	local integer this_1 = alloc_Teleporter()
	call construct_Teleporter(this_1, pos_x_1, pos_y_1, owner)
	return this_1
endfunction

function alloc_TerrainBlocker takes nothing returns integer
	local integer this_1
	if Serializable_firstFree == 0 then
		if Serializable_maxIndex < JASS_MAX_ARRAY_SIZE then
			set Serializable_maxIndex = Serializable_maxIndex + 1
			set this_1 = Serializable_maxIndex
			set Serializable_typeId[this_1] = 1205
		else
			call error("Out of memory: Could not create TerrainBlocker.")
			set this_1 = 0
		endif
	else
		set Serializable_firstFree = Serializable_firstFree - 1
		set this_1 = Serializable_nextFree[Serializable_firstFree]
		set Serializable_typeId[this_1] = 1205
	endif
	return this_1
endfunction

function TerrainBlocker_init takes integer this_1 returns nothing
	set TerrainBlocker_silent[this_1] = false
endfunction

function construct_TerrainBlocker takes integer this_1, real pos_x_1, real pos_y_1, player owner returns nothing
	local integer tile_x
	local integer tile_y
	local integer tile_key
	local integer tile_currentType
	local integer tile_lastType
	local integer tile_modifiers_val
	local integer tuple_temp
	local integer tuple_temp_1
	local integer tuple_temp_2
	local integer tuple_temp_3
	local integer tuple_temp_4
	local integer tuple_temp_5
	call construct_StaticBaseObject(this_1, pos_x_1, pos_y_1, createUnit(owner, BuilderConstants_TC_BLOCKER_ID, real_round(pos_x_1 / 128.) * 128., real_round(pos_y_1 / 128.) * 128., 0.), 0., null, null)
	call TerrainBlocker_init(this_1)
	set tuple_temp = vec2_getEBRTile(pos_x_1, pos_y_1)
	set tuple_temp_1 = vec2_getEBRTile_return_y
	set tuple_temp_2 = vec2_getEBRTile_return_key
	set tuple_temp_3 = vec2_getEBRTile_return_currentType
	set tuple_temp_4 = vec2_getEBRTile_return_lastType
	set tuple_temp_5 = vec2_getEBRTile_return_modifiers_val
	set tile_x = tuple_temp
	set tile_y = tuple_temp_1
	set tile_key = tuple_temp_2
	set tile_currentType = tuple_temp_3
	set tile_lastType = tuple_temp_4
	set tile_modifiers_val = tuple_temp_5
	call dispatch_StaticBaseObject_BaseObject_StaticBaseObject_clearQuestionmark(this_1)
	if ebrtile_hasModifier(tile_x, tile_y, tile_key, tile_currentType, tile_lastType, tile_modifiers_val, 1) or ebrtile_hasModifier(tile_x, tile_y, tile_key, tile_currentType, tile_lastType, tile_modifiers_val, 4) then
		set TerrainBlocker_silent[this_1] = true
		call cyc_RevivePoint_terminate(18, this_1)
	else
		call ebrtile_addModifier(tile_x, tile_y, tile_key, tile_currentType, tile_lastType, tile_modifiers_val, 1)
	endif
endfunction

function new_TerrainBlocker takes real pos_x_1, real pos_y_1, player owner returns integer
	local integer this_1 = alloc_TerrainBlocker()
	call construct_TerrainBlocker(this_1, pos_x_1, pos_y_1, owner)
	return this_1
endfunction

function alloc_TerrainChanger takes nothing returns integer
	local integer this_1
	if Serializable_firstFree == 0 then
		if Serializable_maxIndex < JASS_MAX_ARRAY_SIZE then
			set Serializable_maxIndex = Serializable_maxIndex + 1
			set this_1 = Serializable_maxIndex
			set Serializable_typeId[this_1] = 1192
		else
			call error("Out of memory: Could not create TerrainChanger.")
			set this_1 = 0
		endif
	else
		set Serializable_firstFree = Serializable_firstFree - 1
		set this_1 = Serializable_nextFree[Serializable_firstFree]
		set Serializable_typeId[this_1] = 1192
	endif
	return this_1
endfunction

function TerrainChanger_init takes integer this_1 returns nothing
	set TerrainChanger_sizeX[this_1] = new_ConfigValue(1., 1., "Width")
	set TerrainChanger_sizeY[this_1] = new_ConfigValue(1., 1., "Height")
	set TerrainChanger_innerTile[this_1] = 808464432
	set TerrainChanger_outerTile[this_1] = 808464433
endfunction

function alloc_EventListener_add_TerrainChanger_TerrainChanger takes nothing returns integer
	local integer this_1
	if EventListener_firstFree == 0 then
		if EventListener_maxIndex < JASS_MAX_ARRAY_SIZE then
			set EventListener_maxIndex = EventListener_maxIndex + 1
			set this_1 = EventListener_maxIndex
			set EventListener_typeId[this_1] = 822
		else
			call error("Out of memory: Could not create EventListener_add_TerrainChanger_TerrainChanger.")
			set this_1 = 0
		endif
	else
		set EventListener_firstFree = EventListener_firstFree - 1
		set this_1 = EventListener_nextFree[EventListener_firstFree]
		set EventListener_typeId[this_1] = 822
	endif
	return this_1
endfunction

function construct_TerrainChanger takes integer this_1, real pos_x_1, real pos_y_1, player owner returns nothing
	local integer clVar
	local integer temp_tuple_walkableId
	local integer temp_tuple_unwalkableId
	local unit temp
	local playerunitevent temp_1
	local integer tuple_temp
	local integer tuple_temp_1
	local integer tuple_temp_2
	local integer tuple_temp_3
	call construct_SetupObject(this_1, createUnit(owner, TerrainChanger_TERRAIN_CHANGER_ID, pos_x_1, pos_y_1, 0.), createUnit(owner, TerrainChanger_TERRAIN_CHANGER_ID, pos_x_1, pos_y_1, 0.), 0.)
	call TerrainChanger_init(this_1)
	set temp = SetupObject_setup[this_1]
	set temp_1 = EVENT_PLAYER_UNIT_SPELL_CAST
	set clVar = alloc_EventListener_add_TerrainChanger_TerrainChanger()
	call construct_EventListener(clVar)
	set this_2985[clVar] = this_1
	call EventListener_add_436(temp, temp_1, clVar)
	set tuple_temp = vec2_getEBRTile(pos_x_1, pos_y_1)
	set tuple_temp_1 = vec2_getEBRTile_return_y
	set TerrainChanger_currentTile_x[this_1] = tuple_temp
	set TerrainChanger_currentTile_y[this_1] = tuple_temp_1
	call dispatch_RegionData_RegionData_RegionData_getTypeSet(Entity_getCurrentRegion(this_1))
	set tuple_temp_2 = dispatch_RegionData_RegionData_RegionData_getTypeSet_return_walkableId
	set temp_tuple_walkableId = tuple_temp_2
	set TerrainChanger_innerTile[this_1] = temp_tuple_walkableId
	call dispatch_RegionData_RegionData_RegionData_getTypeSet(Entity_getCurrentRegion(this_1))
	set tuple_temp_3 = dispatch_RegionData_RegionData_RegionData_getTypeSet_return_unwalkableId
	set temp_tuple_unwalkableId = tuple_temp_3
	set TerrainChanger_outerTile[this_1] = temp_tuple_unwalkableId
	set Entity_sleeps[this_1] = false
endfunction

function new_TerrainChanger takes real pos_x_1, real pos_y_1, player owner returns integer
	local integer this_1 = alloc_TerrainChanger()
	call construct_TerrainChanger(this_1, pos_x_1, pos_y_1, owner)
	return this_1
endfunction

function alloc_Texter takes nothing returns integer
	local integer this_1
	if Serializable_firstFree == 0 then
		if Serializable_maxIndex < JASS_MAX_ARRAY_SIZE then
			set Serializable_maxIndex = Serializable_maxIndex + 1
			set this_1 = Serializable_maxIndex
			set Serializable_typeId[this_1] = 1206
		else
			call error("Out of memory: Could not create Texter.")
			set this_1 = 0
		endif
	else
		set Serializable_firstFree = Serializable_firstFree - 1
		set this_1 = Serializable_nextFree[Serializable_firstFree]
		set Serializable_typeId[this_1] = 1206
	endif
	return this_1
endfunction

function Texter_init takes integer this_1 returns nothing
	local integer tuple_temp
	local integer tuple_temp_1
	local integer tuple_temp_2
	set Texter_hidden[this_1] = true
	set tuple_temp = 255
	set tuple_temp_1 = 255
	set tuple_temp_2 = 255
	set Texter_col_red[this_1] = tuple_temp
	set Texter_col_green[this_1] = tuple_temp_1
	set Texter_col_blue[this_1] = tuple_temp_2
endfunction

function createCenterFText takes real pos_x_1, real pos_y_1, real pos_z, string text, real size returns integer
	local integer ft = createFText_2345(pos_x_1, pos_y_1, pos_z, text, size, 0., Vectors_ZERO2_x, Vectors_ZERO2_y)
	local texttag receiver = FText_tt[ft]
	call texttag_center(receiver, pos_x_1, pos_y_1, pos_z, text, size)
	return ft
endfunction

function construct_Texter takes integer this_1, real pos_x_1, real pos_y_1, player owner returns nothing
	local texttag receiver
	local texttag receiver_1
	call construct_StaticBaseObject(this_1, pos_x_1, pos_y_1, createUnit(owner, BuilderConstants_TEXTER_ID, pos_x_1, pos_y_1, 0.), Texter_EVENT_RADIUS, ref_function_Texter_onStep, null)
	call Texter_init(this_1)
	call dispatch_StaticBaseObject_BaseObject_StaticBaseObject_setEnabled(this_1, false)
	set Texter_text[this_1] = createCenterFText(unit_getPos3Zero(UnitEntity_actor[this_1]), unit_getPos3Zero_return_y, unit_getPos3Zero_return_z, "", 12.)
	set receiver = FText_tt[Texter_text[this_1]]
	call texttag_setColor(receiver, Texter_col_red[this_1], Texter_col_green[this_1], Texter_col_blue[this_1], 0)
	set receiver_1 = receiver
	call texttag_setVisibility(receiver_1, false)
endfunction

function new_Texter takes real pos_x_1, real pos_y_1, player owner returns integer
	local integer this_1 = alloc_Texter()
	call construct_Texter(this_1, pos_x_1, pos_y_1, owner)
	return this_1
endfunction

function alloc_Tracks takes nothing returns integer
	local integer this_1
	if Serializable_firstFree == 0 then
		if Serializable_maxIndex < JASS_MAX_ARRAY_SIZE then
			set Serializable_maxIndex = Serializable_maxIndex + 1
			set this_1 = Serializable_maxIndex
			set Serializable_typeId[this_1] = 1224
		else
			call error("Out of memory: Could not create Tracks.")
			set this_1 = 0
		endif
	else
		set Serializable_firstFree = Serializable_firstFree - 1
		set this_1 = Serializable_nextFree[Serializable_firstFree]
		set Serializable_typeId[this_1] = 1224
	endif
	return this_1
endfunction

function Tracks_init takes integer this_1 returns nothing
	local real tuple_temp
	local real tuple_temp_1
	set Tracks_trackSpeed[this_1] = new_ConfigValue(4., 0.50, "Trackspeed")
	set Tracks_tsize[this_1] = 0
	set tuple_temp = Vectors_UP_x
	set tuple_temp_1 = Vectors_UP_y
	set Tracks_dir_x[this_1] = tuple_temp
	set Tracks_dir_y[this_1] = tuple_temp_1
endfunction

function alloc_EventListener_add_Tracks_Tracks takes nothing returns integer
	local integer this_1
	if EventListener_firstFree == 0 then
		if EventListener_maxIndex < JASS_MAX_ARRAY_SIZE then
			set EventListener_maxIndex = EventListener_maxIndex + 1
			set this_1 = EventListener_maxIndex
			set EventListener_typeId[this_1] = 827
		else
			call error("Out of memory: Could not create EventListener_add_Tracks_Tracks.")
			set this_1 = 0
		endif
	else
		set EventListener_firstFree = EventListener_firstFree - 1
		set this_1 = EventListener_nextFree[EventListener_firstFree]
		set EventListener_typeId[this_1] = 827
	endif
	return this_1
endfunction

function construct_Tracks takes integer this_1, real pos_x_1, real pos_y_1, player owner returns nothing
	local integer clVar
	local unit temp
	local playerunitevent temp_1
	call construct_UnitEntity(this_1, createUnit(owner, Tracks_TRACKS[0], pos_x_1, pos_y_1, 0.))
	call Tracks_init(this_1)
	call Entity_setCurrentRegion(this_1)
	set Tracks_setup[this_1] = createUnit(owner, Tracks_TRACKS_ID, pos_x_1, pos_y_1, 0.)
	call unit_setEntity(Tracks_setup[this_1], this_1)
	set temp = Tracks_setup[this_1]
	set temp_1 = EVENT_PLAYER_UNIT_SPELL_CAST
	set clVar = alloc_EventListener_add_Tracks_Tracks()
	call construct_EventListener(clVar)
	set this_2998[clVar] = this_1
	call EventListener_add_436(temp, temp_1, clVar)
	call dispatch_Tracks_Tracks_Tracks_updateTrack(this_1)
endfunction

function new_Tracks takes real pos_x_1, real pos_y_1, player owner returns integer
	local integer this_1 = alloc_Tracks()
	call construct_Tracks(this_1, pos_x_1, pos_y_1, owner)
	return this_1
endfunction

function alloc_Trap takes nothing returns integer
	local integer this_1
	if Serializable_firstFree == 0 then
		if Serializable_maxIndex < JASS_MAX_ARRAY_SIZE then
			set Serializable_maxIndex = Serializable_maxIndex + 1
			set this_1 = Serializable_maxIndex
			set Serializable_typeId[this_1] = 1207
		else
			call error("Out of memory: Could not create Trap.")
			set this_1 = 0
		endif
	else
		set Serializable_firstFree = Serializable_firstFree - 1
		set this_1 = Serializable_nextFree[Serializable_firstFree]
		set Serializable_typeId[this_1] = 1207
	endif
	return this_1
endfunction

function Trap_init takes integer this_1 returns nothing
	set Trap_sfxid[this_1] = 3
	set Trap_interval[this_1] = 2.
	set Trap_timerreal[this_1] = 0.
	set Trap_pull[this_1] = false
	set Trap_uptimes[this_1] = 0
	set Trap_goocounter[this_1] = 0
endfunction

function alloc_EventListener_add_Trap_Trap takes nothing returns integer
	local integer this_1
	if EventListener_firstFree == 0 then
		if EventListener_maxIndex < JASS_MAX_ARRAY_SIZE then
			set EventListener_maxIndex = EventListener_maxIndex + 1
			set this_1 = EventListener_maxIndex
			set EventListener_typeId[this_1] = 828
		else
			call error("Out of memory: Could not create EventListener_add_Trap_Trap.")
			set this_1 = 0
		endif
	else
		set EventListener_firstFree = EventListener_firstFree - 1
		set this_1 = EventListener_nextFree[EventListener_firstFree]
		set EventListener_typeId[this_1] = 828
	endif
	return this_1
endfunction

function construct_Trap takes integer this_1, real pos_x_1, real pos_y_1, player owner returns nothing
	local integer clVar
	local unit temp
	local playerunitevent temp_1
	call construct_StaticBaseObject(this_1, pos_x_1, pos_y_1, createUnit(owner, BuilderConstants_TRAP_ID, pos_x_1, pos_y_1, 0.), Trap_EVENT_RADIUS, ref_function_Trap_onStep, null)
	call Trap_init(this_1)
	call dispatch_Entity_Entity_Entity_DupletListModule_deactivate(this_1)
	set temp = UnitEntity_actor[this_1]
	set temp_1 = EVENT_PLAYER_UNIT_SPELL_CAST
	set clVar = alloc_EventListener_add_Trap_Trap()
	call construct_EventListener(clVar)
	set this_2959[clVar] = this_1
	call EventListener_add_436(temp, temp_1, clVar)
endfunction

function new_Trap takes real pos_x_1, real pos_y_1, player owner returns integer
	local integer this_1 = alloc_Trap()
	call construct_Trap(this_1, pos_x_1, pos_y_1, owner)
	return this_1
endfunction

function alloc_UnitCreator takes nothing returns integer
	local integer this_1
	if Serializable_firstFree == 0 then
		if Serializable_maxIndex < JASS_MAX_ARRAY_SIZE then
			set Serializable_maxIndex = Serializable_maxIndex + 1
			set this_1 = Serializable_maxIndex
			set Serializable_typeId[this_1] = 1208
		else
			call error("Out of memory: Could not create UnitCreator.")
			set this_1 = 0
		endif
	else
		set Serializable_firstFree = Serializable_firstFree - 1
		set this_1 = Serializable_nextFree[Serializable_firstFree]
		set Serializable_typeId[this_1] = 1208
	endif
	return this_1
endfunction

function UnitCreator_init takes integer this_1 returns nothing
	set UnitCreator_interval[this_1] = 5.
	set UnitCreator_timerreal[this_1] = .5
	set UnitCreator_spawnUnitType[this_1] = EscaperKillers_TANK_KILLER_ID
	set UnitCreator_delays[this_1] = new_LinkedList()
	set UnitCreator_tmode[this_1] = 0
endfunction

function construct_UnitCreator2 takes integer this_1, real pos_x_1, real pos_y_1, player owner returns nothing
	call construct_StaticBaseObject(this_1, pos_x_1, pos_y_1, createUnit(owner, BuilderConstants_UNIT_CREATOR_ID, pos_x_1, pos_y_1, 0.), 0., null, null)
	call UnitCreator_init(this_1)
	call unit_addAbility(UnitEntity_actor[this_1], Unitcreator_FIXED_ID)
	call dispatch_StaticBaseObject_BaseObject_StaticBaseObject_setEnabled(this_1, false)
endfunction

function new_UnitCreator_3779 takes real pos_x_1, real pos_y_1, player owner returns integer
	local integer this_1 = alloc_UnitCreator()
	call construct_UnitCreator2(this_1, pos_x_1, pos_y_1, owner)
	return this_1
endfunction

function alloc_UnitRemover takes nothing returns integer
	local integer this_1
	if Serializable_firstFree == 0 then
		if Serializable_maxIndex < JASS_MAX_ARRAY_SIZE then
			set Serializable_maxIndex = Serializable_maxIndex + 1
			set this_1 = Serializable_maxIndex
			set Serializable_typeId[this_1] = 1210
		else
			call error("Out of memory: Could not create UnitRemover.")
			set this_1 = 0
		endif
	else
		set Serializable_firstFree = Serializable_firstFree - 1
		set this_1 = Serializable_nextFree[Serializable_firstFree]
		set Serializable_typeId[this_1] = 1210
	endif
	return this_1
endfunction

function UnitRemover_init takes integer this_1 returns nothing
endfunction

function construct_UnitRemover2 takes integer this_1, real pos_x_1, real pos_y_1, player owner returns nothing
	call construct_StaticBaseObject(this_1, pos_x_1, pos_y_1, createUnit(owner, BuilderConstants_UNIT_REMOVER_ID, pos_x_1, pos_y_1, 0.), 64., ref_function_UnitRemover_removeUnit, null)
	call UnitRemover_init(this_1)
	call dispatch_StaticBaseObject_BaseObject_StaticBaseObject_clearQuestionmark(this_1)
	call unit_addAbility(UnitEntity_actor[this_1], BuilderConstants_TURN_OFF_ID)
endfunction

function new_UnitRemover_3783 takes real pos_x_1, real pos_y_1, player owner returns integer
	local integer this_1 = alloc_UnitRemover()
	call construct_UnitRemover2(this_1, pos_x_1, pos_y_1, owner)
	return this_1
endfunction

function alloc_VolcanoObstacle takes nothing returns integer
	local integer this_1
	if Serializable_firstFree == 0 then
		if Serializable_maxIndex < JASS_MAX_ARRAY_SIZE then
			set Serializable_maxIndex = Serializable_maxIndex + 1
			set this_1 = Serializable_maxIndex
			set Serializable_typeId[this_1] = 1221
		else
			call error("Out of memory: Could not create VolcanoObstacle.")
			set this_1 = 0
		endif
	else
		set Serializable_firstFree = Serializable_firstFree - 1
		set this_1 = Serializable_nextFree[Serializable_firstFree]
		set Serializable_typeId[this_1] = 1221
	endif
	return this_1
endfunction

function VolcanoObstacle_init takes integer this_1 returns nothing
endfunction

function construct_VolcanoObstacle2 takes integer this_1, real pos_x_1, real pos_y_1, player owner returns nothing
	call construct_StaticEscaperSensorSetup3(this_1, vec2_withTerrainZ(pos_x_1, pos_y_1), vec2_withTerrainZ_return_y, vec2_withTerrainZ_return_z, owner, BuilderConstants_VOLCANO_ID, Obstacle_EVENT_RADIUS_V, Obstacle_EVENT_RADIUS_V)
	call VolcanoObstacle_init(this_1)
endfunction

function new_VolcanoObstacle takes real pos_x_1, real pos_y_1, player owner returns integer
	local integer this_1 = alloc_VolcanoObstacle()
	call construct_VolcanoObstacle2(this_1, pos_x_1, pos_y_1, owner)
	return this_1
endfunction

function alloc_Vortex takes nothing returns integer
	local integer this_1
	if Serializable_firstFree == 0 then
		if Serializable_maxIndex < JASS_MAX_ARRAY_SIZE then
			set Serializable_maxIndex = Serializable_maxIndex + 1
			set this_1 = Serializable_maxIndex
			set Serializable_typeId[this_1] = 1226
		else
			call error("Out of memory: Could not create Vortex.")
			set this_1 = 0
		endif
	else
		set Serializable_firstFree = Serializable_firstFree - 1
		set this_1 = Serializable_nextFree[Serializable_firstFree]
		set Serializable_typeId[this_1] = 1226
	endif
	return this_1
endfunction

function Vortex_init takes integer this_1 returns nothing
	set Vortex_vgravity[this_1] = 2.
	set Vortex_zMode[this_1] = 0
	set Vortex_radiusSq[this_1] = Vortex_GRAV_RADIUS_MEDIUM
endfunction

function alloc_EventListener_add_Vortex_Vortex takes nothing returns integer
	local integer this_1
	if EventListener_firstFree == 0 then
		if EventListener_maxIndex < JASS_MAX_ARRAY_SIZE then
			set EventListener_maxIndex = EventListener_maxIndex + 1
			set this_1 = EventListener_maxIndex
			set EventListener_typeId[this_1] = 830
		else
			call error("Out of memory: Could not create EventListener_add_Vortex_Vortex.")
			set this_1 = 0
		endif
	else
		set EventListener_firstFree = EventListener_firstFree - 1
		set this_1 = EventListener_nextFree[EventListener_firstFree]
		set EventListener_typeId[this_1] = 830
	endif
	return this_1
endfunction

function construct_Vortex takes integer this_1, real pos_x_1, real pos_y_1, player owner returns nothing
	local integer clVar
	local unit receiver
	local unit receiver_1
	local unit receiver_2
	local unit receiver_3
	local unit receiver_4
	local unit receiver_5
	local unit receiver_6
	local unit receiver_7
	local unit temp
	local playerunitevent temp_1
	call construct_UnitEntity(this_1, CreateUnit(owner, BuilderConstants_VORTEX_ID, pos_x_1, pos_y_1, 0.))
	call Vortex_init(this_1)
	call Entity_setCurrentRegion(this_1)
	set temp = UnitEntity_actor[this_1]
	set temp_1 = EVENT_PLAYER_UNIT_SPELL_CAST
	set clVar = alloc_EventListener_add_Vortex_Vortex()
	call construct_EventListener(clVar)
	set this_2999[clVar] = this_1
	call EventListener_add_436(temp, temp_1, clVar)
	set receiver = UnitEntity_actor[this_1]
	call unit_addAbility(receiver, Vortex_ZMODE_NONE)
	set receiver_1 = receiver
	call unit_addAbility(receiver_1, Vortex_ZMODE_CYLI)
	set receiver_2 = receiver_1
	call unit_addAbility(receiver_2, Vortex_ZMODE_HEMI)
	set receiver_3 = receiver_2
	call unit_setVertexColor_4206(receiver_3, 255, 255, 255, 155)
	set receiver_4 = receiver_3
	call unit_addAbility(receiver_4, Vortex_SIZE_SMALL)
	set receiver_5 = receiver_4
	call unit_addAbility(receiver_5, Vortex_SIZE_MED)
	set receiver_6 = receiver_5
	call unit_addAbility(receiver_6, Vortex_SIZE_BIG)
	set receiver_7 = receiver_6
	call unit_addAbility(receiver_7, Basics_GHOST_INVIS_ID)
	set Vortex_vortexFx[this_1] = new_Fx_3674(vec2_withZ(pos_x_1, pos_y_1, 12.), vec2_withZ_return_y, vec2_withZ_return_z, "models\\vortex256.mdx")
endfunction

function new_Vortex takes real pos_x_1, real pos_y_1, player owner returns integer
	local integer this_1 = alloc_Vortex()
	call construct_Vortex(this_1, pos_x_1, pos_y_1, owner)
	return this_1
endfunction

function alloc_Wall takes nothing returns integer
	local integer this_1
	if Serializable_firstFree == 0 then
		if Serializable_maxIndex < JASS_MAX_ARRAY_SIZE then
			set Serializable_maxIndex = Serializable_maxIndex + 1
			set this_1 = Serializable_maxIndex
			set Serializable_typeId[this_1] = 1222
		else
			call error("Out of memory: Could not create Wall.")
			set this_1 = 0
		endif
	else
		set Serializable_firstFree = Serializable_firstFree - 1
		set this_1 = Serializable_nextFree[Serializable_firstFree]
		set Serializable_typeId[this_1] = 1222
	endif
	return this_1
endfunction

function Wall_init takes integer this_1 returns nothing
	set Wall_tId[this_1] = 0
endfunction

function construct_Wall takes integer this_1, real pos_x_1, real pos_y_1, player owner, real angle, integer tId returns nothing
	call construct_StaticSetupObject(this_1, createUnit(owner, InstantBuild_buildorders[tId], pos_x_1, pos_y_1, real_fromDeg(angle)), createUnit(owner, InstantBuild_buildorders[tId], pos_x_1, pos_y_1, real_fromDeg(angle)), 0., null)
	call Wall_init(this_1)
	set Wall_tId[this_1] = tId
endfunction

function new_Wall takes real pos_x_1, real pos_y_1, player owner, real angle, integer tId returns integer
	local integer this_1 = alloc_Wall()
	call construct_Wall(this_1, pos_x_1, pos_y_1, owner, angle, tId)
	return this_1
endfunction

function alloc_Waypoint takes nothing returns integer
	local integer this_1
	if Serializable_firstFree == 0 then
		if Serializable_maxIndex < JASS_MAX_ARRAY_SIZE then
			set Serializable_maxIndex = Serializable_maxIndex + 1
			set this_1 = Serializable_maxIndex
			set Serializable_typeId[this_1] = 1211
		else
			call error("Out of memory: Could not create Waypoint.")
			set this_1 = 0
		endif
	else
		set Serializable_firstFree = Serializable_firstFree - 1
		set this_1 = Serializable_nextFree[Serializable_firstFree]
		set Serializable_typeId[this_1] = 1211
	endif
	return this_1
endfunction

function Waypoint_init takes integer this_1 returns nothing
	set Waypoint_delay[this_1] = new_ConfigValue(0., Waypoint_INCREMENT, "Delay")
	set Waypoint_wisps[this_1] = true
	set Waypoint_linked[this_1] = 0
	set Waypoint_ready[this_1] = false
endfunction

function construct_Waypoint takes integer this_1, real pos_x_1, real pos_y_1, player owner returns nothing
	call construct_StaticBaseObject(this_1, pos_x_1, pos_y_1, CreateUnit(owner, BuilderConstants_WAYPOINT_ID, pos_x_1, pos_y_1, 0.), Waypoint_EVENT_RADIUS, ref_function_Waypoint_onInRange, ref_function_code__Waypoint_Waypoint)
	call Waypoint_init(this_1)
endfunction

function new_Waypoint takes real pos_x_1, real pos_y_1, player owner returns integer
	local integer this_1 = alloc_Waypoint()
	call construct_Waypoint(this_1, pos_x_1, pos_y_1, owner)
	return this_1
endfunction

function newObjectFromId takes player owner, real tpos_x_1, real tpos_y_1, integer id returns integer
	local integer temp = id
	if temp == SerializeIds_JUMPER_INDEX then
		return new_Jumper_3703(tpos_x_1, tpos_y_1, owner)
	elseif temp == SerializeIds_REVIVE_INDEX then
		return new_RevivePoint_3735(tpos_x_1, tpos_y_1, 0., owner)
	elseif temp == SerializeIds_TEXTER_INDEX then
		return new_Texter(tpos_x_1, tpos_y_1, owner)
	elseif temp == SerializeIds_BOMBTOWER_INDEX then
		return new_Bombertower(tpos_x_1, tpos_y_1, owner)
	elseif temp == SerializeIds_VORTEX_INDEX then
		return new_Vortex(tpos_x_1, tpos_y_1, owner)
	elseif temp == SerializeIds_EXECUTER_INDEX then
		return new_Executer_3657(tpos_x_1, tpos_y_1, owner)
	elseif temp == SerializeIds_BOOSTER_INDEX then
		return new_Booster(tpos_x_1, tpos_y_1, owner)
	elseif temp == SerializeIds_UNITREMOVER_INDEX then
		return new_UnitRemover_3783(tpos_x_1, tpos_y_1, owner)
	elseif temp == SerializeIds_WAYPOINT_INDEX then
		return new_Waypoint(tpos_x_1, tpos_y_1, owner)
	elseif temp == SerializeIds_TELEPORTER_INDEX then
		return new_Teleporter(tpos_x_1, tpos_y_1, owner)
	elseif temp == SerializeIds_DOOR_INDEX then
		return new_Door_3652(tpos_x_1, tpos_y_1, owner)
	elseif temp == SerializeIds_SMALLOBS_INDEX then
		return new_SmallObstacle_3746(tpos_x_1, tpos_y_1, owner)
	elseif temp == SerializeIds_BIGOBS_INDEX then
		return new_BigObstacle_3623(tpos_x_1, tpos_y_1, owner)
	elseif temp == SerializeIds_HIGH_OBS_INDEX then
		return new_HighObstacle_3687(tpos_x_1, tpos_y_1, owner)
	elseif temp == SerializeIds_TREE_INDEX then
		return new_Tree(tpos_x_1, tpos_y_1, owner)
	elseif temp == SerializeIds_SPINNER_INDEX then
		return new_Spinner_3757(tpos_x_1, tpos_y_1, owner)
	elseif temp == SerializeIds_UNITCREATOR_INDEX then
		return new_UnitCreator_3779(tpos_x_1, tpos_y_1, owner)
	elseif temp == SerializeIds_WALL_INDEX then
		return new_Wall(tpos_x_1, tpos_y_1, owner, 270., SerializeIds_WALL_INDEX)
	elseif temp == SerializeIds_TRACKS_INDEX then
		return new_Tracks(tpos_x_1, tpos_y_1, owner)
	elseif temp == SerializeIds_FOUNTAIN_INDEX then
		return new_Fountain_3671(tpos_x_1, tpos_y_1, owner)
	elseif temp == SerializeIds_POWERNODE_INDEX then
		return new_Powernode(tpos_x_1, tpos_y_1, owner)
	elseif temp == SerializeIds_TRAP_INDEX then
		return new_Trap(tpos_x_1, tpos_y_1, owner)
	elseif temp == SerializeIds_HWALL_INDEX then
		return new_Wall(tpos_x_1, tpos_y_1, owner, 270., SerializeIds_HWALL_INDEX)
	elseif temp == SerializeIds_VWALL_INDEX then
		return new_Wall(tpos_x_1, tpos_y_1, owner, 270., SerializeIds_VWALL_INDEX)
	elseif temp == SerializeIds_CONGA_INDEX then
		return new_CongaLineHead(tpos_x_1, tpos_y_1, owner)
	elseif temp == SerializeIds_TBLOCKER_INDEX then
		return new_TerrainBlocker(tpos_x_1, tpos_y_1, owner)
	elseif temp == SerializeIds_VOLCANO_INDEX then
		return new_VolcanoObstacle(tpos_x_1, tpos_y_1, owner)
	elseif temp == 140 then
		return new_Decoration(tpos_x_1, tpos_y_1, owner, GetRandomReal(0., 360.), id)
	elseif temp == 141 then
		return new_Decoration(tpos_x_1, tpos_y_1, owner, GetRandomReal(0., 360.), id)
	elseif temp == 142 then
		return new_Decoration(tpos_x_1, tpos_y_1, owner, GetRandomReal(0., 360.), id)
	elseif temp == 143 then
		return new_Decoration(tpos_x_1, tpos_y_1, owner, GetRandomReal(0., 360.), id)
	elseif temp == 144 then
		return new_Decoration(tpos_x_1, tpos_y_1, owner, GetRandomReal(0., 360.), id)
	elseif temp == 145 then
		return new_Decoration(tpos_x_1, tpos_y_1, owner, GetRandomReal(0., 360.), id)
	elseif temp == 146 then
		return new_Decoration(tpos_x_1, tpos_y_1, owner, GetRandomReal(0., 360.), id)
	elseif temp == 147 then
		return new_Decoration(tpos_x_1, tpos_y_1, owner, GetRandomReal(0., 360.), id)
	elseif temp == 148 then
		return new_Decoration(tpos_x_1, tpos_y_1, owner, GetRandomReal(0., 360.), id)
	elseif temp == 149 then
		return new_Decoration(tpos_x_1, tpos_y_1, owner, GetRandomReal(0., 360.), id)
	elseif temp == 150 then
		return new_Decoration(tpos_x_1, tpos_y_1, owner, GetRandomReal(0., 360.), id)
	elseif temp == 151 then
		return new_MemoryAccessPedestal(tpos_x_1, tpos_y_1, owner)
	elseif temp == SerializeIds_ARCANERY_INDEX then
		return new_Arcanery_3611(tpos_x_1, tpos_y_1, owner)
	elseif temp == SerializeIds_SMALLKILL_INDEX then
		return new_SmallKiller_3743(tpos_x_1, tpos_y_1, owner)
	elseif temp == SerializeIds_BIGKILL_INDEX then
		return new_BigKiller_3618(tpos_x_1, tpos_y_1, owner)
	elseif temp == SerializeIds_BOMBER_INDEX then
		return new_Bomber(tpos_x_1, tpos_y_1, owner)
	elseif temp == SerializeIds_KEY_INDEX then
		return new_Key(tpos_x_1, tpos_y_1, owner)
	elseif temp == SerializeIds_SMALLRANDKILL_INDEX then
		return new_SmallRandomKiller_3748(tpos_x_1, tpos_y_1, owner)
	elseif temp == SerializeIds_BIGRANDKILL_INDEX then
		return new_BigRandomKiller_3625(tpos_x_1, tpos_y_1, owner)
	elseif temp == SerializeIds_TANKKILL_INDEX then
		return new_TankKiller_3763(tpos_x_1, tpos_y_1, owner)
	elseif temp == SerializeIds_GLAIVEKILL_INDEX then
		return new_GlaiveKiller_3678(tpos_x_1, tpos_y_1, owner)
	elseif temp == SerializeIds_FIREKILL_INDEX then
		return new_FireKiller_3665(tpos_x_1, tpos_y_1, owner)
	elseif temp == SerializeIds_AIRKILL_INDEX then
		return new_AirKiller_3608(tpos_x_1, tpos_y_1, owner)
	elseif temp == SerializeIds_KNOCKBACKER_INDEX then
		return new_Knockbacker_3706(tpos_x_1, tpos_y_1, owner, 0.)
	elseif temp == SerializeIds_FACELESS_INDEX then
		return new_Faceless_3660(tpos_x_1, tpos_y_1, owner)
	elseif temp == SerializeIds_POINTER_INDEX then
		return new_Pointer(tpos_x_1, tpos_y_1, owner, 0.)
	elseif temp == SerializeIds_OBJ_TARGET_INDEX then
		return new_ObjectTarget(tpos_x_1, tpos_y_1, owner)
	elseif temp == SerializeIds_TC_INDEX then
		return new_TerrainChanger(tpos_x_1, tpos_y_1, owner)
	elseif temp == SerializeIds_COIN_INDEX then
		return new_Coin(tpos_x_1, tpos_y_1, owner)
	elseif temp == SerializeIds_BOOTS_INDEX then
		return new_Boots(tpos_x_1, tpos_y_1, owner)
	elseif temp == SerializeIds_TOME_INDEX then
		return new_Tome(tpos_x_1, tpos_y_1, owner)
	endif
	return 0
endfunction

function construct_AirKiller takes integer this_1, real pos_x_1, real pos_y_1, player owner, real facing_radians returns nothing
	call construct_EscaperSensorSetup(this_1, vec2_withZ(pos_x_1, pos_y_1, 200.), vec2_withZ_return_y, vec2_withZ_return_z, owner, EscaperKillers_AIR_KILLER_ID, facing_radians, EscaperKillers_COLL_SIZE_AIR_XY, EscaperKillers_COLL_SIZE_AIR_Z)
	call AirKiller_init(this_1)
endfunction

function new_AirKiller takes real pos_x_1, real pos_y_1, player owner, real facing_radians returns integer
	local integer this_1 = alloc_AirKiller()
	call construct_AirKiller(this_1, pos_x_1, pos_y_1, owner, facing_radians)
	return this_1
endfunction

function construct_Faceless takes integer this_1, real pos_x_1, real pos_y_1, player owner, real facing_radians returns nothing
	call construct_EscaperSensorSetup(this_1, vec2_toVec3(pos_x_1, pos_y_1), vec2_toVec3_return_y, vec2_toVec3_return_z, owner, Faceless_DIMENSION_SHIFTER_ID, facing_radians, Faceless_KILL_RADIUS, Faceless_KILL_RADIUS)
	call Faceless_init(this_1)
	call dispatch_Faceless_Faceless_Faceless_setup(this_1)
endfunction

function new_Faceless takes real pos_x_1, real pos_y_1, player owner, real facing_radians returns integer
	local integer this_1 = alloc_Faceless()
	call construct_Faceless(this_1, pos_x_1, pos_y_1, owner, facing_radians)
	return this_1
endfunction

function construct_FireKiller takes integer this_1, real pos_x_1, real pos_y_1, player owner, real facing_radians returns nothing
	call construct_EscaperSensorSetup(this_1, vec2_withZ(pos_x_1, pos_y_1, 256.), vec2_withZ_return_y, vec2_withZ_return_z, owner, EscaperKillers_FIRE_KILLER_ID, facing_radians, EscaperKillers_COLL_SIZE_FIRE, 64.)
	call FireKiller_init(this_1)
	call unit_issueImmediateOrder(UnitEntity_actor[this_1], "immolation")
	call unit_removeAbility(SetupObject_setup[this_1], 1093679177)
endfunction

function new_FireKiller takes real pos_x_1, real pos_y_1, player owner, real facing_radians returns integer
	local integer this_1 = alloc_FireKiller()
	call construct_FireKiller(this_1, pos_x_1, pos_y_1, owner, facing_radians)
	return this_1
endfunction

function UnitProducer_onCast takes integer this_1 returns boolean
	local integer id = GetSpellAbilityId()
	local integer obj_1 = unit_getEntity(GetSpellAbilityUnit())
	local real tuple_temp = vec3_toVec2(dispatch_StaticBaseObject_BaseObject_StaticBaseObject_getRallyPoint(obj_1), dispatch_StaticBaseObject_BaseObject_StaticBaseObject_getRallyPoint_return_y, dispatch_StaticBaseObject_BaseObject_StaticBaseObject_getRallyPoint_return_z)
	local real tuple_temp_1 = vec3_toVec2_return_y
	local real rallyPos_x_1 = tuple_temp
	local real rallyPos_y_1 = tuple_temp_1
	local integer data_1 = getRegionData_3304(rallyPos_x_1, rallyPos_y_1)
	local unit receiver
	local unit receiver_1
	local unit receiver_2
	local unit receiver_3
	local unit receiver_4
	local unit receiver_5
	local unit receiver_6
	local unit receiver_7
	local unit receiver_8
	local unit receiver_9
	local unit receiver_10
	local unit receiver_11
	local unit receiver_12
	local unit receiver_13
	local unit receiver_14
	local unit receiver_15
	local unit receiver_16
	local unit receiver_17
	local unit receiver_18
	local unit receiver_19
	local unit receiver_20
	local unit receiver_21
	local unit receiver_22
	local unit receiver_23
	local unit receiver_24
	local unit receiver_25
	local unit receiver_26
	local unit receiver_27
	local unit receiver_28
	local unit receiver_29
	local unit receiver_30
	local unit receiver_31
	local integer temp_tuple_bigKillerId
	local integer index
	local integer temp
	local boolean andLeft
	local integer tuple_temp_2
	if id == UnitProducer_SECOND_PAGE then
		set receiver = UnitEntity_actor[obj_1]
		call unit_removeAbility(receiver, UnitProducer_BIG_KILLER)
		set receiver_1 = receiver
		call unit_removeAbility(receiver_1, UnitProducer_SMALL_KILLER)
		set receiver_2 = receiver_1
		call unit_removeAbility(receiver_2, UnitProducer_SR_KILLER)
		set receiver_3 = receiver_2
		call unit_removeAbility(receiver_3, UnitProducer_BR_KILLER)
		set receiver_4 = receiver_3
		call unit_removeAbility(receiver_4, UnitProducer_TANK_KILLER)
		set receiver_5 = receiver_4
		call unit_removeAbility(receiver_5, UnitProducer_GLAIVE_KILLER)
		set receiver_6 = receiver_5
		call unit_removeAbility(receiver_6, UnitProducer_SECOND_PAGE)
		set receiver_7 = receiver_6
		call unit_removeAbility(receiver_7, UnitProducer_KNOCKBACK)
		set receiver_8 = receiver_7
		call unit_removeAbility(receiver_8, UnitProducer_FACELESS)
		set receiver_9 = receiver_8
		call unit_removeAbility(receiver_9, UnitProducer_AIR_KILLER)
		set receiver_10 = receiver_9
		call unit_removeAbility(receiver_10, UnitProducer_FIRE)
		set receiver_11 = receiver_10
		call unit_addAbility(receiver_11, UnitProducer_OBJ_TARGET)
		set receiver_12 = receiver_11
		call unit_addAbility(receiver_12, UnitProducer_T_CHANGER)
		set receiver_13 = receiver_12
		call unit_addAbility(receiver_13, UnitProducer_POINTER)
		set receiver_14 = receiver_13
		call unit_addAbility(receiver_14, UnitProducer_FIRST_PAGE)
		set receiver_15 = receiver_14
		call unit_addAbility(receiver_15, UnitProducer_BOMBER)
		return false
	elseif id == UnitProducer_FIRST_PAGE then
		set receiver_16 = UnitEntity_actor[obj_1]
		call unit_addAbility(receiver_16, UnitProducer_BIG_KILLER)
		set receiver_17 = receiver_16
		call unit_addAbility(receiver_17, UnitProducer_SMALL_KILLER)
		set receiver_18 = receiver_17
		call unit_addAbility(receiver_18, UnitProducer_SR_KILLER)
		set receiver_19 = receiver_18
		call unit_addAbility(receiver_19, UnitProducer_BR_KILLER)
		set receiver_20 = receiver_19
		call unit_addAbility(receiver_20, UnitProducer_TANK_KILLER)
		set receiver_21 = receiver_20
		call unit_addAbility(receiver_21, UnitProducer_FIRE)
		set receiver_22 = receiver_21
		call unit_addAbility(receiver_22, UnitProducer_GLAIVE_KILLER)
		set receiver_23 = receiver_22
		call unit_addAbility(receiver_23, UnitProducer_SECOND_PAGE)
		set receiver_24 = receiver_23
		call unit_addAbility(receiver_24, UnitProducer_KNOCKBACK)
		set receiver_25 = receiver_24
		call unit_addAbility(receiver_25, UnitProducer_FACELESS)
		set receiver_26 = receiver_25
		call unit_addAbility(receiver_26, UnitProducer_AIR_KILLER)
		set receiver_27 = receiver_26
		call unit_removeAbility(receiver_27, UnitProducer_OBJ_TARGET)
		set receiver_28 = receiver_27
		call unit_removeAbility(receiver_28, UnitProducer_T_CHANGER)
		set receiver_29 = receiver_28
		call unit_removeAbility(receiver_29, UnitProducer_POINTER)
		set receiver_30 = receiver_29
		call unit_removeAbility(receiver_30, UnitProducer_FIRST_PAGE)
		set receiver_31 = receiver_30
		call unit_removeAbility(receiver_31, UnitProducer_BOMBER)
		return false
	endif
	if data_1 == 0 then
		return false
	endif
	if dispatch_RegionData_RegionData_RegionData_canBuild(data_1, Entity_owner[obj_1]) then
		call dispatch_RegionData_RegionData_RegionData_getTypeSet(data_1)
		set tuple_temp_2 = dispatch_RegionData_RegionData_RegionData_getTypeSet_return_bigKillerId
		set temp_tuple_bigKillerId = tuple_temp_2
		set andLeft = temp_tuple_bigKillerId > 0
	else
		set andLeft = false
	endif
	if andLeft then
		set index = -1
		set temp = id
		if temp == UnitProducer_BIG_KILLER then
			set index = SerializeIds_BIGKILL_INDEX
		elseif temp == UnitProducer_SMALL_KILLER then
			set index = SerializeIds_SMALLKILL_INDEX
		elseif temp == UnitProducer_BR_KILLER then
			call new_BigRandomKiller_3625(rallyPos_x_1, rallyPos_y_1, Entity_owner[obj_1])
		elseif temp == UnitProducer_SR_KILLER then
			call new_SmallRandomKiller_3748(rallyPos_x_1, rallyPos_y_1, Entity_owner[obj_1])
		elseif temp == UnitProducer_TANK_KILLER then
			call new_TankKiller_3763(rallyPos_x_1, rallyPos_y_1, Entity_owner[obj_1])
		elseif temp == UnitProducer_OBJ_TARGET then
			call new_ObjectTarget(rallyPos_x_1, rallyPos_y_1, Entity_owner[obj_1])
		elseif temp == UnitProducer_GLAIVE_KILLER then
			call new_GlaiveKiller_3678(rallyPos_x_1, rallyPos_y_1, Entity_owner[obj_1])
		elseif temp == UnitProducer_T_CHANGER then
			call new_TerrainChanger(rallyPos_x_1, rallyPos_y_1, Entity_owner[obj_1])
		elseif temp == UnitProducer_POINTER then
			call new_Pointer(rallyPos_x_1, rallyPos_y_1, Entity_owner[obj_1], 0.)
		elseif temp == UnitProducer_BOMBER then
			set index = SerializeIds_BOMBER_INDEX
		elseif temp == UnitProducer_KNOCKBACK then
			call new_Knockbacker_3706(rallyPos_x_1, rallyPos_y_1, Entity_owner[obj_1], 0.)
		elseif temp == UnitProducer_FACELESS then
			call new_Faceless(rallyPos_x_1, rallyPos_y_1, Entity_owner[obj_1], 0.)
		elseif temp == UnitProducer_AIR_KILLER then
			call new_AirKiller(rallyPos_x_1, rallyPos_y_1, Entity_owner[obj_1], 0.)
		elseif temp == UnitProducer_FIRE then
			call new_FireKiller(rallyPos_x_1, rallyPos_y_1, Entity_owner[obj_1], 0.)
		endif
		if index > 0 then
			call newObjectFromId(Entity_owner[obj_1], rallyPos_x_1, rallyPos_y_1, index)
		endif
	else
		call DisplayTextToPlayer(Entity_owner[obj_1], 0., 0., "|cffC51019You have no permission to build in this region!")
	endif
	return false
endfunction

function dispatch_UnitProducer_UnitProducer_UnitProducer_onCast takes integer this_1 returns boolean
	local boolean UnitProducer_UnitProducer_onCast_result
	if Serializable_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling UnitProducer.onCast")
		else
			call error("Called UnitProducer.onCast on invalid object.")
		endif
	endif
	set UnitProducer_UnitProducer_onCast_result = UnitProducer_onCast(this_1)
	return UnitProducer_UnitProducer_onCast_result
endfunction

function onEvent_add_UnitProducer_UnitProducer takes integer this_1 returns boolean
	return dispatch_UnitProducer_UnitProducer_UnitProducer_onCast(this_2931[this_1])
endfunction

function Vortex_onCast takes integer this_1 returns nothing
	local integer id = GetSpellAbilityId()
	local integer temp = id
	if temp == Vortex_INC_GRAV_ID then
		if Vortex_vgravity[this_1] < 25. then
			set Vortex_vgravity[this_1] = Vortex_vgravity[this_1] + .5
			call createFText_2346(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1], 0., 0.06, "Gravity : " + real_toString(Vortex_vgravity[this_1]), 12., 2., 255, 255, 255, 0, Entity_owner[this_1])
		endif
	elseif temp == Vortex_DEC_GRAV_ID then
		if Vortex_vgravity[this_1] > ( - 25.) then
			set Vortex_vgravity[this_1] = Vortex_vgravity[this_1] - .5
			call createFText_2346(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1], 0., 0.06, "Gravity : " + real_toString(Vortex_vgravity[this_1]), 12., 2., 255, 255, 255, 0, Entity_owner[this_1])
		endif
	elseif temp == Vortex_ZMODE_NONE then
		set Vortex_zMode[this_1] = 0
		call createFText_2346(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1], 0., 0.06, "Z Mode: None", 12., 2., 255, 255, 255, 0, Entity_owner[this_1])
	elseif temp == Vortex_ZMODE_CYLI then
		set Vortex_zMode[this_1] = 1
		call createFText_2346(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1], 0., 0.06, "Z Mode: Cylinder", 12., 2., 255, 255, 255, 0, Entity_owner[this_1])
	elseif temp == Vortex_ZMODE_HEMI then
		set Vortex_zMode[this_1] = 2
		call createFText_2346(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1], 0., 0.06, "Z Mode: Hemisphere", 12., 2., 255, 255, 255, 0, Entity_owner[this_1])
	elseif temp == Vortex_SIZE_SMALL then
		set Vortex_radiusSq[this_1] = Vortex_GRAV_RADIUS_SMALL
		call dispatch_Fx_Fx_Fx_hiddenDestroy(Vortex_vortexFx[this_1])
		set Vortex_vortexFx[this_1] = new_Fx_3674(vec3_op_plus(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1], 0., 0., 12.), vec3_op_plus_return_y, vec3_op_plus_return_z, "models\\vortex128.mdx")
	elseif temp == Vortex_SIZE_MED then
		set Vortex_radiusSq[this_1] = Vortex_GRAV_RADIUS_MEDIUM
		call dispatch_Fx_Fx_Fx_hiddenDestroy(Vortex_vortexFx[this_1])
		set Vortex_vortexFx[this_1] = new_Fx_3674(vec3_op_plus(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1], 0., 0., 12.), vec3_op_plus_return_y, vec3_op_plus_return_z, "models\\vortex256.mdx")
	elseif temp == Vortex_SIZE_BIG then
		set Vortex_radiusSq[this_1] = Vortex_GRAV_RADIUS_BIG
		call dispatch_Fx_Fx_Fx_hiddenDestroy(Vortex_vortexFx[this_1])
		set Vortex_vortexFx[this_1] = new_Fx_3674(vec3_op_plus(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1], 0., 0., 12.), vec3_op_plus_return_y, vec3_op_plus_return_z, "models\\vortex512.mdx")
	endif
endfunction

function dispatch_Vortex_Vortex_Vortex_onCast takes integer this_1 returns nothing
	if Serializable_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling Vortex.onCast")
		else
			call error("Called Vortex.onCast on invalid object.")
		endif
	endif
	call Vortex_onCast(this_1)
endfunction

function onEvent_add_Vortex_Vortex takes integer this_1 returns nothing
	call dispatch_Vortex_Vortex_Vortex_onCast(this_2999[this_1])
endfunction

function PlayerData_tmods_get takes integer index1, integer index2 returns integer
	local integer returnVal
	if index2 < 0 or index2 >= 4 then
		call error("Index out of Bounds")
	elseif index2 <= 1 then
		if index2 <= 0 then
			set returnVal = PlayerData_tmods_0[index1]
		else
			set returnVal = PlayerData_tmods_1[index1]
		endif
	elseif index2 <= 2 then
		set returnVal = PlayerData_tmods_2[index1]
	else
		set returnVal = PlayerData_tmods_3[index1]
	endif
	return returnVal
endfunction

function multiboard_display takes multiboard this_1, boolean show returns nothing
	call MultiboardDisplay(this_1, show)
endfunction

function multiboarditem_setStyle takes multiboarditem this_1, boolean showValue, boolean showIcon returns nothing
	call MultiboardSetItemStyle(this_1, showValue, showIcon)
endfunction

function multiboarditem_setWidth takes multiboarditem this_1, real width returns nothing
	call MultiboardSetItemWidth(this_1, width)
endfunction

function alloc_Board takes nothing returns integer
	local integer this_1
	if Board_firstFree == 0 then
		if Board_maxIndex < JASS_MAX_ARRAY_SIZE then
			set Board_maxIndex = Board_maxIndex + 1
			set this_1 = Board_maxIndex
			set Board_typeId[this_1] = 642
		else
			call error("Out of memory: Could not create Board.")
			set this_1 = 0
		endif
	else
		set Board_firstFree = Board_firstFree - 1
		set this_1 = Board_nextFree[Board_firstFree]
		set Board_typeId[this_1] = 642
	endif
	return this_1
endfunction

function Board_init takes integer this_1 returns nothing
endfunction

function multiboard_setColumnCount takes multiboard this_1, integer count returns nothing
	call MultiboardSetColumnCount(this_1, count)
endfunction

function multiboard_setRowCount takes multiboard this_1, integer count returns nothing
	call MultiboardSetRowCount(this_1, count)
endfunction

function construct_Board takes integer this_1, integer row, integer column returns nothing
	local integer i
	local integer temp
	local integer j
	local integer temp_1
	call Board_init(this_1)
	set Board_board[this_1] = CreateMultiboard()
	call multiboard_setColumnCount(Board_board[this_1], column)
	call multiboard_setRowCount(Board_board[this_1], row)
	set Board_mbdata[this_1] = InitHashtable()
	set i = 1
	set temp = row
	loop
		exitwhen i > temp
		set j = 1
		set temp_1 = column
		loop
			exitwhen j > temp_1
			call dispatch_Board_MultiboardClass_Board_setNewItem(this_1, i, j, null, null)
			call multiboarditem_setStyle(multiboard_getItem(Board_board[this_1], i, j), false, false)
			set j = j + 1
		endloop
		set i = i + 1
	endloop
endfunction

function new_Board takes integer row, integer column returns integer
	local integer this_1 = alloc_Board()
	call construct_Board(this_1, row, column)
	return this_1
endfunction

function rebuildBoard takes nothing returns nothing
	local integer i
	local integer iterator
	local integer pd_1
	local multiboarditem receiver
	local multiboarditem receiver_1
	local multiboarditem receiver_2
	local multiboarditem receiver_3
	local multiboarditem receiver_4
	local multiboarditem receiver_5
	local multiboarditem receiver_6
	local multiboarditem receiver_7
	local multiboarditem receiver_8
	local multiboarditem receiver_9
	local multiboarditem receiver_10
	local multiboarditem receiver_11
	set PlayerData_playerboard = new_Board(dispatch_LinkedList_LinkedList_LinkedList_size(PlayerData_allPlayers) + 1, 3)
	set i = 1
	set iterator = LinkedList_iterator(PlayerData_allPlayers)
	loop
		exitwhen  not LLIterator_hasNext(iterator)
		set pd_1 = LLIterator_next(iterator)
		set receiver = multiboard_getItem(Board_board[PlayerData_playerboard], i, 0)
		call multiboarditem_setStyle(receiver, true, true)
		set receiver_1 = receiver
		call multiboarditem_setWidth(receiver_1, 0.1)
		set receiver_2 = multiboard_getItem(Board_board[PlayerData_playerboard], i, 1)
		call multiboarditem_setStyle(receiver_2, true, false)
		set receiver_3 = receiver_2
		call multiboarditem_setWidth(receiver_3, 0.015)
		set receiver_4 = multiboard_getItem(Board_board[PlayerData_playerboard], i, 2)
		call multiboarditem_setStyle(receiver_4, true, false)
		set receiver_5 = receiver_4
		call multiboarditem_setWidth(receiver_5, 0.05)
		call dispatch_PlayerData_PlayerData_PlayerData_setMBRow(pd_1, i)
		set i = i + 1
	endloop
	call LLIterator_close(iterator)
	call CameraSetSmoothingFactor(10.)
	set receiver_6 = multiboard_getItem(Board_board[PlayerData_playerboard], 0, 0)
	call multiboarditem_setStyle(receiver_6, true, false)
	set receiver_7 = receiver_6
	call multiboarditem_setWidth(receiver_7, 0.1)
	call dispatch_Board_MultiboardClass_Board_setNewItem(PlayerData_playerboard, 0, 0, "Player", null)
	set receiver_8 = multiboard_getItem(Board_board[PlayerData_playerboard], 0, 1)
	call multiboarditem_setStyle(receiver_8, false, true)
	set receiver_9 = receiver_8
	call multiboarditem_setWidth(receiver_9, 0.02)
	call dispatch_Board_MultiboardClass_Board_setNewItem(PlayerData_playerboard, 0, 1, null, Icons_bTNAnkh)
	set receiver_10 = multiboard_getItem(Board_board[PlayerData_playerboard], 0, 2)
	call multiboarditem_setWidth(receiver_10, 0.05)
	set receiver_11 = receiver_10
	call multiboarditem_setStyle(receiver_11, true, false)
	call dispatch_Board_MultiboardClass_Board_setNewItem(PlayerData_playerboard, 0, 2, "Rank", null)
	call multiboard_display(Board_board[PlayerData_playerboard], true)
	call EnableUserControl(true)
	call EnableOcclusion(true)
endfunction

function PlayerData_onDestroy takes integer this_1 returns nothing
	local integer i
	local integer i_1
	local integer j
	call printTimed(player_getNameColored_3918(PlayerData_p[this_1]) + "|r |cffFFCC33has left the game!", 20.)
	call dispatch_SoundDefinition_SoundUtils_SoundDefinition_play(PlayerData_questFailedSound)
	if PlayerData_selector[this_1] != 0 then
		call dispatch_Selector_destroySelector(PlayerData_selector[this_1])
	endif
	if PlayerData_escaper[this_1] != 0 then
		if Escaper_alive[PlayerData_escaper[this_1]] then
			call Log_debug("PD Terminate")
			call cyc_RevivePoint_terminate(18, PlayerData_escaper[this_1])
		else
			set Escaper_left[PlayerData_escaper[this_1]] = true
		endif
		set PlayerData_escaper[this_1] = 0
	endif
	if PlayerData_prod[this_1] != 0 then
		call cyc_RevivePoint_terminate(18, PlayerData_prod[this_1])
	endif
	set i = 0
	loop
		exitwhen i > 3
		if PlayerData_tmods_get(this_1, i) != 0 then
			set TerrainModder_legit[PlayerData_tmods_get(this_1, i)] = true
			call cyc_RevivePoint_terminate(18, PlayerData_tmods_get(this_1, i))
		endif
		set i = i + 1
	endloop
	call dispatch_LinkedList_LinkedList_LinkedList_remove(PlayerData_allPlayers, this_1)
	if isBuilderPlayer(PlayerData_p[this_1]) then
		call dispatch_LinkedList_LinkedList_LinkedList_remove(PlayerData_builderPlayers, this_1)
	else
		call dispatch_LinkedList_LinkedList_LinkedList_remove(PlayerData_escaperPlayers, this_1)
	endif
	if ( not dispatch_LinkedList_LinkedList_LinkedList_isEmpty(PlayerData_builderPlayers)) and isBuilderPlayer(PlayerData_p[this_1]) then
		if PlayerData_builder[this_1] != 0 then
			call Log_debug("isEmpty Terminate")
			call cyc_RevivePoint_terminate(18, PlayerData_builder[this_1])
		endif
		set i_1 = 0
		loop
			exitwhen i_1 > 22
			if dispatch_RegionData_RegionData_RegionData_getPermission(RegionData_regions[i_1], PlayerData_p[this_1]) == 2 then
				set j = 8
				loop
					exitwhen j > 11
					call dispatch_RegionData_RegionData_RegionData_allow(RegionData_regions[i_1], Player_players[j])
					set Builder_regionCount[PlayerData_builder[PlayerData_pData[j]]] = Builder_regionCount[PlayerData_builder[PlayerData_pData[j]]] + 2
					set j = j + 1
				endloop
			endif
			set i_1 = i_1 + 1
		endloop
	endif
	set PlayerData_pData[PlayerData_id[this_1]] = 0
	call rebuildBoard()
	if PlayerData_revmod[this_1] != 0 then
		call dispatch_RevivePointModifier_destroyRevivePointModifier(PlayerData_revmod[this_1])
	endif
	if PlayerData_tagfx[this_1] != null then
		call effect_destr(PlayerData_tagfx[this_1])
	endif
	set PlayerData_pData[player_getId(PlayerData_p[this_1])] = 0
endfunction

function dealloc_PlayerData takes integer obj_1 returns nothing
	if PlayerData_typeId[obj_1] == 0 then
		call error("Double free: object of type PlayerData")
	else
		set PlayerData_nextFree[PlayerData_firstFree] = obj_1
		set PlayerData_firstFree = PlayerData_firstFree + 1
		set PlayerData_typeId[obj_1] = 0
	endif
endfunction

function destroyPlayerData takes integer this_1 returns nothing
	call PlayerData_onDestroy(this_1)
	call dealloc_PlayerData(this_1)
endfunction

function dispatch_PlayerData_destroyPlayerData takes integer this_1 returns nothing
	if PlayerData_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling PlayerData.PlayerData")
		else
			call error("Called PlayerData.PlayerData on invalid object.")
		endif
	endif
	call destroyPlayerData(this_1)
endfunction

function onLeave_onPlayerLeave_PlayerData takes integer this_1, player p returns nothing
	call dispatch_PlayerData_destroyPlayerData(player_getData(p))
endfunction

function onLeave_onPlayerLeave_nullTimer_Players takes integer this_1, player p returns nothing
	call printTimed(player_getNameColored_3918(p) + " has left the game", 15.)
endfunction

function dispatch_OnPlayerLeave_Players_OnPlayerLeave_onLeave takes integer this_1, player leaver returns nothing
	if OnPlayerLeave_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling OnPlayerLeave.onLeave")
		else
			call error("Called OnPlayerLeave.onLeave on invalid object.")
		endif
	endif
	if OnPlayerLeave_typeId[this_1] <= 1029 then
		call onLeave_onPlayerLeave_PlayerData(this_1, leaver)
	else
		call onLeave_onPlayerLeave_nullTimer_Players(this_1, leaver)
	endif
endfunction

function onEvent_add_nullTimer_Players takes integer this_1 returns nothing
	call dispatch_LinkedList_LinkedList_LinkedList_remove(Players_ALL_PLAYERS, playerToIndex(GetTriggerPlayer()))
	call dispatch_OnPlayerLeave_Players_OnPlayerLeave_onLeave(Players_onLeaveListener, GetTriggerPlayer())
endfunction

function cyc_onEvent_add_KeyUtils takes integer funcChoice, integer this_1 returns nothing
	local boolean keyStatus_up
	local boolean keyStatus_down
	local boolean keyStatus_left
	local boolean keyStatus_right
	local eventid id
	local integer listener_1
	local integer tempIndex
	local integer tempIndex_1
	local boolean tuple_temp
	local boolean tuple_temp_1
	local boolean tuple_temp_2
	local boolean tuple_temp_3
	local boolean tuple_temp_4
	local boolean tuple_temp_5
	local boolean tuple_temp_6
	local boolean tuple_temp_7
	if funcChoice == 0 then
		call cyc_onEvent_add_KeyUtils(7, 0)
	elseif funcChoice == 1 then
		call cyc_onEvent_add_KeyUtils(7, 0)
	elseif funcChoice == 2 then
		call cyc_onEvent_add_KeyUtils(7, 0)
	elseif funcChoice == 3 then
		call cyc_onEvent_add_KeyUtils(7, 0)
	elseif funcChoice == 4 then
		call cyc_onEvent_add_KeyUtils(7, 0)
	elseif funcChoice == 5 then
		call cyc_onEvent_add_KeyUtils(7, 0)
	elseif funcChoice == 6 then
		call cyc_onEvent_add_KeyUtils(7, 0)
	elseif funcChoice == 7 then
		set tempIndex = player_getId(GetTriggerPlayer())
		set tuple_temp = KeyUtils_keyStatuses_up[tempIndex]
		set tuple_temp_1 = KeyUtils_keyStatuses_down[tempIndex]
		set tuple_temp_2 = KeyUtils_keyStatuses_left[tempIndex]
		set tuple_temp_3 = KeyUtils_keyStatuses_right[tempIndex]
		set keyStatus_up = tuple_temp
		set keyStatus_down = tuple_temp_1
		set keyStatus_left = tuple_temp_2
		set keyStatus_right = tuple_temp_3
		set id = GetTriggerEventId()
		if id == EVENT_PLAYER_ARROW_DOWN_DOWN then
			set keyStatus_down = true
		elseif id == EVENT_PLAYER_ARROW_DOWN_UP then
			set keyStatus_down = false
		elseif id == EVENT_PLAYER_ARROW_UP_DOWN then
			set keyStatus_up = true
		elseif id == EVENT_PLAYER_ARROW_UP_UP then
			set keyStatus_up = false
		elseif id == EVENT_PLAYER_ARROW_LEFT_DOWN then
			set keyStatus_left = true
		elseif id == EVENT_PLAYER_ARROW_LEFT_UP then
			set keyStatus_left = false
		elseif id == EVENT_PLAYER_ARROW_RIGHT_DOWN then
			set keyStatus_right = true
		elseif id == EVENT_PLAYER_ARROW_RIGHT_UP then
			set keyStatus_right = false
		endif
		set tempIndex_1 = player_getId(GetTriggerPlayer())
		set tuple_temp_4 = keyStatus_up
		set tuple_temp_5 = keyStatus_down
		set tuple_temp_6 = keyStatus_left
		set tuple_temp_7 = keyStatus_right
		set KeyUtils_keyStatuses_up[tempIndex_1] = tuple_temp_4
		set KeyUtils_keyStatuses_down[tempIndex_1] = tuple_temp_5
		set KeyUtils_keyStatuses_left[tempIndex_1] = tuple_temp_6
		set KeyUtils_keyStatuses_right[tempIndex_1] = tuple_temp_7
		set listener_1 = KeyUtils_firstKeyListener
		loop
			exitwhen  not (listener_1 != 0)
			call cyc_onEvent_add_KeyUtils(9, listener_1)
			set listener_1 = EventListener_next[listener_1]
		endloop
	elseif funcChoice == 8 then
		call cyc_onEvent_add_KeyUtils(7, 0)
	elseif funcChoice == 9 then
		if EventListener_typeId[this_1] == 0 then
			if this_1 == 0 then
				call error("Nullpointer exception when calling EventListener.onEvent")
			else
				call error("Called EventListener.onEvent on invalid object.")
			endif
		endif
		if EventListener_typeId[this_1] <= 792 then
			if EventListener_typeId[this_1] <= 773 then
				if EventListener_typeId[this_1] <= 763 then
					if EventListener_typeId[this_1] <= 758 then
						if EventListener_typeId[this_1] <= 756 then
							if EventListener_typeId[this_1] <= 755 then
								if EventListener_typeId[this_1] <= 754 then
									call onEvent_addKeyListener_MGSpacey_MGSpacey(this_1)
								else
									call onEvent_add_BasicSpells(this_1)
								endif
							else
								call onEvent_add_Bomber_Bomber(this_1)
							endif
						elseif EventListener_typeId[this_1] <= 757 then
							call onEvent_add_Bomber_Bomber_3805(this_1)
						else
							call onEvent_add_Bomber_Bomber_3806(this_1)
						endif
					elseif EventListener_typeId[this_1] <= 761 then
						if EventListener_typeId[this_1] <= 760 then
							if EventListener_typeId[this_1] <= 759 then
								call onEvent_add_Bomber_Bomber_3807(this_1)
							else
								call onEvent_add_Bomber_Bomber_3808(this_1)
							endif
						else
							call onEvent_add_Bombertower_Bombertower(this_1)
						endif
					elseif EventListener_typeId[this_1] <= 762 then
						call onEvent_add_Bombertower_Bombertower_3810(this_1)
					else
						call onEvent_add_Bombertower_Bombertower_3811(this_1)
					endif
				elseif EventListener_typeId[this_1] <= 768 then
					if EventListener_typeId[this_1] <= 766 then
						if EventListener_typeId[this_1] <= 765 then
							if EventListener_typeId[this_1] <= 764 then
								call onEvent_add_BossDamager_BossDamager(this_1)
							else
								call onEvent_add_Boss_Boss(this_1)
							endif
						else
							call onEvent_add_Buff(this_1)
						endif
					elseif EventListener_typeId[this_1] <= 767 then
						call onEvent_add_Buff_3815(this_1)
					else
						call onEvent_add_Builder_Builder(this_1)
					endif
				elseif EventListener_typeId[this_1] <= 771 then
					if EventListener_typeId[this_1] <= 770 then
						if EventListener_typeId[this_1] <= 769 then
							call onEvent_add_Builder_Builder_3817(this_1)
						else
							call onEvent_add_Builder_Builder_3818(this_1)
						endif
					else
						call onEvent_add_Builder_Builder_3819(this_1)
					endif
				elseif EventListener_typeId[this_1] <= 772 then
					call onEvent_add_Commands(this_1)
				else
					call onEvent_add_CongaLineHead_CongaLineHead(this_1)
				endif
			elseif EventListener_typeId[this_1] <= 783 then
				if EventListener_typeId[this_1] <= 778 then
					if EventListener_typeId[this_1] <= 776 then
						if EventListener_typeId[this_1] <= 775 then
							if EventListener_typeId[this_1] <= 774 then
								call onEvent_add_DamageEvent(this_1)
							else
								call onEvent_add_DamageEvent_3823(this_1)
							endif
						else
							call onEvent_add_DebugInfo(this_1)
						endif
					elseif EventListener_typeId[this_1] <= 777 then
						call onEvent_add_Decoration_Decoration_3826(this_1)
					else
						call onEvent_add_Decoration_Decoration(this_1)
					endif
				elseif EventListener_typeId[this_1] <= 781 then
					if EventListener_typeId[this_1] <= 780 then
						if EventListener_typeId[this_1] <= 779 then
							call onEvent_add_Door_Door(this_1)
						else
							call onEvent_add_Entity(this_1)
						endif
					else
						call onEvent_add_Entity_3829(this_1)
					endif
				elseif EventListener_typeId[this_1] <= 782 then
					call onEvent_add_Entity_3830(this_1)
				else
					call onEvent_add_Escaper_Escaper(this_1)
				endif
			elseif EventListener_typeId[this_1] <= 788 then
				if EventListener_typeId[this_1] <= 786 then
					if EventListener_typeId[this_1] <= 785 then
						if EventListener_typeId[this_1] <= 784 then
							call onEvent_add_Escaper_Escaper_3832(this_1)
						else
							call onEvent_add_Escaper_Escaper_3833(this_1)
						endif
					else
						call onEvent_add_Escaper_Escaper_3834(this_1)
					endif
				elseif EventListener_typeId[this_1] <= 787 then
					call onEvent_add_Escaper_Escaper_3835(this_1)
				else
					call onEvent_add_Executer_Executer(this_1)
				endif
			elseif EventListener_typeId[this_1] <= 790 then
				if EventListener_typeId[this_1] <= 789 then
					call onEvent_add_Faceless_Faceless(this_1)
				else
					call onEvent_add_Fountain_Fountain(this_1)
				endif
			elseif EventListener_typeId[this_1] <= 791 then
				call onEvent_add_Fountain_Fountain_3839(this_1)
			else
				call onEvent_add_Invisible(this_1)
			endif
		elseif EventListener_typeId[this_1] <= 812 then
			if EventListener_typeId[this_1] <= 802 then
				if EventListener_typeId[this_1] <= 797 then
					if EventListener_typeId[this_1] <= 795 then
						if EventListener_typeId[this_1] <= 794 then
							if EventListener_typeId[this_1] <= 793 then
								call cyc_onEvent_add_KeyUtils(8, this_1)
							else
								call cyc_onEvent_add_KeyUtils(6, this_1)
							endif
						else
							call cyc_onEvent_add_KeyUtils(5, this_1)
						endif
					elseif EventListener_typeId[this_1] <= 796 then
						call cyc_onEvent_add_KeyUtils(4, this_1)
					else
						call cyc_onEvent_add_KeyUtils(3, this_1)
					endif
				elseif EventListener_typeId[this_1] <= 800 then
					if EventListener_typeId[this_1] <= 799 then
						if EventListener_typeId[this_1] <= 798 then
							call cyc_onEvent_add_KeyUtils(2, this_1)
						else
							call cyc_onEvent_add_KeyUtils(1, this_1)
						endif
					else
						call cyc_onEvent_add_KeyUtils(0, this_1)
					endif
				elseif EventListener_typeId[this_1] <= 801 then
					call onEvent_add_Key_Key(this_1)
				else
					call onEvent_add_Knockbacker_Knockbacker(this_1)
				endif
			elseif EventListener_typeId[this_1] <= 807 then
				if EventListener_typeId[this_1] <= 805 then
					if EventListener_typeId[this_1] <= 804 then
						if EventListener_typeId[this_1] <= 803 then
							call onEvent_add_Knockbacker_Knockbacker_3843(this_1)
						else
							call onEvent_add_MGSpacey_MGSpacey(this_1)
						endif
					else
						call onEvent_add_MoveSpeed(this_1)
					endif
				elseif EventListener_typeId[this_1] <= 806 then
					call onEvent_add_Pointer(this_1)
				else
					call onEvent_add_Pointer_Pointer(this_1)
				endif
			elseif EventListener_typeId[this_1] <= 810 then
				if EventListener_typeId[this_1] <= 809 then
					if EventListener_typeId[this_1] <= 808 then
						call onEvent_add_Powernode_Powernode(this_1)
					else
						call onEvent_add_Remove(this_1)
					endif
				else
					call onEvent_add_Selector_PickSystem(this_1)
				endif
			elseif EventListener_typeId[this_1] <= 811 then
				call onEvent_add_SetupBox_SetupBox(this_1)
			else
				call onEvent_add_SetupObject_SetupObject(this_1)
			endif
		elseif EventListener_typeId[this_1] <= 822 then
			if EventListener_typeId[this_1] <= 817 then
				if EventListener_typeId[this_1] <= 815 then
					if EventListener_typeId[this_1] <= 814 then
						if EventListener_typeId[this_1] <= 813 then
							call onEvent_add_SetupObject_SetupObject_3853(this_1)
						else
							call onEvent_add_SetupObject_SetupObject_3854(this_1)
						endif
					else
						call onEvent_add_SpellTarget_BossSpellTarget(this_1)
					endif
				elseif EventListener_typeId[this_1] <= 816 then
					call onEvent_add_Spinner_Spinner(this_1)
				else
					call onEvent_add_Spinner_Spinner_3857(this_1)
				endif
			elseif EventListener_typeId[this_1] <= 820 then
				if EventListener_typeId[this_1] <= 819 then
					if EventListener_typeId[this_1] <= 818 then
						call onEvent_add_StaticBaseObject_BaseObject(this_1)
					else
						call onEvent_add_StaticBaseObject_BaseObject_3859(this_1)
					endif
				else
					call onEvent_add_StaticBaseObject_BaseObject_3860(this_1)
				endif
			elseif EventListener_typeId[this_1] <= 821 then
				call onEvent_add_StrongEscaper_EscaperClasses(this_1)
			else
				call onEvent_add_TerrainChanger_TerrainChanger(this_1)
			endif
		elseif EventListener_typeId[this_1] <= 827 then
			if EventListener_typeId[this_1] <= 825 then
				if EventListener_typeId[this_1] <= 824 then
					if EventListener_typeId[this_1] <= 823 then
						call onEvent_add_TerrainModder_TerrainModder(this_1)
					else
						call onEvent_add_TerrainModder_TerrainModder_3864(this_1)
					endif
				else
					call onEvent_add_TerrainModder_TerrainModder_3865(this_1)
				endif
			elseif EventListener_typeId[this_1] <= 826 then
				call onEvent_add_Texter(this_1)
			else
				call onEvent_add_Tracks_Tracks(this_1)
			endif
		elseif EventListener_typeId[this_1] <= 829 then
			if EventListener_typeId[this_1] <= 828 then
				call onEvent_add_Trap_Trap(this_1)
			else
				call onEvent_add_UnitProducer_UnitProducer(this_1)
			endif
		elseif EventListener_typeId[this_1] <= 830 then
			call onEvent_add_Vortex_Vortex(this_1)
		else
			call onEvent_add_nullTimer_Players(this_1)
		endif
	endif
endfunction

function EventListener_generalEventCallback takes nothing returns nothing
	local unit trigUnit = GetTriggerUnit()
	local integer id = eventid_toIntId(GetTriggerEventId())
	local integer listener_1
	local integer nextListener
	local integer listener_2
	local integer nextListener_1
	if trigUnit != null and fireEvents(trigUnit) and unit_getIndex(trigUnit) > 0 then
		if EventListener_unitListenersFirsts[unit_getIndex(trigUnit)] != 0 then
			set listener_1 = EventListener_unitListenersFirsts[unit_getIndex(trigUnit)]
			loop
				exitwhen  not (listener_1 != 0)
				set nextListener = EventListener_next[listener_1]
				if EventListener_eventId[listener_1] == id then
					call cyc_onEvent_add_KeyUtils(9, listener_1)
				endif
				set listener_1 = nextListener
			endloop
		endif
	endif
	if EventListener_generalListenersFirsts[id] != 0 then
		set listener_2 = EventListener_generalListenersFirsts[id]
		loop
			exitwhen  not (listener_2 != 0)
			set nextListener_1 = EventListener_next[listener_2]
			call cyc_onEvent_add_KeyUtils(9, listener_2)
			set listener_2 = nextListener_1
		endloop
	endif
endfunction

function Fountain_cure_1 takes nothing returns nothing
	local integer obj_1 = unit_getEntity(trigger_getSource(GetTriggeringTrigger()))
	local integer e_1 = unit_getEntity(GetTriggerUnit())
	local integer instanceOfTemp = Serializable_typeId[e_1]
	local integer es
	if instanceOfTemp >= 1163 and instanceOfTemp <= 1168 and Fountain_cure[obj_1] then
		set es = e_1
		if Escaper_poisoned[es] and ( not Entity_flying[es]) then
			call DestroyEffect(AddSpecialEffect(Fountain_EFFECT_ID, Entity_pos_x[es], Entity_pos_y[es]))
			call dispatch_Escaper_Escaper_Escaper_setPoison(es, false)
		endif
	endif
endfunction

function vec3_distanceTo2d takes real this_x, real this_y, real this_z, real v_x, real v_y, real v_z returns real
	return SquareRoot(real_squared(v_x - this_x) + real_squared(v_y - this_y))
endfunction

function Entity_setTarget takes integer this_1, real tpos_x_1, real tpos_y_1, real tpos_z, real speed returns nothing
	local real t = vec3_distanceTo2d(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1], tpos_x_1, tpos_y_1, tpos_z) / speed
	local real tuple_temp = vec3_angleTo2d_4263(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1], tpos_x_1, tpos_y_1, tpos_z)
	local real tangle_radians = tuple_temp
	local real e_1 = 0.
	local real startZVelocity
	if Frentity_DYNAMIC_Z then
		set e_1 = vec3_getHeightMap(tpos_x_1, tpos_y_1, tpos_z)
	endif
	if t < 1. then
		set t = 1. / speed
	endif
	set startZVelocity = ( - (Entity_gravity[this_1] * t)) / 2. - Entity_pos_z[this_1] / t + e_1 / t
	call dispatch_Entity_Entity_Entity_setVel(this_1, vec2_withZ(angle_toVec(tangle_radians, speed), angle_toVec_return_y, startZVelocity), vec2_withZ_return_y, vec2_withZ_return_z)
endfunction

function Escaper_setTarget takes integer this_1, real tpos_x_1, real tpos_y_1, real tpos_z, real speed returns nothing
	call dispatch_Escaper_Escaper_Escaper_stop(this_1)
	call Entity_setTarget(this_1, tpos_x_1, tpos_y_1, tpos_z, speed)
endfunction

function dispatch_Entity_Entity_Entity_setTarget takes integer this_1, real tpos_x_1, real tpos_y_1, real tpos_z, real speed returns nothing
	if Serializable_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling Entity.setTarget")
		else
			call error("Called Entity.setTarget on invalid object.")
		endif
	endif
	if Serializable_typeId[this_1] <= 1168 then
		if Serializable_typeId[this_1] <= 1162 then
			call Entity_setTarget(this_1, tpos_x_1, tpos_y_1, tpos_z, speed)
		else
			call Escaper_setTarget(this_1, tpos_x_1, tpos_y_1, tpos_z, speed)
		endif
	else
		call Entity_setTarget(this_1, tpos_x_1, tpos_y_1, tpos_z, speed)
	endif
endfunction

function vec3_add takes real this_x, real this_y, real this_z, real x, real y, real z returns real
	set vec3_add_return_x = this_x + x
	set vec3_add_return_y = this_y + y
	set vec3_add_return_z = this_z + z
	return vec3_add_return_x
endfunction

function Jumper_executeJump takes integer this_1, integer edata returns nothing
	local unit receiver
	local integer temp
	local integer instanceOfTemp
	call unit_abortOrder(UnitEntity_actor[edata])
	set instanceOfTemp = Serializable_typeId[edata]
	if instanceOfTemp >= 1172 and instanceOfTemp <= 1192 then
		set receiver = SetupObject_setup[edata]
		call unit_abortOrder(receiver)
	endif
	call dispatch_UnitEntity_Entity_UnitEntity_getPos(edata)
	set temp = Jumper_mode[this_1]
	if temp == 0 then
		set Entity_pos_z[edata] = 1.
		call dispatch_Entity_Entity_Entity_setTarget(edata, dispatch_StaticBaseObject_BaseObject_StaticBaseObject_getRallyPoint(this_1), dispatch_StaticBaseObject_BaseObject_StaticBaseObject_getRallyPoint_return_y, dispatch_StaticBaseObject_BaseObject_StaticBaseObject_getRallyPoint_return_z, dispatch_ConfigValue_ConfigValue_ConfigValue_get(Jumper_jumpForce[this_1]))
	else
		call dispatch_Entity_Entity_Entity_addVel(edata, 0., 0., dispatch_ConfigValue_ConfigValue_ConfigValue_get(Jumper_jumpForce[this_1]))
	endif
	call dispatch_UnitEntity_Entity_UnitEntity_setXY(edata, vec3_add(Entity_pos_x[edata], Entity_pos_y[edata], Entity_pos_z[edata], 0., 0., 1.), vec3_add_return_y, vec3_add_return_z)
	call flashEffect(Jumper_EFFECT_STRING, Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1])
endfunction

function dispatch_Jumper_Jumper_Jumper_executeJump takes integer this_1, integer edata returns nothing
	if Serializable_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling Jumper.executeJump")
		else
			call error("Called Jumper.executeJump on invalid object.")
		endif
	endif
	call Jumper_executeJump(this_1, edata)
endfunction

function Jumper_inRange takes integer this_1 returns nothing
	local integer data_1 = unit_getEntity(GetTriggerUnit())
	local integer temp
	local integer instanceOfTemp
	local integer instanceOfTemp_1
	local integer instanceOfTemp_2
	local integer instanceOfTemp_3
	local boolean andLeft
	if  not dispatch_RegionData_RegionData_RegionData_canBuild(getRegionData(dispatch_StaticBaseObject_BaseObject_StaticBaseObject_getRallyPoint(this_1), dispatch_StaticBaseObject_BaseObject_StaticBaseObject_getRallyPoint_return_y, dispatch_StaticBaseObject_BaseObject_StaticBaseObject_getRallyPoint_return_z), Entity_owner[this_1]) then
		return
	endif
	set temp = Jumper_permission[this_1]
	if temp == 0 then
		set instanceOfTemp = Serializable_typeId[data_1]
		if instanceOfTemp >= 1163 and instanceOfTemp <= 1168 then
			call dispatch_Jumper_Jumper_Jumper_executeJump(this_1, data_1)
		endif
	elseif temp == 1 then
		set instanceOfTemp_1 = Serializable_typeId[data_1]
		if instanceOfTemp_1 >= 1175 and instanceOfTemp_1 <= 1187 then
			call dispatch_Jumper_Jumper_Jumper_executeJump(this_1, data_1)
		endif
	else
		set instanceOfTemp_2 = Serializable_typeId[data_1]
		if instanceOfTemp_2 >= 1163 and instanceOfTemp_2 <= 1168 then
			set andLeft = true
		else
			set instanceOfTemp_3 = Serializable_typeId[data_1]
			set andLeft = instanceOfTemp_3 >= 1175 and instanceOfTemp_3 <= 1187
		endif
		if andLeft then
			call dispatch_Jumper_Jumper_Jumper_executeJump(this_1, data_1)
		endif
	endif
endfunction

function dispatch_Jumper_Jumper_Jumper_inRange takes integer this_1 returns nothing
	if Serializable_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling Jumper.inRange")
		else
			call error("Called Jumper.inRange on invalid object.")
		endif
	endif
	call Jumper_inRange(this_1)
endfunction

function Jumper_onInRange takes nothing returns nothing
	local integer jdata = unit_getEntity(trigger_getSource(GetTriggeringTrigger()))
	call dispatch_Jumper_Jumper_Jumper_inRange(jdata)
endfunction

function LobbyTeleporter_votes_get takes integer index1, integer index2 returns boolean
	local boolean returnVal
	if index2 < 0 or index2 >= 12 then
		call error("Index out of Bounds")
	elseif index2 <= 5 then
		if index2 <= 2 then
			if index2 <= 1 then
				if index2 <= 0 then
					set returnVal = LobbyTeleporter_votes_0[index1]
				else
					set returnVal = LobbyTeleporter_votes_1[index1]
				endif
			else
				set returnVal = LobbyTeleporter_votes_2[index1]
			endif
		elseif index2 <= 4 then
			if index2 <= 3 then
				set returnVal = LobbyTeleporter_votes_3[index1]
			else
				set returnVal = LobbyTeleporter_votes_4[index1]
			endif
		else
			set returnVal = LobbyTeleporter_votes_5[index1]
		endif
	elseif index2 <= 8 then
		if index2 <= 7 then
			if index2 <= 6 then
				set returnVal = LobbyTeleporter_votes_6[index1]
			else
				set returnVal = LobbyTeleporter_votes_7[index1]
			endif
		else
			set returnVal = LobbyTeleporter_votes_8[index1]
		endif
	elseif index2 <= 10 then
		if index2 <= 9 then
			set returnVal = LobbyTeleporter_votes_9[index1]
		else
			set returnVal = LobbyTeleporter_votes_10[index1]
		endif
	else
		set returnVal = LobbyTeleporter_votes_11[index1]
	endif
	return returnVal
endfunction

function LobbyTeleporter_teleport takes integer this_1, integer e_1 returns nothing
	local real tuple_temp = dispatch_StaticBaseObject_BaseObject_StaticBaseObject_getRallyPoint(this_1)
	local real tuple_temp_1 = dispatch_StaticBaseObject_BaseObject_StaticBaseObject_getRallyPoint_return_y
	local real tuple_temp_2 = dispatch_StaticBaseObject_BaseObject_StaticBaseObject_getRallyPoint_return_z
	local real rallyPos_x_1 = tuple_temp
	local real rallyPos_y_1 = tuple_temp_1
	local real rallyPos_z_1 = tuple_temp_2
	if StaticBaseObject_noRally[this_1] == null then
		set LobbyTeleporter_ready[this_1] = false
		call dispatch_UnitEntity_Entity_UnitEntity_setPos(e_1, rallyPos_x_1, rallyPos_y_1, rallyPos_z_1)
		call effect_destr(addEffect_1565(LobbyTeleporter_EFFECT_STRING, Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1]))
		call effect_destr(addEffect_1565(LobbyTeleporter_EFFECT_STRING, rallyPos_x_1, rallyPos_y_1, rallyPos_z_1))
		if  not Escaper_camlock[e_1] then
			call PanCameraToTimedForPlayer(Entity_owner[e_1], rallyPos_x_1, rallyPos_y_1, 0.03)
		endif
	endif
endfunction

function dispatch_LobbyTeleporter_LobbyTeleporter_LobbyTeleporter_teleport takes integer this_1, integer e_1 returns nothing
	if Serializable_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling LobbyTeleporter.teleport")
		else
			call error("Called LobbyTeleporter.teleport on invalid object.")
		endif
	endif
	call LobbyTeleporter_teleport(this_1, e_1)
endfunction

function StaticBaseObject_addQuestionmark takes integer this_1 returns nothing
	if StaticBaseObject_noRally[this_1] == null then
		set StaticBaseObject_noRally[this_1] = addEffect_1565(Objects_questionMark1, Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1])
	endif
endfunction

function dispatch_StaticBaseObject_BaseObject_StaticBaseObject_addQuestionmark takes integer this_1 returns nothing
	if Serializable_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling StaticBaseObject.addQuestionmark")
		else
			call error("Called StaticBaseObject.addQuestionmark on invalid object.")
		endif
	endif
	call StaticBaseObject_addQuestionmark(this_1)
endfunction

function LobbyTeleporter_check takes integer this_1, integer e_1 returns nothing
	local integer votesNeeded = real_round(dispatch_LinkedList_LinkedList_LinkedList_size(PlayerData_escaperPlayers) * 0.45)
	local integer ep
	local integer from
	local integer i
	call LobbyTeleporter_votes_set(this_1, player_getId(Entity_owner[e_1]),  not LobbyTeleporter_votes_get(this_1, player_getId(Entity_owner[e_1])))
	if LobbyTeleporter_votes_get(this_1, player_getId(Entity_owner[e_1])) then
		set LobbyTeleporter_currentPlus[this_1] = LobbyTeleporter_currentPlus[this_1] + 1
		if LobbyTeleporter_currentPlus[this_1] >= votesNeeded then
			if LobbyTeleporter_startmaze[this_1] or (isEscaperPlayer(Entity_owner[e_1]) and Entity_owner[this_1] == GameConstants_STAFF_PLAYER and ( not unit_hasAbility(UnitEntity_actor[this_1], BuilderConstants_REMOVE_OBJECT_ID))) then
				call dispatch_LobbyTeleporter_LobbyTeleporter_LobbyTeleporter_teleport(this_1, e_1)
				call cyc_RevivePoint_terminate(18, this_1)
				return
			else
				set from = dispatch_LinkedList_LinkedList_LinkedList_staticItr(PlayerData_escaperPlayers)
				loop
					exitwhen  not LLIterator_hasNext(from)
					set ep = LLIterator_next(from)
					if PlayerData_escaper[ep] != 0 and Escaper_alive[PlayerData_escaper[ep]] then
						call dispatch_LobbyTeleporter_LobbyTeleporter_LobbyTeleporter_teleport(this_1, PlayerData_escaper[ep])
					endif
				endloop
				call dispatch_StaticBaseObject_BaseObject_StaticBaseObject_setRallyPoint(this_1, vec3_toVec2(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1]), vec3_toVec2_return_y)
				call dispatch_StaticBaseObject_BaseObject_StaticBaseObject_addQuestionmark(this_1)
				set i = 0
				loop
					exitwhen i > 11
					call LobbyTeleporter_votes_set(this_1, i, false)
					set i = i + 1
				endloop
				call texttag_center(FText_tt[LobbyTeleporter_ftext[this_1]], dispatch_UnitEntity_Entity_UnitEntity_getPos(this_1), dispatch_UnitEntity_Entity_UnitEntity_getPos_return_y, dispatch_UnitEntity_Entity_UnitEntity_getPos_return_z, player_getNameColored_3918(Entity_owner[this_1]) + " |cffffcc00building", 6.)
				set LobbyTeleporter_ready[this_1] = false
				return
			endif
		endif
	else
		set LobbyTeleporter_currentPlus[this_1] = LobbyTeleporter_currentPlus[this_1] - 1
	endif
	call flashEffect(UI_confirmation, Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1])
	call texttag_center(FText_tt[LobbyTeleporter_ftext[this_1]], dispatch_UnitEntity_Entity_UnitEntity_getPos(this_1), dispatch_UnitEntity_Entity_UnitEntity_getPos_return_y, dispatch_UnitEntity_Entity_UnitEntity_getPos_return_z, "|cff11cc00Ready|r - [" + int_toString(LobbyTeleporter_currentPlus[this_1]) + "/|cffffcc00" + int_toString(votesNeeded) + "|r]", 9.)
endfunction

function dispatch_LobbyTeleporter_LobbyTeleporter_LobbyTeleporter_check takes integer this_1, integer e_1 returns nothing
	if Serializable_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling LobbyTeleporter.check")
		else
			call error("Called LobbyTeleporter.check on invalid object.")
		endif
	endif
	call LobbyTeleporter_check(this_1, e_1)
endfunction

function LobbyTeleporter_checkVote takes nothing returns nothing
	local unit source = trigger_getSource(GetTriggeringTrigger())
	local unit u_1 = GetTriggerUnit()
	local integer e_1 = unit_getEntity(u_1)
	local integer obj_1 = unit_getEntity(source)
	local integer instanceOfTemp
	local boolean andLeft
	if LobbyTeleporter_ready[obj_1] then
		set instanceOfTemp = Serializable_typeId[e_1]
		set andLeft = instanceOfTemp >= 1163 and instanceOfTemp <= 1168
	else
		set andLeft = false
	endif
	if andLeft and isEscaperPlayer(Entity_owner[e_1]) then
		call dispatch_LobbyTeleporter_LobbyTeleporter_LobbyTeleporter_check(obj_1, e_1)
	endif
endfunction

function MinigameTeleporter_votes_get takes integer index1, integer index2 returns boolean
	local boolean returnVal
	if index2 < 0 or index2 >= 12 then
		call error("Index out of Bounds")
	elseif index2 <= 5 then
		if index2 <= 2 then
			if index2 <= 1 then
				if index2 <= 0 then
					set returnVal = MinigameTeleporter_votes_0[index1]
				else
					set returnVal = MinigameTeleporter_votes_1[index1]
				endif
			else
				set returnVal = MinigameTeleporter_votes_2[index1]
			endif
		elseif index2 <= 4 then
			if index2 <= 3 then
				set returnVal = MinigameTeleporter_votes_3[index1]
			else
				set returnVal = MinigameTeleporter_votes_4[index1]
			endif
		else
			set returnVal = MinigameTeleporter_votes_5[index1]
		endif
	elseif index2 <= 8 then
		if index2 <= 7 then
			if index2 <= 6 then
				set returnVal = MinigameTeleporter_votes_6[index1]
			else
				set returnVal = MinigameTeleporter_votes_7[index1]
			endif
		else
			set returnVal = MinigameTeleporter_votes_8[index1]
		endif
	elseif index2 <= 10 then
		if index2 <= 9 then
			set returnVal = MinigameTeleporter_votes_9[index1]
		else
			set returnVal = MinigameTeleporter_votes_10[index1]
		endif
	else
		set returnVal = MinigameTeleporter_votes_11[index1]
	endif
	return returnVal
endfunction

function alloc_ReviveListener_Minigame_Minigame takes nothing returns integer
	local integer this_1
	if ReviveListener_firstFree == 0 then
		if ReviveListener_maxIndex < JASS_MAX_ARRAY_SIZE then
			set ReviveListener_maxIndex = ReviveListener_maxIndex + 1
			set this_1 = ReviveListener_maxIndex
			set ReviveListener_typeId[this_1] = 1114
		else
			call error("Out of memory: Could not create ReviveListener_Minigame_Minigame.")
			set this_1 = 0
		endif
	else
		set ReviveListener_firstFree = ReviveListener_firstFree - 1
		set this_1 = ReviveListener_nextFree[ReviveListener_firstFree]
		set ReviveListener_typeId[this_1] = 1114
	endif
	return this_1
endfunction

function MGAgar_getCamBounds takes integer this_1 returns rect
	return gg_rct_agargamebounds
endfunction

function MGRandKill_getCamBounds takes integer this_1 returns rect
	return gg_rct_coingamebounds
endfunction

function MGSlide_getCamBounds takes integer this_1 returns rect
	return gg_rct_slidegamebounds
endfunction

function MGSpacey_getCamBounds takes integer this_1 returns rect
	return gg_rct_spaceygamebounds
endfunction

function MGWarlock_getCamBounds takes integer this_1 returns rect
	return gg_rct_warlockgamebounds
endfunction

function dispatch_Minigame_Minigame_Minigame_getCamBounds takes integer this_1 returns rect
	local rect Minigame_Minigame_getCamBounds_result
	if Minigame_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling Minigame.getCamBounds")
		else
			call error("Called Minigame.getCamBounds on invalid object.")
		endif
	endif
	if Minigame_typeId[this_1] <= 1014 then
		if Minigame_typeId[this_1] <= 1013 then
			if Minigame_typeId[this_1] <= 1012 then
				set Minigame_Minigame_getCamBounds_result = MGAgar_getCamBounds(this_1)
			else
				set Minigame_Minigame_getCamBounds_result = MGRandKill_getCamBounds(this_1)
			endif
		else
			set Minigame_Minigame_getCamBounds_result = MGSlide_getCamBounds(this_1)
		endif
	elseif Minigame_typeId[this_1] <= 1015 then
		set Minigame_Minigame_getCamBounds_result = MGSpacey_getCamBounds(this_1)
	else
		set Minigame_Minigame_getCamBounds_result = MGWarlock_getCamBounds(this_1)
	endif
	return Minigame_Minigame_getCamBounds_result
endfunction

function MGAgar_getName takes integer this_1 returns string
	return "|cff567eecAgario\n\n|r >> |cff8cbfddBe the last one standing!"
endfunction

function MGRandKill_getName takes integer this_1 returns string
	return "|cffccaaddRandom Rumble"
endfunction

function MGSlide_getName takes integer this_1 returns string
	return "|cff567eecSlide Fun\n\n|r >> |cff8cbfddGet to the other side in 12 seconds!"
endfunction

function MGSpacey_getName takes integer this_1 returns string
	return "|cff3322e2Spacey Adventure"
endfunction

function MGWarlock_getName takes integer this_1 returns string
	return "|cff3322e2Spacey Adventure"
endfunction

function dispatch_Minigame_Minigame_Minigame_getName takes integer this_1 returns string
	local string Minigame_Minigame_getName_result
	if Minigame_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling Minigame.getName")
		else
			call error("Called Minigame.getName on invalid object.")
		endif
	endif
	if Minigame_typeId[this_1] <= 1014 then
		if Minigame_typeId[this_1] <= 1013 then
			if Minigame_typeId[this_1] <= 1012 then
				set Minigame_Minigame_getName_result = MGAgar_getName(this_1)
			else
				set Minigame_Minigame_getName_result = MGRandKill_getName(this_1)
			endif
		else
			set Minigame_Minigame_getName_result = MGSlide_getName(this_1)
		endif
	elseif Minigame_typeId[this_1] <= 1015 then
		set Minigame_Minigame_getName_result = MGSpacey_getName(this_1)
	else
		set Minigame_Minigame_getName_result = MGWarlock_getName(this_1)
	endif
	return Minigame_Minigame_getName_result
endfunction

function dispatch_MGAgar_MGAgar_MGAgar_getCamBounds takes integer this_1 returns rect
	local rect MGAgar_MGAgar_getCamBounds_result
	if Minigame_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling MGAgar.getCamBounds")
		else
			call error("Called MGAgar.getCamBounds on invalid object.")
		endif
	endif
	set MGAgar_MGAgar_getCamBounds_result = MGAgar_getCamBounds(this_1)
	return MGAgar_MGAgar_getCamBounds_result
endfunction

function rect_getCenterX takes rect this_1 returns real
	return GetRectCenterX(this_1)
endfunction

function rect_getCenterY takes rect this_1 returns real
	return GetRectCenterY(this_1)
endfunction

function rect_getCenter takes rect this_1 returns real
	set rect_getCenter_return_x = rect_getCenterX(this_1)
	set rect_getCenter_return_y = rect_getCenterY(this_1)
	return rect_getCenter_return_x
endfunction

function MGAgar_getStartPosition takes integer this_1 returns real
	set MGAgar_getStartPosition_return_x = rect_getCenter(dispatch_MGAgar_MGAgar_MGAgar_getCamBounds(this_1))
	set MGAgar_getStartPosition_return_y = rect_getCenter_return_y
	return MGAgar_getStartPosition_return_x
endfunction

function MGRandKill_getStartPosition takes integer this_1 returns real
	set MGRandKill_getStartPosition_return_x = rect_getCenter(dispatch_MGRandKill_MGRandKill_MGRandKill_getGameRect(this_1))
	set MGRandKill_getStartPosition_return_y = rect_getCenter_return_y
	return MGRandKill_getStartPosition_return_x
endfunction

function MGSlide_getStartPosition takes integer this_1 returns real
	set MGSlide_getStartPosition_return_x = MGSlide_LEFT_SPOT_x
	set MGSlide_getStartPosition_return_y = MGSlide_LEFT_SPOT_y
	return MGSlide_getStartPosition_return_x
endfunction

function MGSpacey_getGameRect takes integer this_1 returns rect
	return gg_rct_spaceygamearea
endfunction

function dispatch_MGSpacey_MGSpacey_MGSpacey_getGameRect takes integer this_1 returns rect
	local rect MGSpacey_MGSpacey_getGameRect_result
	if Minigame_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling MGSpacey.getGameRect")
		else
			call error("Called MGSpacey.getGameRect on invalid object.")
		endif
	endif
	set MGSpacey_MGSpacey_getGameRect_result = MGSpacey_getGameRect(this_1)
	return MGSpacey_MGSpacey_getGameRect_result
endfunction

function MGSpacey_getStartPosition takes integer this_1 returns real
	set MGSpacey_getStartPosition_return_x = rect_getCenter(dispatch_MGSpacey_MGSpacey_MGSpacey_getGameRect(this_1))
	set MGSpacey_getStartPosition_return_y = rect_getCenter_return_y
	return MGSpacey_getStartPosition_return_x
endfunction

function MGWarlock_getGameRect takes integer this_1 returns rect
	return gg_rct_warlockgamearea
endfunction

function dispatch_MGWarlock_MGWarlock_MGWarlock_getGameRect takes integer this_1 returns rect
	local rect MGWarlock_MGWarlock_getGameRect_result
	if Minigame_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling MGWarlock.getGameRect")
		else
			call error("Called MGWarlock.getGameRect on invalid object.")
		endif
	endif
	set MGWarlock_MGWarlock_getGameRect_result = MGWarlock_getGameRect(this_1)
	return MGWarlock_MGWarlock_getGameRect_result
endfunction

function MGWarlock_getStartPosition takes integer this_1 returns real
	set MGWarlock_getStartPosition_return_x = rect_getCenter(dispatch_MGWarlock_MGWarlock_MGWarlock_getGameRect(this_1))
	set MGWarlock_getStartPosition_return_y = rect_getCenter_return_y
	return MGWarlock_getStartPosition_return_x
endfunction

function dispatch_Minigame_Minigame_Minigame_getStartPosition takes integer this_1 returns real
	local real Minigame_Minigame_getStartPosition_result_x
	local real Minigame_Minigame_getStartPosition_result_y
	local real tuple_temp
	local real tuple_temp_1
	local real tuple_temp_2
	local real tuple_temp_3
	local real tuple_temp_4
	local real tuple_temp_5
	local real tuple_temp_6
	local real tuple_temp_7
	local real tuple_temp_8
	local real tuple_temp_9
	if Minigame_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling Minigame.getStartPosition")
		else
			call error("Called Minigame.getStartPosition on invalid object.")
		endif
	endif
	if Minigame_typeId[this_1] <= 1014 then
		if Minigame_typeId[this_1] <= 1013 then
			if Minigame_typeId[this_1] <= 1012 then
				set tuple_temp = MGAgar_getStartPosition(this_1)
				set tuple_temp_1 = MGAgar_getStartPosition_return_y
				set Minigame_Minigame_getStartPosition_result_x = tuple_temp
				set Minigame_Minigame_getStartPosition_result_y = tuple_temp_1
			else
				set tuple_temp_2 = MGRandKill_getStartPosition(this_1)
				set tuple_temp_3 = MGRandKill_getStartPosition_return_y
				set Minigame_Minigame_getStartPosition_result_x = tuple_temp_2
				set Minigame_Minigame_getStartPosition_result_y = tuple_temp_3
			endif
		else
			set tuple_temp_4 = MGSlide_getStartPosition(this_1)
			set tuple_temp_5 = MGSlide_getStartPosition_return_y
			set Minigame_Minigame_getStartPosition_result_x = tuple_temp_4
			set Minigame_Minigame_getStartPosition_result_y = tuple_temp_5
		endif
	elseif Minigame_typeId[this_1] <= 1015 then
		set tuple_temp_6 = MGSpacey_getStartPosition(this_1)
		set tuple_temp_7 = MGSpacey_getStartPosition_return_y
		set Minigame_Minigame_getStartPosition_result_x = tuple_temp_6
		set Minigame_Minigame_getStartPosition_result_y = tuple_temp_7
	else
		set tuple_temp_8 = MGWarlock_getStartPosition(this_1)
		set tuple_temp_9 = MGWarlock_getStartPosition_return_y
		set Minigame_Minigame_getStartPosition_result_x = tuple_temp_8
		set Minigame_Minigame_getStartPosition_result_y = tuple_temp_9
	endif
	set dispatch_Minigame_Minigame_Minigame_getStartPosition_return_x = Minigame_Minigame_getStartPosition_result_x
	set dispatch_Minigame_Minigame_Minigame_getStartPosition_return_y = Minigame_Minigame_getStartPosition_result_y
	return dispatch_Minigame_Minigame_Minigame_getStartPosition_return_x
endfunction

function alloc_CallbackCounted_doPeriodicallyCounted_MGAgar_MGAgar takes nothing returns integer
	local integer this_1
	if CallbackCounted_firstFree == 0 then
		if CallbackCounted_maxIndex < JASS_MAX_ARRAY_SIZE then
			set CallbackCounted_maxIndex = CallbackCounted_maxIndex + 1
			set this_1 = CallbackCounted_maxIndex
			set CallbackCounted_typeId[this_1] = 661
		else
			call error("Out of memory: Could not create CallbackCounted_doPeriodicallyCounted_MGAgar_MGAgar.")
			set this_1 = 0
		endif
	else
		set CallbackCounted_firstFree = CallbackCounted_firstFree - 1
		set this_1 = CallbackCounted_nextFree[CallbackCounted_firstFree]
		set CallbackCounted_typeId[this_1] = 661
	endif
	return this_1
endfunction

function alloc_AgarData takes nothing returns integer
	local integer this_1
	if AgarData_firstFree == 0 then
		if AgarData_maxIndex < JASS_MAX_ARRAY_SIZE then
			set AgarData_maxIndex = AgarData_maxIndex + 1
			set this_1 = AgarData_maxIndex
		else
			call error("Out of memory: Could not create AgarData.")
			set this_1 = 0
		endif
	else
		set AgarData_firstFree = AgarData_firstFree - 1
		set this_1 = AgarData_nextFree[AgarData_firstFree]
	endif
	return this_1
endfunction

function AgarData_init takes integer this_1 returns nothing
	set AgarData_size[this_1] = 0.0
endfunction

function construct_AgarData takes integer this_1 returns nothing
	call AgarData_init(this_1)
endfunction

function new_AgarData takes nothing returns integer
	local integer this_1 = alloc_AgarData()
	call construct_AgarData(this_1)
	return this_1
endfunction

function MGAgar_initEscapers takes integer this_1 returns nothing
	local integer iterator
	local integer pd_1
	local integer clVar
	set MGAgar_rdata[this_1] = getRegionData_3304(MGAgar_RIGHT_SPOT_x, MGAgar_RIGHT_SPOT_y)
	set iterator = LinkedList_iterator(PlayerData_escaperPlayers)
	loop
		exitwhen  not LLIterator_hasNext(iterator)
		set pd_1 = LLIterator_next(iterator)
		if PlayerData_escaper[pd_1] != 0 and Escaper_alive[PlayerData_escaper[pd_1]] then
			call dispatch_HashMap_HashMap_HashMap_put(MGAgar_map, PlayerData_escaper[pd_1], new_AgarData())
			call unit_setScale(UnitEntity_actor[PlayerData_escaper[pd_1]], 0.2)
			call dispatch_RegionData_RegionData_RegionData_revealRegion(MGAgar_rdata[this_1], PlayerData_p[pd_1])
		endif
	endloop
	call LLIterator_close(iterator)
	set clVar = alloc_CallbackCounted_doPeriodicallyCounted_MGAgar_MGAgar()
	call construct_CallbackCounted(clVar)
	set this_2941[clVar] = this_1
	set MGAgar_cbs[this_1] = doPeriodicallyCounted(0.2, 9999, clVar)
endfunction

function dispatch_MGAgar_MGAgar_MGAgar_initEscapers takes integer this_1 returns nothing
	if Minigame_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling MGAgar.initEscapers")
		else
			call error("Called MGAgar.initEscapers on invalid object.")
		endif
	endif
	call MGAgar_initEscapers(this_1)
endfunction

function MGAgar_onBegin takes integer this_1 returns nothing
	call dispatch_MGAgar_MGAgar_MGAgar_initEscapers(this_1)
endfunction

function alloc_CallbackPeriodic_doPeriodically_MGRandKill_MGRandKill takes nothing returns integer
	local integer this_1
	if CallbackPeriodic_firstFree == 0 then
		if CallbackPeriodic_maxIndex < JASS_MAX_ARRAY_SIZE then
			set CallbackPeriodic_maxIndex = CallbackPeriodic_maxIndex + 1
			set this_1 = CallbackPeriodic_maxIndex
			set CallbackPeriodic_typeId[this_1] = 664
		else
			call error("Out of memory: Could not create CallbackPeriodic_doPeriodically_MGRandKill_MGRandKill.")
			set this_1 = 0
		endif
	else
		set CallbackPeriodic_firstFree = CallbackPeriodic_firstFree - 1
		set this_1 = CallbackPeriodic_nextFree[CallbackPeriodic_firstFree]
		set CallbackPeriodic_typeId[this_1] = 664
	endif
	return this_1
endfunction

function alloc_CallbackPeriodic_doPeriodically_MGRandKill_MGRandKill_1597 takes nothing returns integer
	local integer this_1
	if CallbackPeriodic_firstFree == 0 then
		if CallbackPeriodic_maxIndex < JASS_MAX_ARRAY_SIZE then
			set CallbackPeriodic_maxIndex = CallbackPeriodic_maxIndex + 1
			set this_1 = CallbackPeriodic_maxIndex
			set CallbackPeriodic_typeId[this_1] = 665
		else
			call error("Out of memory: Could not create CallbackPeriodic_doPeriodically_MGRandKill_MGRandKill.")
			set this_1 = 0
		endif
	else
		set CallbackPeriodic_firstFree = CallbackPeriodic_firstFree - 1
		set this_1 = CallbackPeriodic_nextFree[CallbackPeriodic_firstFree]
		set CallbackPeriodic_typeId[this_1] = 665
	endif
	return this_1
endfunction

function alloc_CallbackPeriodic_doPeriodically_MGRandKill_MGRandKill_1598 takes nothing returns integer
	local integer this_1
	if CallbackPeriodic_firstFree == 0 then
		if CallbackPeriodic_maxIndex < JASS_MAX_ARRAY_SIZE then
			set CallbackPeriodic_maxIndex = CallbackPeriodic_maxIndex + 1
			set this_1 = CallbackPeriodic_maxIndex
			set CallbackPeriodic_typeId[this_1] = 666
		else
			call error("Out of memory: Could not create CallbackPeriodic_doPeriodically_MGRandKill_MGRandKill.")
			set this_1 = 0
		endif
	else
		set CallbackPeriodic_firstFree = CallbackPeriodic_firstFree - 1
		set this_1 = CallbackPeriodic_nextFree[CallbackPeriodic_firstFree]
		set CallbackPeriodic_typeId[this_1] = 666
	endif
	return this_1
endfunction

function alloc_CallbackSingle_doAfter_MGRandKill_MGRandKill takes nothing returns integer
	local integer this_1
	if CallbackSingle_firstFree == 0 then
		if CallbackSingle_maxIndex < JASS_MAX_ARRAY_SIZE then
			set CallbackSingle_maxIndex = CallbackSingle_maxIndex + 1
			set this_1 = CallbackSingle_maxIndex
			set CallbackSingle_typeId[this_1] = 691
		else
			call error("Out of memory: Could not create CallbackSingle_doAfter_MGRandKill_MGRandKill.")
			set this_1 = 0
		endif
	else
		set CallbackSingle_firstFree = CallbackSingle_firstFree - 1
		set this_1 = CallbackSingle_nextFree[CallbackSingle_firstFree]
		set CallbackSingle_typeId[this_1] = 691
	endif
	return this_1
endfunction

function CallbackPeriodic_init takes integer this_1 returns nothing
endfunction

function construct_CallbackPeriodic takes integer this_1 returns nothing
	call CallbackPeriodic_init(this_1)
endfunction

function CallbackPeriodic_start takes integer this_1, timer whichTimer, real time returns nothing
	local timer receiver = whichTimer
	local timer receiver_1
	call timer_setData(receiver, this_1)
	set receiver_1 = receiver
	call timer_startPeriodic(receiver_1, time, ref_function_CallbackPeriodic_staticCallback)
	set CallbackPeriodic_t[this_1] = receiver_1
endfunction

function dispatch_CallbackPeriodic_ClosureTimers_CallbackPeriodic_start takes integer this_1, timer whichTimer, real time returns nothing
	if CallbackPeriodic_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling CallbackPeriodic.start")
		else
			call error("Called CallbackPeriodic.start on invalid object.")
		endif
	endif
	call CallbackPeriodic_start(this_1, whichTimer, time)
endfunction

function timer_doPeriodically takes timer this_1, real time, integer cb_1 returns integer
	call dispatch_CallbackPeriodic_ClosureTimers_CallbackPeriodic_start(cb_1, this_1, time)
	return cb_1
endfunction

function doPeriodically takes real time, integer cb_1 returns integer
	return timer_doPeriodically(getTimer(), time, cb_1)
endfunction

function effect_playAnimation takes effect this_1, animtype whichAnim returns nothing
	call BlzPlaySpecialEffect(this_1, whichAnim)
endfunction

function item_setVisible takes item this_1, boolean flag returns nothing
	call SetItemVisible(this_1, flag)
endfunction

function rect_moveTo takes rect this_1, real newCenter_x, real newCenter_y returns nothing
	call MoveRectTo(this_1, newCenter_x, newCenter_y)
endfunction

function vec2_isTerrainPathable takes real this_x, real this_y, pathingtype ttype_1 returns boolean
	return IsTerrainPathable(this_x, this_y, ttype_1)
endfunction

function vec2_isTerrainWalkable takes real this_x, real this_y returns boolean
	local real tempPos_x
	local real tempPos_y
	local real tuple_temp
	local real tuple_temp_1
	call rect_moveTo(TerrainUtils_itemSearchRect, this_x, this_y)
	call EnumItemsInRect(TerrainUtils_itemSearchRect, null, ref_function_code__EnumItemsInRect_TerrainUtils)
	call item_setPos(TerrainUtils_dummyItem, this_x, this_y)
	set tuple_temp = item_getPos(TerrainUtils_dummyItem)
	set tuple_temp_1 = item_getPos_return_y
	set tempPos_x = tuple_temp
	set tempPos_y = tuple_temp_1
	call item_setVisible(TerrainUtils_dummyItem, false)
	loop
		exitwhen  not (TerrainUtils_hiddenItemsCount > 0)
		set TerrainUtils_hiddenItemsCount = TerrainUtils_hiddenItemsCount - 1
		call item_setVisible(TerrainUtils_hiddenItems[TerrainUtils_hiddenItemsCount], true)
		set TerrainUtils_hiddenItems[TerrainUtils_hiddenItemsCount] = null
	endloop
	return (tempPos_x - this_x) * (tempPos_x - this_x) + (tempPos_y - this_y) * (tempPos_y - this_y) <= TerrainUtils_MAX_RANGE_SQ and ( not vec2_isTerrainPathable(this_x, this_y, PATHING_TYPE_WALKABILITY))
endfunction

function MGRandKill_onBegin takes integer this_1 returns nothing
	local real tuple_temp = rect_randomPoint(dispatch_MGRandKill_MGRandKill_MGRandKill_getGameRect(this_1))
	local real tuple_temp_1 = rect_randomPoint_return_y
	local integer i
	local integer temp
	local integer clVar
	local integer clVar_1
	local integer clVar_2
	local integer clVar_3
	local real tuple_temp_2
	local real tuple_temp_3
	set MGRandKill_spawn_x[this_1] = tuple_temp
	set MGRandKill_spawn_y[this_1] = tuple_temp_1
	loop
		exitwhen  not  not vec2_isTerrainWalkable(MGRandKill_spawn_x[this_1], MGRandKill_spawn_y[this_1])
		set tuple_temp_2 = rect_randomPoint(dispatch_MGRandKill_MGRandKill_MGRandKill_getGameRect(this_1))
		set tuple_temp_3 = rect_randomPoint_return_y
		set MGRandKill_spawn_x[this_1] = tuple_temp_2
		set MGRandKill_spawn_y[this_1] = tuple_temp_3
	endloop
	set MGRandKill_fx[this_1] = new_Fx2(vec2_toVec3(MGRandKill_spawn_x[this_1], MGRandKill_spawn_y[this_1]), vec2_toVec3_return_y, vec2_toVec3_return_z, Doodads_shimmeringPortal)
	call effect_setScale(Fx2_eff[MGRandKill_fx[this_1]], 0.5)
	call effect_playAnimation(Fx2_eff[MGRandKill_fx[this_1]], ANIM_TYPE_STAND)
	set i = 0
	set temp = GetRandomInt(5, 7)
	loop
		exitwhen i > temp
		call new_SmallObstacle_3746(rect_randomPoint(dispatch_MGRandKill_MGRandKill_MGRandKill_getGameRect(this_1)), rect_randomPoint_return_y, GameConstants_STAFF_PLAYER)
		set i = i + 1
	endloop
	set clVar = alloc_CallbackSingle_doAfter_MGRandKill_MGRandKill()
	call construct_CallbackSingle(clVar)
	set this_2942[clVar] = this_1
	call doAfter(2.5, clVar)
	set clVar_1 = alloc_CallbackPeriodic_doPeriodically_MGRandKill_MGRandKill()
	call construct_CallbackPeriodic(clVar_1)
	set this_2943[clVar_1] = this_1
	set MGRandKill_chickenTimer[this_1] = doPeriodically(5., clVar_1)
	set clVar_2 = alloc_CallbackPeriodic_doPeriodically_MGRandKill_MGRandKill_1597()
	call construct_CallbackPeriodic(clVar_2)
	set this_2944[clVar_2] = this_1
	set MGRandKill_bunnyTimer[this_1] = doPeriodically(13., clVar_2)
	set clVar_3 = alloc_CallbackPeriodic_doPeriodically_MGRandKill_MGRandKill_1598()
	call construct_CallbackPeriodic(clVar_3)
	set this_2945[clVar_3] = this_1
	set MGRandKill_coinTimer[this_1] = doPeriodically(23., clVar_3)
endfunction

function alloc_CallbackPeriodic_doPeriodically_MGSlide_MGSlide takes nothing returns integer
	local integer this_1
	if CallbackPeriodic_firstFree == 0 then
		if CallbackPeriodic_maxIndex < JASS_MAX_ARRAY_SIZE then
			set CallbackPeriodic_maxIndex = CallbackPeriodic_maxIndex + 1
			set this_1 = CallbackPeriodic_maxIndex
			set CallbackPeriodic_typeId[this_1] = 667
		else
			call error("Out of memory: Could not create CallbackPeriodic_doPeriodically_MGSlide_MGSlide.")
			set this_1 = 0
		endif
	else
		set CallbackPeriodic_firstFree = CallbackPeriodic_firstFree - 1
		set this_1 = CallbackPeriodic_nextFree[CallbackPeriodic_firstFree]
		set CallbackPeriodic_typeId[this_1] = 667
	endif
	return this_1
endfunction

function MGSlide_onBegin takes integer this_1 returns nothing
	local integer clVar
	set MGSlide_bcount[this_1] = 0
	set MGSlide_goRight[this_1] = true
	set MGSlide_rdata[this_1] = getRegionData_3304(MGSlide_RIGHT_SPOT_x, MGSlide_RIGHT_SPOT_y)
	call rect_changeTerrain(gg_rct_slidegamespawn, BuilderConstants_CONTROLLABLEICE)
	call dispatch_MGSlide_MGSlide_MGSlide_generateNewCourse(this_1)
	set clVar = alloc_CallbackPeriodic_doPeriodically_MGSlide_MGSlide()
	call construct_CallbackPeriodic(clVar)
	set this_2946[clVar] = this_1
	set MGSlide_cb[this_1] = doPeriodically(12., clVar)
endfunction

function EventListener_add takes eventid eventId, integer listener_1 returns integer
	set EventListener_eventId[listener_1] = eventid_toIntId(eventId)
	if EventListener_generalListenersFirsts[EventListener_eventId[listener_1]] != 0 then
		set EventListener_prev[EventListener_generalListenersFirsts[EventListener_eventId[listener_1]]] = listener_1
		set EventListener_next[listener_1] = EventListener_generalListenersFirsts[EventListener_eventId[listener_1]]
	endif
	set EventListener_generalListenersFirsts[EventListener_eventId[listener_1]] = listener_1
	return listener_1
endfunction

function addKeyListener takes integer listener_1 returns integer
	if KeyUtils_firstKeyListener != 0 then
		set EventListener_prev[KeyUtils_firstKeyListener] = listener_1
		set EventListener_next[listener_1] = KeyUtils_firstKeyListener
	endif
	set KeyUtils_firstKeyListener = listener_1
	return listener_1
endfunction

function alloc_EventListener_addKeyListener_MGSpacey_MGSpacey takes nothing returns integer
	local integer this_1
	if EventListener_firstFree == 0 then
		if EventListener_maxIndex < JASS_MAX_ARRAY_SIZE then
			set EventListener_maxIndex = EventListener_maxIndex + 1
			set this_1 = EventListener_maxIndex
			set EventListener_typeId[this_1] = 754
		else
			call error("Out of memory: Could not create EventListener_addKeyListener_MGSpacey_MGSpacey.")
			set this_1 = 0
		endif
	else
		set EventListener_firstFree = EventListener_firstFree - 1
		set this_1 = EventListener_nextFree[EventListener_firstFree]
		set EventListener_typeId[this_1] = 754
	endif
	return this_1
endfunction

function alloc_EventListener_add_MGSpacey_MGSpacey takes nothing returns integer
	local integer this_1
	if EventListener_firstFree == 0 then
		if EventListener_maxIndex < JASS_MAX_ARRAY_SIZE then
			set EventListener_maxIndex = EventListener_maxIndex + 1
			set this_1 = EventListener_maxIndex
			set EventListener_typeId[this_1] = 804
		else
			call error("Out of memory: Could not create EventListener_add_MGSpacey_MGSpacey.")
			set this_1 = 0
		endif
	else
		set EventListener_firstFree = EventListener_firstFree - 1
		set this_1 = EventListener_nextFree[EventListener_firstFree]
		set EventListener_typeId[this_1] = 804
	endif
	return this_1
endfunction

function MGSpacey_onBegin takes integer this_1 returns nothing
	local integer iterator = LinkedList_iterator(PlayerData_escaperPlayers)
	local integer pd_1
	local integer clVar
	local integer clVar_1
	local integer i
	local playerevent temp
	loop
		exitwhen  not LLIterator_hasNext(iterator)
		set pd_1 = LLIterator_next(iterator)
		if PlayerData_escaper[pd_1] != 0 then
			if  not Escaper_alive[PlayerData_escaper[pd_1]] then
				call forceRevive(PlayerData_escaper[pd_1])
			endif
			call printTimedToPlayer("Use ARROW KEYS and the ESC key to control your spacecraft.", 15., PlayerData_p[pd_1])
			call dispatch_LinkedList_LinkedList_LinkedList_add_1(MGSpacey_ships, new_Spaceship(vec2_op_plus(MGSpacey_ARENA_POS_x, MGSpacey_ARENA_POS_y, dispatch_LinkedList_LinkedList_LinkedList_size(MGSpacey_ships) * 64., -168.), vec2_op_plus_return_y, PlayerData_escaper[pd_1]))
		endif
	endloop
	call LLIterator_close(iterator)
	set temp = EVENT_PLAYER_END_CINEMATIC
	set clVar = alloc_EventListener_add_MGSpacey_MGSpacey()
	call construct_EventListener(clVar)
	set MGSpacey_listener[this_1] = EventListener_add(temp, clVar)
	set clVar_1 = alloc_EventListener_addKeyListener_MGSpacey_MGSpacey()
	call construct_EventListener(clVar_1)
	set MGSpacey_klistener[this_1] = addKeyListener(clVar_1)
	set i = 0
	loop
		exitwhen i > 2
		call new_SpaceRock(vec2_polarOffset(MGSpacey_ARENA_POS_x, MGSpacey_ARENA_POS_y, real_fromDeg(90. + GetRandomReal(-45., 45.)), GetRandomReal(256., 480.)), vec2_polarOffset_return_y, GetRandomReal(-1., 1.), GetRandomReal(-1., 1.), 4)
		set i = i + 1
	endloop
endfunction

function alloc_CallbackPeriodic_doPeriodically_MGWarlock_MGWarlock takes nothing returns integer
	local integer this_1
	if CallbackPeriodic_firstFree == 0 then
		if CallbackPeriodic_maxIndex < JASS_MAX_ARRAY_SIZE then
			set CallbackPeriodic_maxIndex = CallbackPeriodic_maxIndex + 1
			set this_1 = CallbackPeriodic_maxIndex
			set CallbackPeriodic_typeId[this_1] = 668
		else
			call error("Out of memory: Could not create CallbackPeriodic_doPeriodically_MGWarlock_MGWarlock.")
			set this_1 = 0
		endif
	else
		set CallbackPeriodic_firstFree = CallbackPeriodic_firstFree - 1
		set this_1 = CallbackPeriodic_nextFree[CallbackPeriodic_firstFree]
		set CallbackPeriodic_typeId[this_1] = 668
	endif
	return this_1
endfunction

function alloc_Warlock takes nothing returns integer
	local integer this_1
	if Serializable_firstFree == 0 then
		if Serializable_maxIndex < JASS_MAX_ARRAY_SIZE then
			set Serializable_maxIndex = Serializable_maxIndex + 1
			set this_1 = Serializable_maxIndex
			set Serializable_typeId[this_1] = 1227
		else
			call error("Out of memory: Could not create Warlock.")
			set this_1 = 0
		endif
	else
		set Serializable_firstFree = Serializable_firstFree - 1
		set this_1 = Serializable_nextFree[Serializable_firstFree]
		set Serializable_typeId[this_1] = 1227
	endif
	return this_1
endfunction

function EventListener_onPointCast takes unit u_1, integer abilId, integer listener_1 returns integer
	return EventListener_addSpellInternal(u_1, abilId, listener_1)
endfunction

function Warlock_init takes integer this_1 returns nothing
endfunction

function alloc_OnPointCast_onPointCast_Warlock_MGWarlock takes nothing returns integer
	local integer this_1
	if OnCastListener_firstFree == 0 then
		if OnCastListener_maxIndex < JASS_MAX_ARRAY_SIZE then
			set OnCastListener_maxIndex = OnCastListener_maxIndex + 1
			set this_1 = OnCastListener_maxIndex
			set OnCastListener_typeId[this_1] = 1024
		else
			call error("Out of memory: Could not create OnPointCast_onPointCast_Warlock_MGWarlock.")
			set this_1 = 0
		endif
	else
		set OnCastListener_firstFree = OnCastListener_firstFree - 1
		set this_1 = OnCastListener_nextFree[OnCastListener_firstFree]
		set OnCastListener_typeId[this_1] = 1024
	endif
	return this_1
endfunction

function OnPointCast_init takes integer this_1 returns nothing
endfunction

function construct_OnPointCast takes integer this_1 returns nothing
	call construct_OnCastListener(this_1)
	call OnPointCast_init(this_1)
endfunction

function construct_UnitEntity3 takes integer this_1, unit actor, real pos_x_1, real pos_y_1, real pos_z, real radius returns nothing
	call construct_Entity5(this_1, unit_getOwner(actor), pos_x_1, pos_y_1, pos_z, radius)
	call UnitEntity_init(this_1)
	call dispatch_UnitEntity_Entity_UnitEntity_setupUnitEntity(this_1, actor)
endfunction

function construct_Warlock takes integer this_1, real pos_x_1, real pos_y_1, integer mounter returns nothing
	local unit receiver
	local unit receiver_1
	local integer clVar
	local unit temp
	local integer temp_1
	call construct_UnitEntity3(this_1, createUnit(Entity_owner[mounter], MGWarlock_WARLOCK_ID, pos_x_1, pos_y_1, real_fromDeg(90.)), vec2_toVec3(pos_x_1, pos_y_1), vec2_toVec3_return_y, vec2_toVec3_return_z, 32.)
	call Warlock_init(this_1)
	set Warlock_mounter[this_1] = mounter
	set Escaper_alive[Warlock_mounter[this_1]] = false
	set receiver = UnitEntity_actor[mounter]
	call unit_pause(receiver)
	set receiver_1 = receiver
	call unit_hide(receiver_1)
	call dispatch_UnitEntity_Entity_UnitEntity_setPos(this_1, vec3_op_plus(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1], 0., 0., 32.), vec3_op_plus_return_y, vec3_op_plus_return_z)
	set Entity_sleeps[this_1] = false
	call player_selectSingle(Entity_owner[mounter], UnitEntity_actor[this_1])
	set temp = UnitEntity_actor[this_1]
	set temp_1 = MGWarlock_FIREBALL_ID
	set clVar = alloc_OnPointCast_onPointCast_Warlock_MGWarlock()
	call construct_OnPointCast(clVar)
	set this_2949[clVar] = this_1
	call EventListener_onPointCast(temp, temp_1, clVar)
endfunction

function new_Warlock takes real pos_x_1, real pos_y_1, integer mounter returns integer
	local integer this_1 = alloc_Warlock()
	call construct_Warlock(this_1, pos_x_1, pos_y_1, mounter)
	return this_1
endfunction

function MGWarlock_onBegin takes integer this_1 returns nothing
	local integer iterator = LinkedList_iterator(PlayerData_escaperPlayers)
	local integer pd_1
	local integer clVar
	loop
		exitwhen  not LLIterator_hasNext(iterator)
		set pd_1 = LLIterator_next(iterator)
		if PlayerData_escaper[pd_1] != 0 then
			if  not Escaper_alive[PlayerData_escaper[pd_1]] then
				call forceRevive(PlayerData_escaper[pd_1])
			endif
			call printTimedToPlayer("Use your [Q] Spell and be the last warlock standing!", 15., PlayerData_p[pd_1])
			call dispatch_LinkedList_LinkedList_LinkedList_add_1(MGWarlock_warlocks, new_Warlock(vec2_op_plus(MGWarlock_ARENA_POS_x, MGWarlock_ARENA_POS_y, GetRandomReal(-16., 16.), GetRandomReal(-16., 16.)), vec2_op_plus_return_y, PlayerData_escaper[pd_1]))
		endif
	endloop
	call LLIterator_close(iterator)
	set clVar = alloc_CallbackPeriodic_doPeriodically_MGWarlock_MGWarlock()
	call construct_CallbackPeriodic(clVar)
	set this_2948[clVar] = this_1
	set MGWarlock_cb[this_1] = doPeriodically(1., clVar)
endfunction

function dispatch_Minigame_Minigame_Minigame_onBegin takes integer this_1 returns nothing
	if Minigame_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling Minigame.onBegin")
		else
			call error("Called Minigame.onBegin on invalid object.")
		endif
	endif
	if Minigame_typeId[this_1] <= 1014 then
		if Minigame_typeId[this_1] <= 1013 then
			if Minigame_typeId[this_1] <= 1012 then
				call MGAgar_onBegin(this_1)
			else
				call MGRandKill_onBegin(this_1)
			endif
		else
			call MGSlide_onBegin(this_1)
		endif
	elseif Minigame_typeId[this_1] <= 1015 then
		call MGSpacey_onBegin(this_1)
	else
		call MGWarlock_onBegin(this_1)
	endif
endfunction

function alloc_CallbackSingle_nullTimer_SoundDefinition_SoundUtils_1645 takes nothing returns integer
	local integer this_1
	if CallbackSingle_firstFree == 0 then
		if CallbackSingle_maxIndex < JASS_MAX_ARRAY_SIZE then
			set CallbackSingle_maxIndex = CallbackSingle_maxIndex + 1
			set this_1 = CallbackSingle_maxIndex
			set CallbackSingle_typeId[this_1] = 718
		else
			call error("Out of memory: Could not create CallbackSingle_nullTimer_SoundDefinition_SoundUtils.")
			set this_1 = 0
		endif
	else
		set CallbackSingle_firstFree = CallbackSingle_firstFree - 1
		set this_1 = CallbackSingle_nextFree[CallbackSingle_firstFree]
		set CallbackSingle_typeId[this_1] = 718
	endif
	return this_1
endfunction

function SoundDefinition_playForPlayer_1308 takes integer this_1, player p, integer duration returns integer
	local integer snd_1
	local integer clVar
	set SoundDefinition_duration[this_1] = duration
	set snd_1 = dispatch_SoundDefinition_SoundUtils_SoundDefinition_getSound(this_1)
	set SoundInstance_p[snd_1] = p
	set clVar = alloc_CallbackSingle_nullTimer_SoundDefinition_SoundUtils_1645()
	call construct_CallbackSingle(clVar)
	set this_2905[clVar] = this_1
	set snd_2880[clVar] = snd_1
	call nullTimer(clVar)
	return snd_1
endfunction

function dispatch_SoundDefinition_SoundUtils_SoundDefinition_playForPlayer_3163 takes integer this_1, player p, integer duration returns integer
	local integer SoundUtils_SoundDefinition_playForPlayer_result
	if SoundDefinition_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling SoundDefinition.playForPlayer")
		else
			call error("Called SoundDefinition.playForPlayer on invalid object.")
		endif
	endif
	set SoundUtils_SoundDefinition_playForPlayer_result = SoundDefinition_playForPlayer_1308(this_1, p, duration)
	return SoundUtils_SoundDefinition_playForPlayer_result
endfunction

function SoundDefinition_playForPlayer takes integer this_1, player p returns integer
	return dispatch_SoundDefinition_SoundUtils_SoundDefinition_playForPlayer_3163(this_1, p, SoundUtils_DEFAULT_SOUND_DURATION)
endfunction

function dispatch_SoundDefinition_SoundUtils_SoundDefinition_playForPlayer takes integer this_1, player p returns integer
	local integer SoundUtils_SoundDefinition_playForPlayer_result
	if SoundDefinition_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling SoundDefinition.playForPlayer")
		else
			call error("Called SoundDefinition.playForPlayer on invalid object.")
		endif
	endif
	set SoundUtils_SoundDefinition_playForPlayer_result = SoundDefinition_playForPlayer(this_1, p)
	return SoundUtils_SoundDefinition_playForPlayer_result
endfunction

function Minigame_start takes integer this_1 returns nothing
	local timer receiver
	local timer receiver_1
	local integer clVar
	local integer pd_1
	local integer from
	local integer receiver_2
	if Minigame_tim[this_1] == null then
		set Minigame_tim[this_1] = getTimer()
		set receiver = Minigame_tim[this_1]
		call timer_setData(receiver, this_1)
		set receiver_1 = receiver
		call timer_start(receiver_1, Minigame_MAX_TIME, ref_function_code__start_Minigame_Minigame)
		set Minigame_window[this_1] = CreateTimerDialog(Minigame_tim[this_1])
		call TimerDialogSetTitle(Minigame_window[this_1], "Minigame")
		call TimerDialogDisplay(Minigame_window[this_1], true)
		call changeRevMode(2)
		set clVar = alloc_ReviveListener_Minigame_Minigame()
		set this_2951[clVar] = this_1
		set ReviveManager_waitForListener = clVar
		set from = dispatch_LinkedList_LinkedList_LinkedList_staticItr(PlayerData_escaperPlayers)
		loop
			exitwhen  not LLIterator_hasNext(from)
			set pd_1 = LLIterator_next(from)
			if PlayerData_escaper[pd_1] != 0 then
				if  not Escaper_alive[PlayerData_escaper[pd_1]] then
					call dispatch_Escaper_Escaper_Escaper_revive(PlayerData_escaper[pd_1])
				endif
				set receiver_2 = PlayerData_escaper[pd_1]
				call dispatch_UnitEntity_Entity_UnitEntity_setPos(receiver_2, vec2_withZ(dispatch_Minigame_Minigame_Minigame_getStartPosition(this_1), dispatch_Minigame_Minigame_Minigame_getStartPosition_return_y, 0.), vec2_withZ_return_y, vec2_withZ_return_z)
				call dispatch_RegionData_RegionData_RegionData_revealRegion(Entity_setCurrentRegion(receiver_2), PlayerData_p[pd_1])
				if  not Escaper_camlock[PlayerData_escaper[pd_1]] then
					call player_panCamToTimed(PlayerData_p[pd_1], UnitEntity_actor[PlayerData_escaper[pd_1]], 0.)
				endif
				call player_select(PlayerData_p[pd_1], UnitEntity_actor[PlayerData_escaper[pd_1]])
			endif
			call printTimedToPlayer("Minigame started: " + dispatch_Minigame_Minigame_Minigame_getName(this_1), 20., PlayerData_p[pd_1])
			if Player_localPlayer == PlayerData_p[pd_1] then
				call SetCameraBoundsToRect(dispatch_Minigame_Minigame_Minigame_getCamBounds(this_1))
			endif
			call dispatch_SoundDefinition_SoundUtils_SoundDefinition_playForPlayer(Minigame_BEGIN_SOUND, PlayerData_p[pd_1])
		endloop
		call dispatch_Minigame_Minigame_Minigame_onBegin(this_1)
	endif
endfunction

function dispatch_Minigame_Minigame_Minigame_start takes integer this_1 returns nothing
	if Minigame_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling Minigame.start")
		else
			call error("Called Minigame.start on invalid object.")
		endif
	endif
	call Minigame_start(this_1)
endfunction

function getNextMinigame takes nothing returns integer
	if dispatch_LinkedList_LinkedList_LinkedList_size(Minigame_minigames_live) == 0 then
		call dispatch_LinkedList_LinkedList_LinkedList_addAll(Minigame_minigames_live, Minigame_minigames)
		call dispatch_LinkedList_LinkedList_LinkedList_shuffle(Minigame_minigames_live)
	endif
	return dispatch_LinkedList_LinkedList_LinkedList_pop(Minigame_minigames_live)
endfunction

function MinigameTeleporter_startMinigame takes integer this_1 returns nothing
	local integer chosenMinigame = getNextMinigame()
	call dispatch_Minigame_Minigame_Minigame_start(chosenMinigame)
endfunction

function dispatch_MinigameTeleporter_MinigameTeleporter_MinigameTeleporter_startMinigame takes integer this_1 returns nothing
	if Serializable_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling MinigameTeleporter.startMinigame")
		else
			call error("Called MinigameTeleporter.startMinigame on invalid object.")
		endif
	endif
	call MinigameTeleporter_startMinigame(this_1)
endfunction

function MinigameTeleporter_check takes integer this_1, integer e_1 returns nothing
	local integer votesNeeded
	call MinigameTeleporter_votes_set(this_1, player_getId(Entity_owner[e_1]),  not MinigameTeleporter_votes_get(this_1, player_getId(Entity_owner[e_1])))
	if MinigameTeleporter_votes_get(this_1, player_getId(Entity_owner[e_1])) then
		set MinigameTeleporter_currentPlus[this_1] = MinigameTeleporter_currentPlus[this_1] + 1
		set votesNeeded = real_round(dispatch_LinkedList_LinkedList_LinkedList_size(PlayerData_escaperPlayers) * 0.65)
		if MinigameTeleporter_currentPlus[this_1] >= votesNeeded then
			call dispatch_MinigameTeleporter_MinigameTeleporter_MinigameTeleporter_startMinigame(this_1)
			call texttag_center(FText_tt[MinigameTeleporter_text[this_1]], dispatch_UnitEntity_Entity_UnitEntity_getPos(this_1), dispatch_UnitEntity_Entity_UnitEntity_getPos_return_y, dispatch_UnitEntity_Entity_UnitEntity_getPos_return_z, "-|cffffcc00Minigame in progress|r-", 10.)
			set MinigameTeleporter_inprogress[this_1] = true
		else
			call flashEffect(UI_confirmation, Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1])
			call texttag_center(FText_tt[MinigameTeleporter_text[this_1]], dispatch_UnitEntity_Entity_UnitEntity_getPos(this_1), dispatch_UnitEntity_Entity_UnitEntity_getPos_return_y, dispatch_UnitEntity_Entity_UnitEntity_getPos_return_z, "Votes - [" + int_toString(MinigameTeleporter_currentPlus[this_1]) + "/|cffffcc00" + int_toString(votesNeeded) + "|r]", 10.)
		endif
	else
		set MinigameTeleporter_currentPlus[this_1] = MinigameTeleporter_currentPlus[this_1] - 1
	endif
endfunction

function dispatch_MinigameTeleporter_MinigameTeleporter_MinigameTeleporter_check takes integer this_1, integer e_1 returns nothing
	if Serializable_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling MinigameTeleporter.check")
		else
			call error("Called MinigameTeleporter.check on invalid object.")
		endif
	endif
	call MinigameTeleporter_check(this_1, e_1)
endfunction

function MinigameTeleporter_checkVote takes nothing returns nothing
	local unit source = trigger_getSource(GetTriggeringTrigger())
	local unit u_1 = GetTriggerUnit()
	local integer e_1 = unit_getEntity(u_1)
	local integer obj_1 = unit_getEntity(source)
	local integer instanceOfTemp
	local boolean andLeft
	if isEscaperPlayer(Entity_owner[e_1]) then
		set instanceOfTemp = Serializable_typeId[e_1]
		set andLeft = instanceOfTemp >= 1163 and instanceOfTemp <= 1168
	else
		set andLeft = false
	endif
	if andLeft and ( not MinigameTeleporter_inprogress[obj_1]) then
		call dispatch_MinigameTeleporter_MinigameTeleporter_MinigameTeleporter_check(obj_1, e_1)
	endif
endfunction

function alloc_CallbackSingle_doAfter_RevivePoint_Revivepoint takes nothing returns integer
	local integer this_1
	if CallbackSingle_firstFree == 0 then
		if CallbackSingle_maxIndex < JASS_MAX_ARRAY_SIZE then
			set CallbackSingle_maxIndex = CallbackSingle_maxIndex + 1
			set this_1 = CallbackSingle_maxIndex
			set CallbackSingle_typeId[this_1] = 699
		else
			call error("Out of memory: Could not create CallbackSingle_doAfter_RevivePoint_Revivepoint.")
			set this_1 = 0
		endif
	else
		set CallbackSingle_firstFree = CallbackSingle_firstFree - 1
		set this_1 = CallbackSingle_nextFree[CallbackSingle_firstFree]
		set CallbackSingle_typeId[this_1] = 699
	endif
	return this_1
endfunction

function unit_setHP takes unit this_1, real hp returns nothing
	call unit_setState(this_1, UNIT_STATE_LIFE, hp)
endfunction

function Escaper_onCPReach takes integer this_1 returns nothing
	if Escaper_revivetomb[this_1] != null then
		call unit_remove(Escaper_revivetomb[this_1])
		set Escaper_revivetomb[this_1] = null
	endif
	call unit_setHP(UnitEntity_actor[this_1], 9999.)
endfunction

function FastEscaper_onCPReach takes integer this_1 returns nothing
	call Escaper_onCPReach(this_1)
	if FastEscaper_portal[this_1] != 0 then
		call cyc_RevivePoint_terminate(18, FastEscaper_portal[this_1])
		call Log_debug("portal Terminate")
		set FastEscaper_portal[this_1] = 0
	endif
endfunction

function dispatch_Escaper_Escaper_Escaper_onCPReach takes integer this_1 returns nothing
	if Serializable_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling Escaper.onCPReach")
		else
			call error("Called Escaper.onCPReach on invalid object.")
		endif
	endif
	if Serializable_typeId[this_1] <= 1165 then
		if Serializable_typeId[this_1] <= 1164 then
			call Escaper_onCPReach(this_1)
		else
			call FastEscaper_onCPReach(this_1)
		endif
	else
		call Escaper_onCPReach(this_1)
	endif
endfunction

function unit_getName takes unit this_1 returns string
	return GetUnitName(this_1)
endfunction

function vec2_isInRect takes real this_x, real this_y, rect r returns boolean
	return this_x > rect_getMinX(r) and this_x < rect_getMaxX(r) and this_y > rect_getMinY(r) and this_y < rect_getMaxY(r)
endfunction

function Startmaze_clearMaze takes integer this_1 returns nothing
	local unit vicu
	local group from
	local integer data_1
	call GroupEnumUnitsInRect(Group_ENUM_GROUP, RegionData_theRect[Startmaze_rdata[this_1]], Filter(ref_function_code__Filter_GroupEnumUnitsInRect_Startmaze_Startmaze))
	set from = Group_ENUM_GROUP
	loop
		exitwhen  not group_hasNext(from)
		set vicu = group_next(from)
		if unit_isAlive(vicu) and vec2_isInRect(unit_getPos(vicu), unit_getPos_return_y, RegionData_theRect[Startmaze_rdata[this_1]]) then
			set data_1 = unit_getEntity(vicu)
			if data_1 != 0 and unit_getName(UnitEntity_actor[data_1]) != null and Serializable_typeId[data_1] > 0 then
				call Log_debug("clear")
				call cyc_RevivePoint_terminate(18, data_1)
			else
				call unit_remove(vicu)
			endif
		endif
	endloop
	call EnumDestructablesInRectAll(RegionData_theRect[Startmaze_rdata[this_1]], ref_function_killD)
	call EnumItemsInRect(RegionData_theRect[Startmaze_rdata[this_1]], null, ref_function_deleteKeys)
endfunction

function dispatch_Startmaze_Startmaze_Startmaze_clearMaze takes integer this_1 returns nothing
	if Startmaze_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling Startmaze.clearMaze")
		else
			call error("Called Startmaze.clearMaze on invalid object.")
		endif
	endif
	call Startmaze_clearMaze(this_1)
endfunction

function Startmaze_isInit takes integer this_1 returns boolean
	return Startmaze_inited[this_1]
endfunction

function dispatch_Startmaze_Startmaze_Startmaze_isInit takes integer this_1 returns boolean
	local boolean Startmaze_Startmaze_isInit_result
	if Startmaze_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling Startmaze.isInit")
		else
			call error("Called Startmaze.isInit on invalid object.")
		endif
	endif
	set Startmaze_Startmaze_isInit_result = Startmaze_isInit(this_1)
	return Startmaze_Startmaze_isInit_result
endfunction

function Startmaze_onDestroy takes integer this_1 returns nothing
endfunction

function dealloc_Startmaze takes integer obj_1 returns nothing
	if Startmaze_typeId[obj_1] == 0 then
		call error("Double free: object of type Startmaze")
	else
		set Startmaze_nextFree[Startmaze_firstFree] = obj_1
		set Startmaze_firstFree = Startmaze_firstFree + 1
		set Startmaze_typeId[obj_1] = 0
	endif
endfunction

function destroyStartmaze takes integer this_1 returns nothing
	call Startmaze_onDestroy(this_1)
	call dealloc_Startmaze(this_1)
endfunction

function dispatch_Startmaze_destroyStartmaze takes integer this_1 returns nothing
	if Startmaze_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling Startmaze.Startmaze")
		else
			call error("Called Startmaze.Startmaze on invalid object.")
		endif
	endif
	call destroyStartmaze(this_1)
endfunction

function panCameraToTimed takes real pos_x_1, real pos_y_1, real pos_z, real duration returns nothing
	call PanCameraToTimedWithZ(pos_x_1, pos_y_1, pos_z - vec2_getTerrainZ(vec3_toVec2(pos_x_1, pos_y_1, pos_z), vec3_toVec2_return_y), duration)
endfunction

function player_panCameraToTimed_3926 takes player this_1, real pos_x_1, real pos_y_1, real pos_z, real duration returns nothing
	if Player_localPlayer == this_1 then
		call panCameraToTimed(pos_x_1, pos_y_1, pos_z, duration)
	endif
endfunction

function RevivePoint_reach takes integer this_1, integer reacher returns nothing
	local integer clVar
	local boolean getExp
	local integer pd_1
	local integer from
	local real tuple_temp
	local real tuple_temp_1
	call Log_debug("on reach")
	if  not RevivePoint_reached[this_1] then
		set RevivePoint_reached[this_1] = true
		call unit_setColor(UnitEntity_actor[this_1], player_getColor(Entity_owner[reacher]))
		set tuple_temp = vec3_toVec2(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1])
		set tuple_temp_1 = vec3_toVec2_return_y
		set Escaper_currentRevivepoint_x = tuple_temp
		set Escaper_currentRevivepoint_y = tuple_temp_1
		if Revivepoint_currentRevive != 0 then
			call unit_addAbility(UnitEntity_actor[Revivepoint_currentRevive], BuilderConstants_REMOVE_OBJECT_ID)
		endif
		set Revivepoint_currentRevive = this_1
		call unit_removeAbility(UnitEntity_actor[this_1], BuilderConstants_REMOVE_OBJECT_ID)
		call dispatch_SoundDefinition_SoundUtils_SoundDefinition_play(Revivepoint_rescueSound)
		call printTimed(player_getNameColored_3918(Entity_owner[reacher]) + " advanced to the next |cff086BB5Checkpoint", 15.)
		call dispatch_Escaper_Escaper_Escaper_onCPReach(reacher)
		call Entity_setCurrentRegion(this_1)
		if dispatch_RegionData_RegionData_RegionData_getPermission(Entity_getCurrentRegion(this_1), GameConstants_STAFF_PLAYER) == 2 then
			if RevivePoint_startmaze[this_1] > -1 then
				if Startmazes_startmazes[Startmazes_currentMaze] > 0 and dispatch_Startmaze_Startmaze_Startmaze_isInit(Startmazes_startmazes[Startmazes_currentMaze]) then
					call dispatch_Startmaze_Startmaze_Startmaze_clearMaze(Startmazes_startmazes[Startmazes_currentMaze])
					call dispatch_Startmaze_destroyStartmaze(Startmazes_startmazes[Startmazes_currentMaze])
					set Startmazes_startmazes[Startmazes_currentMaze] = 0
				endif
				set Startmazes_currentMaze = RevivePoint_startmaze[this_1]
				if Startmazes_startmazes[Startmazes_currentMaze] > 0 and ( not dispatch_Startmaze_Startmaze_Startmaze_isInit(Startmazes_startmazes[Startmazes_currentMaze])) then
					set clVar = alloc_CallbackSingle_doAfter_RevivePoint_Revivepoint()
					call construct_CallbackSingle(clVar)
					call doAfter(0.5, clVar)
					set RevivePoint_reached[Startmazes_svRev] = false
					call unit_setColor(UnitEntity_actor[Startmazes_svRev], PLAYER_COLOR_LIGHT_GRAY)
				endif
			endif
		else
			set RevivePoint_reached[Startmazes_svRev] = false
			call unit_setColor(UnitEntity_actor[Startmazes_svRev], PLAYER_COLOR_LIGHT_GRAY)
		endif
		set getExp = vec2_distanceTo(Escaper_currentRevivepoint_x, Escaper_currentRevivepoint_y, vec3_toVec2(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1]), vec3_toVec2_return_y) > 512.
		set from = dispatch_LinkedList_LinkedList_LinkedList_staticItr(PlayerData_escaperPlayers)
		loop
			exitwhen  not LLIterator_hasNext(from)
			set pd_1 = LLIterator_next(from)
			call dispatch_RegionData_RegionData_RegionData_revealRegion(Entity_getCurrentRegion(this_1), PlayerData_p[pd_1])
			if PlayerData_escaper[pd_1] != 0 and Escaper_alive[PlayerData_escaper[pd_1]] then
				call dispatch_UnitEntity_Entity_UnitEntity_setPos(PlayerData_escaper[pd_1], Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1])
				call dispatch_Escaper_Escaper_Escaper_stop(PlayerData_escaper[pd_1])
				call unit_abortOrder(UnitEntity_actor[PlayerData_escaper[pd_1]])
				if  not Escaper_camlock[PlayerData_escaper[pd_1]] then
					call player_panCameraToTimed_3926(PlayerData_p[pd_1], Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1], 0.)
				endif
			endif
			if getExp then
				call dispatch_PlayerData_PlayerData_PlayerData_addXp(pd_1, 20, false)
			endif
		endloop
		if getExp then
			call dispatch_PlayerData_PlayerData_PlayerData_addXp(PlayerData_pData[player_getId(Entity_owner[this_1])], 15, false)
		endif
	endif
endfunction

function dispatch_RevivePoint_Revivepoint_RevivePoint_reach takes integer this_1, integer reacher returns nothing
	if Serializable_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling RevivePoint.reach")
		else
			call error("Called RevivePoint.reach on invalid object.")
		endif
	endif
	call RevivePoint_reach(this_1, reacher)
endfunction

function RevivePoint_onReach takes nothing returns nothing
	local unit source = trigger_getSource(GetTriggeringTrigger())
	local unit target = GetTriggerUnit()
	local integer instanceOfTemp
	local boolean andLeft
	if isEscaperPlayer(unit_getOwner(target)) then
		set instanceOfTemp = Serializable_typeId[unit_getEntity(target)]
		set andLeft = instanceOfTemp >= 1163 and instanceOfTemp <= 1168
	else
		set andLeft = false
	endif
	if andLeft then
		call dispatch_RevivePoint_Revivepoint_RevivePoint_reach(unit_getEntity(source), unit_getEntity(target))
	endif
endfunction

function StaticBaseObject_isProper takes nothing returns boolean
	return unit_getFlyHeight(GetTriggerUnit()) < 22. and StaticBaseObject_enabled[unit_getEntity(trigger_getSource(GetTriggeringTrigger()))]
endfunction

function dispatch_SetupObject_SetupObject_SetupObject_setPos takes integer this_1, real pos_x_1, real pos_y_1, real pos_z returns nothing
	if Serializable_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling SetupObject.setPos")
		else
			call error("Called SetupObject.setPos on invalid object.")
		endif
	endif
	call SetupObject_setPos(this_1, pos_x_1, pos_y_1, pos_z)
endfunction

function Teleporter_teleport takes nothing returns nothing
	local unit source = trigger_getSource(GetTriggeringTrigger())
	local unit u_1 = GetTriggerUnit()
	local integer e_1 = unit_getEntity(u_1)
	local integer obj_1 = unit_getEntity(source)
	local real tuple_temp = dispatch_StaticBaseObject_BaseObject_StaticBaseObject_getRallyPoint(obj_1)
	local real tuple_temp_1 = dispatch_StaticBaseObject_BaseObject_StaticBaseObject_getRallyPoint_return_y
	local real tuple_temp_2 = dispatch_StaticBaseObject_BaseObject_StaticBaseObject_getRallyPoint_return_z
	local real rallyPos_x_1 = tuple_temp
	local real rallyPos_y_1 = tuple_temp_1
	local real rallyPos_z_1 = tuple_temp_2
	local integer rdata = getRegionData(rallyPos_x_1, rallyPos_y_1, rallyPos_z_1)
	local integer temp = Teleporter_mode[obj_1]
	local integer dyn
	local integer instanceOfTemp
	local integer instanceOfTemp_1
	local integer instanceOfTemp_2
	local integer instanceOfTemp_3
	local integer instanceOfTemp_4
	if temp == 0 then
		set instanceOfTemp = Serializable_typeId[e_1]
		if instanceOfTemp >= 1163 and instanceOfTemp <= 1168 then
			call dispatch_UnitEntity_Entity_UnitEntity_setPos(e_1, rallyPos_x_1, rallyPos_y_1, rallyPos_z_1)
			call effect_destr(addEffect_1565(Teleporter_EFFECT_STRING, Entity_pos_x[obj_1], Entity_pos_y[obj_1], Entity_pos_z[obj_1]))
			call effect_destr(addEffect_1565(Teleporter_EFFECT_STRING, rallyPos_x_1, rallyPos_y_1, rallyPos_z_1))
			if  not Escaper_camlock[e_1] then
				call player_panCameraToTimed_3926(Entity_owner[e_1], rallyPos_x_1, rallyPos_y_1, rallyPos_z_1, 0.03)
			endif
		endif
	elseif temp == 1 then
		set instanceOfTemp_1 = Serializable_typeId[e_1]
		if instanceOfTemp_1 >= 1172 and instanceOfTemp_1 <= 1192 and dispatch_RegionData_RegionData_RegionData_canBuild(rdata, Entity_owner[obj_1]) then
			set dyn = e_1
			call dispatch_SetupObject_SetupObject_SetupObject_setPos(dyn, rallyPos_x_1, rallyPos_y_1, rallyPos_z_1)
			call effect_destr(addEffect_1565(Teleporter_EFFECT_STRING, Entity_pos_x[obj_1], Entity_pos_y[obj_1], Entity_pos_z[obj_1]))
			call effect_destr(addEffect_1565(Teleporter_EFFECT_STRING, rallyPos_x_1, rallyPos_y_1, rallyPos_z_1))
		endif
	else
		set instanceOfTemp_2 = Serializable_typeId[e_1]
		if instanceOfTemp_2 >= 1172 and instanceOfTemp_2 <= 1192 and dispatch_RegionData_RegionData_RegionData_canBuild(rdata, Entity_owner[obj_1]) then
			set dyn = e_1
			call dispatch_SetupObject_SetupObject_SetupObject_setPos(dyn, rallyPos_x_1, rallyPos_y_1, rallyPos_z_1)
			call effect_destr(addEffect_1565(Teleporter_EFFECT_STRING, Entity_pos_x[obj_1], Entity_pos_y[obj_1], Entity_pos_z[obj_1]))
			call effect_destr(addEffect_1565(Teleporter_EFFECT_STRING, rallyPos_x_1, rallyPos_y_1, rallyPos_z_1))
		else
			set instanceOfTemp_3 = Serializable_typeId[e_1]
			if instanceOfTemp_3 >= 1163 and instanceOfTemp_3 <= 1168 then
				call unit_setPos_4196(u_1, rallyPos_x_1, rallyPos_y_1)
				call effect_destr(addEffect_1565(Teleporter_EFFECT_STRING, Entity_pos_x[obj_1], Entity_pos_y[obj_1], Entity_pos_z[obj_1]))
				call effect_destr(addEffect_1565(Teleporter_EFFECT_STRING, rallyPos_x_1, rallyPos_y_1, rallyPos_z_1))
				if  not Escaper_camlock[e_1] then
					call player_panCameraToTimed_3926(Entity_owner[e_1], rallyPos_x_1, rallyPos_y_1, rallyPos_z_1, 0.03)
				endif
			endif
		endif
	endif
	set instanceOfTemp_4 = Serializable_typeId[e_1]
	if instanceOfTemp_4 >= 1163 and instanceOfTemp_4 <= 1168 and isEscaperPlayer(Entity_owner[e_1]) and Entity_owner[obj_1] == GameConstants_STAFF_PLAYER and ( not unit_hasAbility(UnitEntity_actor[obj_1], BuilderConstants_REMOVE_OBJECT_ID)) then
		call Log_debug("Teleport term")
		call cyc_RevivePoint_terminate(18, obj_1)
	endif
endfunction

function Texter_onStep takes nothing returns nothing
	local unit u_1 = GetTriggerUnit()
	local integer e_1 = unit_getEntity(u_1)
	local integer obj_1 = unit_getEntity(trigger_getSource(GetTriggeringTrigger()))
	local integer instanceOfTemp = Serializable_typeId[e_1]
	if instanceOfTemp >= 1163 and instanceOfTemp <= 1168 then
		call dispatch_Texter_Texter_Texter_show(obj_1)
	endif
endfunction

function Trap_onStep takes nothing returns nothing
	local unit source = trigger_getSource(GetTriggeringTrigger())
	local unit u_1 = GetTriggerUnit()
	local integer e_1 = unit_getEntity(u_1)
	local integer obj_1 = unit_getEntity(source)
	local integer escaper
	local integer instanceOfTemp
	local boolean andLeft
	if  not Entity_DupletListModule_active[obj_1] then
		set instanceOfTemp = Serializable_typeId[e_1]
		set andLeft = instanceOfTemp >= 1163 and instanceOfTemp <= 1168
	else
		set andLeft = false
	endif
	if andLeft then
		call DestroyEffect(AddSpecialEffect(Trap_SFX_STRINGS[Trap_sfxid[obj_1]], unit_getX(UnitEntity_actor[obj_1]), unit_getY(UnitEntity_actor[obj_1])))
		set escaper = e_1
		call dispatch_Trap_Trap_Trap_doEffect(obj_1, escaper)
	endif
endfunction

function Trig_Untitled_Trigger_005_Actions takes nothing returns nothing
	call MoveRectToLoc(gg_rct_coingamebounds, GetRectCenter(GetPlayableMapRect()))
	call MoveRectToLoc(gg_rct_spaceygamearea, GetRectCenter(GetPlayableMapRect()))
	call MoveRectToLoc(gg_rct_spaceygamebounds, GetRectCenter(GetPlayableMapRect()))
	call MoveRectToLoc(gg_rct_coingamearea, GetRectCenter(GetPlayableMapRect()))
	call MoveRectToLoc(gg_rct_Region_026, GetRectCenter(GetPlayableMapRect()))
	call MoveRectToLoc(gg_rct_spaceygamearea, GetRectCenter(GetPlayableMapRect()))
	call MoveRectToLoc(gg_rct_warlockgamearea, GetRectCenter(GetPlayableMapRect()))
	call MoveRectToLoc(gg_rct_warlockgamebounds, GetRectCenter(GetPlayableMapRect()))
	call ShowUnitHide(gg_unit_fnt2_0074)
	call ShowUnitHide(gg_unit_arca_0050)
	call ShowUnitHide(gg_unit_revp_0322)
	call ShowUnitHide(gg_unit_spnr_0129)
	call ShowUnitHide(gg_unit_revp_0002)
	call ShowUnitHide(gg_unit_sick_0014)
	call ShowUnitHide(gg_unit_sick_0013)
	call ShowUnitHide(gg_unit_dor2_0023)
	call ShowUnitHide(gg_unit_dor2_0011)
	call ShowUnitHide(gg_unit_bisk_0018)
	call ShowUnitHide(gg_unit_sick_0036)
	call ShowUnitHide(gg_unit_revp_0059)
	call ShowUnitHide(gg_unit_bisk_0020)
	call ShowUnitHide(gg_unit_sick_0012)
	call ShowUnitHide(gg_unit_tele_0061)
	call ShowUnitHide(gg_unit_revp_0085)
	call ShowUnitHide(gg_unit_fnt2_0067)
	call ShowUnitHide(gg_unit_dor2_0087)
	call ShowUnitHide(gg_unit_dor2_0136)
	call ShowUnitHide(gg_unit_jump_0151)
	call ShowUnitHide(gg_unit_jump_0152)
	call ShowUnitHide(gg_unit_tele_0141)
	call ShowUnitHide(gg_unit_bsak_0080)
	call ShowUnitHide(gg_unit_bsak_0104)
	call ShowUnitHide(gg_unit_bsak_0081)
	call ShowUnitHide(gg_unit_ssak_0123)
	call ShowUnitHide(gg_unit_ssak_0125)
	call ShowUnitHide(gg_unit_ssak_0120)
	call ShowUnitHide(gg_unit_ssak_0122)
	call ShowUnitHide(gg_unit_ssak_0121)
	call ShowUnitHide(gg_unit_bsak_0127)
	call ShowUnitHide(gg_unit_ssak_0124)
	call ShowUnitHide(gg_unit_bsak_0128)
	call ShowUnitHide(gg_unit_knck_0034)
	call ShowUnitHide(gg_unit_knck_0033)
	call ShowUnitHide(gg_unit_fnt2_0065)
	call ShowUnitHide(gg_unit_bsak_0127)
	call ShowUnitHide(gg_unit_exec_0076)
	call ShowUnitHide(gg_unit_spnr_0147)
	call ShowUnitHide(gg_unit_spnr_0130)
	call ShowUnitHide(gg_unit_spnr_0157)
	call ShowUnitHide(gg_unit_spnr_0161)
	call ShowUnitHide(gg_unit_spnr_0162)
	call ShowUnitHide(gg_unit_sick_0014)
	call ShowUnitHide(gg_unit_airk_0149)
	call ShowUnitHide(gg_unit_arca_0050)
	call ShowUnitHide(gg_unit_sgrk_0153)
	call ShowUnitHide(gg_unit_sgrk_0153)
	call ShowUnitHide(gg_unit_tele_0234)
	call ShowUnitHide(gg_unit_glve_0160)
	call ShowUnitHide(gg_unit_glve_0159)
	call ShowUnitHide(gg_unit_glve_0156)
	call ShowUnitHide(gg_unit_glve_0158)
	call ShowUnitHide(gg_unit_scik_0222)
	call ShowUnitHide(gg_unit_wayp_0068)
	call ShowUnitHide(gg_unit_wayp_0066)
	call ShowUnitHide(gg_unit_wayp_0099)
	call ShowUnitHide(gg_unit_wayp_0078)
endfunction

function UnitRemover_removeUnit takes nothing returns nothing
	local unit u_1 = GetTriggerUnit()
	local integer data_1 = unit_getEntity(u_1)
	local integer sdata = unit_getEntity(trigger_getSource(GetTriggeringTrigger()))
	local integer instanceOfTemp
	local integer instanceOfTemp_1
	local boolean andLeft
	if data_1 != 0 and Entity_owner[data_1] == Entity_owner[sdata] and unit_hasAbility(u_1, BuilderConstants_REMOVE_OBJECT_ID) then
		set instanceOfTemp = Serializable_typeId[data_1]
		if instanceOfTemp >= 1172 and instanceOfTemp <= 1192 then
			set instanceOfTemp_1 = Serializable_typeId[data_1]
			set andLeft =  not (instanceOfTemp_1 >= 1217 and instanceOfTemp_1 <= 1221)
		else
			set andLeft = false
		endif
		if andLeft and ( not (Serializable_typeId[data_1] == 1213)) then
			call Log_debug("UnitRemover Terminate")
			call cyc_RevivePoint_terminate(18, data_1)
		endif
	endif
endfunction

function alloc_CallbackSingle_doAfter_Waypoint_Waypoint takes nothing returns integer
	local integer this_1
	if CallbackSingle_firstFree == 0 then
		if CallbackSingle_maxIndex < JASS_MAX_ARRAY_SIZE then
			set CallbackSingle_maxIndex = CallbackSingle_maxIndex + 1
			set this_1 = CallbackSingle_maxIndex
			set CallbackSingle_typeId[this_1] = 703
		else
			call error("Out of memory: Could not create CallbackSingle_doAfter_Waypoint_Waypoint.")
			set this_1 = 0
		endif
	else
		set CallbackSingle_firstFree = CallbackSingle_firstFree - 1
		set this_1 = CallbackSingle_nextFree[CallbackSingle_firstFree]
		set CallbackSingle_typeId[this_1] = 703
	endif
	return this_1
endfunction

function HashList_isEmpty takes integer this_1 returns boolean
	return HashList_size[this_1] == 0
endfunction

function dispatch_HashList_HashList_HashList_isEmpty takes integer this_1 returns boolean
	local boolean HashList_HashList_isEmpty_result
	if HashList_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling HashList.isEmpty")
		else
			call error("Called HashList.isEmpty on invalid object.")
		endif
	endif
	set HashList_HashList_isEmpty_result = HashList_isEmpty(this_1)
	return HashList_HashList_isEmpty_result
endfunction

function alloc_ForGroupCallback_forUnitsInRange_Waypoint_Waypoint takes nothing returns integer
	local integer this_1
	if ForGroupCallback_firstFree == 0 then
		if ForGroupCallback_maxIndex < JASS_MAX_ARRAY_SIZE then
			set ForGroupCallback_maxIndex = ForGroupCallback_maxIndex + 1
			set this_1 = ForGroupCallback_maxIndex
			set ForGroupCallback_typeId[this_1] = 867
		else
			call error("Out of memory: Could not create ForGroupCallback_forUnitsInRange_Waypoint_Waypoint.")
			set this_1 = 0
		endif
	else
		set ForGroupCallback_firstFree = ForGroupCallback_firstFree - 1
		set this_1 = ForGroupCallback_nextFree[ForGroupCallback_firstFree]
		set ForGroupCallback_typeId[this_1] = 867
	endif
	return this_1
endfunction

function Waypoint_orderLogicMove takes integer this_1 returns nothing
	local real tuple_temp = vec3_op_plus_4284(dispatch_StaticBaseObject_BaseObject_StaticBaseObject_getRallyPoint(this_1), dispatch_StaticBaseObject_BaseObject_StaticBaseObject_getRallyPoint_return_y, dispatch_StaticBaseObject_BaseObject_StaticBaseObject_getRallyPoint_return_z, 0.001, 0.)
	local real tuple_temp_1 = vec3_op_plus_return_y_3134
	local real tuple_temp_2 = vec3_op_plus_return_z_3136
	local real rallyPos_x_1 = tuple_temp
	local real rallyPos_y_1 = tuple_temp_1
	local real rallyPos_z_1 = tuple_temp_2
	local real tuple_temp_3 = vec3_toVec2(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1])
	local real tuple_temp_4 = vec3_toVec2_return_y
	local real temp_x = tuple_temp_3
	local real temp_y = tuple_temp_4
	local real temp = Entity_radius[this_1] + 48.
	local integer clVar = alloc_ForGroupCallback_forUnitsInRange_Waypoint_Waypoint()
	local real tuple_temp_5
	local real tuple_temp_6
	local real tuple_temp_7
	set this_2961[clVar] = this_1
	set tuple_temp_5 = rallyPos_x_1
	set tuple_temp_6 = rallyPos_y_1
	set tuple_temp_7 = rallyPos_z_1
	set rallyPos_x[clVar] = tuple_temp_5
	set rallyPos_y[clVar] = tuple_temp_6
	set rallyPos_z[clVar] = tuple_temp_7
	call forUnitsInRange(temp_x, temp_y, temp, clVar)
endfunction

function dispatch_Waypoint_Waypoint_Waypoint_orderLogicMove takes integer this_1 returns nothing
	if Serializable_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling Waypoint.orderLogicMove")
		else
			call error("Called Waypoint.orderLogicMove on invalid object.")
		endif
	endif
	call Waypoint_orderLogicMove(this_1)
endfunction

function Waypoint_onEnter takes integer this_1, unit entry returns nothing
	local integer entity_1 = unit_getEntity(entry)
	local real tuple_temp = vec3_op_plus_4284(dispatch_StaticBaseObject_BaseObject_StaticBaseObject_getRallyPoint(this_1), dispatch_StaticBaseObject_BaseObject_StaticBaseObject_getRallyPoint_return_y, dispatch_StaticBaseObject_BaseObject_StaticBaseObject_getRallyPoint_return_z, 0.001, 0.)
	local real tuple_temp_1 = vec3_op_plus_return_y_3134
	local real tuple_temp_2 = vec3_op_plus_return_z_3136
	local real rallyPos_x_1 = tuple_temp
	local real rallyPos_y_1 = tuple_temp_1
	local real rallyPos_z_1 = tuple_temp_2
	local boolean allReady
	local integer iterator
	local integer andPartner
	local integer iterator_1
	local integer andPartner_1
	local integer clVar
	local integer instanceOfTemp
	local integer instanceOfTemp_1
	local integer instanceOfTemp_2
	local boolean andLeft
	local real temp
	local real tuple_temp_3
	local real tuple_temp_4
	local real tuple_temp_5
	if Entity_owner[this_1] == Entity_owner[entity_1] then
		set instanceOfTemp = Serializable_typeId[entity_1]
		set andLeft =  not (instanceOfTemp >= 1163 and instanceOfTemp <= 1168)
	else
		set andLeft = false
	endif
	if andLeft and ( not (Serializable_typeId[entity_1] == 1162)) then
		set instanceOfTemp_1 = Serializable_typeId[entity_1]
		if instanceOfTemp_1 >= 1172 and instanceOfTemp_1 <= 1192 then
			if  not unit_hasAbility(SetupObject_setup[entity_1], BuilderConstants_REMOVE_OBJECT_ID) then
				return
			endif
		endif
		if ( not Waypoint_wisps[this_1]) and Serializable_typeId[entity_1] == 1188 then
			return
		endif
		if Waypoint_linked[this_1] != 0 and ( not dispatch_HashList_HashList_HashList_isEmpty(Waypoint_linked[this_1])) then
			if  not Waypoint_ready[this_1] then
				set Waypoint_ready[this_1] = true
				set allReady = true
				set iterator = HashList_iterator(Waypoint_linked[this_1])
				loop
					exitwhen  not HLIterator_hasNext(iterator)
					set andPartner = HLIterator_next(iterator)
					if  not Waypoint_ready[andPartner] then
						set allReady = false
						exitwhen true
					endif
				endloop
				call HLIterator_close(iterator)
				if allReady then
					set iterator_1 = HashList_iterator(Waypoint_linked[this_1])
					loop
						exitwhen  not HLIterator_hasNext(iterator_1)
						set andPartner_1 = HLIterator_next(iterator_1)
						call dispatch_Waypoint_Waypoint_Waypoint_orderLogicMove(andPartner_1)
						set Waypoint_ready[andPartner_1] = false
					endloop
					call HLIterator_close(iterator_1)
					call dispatch_Waypoint_Waypoint_Waypoint_orderLogicMove(this_1)
					set Waypoint_ready[this_1] = false
				endif
			endif
		elseif dispatch_ConfigValue_ConfigValue_ConfigValue_get(Waypoint_delay[this_1]) < Waypoint_INCREMENT then
			set instanceOfTemp_2 = Serializable_typeId[entity_1]
			if instanceOfTemp_2 >= 1172 and instanceOfTemp_2 <= 1192 and SetupObject_setup[entity_1] != UnitEntity_actor[entity_1] then
				call unit_issuePointOrder(SetupObject_setup[entity_1], "move", vec3_toVec2(rallyPos_x_1, rallyPos_y_1, rallyPos_z_1), vec3_toVec2_return_y)
			else
				call unit_issuePointOrder(UnitEntity_actor[entity_1], "move", vec3_toVec2(rallyPos_x_1, rallyPos_y_1, rallyPos_z_1), vec3_toVec2_return_y)
			endif
		else
			set temp = dispatch_ConfigValue_ConfigValue_ConfigValue_get(Waypoint_delay[this_1])
			set clVar = alloc_CallbackSingle_doAfter_Waypoint_Waypoint()
			call construct_CallbackSingle(clVar)
			set entity[clVar] = entity_1
			set tuple_temp_3 = rallyPos_x_1
			set tuple_temp_4 = rallyPos_y_1
			set tuple_temp_5 = rallyPos_z_1
			set rallyPos_x_2587[clVar] = tuple_temp_3
			set rallyPos_y_2589[clVar] = tuple_temp_4
			set rallyPos_z_2591[clVar] = tuple_temp_5
			call doAfter(temp, clVar)
		endif
	endif
endfunction

function dispatch_Waypoint_Waypoint_Waypoint_onEnter takes integer this_1, unit entry returns nothing
	if Serializable_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling Waypoint.onEnter")
		else
			call error("Called Waypoint.onEnter on invalid object.")
		endif
	endif
	call Waypoint_onEnter(this_1, entry)
endfunction

function Waypoint_onInRange takes nothing returns nothing
	local unit source = trigger_getSource(GetTriggeringTrigger())
	local integer obj_1 = unit_getEntity(source)
	call dispatch_Waypoint_Waypoint_Waypoint_onEnter(obj_1, GetTriggerUnit())
endfunction

function code__Arcanery_Arcanery takes nothing returns boolean
	return true
endfunction

function code__Arcanery_Arcanery_2061 takes nothing returns boolean
	return true
endfunction

function code__Condition_Startmaze takes nothing returns boolean
	return unit_getOwner(GetFilterUnit()) == GameConstants_STAFF_PLAYER
endfunction

function Executer_canTrigger takes integer this_1, integer e_1 returns boolean
	local integer instanceOfTemp
	local integer instanceOfTemp_1
	local boolean andLeft
	local boolean andLeft_1
	if Executer_canEscaperTrigger[this_1] then
		set instanceOfTemp = Serializable_typeId[e_1]
		set andLeft = instanceOfTemp >= 1163 and instanceOfTemp <= 1168
	else
		set andLeft = false
	endif
	if andLeft then
		return true
	endif
	if Executer_canKillerTrigger[this_1] then
		set instanceOfTemp_1 = Serializable_typeId[e_1]
		set andLeft_1 = instanceOfTemp_1 >= 1175 and instanceOfTemp_1 <= 1187
	else
		set andLeft_1 = false
	endif
	if andLeft_1 then
		return true
	endif
	return false
endfunction

function dispatch_Executer_Executer_Executer_canTrigger takes integer this_1, integer e_1 returns boolean
	local boolean Executer_Executer_canTrigger_result
	if Serializable_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling Executer.canTrigger")
		else
			call error("Called Executer.canTrigger on invalid object.")
		endif
	endif
	set Executer_Executer_canTrigger_result = Executer_canTrigger(this_1, e_1)
	return Executer_Executer_canTrigger_result
endfunction

function Executer_changeTerrain takes integer this_1, boolean isAction returns nothing
	local real tuple_temp = dispatch_StaticBaseObject_BaseObject_StaticBaseObject_getRallyPoint(this_1)
	local real tuple_temp_1 = dispatch_StaticBaseObject_BaseObject_StaticBaseObject_getRallyPoint_return_y
	local real tuple_temp_2 = dispatch_StaticBaseObject_BaseObject_StaticBaseObject_getRallyPoint_return_z
	local real rallyPos_x_1 = tuple_temp
	local real rallyPos_y_1 = tuple_temp_1
	local real rallyPos_z_1 = tuple_temp_2
	local integer data_1 = getRegionData(rallyPos_x_1, rallyPos_y_1, rallyPos_z_1)
	local integer tileID
	local integer temp_tuple_walkableId
	local integer temp_tuple_unwalkableId
	local integer tuple_temp_3
	local integer tuple_temp_4
	if isAction then
		set tileID = Executer_tiletype[this_1]
	else
		set tileID = Executer_nottiletype[this_1]
	endif
	if tileID == 808464432 then
		call dispatch_RegionData_RegionData_RegionData_getTypeSet(data_1)
		set tuple_temp_3 = dispatch_RegionData_RegionData_RegionData_getTypeSet_return_walkableId
		set temp_tuple_walkableId = tuple_temp_3
		set tileID = temp_tuple_walkableId
	elseif tileID == 808464433 then
		call dispatch_RegionData_RegionData_RegionData_getTypeSet(data_1)
		set tuple_temp_4 = dispatch_RegionData_RegionData_RegionData_getTypeSet_return_unwalkableId
		set temp_tuple_unwalkableId = tuple_temp_4
		set tileID = temp_tuple_unwalkableId
	endif
	call vec2_changeRect(vec3_toVec2(rallyPos_x_1, rallyPos_y_1, rallyPos_z_1), vec3_toVec2_return_y, tileID, Executer_horizontalTileSize[this_1], Executer_verticalTileSize[this_1], Entity_owner[this_1])
endfunction

function dispatch_Executer_Executer_Executer_changeTerrain takes integer this_1, boolean isAction returns nothing
	if Serializable_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling Executer.changeTerrain")
		else
			call error("Called Executer.changeTerrain on invalid object.")
		endif
	endif
	call Executer_changeTerrain(this_1, isAction)
endfunction

function StaticBaseObject_getRallyUnit takes integer this_1 returns unit
	return StaticBaseObject_rallyUnit[this_1]
endfunction

function dispatch_StaticBaseObject_BaseObject_StaticBaseObject_getRallyUnit takes integer this_1 returns unit
	local unit BaseObject_StaticBaseObject_getRallyUnit_result
	if Serializable_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling StaticBaseObject.getRallyUnit")
		else
			call error("Called StaticBaseObject.getRallyUnit on invalid object.")
		endif
	endif
	set BaseObject_StaticBaseObject_getRallyUnit_result = StaticBaseObject_getRallyUnit(this_1)
	return BaseObject_StaticBaseObject_getRallyUnit_result
endfunction

function Executer_negativeAction takes integer this_1 returns nothing
	local integer target = unit_getEntity(dispatch_StaticBaseObject_BaseObject_StaticBaseObject_getRallyUnit(this_1))
	local integer temp = Executer_actionMode[this_1]
	local integer door
	local integer instanceOfTemp
	local integer instanceOfTemp_1
	local integer instanceOfTemp_2
	local integer instanceOfTemp_3
	local integer instanceOfTemp_4
	local integer instanceOfTemp_5
	if temp == 2 then
		if target == 0 then
			call DisplayTextToPlayer(Entity_owner[this_1], 0., 0., "|cffC51019Must select an object with the Executer")
		endif
		set instanceOfTemp = Serializable_typeId[target]
		if instanceOfTemp >= 1194 and instanceOfTemp <= 1211 then
			call dispatch_StaticBaseObject_BaseObject_StaticBaseObject_setEnabled(target, true)
		else
			set instanceOfTemp_1 = Serializable_typeId[target]
			if instanceOfTemp_1 >= 1172 and instanceOfTemp_1 <= 1192 then
				call dispatch_SetupObject_SetupObject_SetupObject_setEnabled(target, true)
			elseif Serializable_typeId[target] == 1214 then
				call dispatch_Door_Door_Door_openDoor(target)
			else
				call DisplayTextToPlayer(Entity_owner[this_1], 0., 0., "|cffC51019Invalid object selected")
			endif
		endif
	elseif temp == 3 then
		if target == 0 then
			call DisplayTextToPlayer(Entity_owner[this_1], 0., 0., "|cffC51019Must select an object with the Executer")
		endif
		set instanceOfTemp_2 = Serializable_typeId[target]
		if instanceOfTemp_2 >= 1194 and instanceOfTemp_2 <= 1211 then
			call dispatch_StaticBaseObject_BaseObject_StaticBaseObject_setEnabled(target,  not StaticBaseObject_enabled[target])
		else
			set instanceOfTemp_3 = Serializable_typeId[target]
			if instanceOfTemp_3 >= 1172 and instanceOfTemp_3 <= 1192 then
				call dispatch_SetupObject_SetupObject_SetupObject_setEnabled(target,  not SetupObject_enabled[target])
			elseif Serializable_typeId[target] == 1214 then
				set door = target
				if Door_opened[door] then
					call dispatch_Door_Door_Door_closeDoor(door)
				else
					call dispatch_Door_Door_Door_openDoor(door)
				endif
			else
				call DisplayTextToPlayer(Entity_owner[this_1], 0., 0., "|cffC51019Invalid object selected")
			endif
		endif
	elseif temp == 1 then
		if target == 0 then
			call DisplayTextToPlayer(Entity_owner[this_1], 0., 0., "|cffC51019Must select an object with the Executer")
		endif
		set instanceOfTemp_4 = Serializable_typeId[target]
		if instanceOfTemp_4 >= 1194 and instanceOfTemp_4 <= 1211 then
			call dispatch_StaticBaseObject_BaseObject_StaticBaseObject_setEnabled(target, false)
		else
			set instanceOfTemp_5 = Serializable_typeId[target]
			if instanceOfTemp_5 >= 1172 and instanceOfTemp_5 <= 1192 then
				call dispatch_SetupObject_SetupObject_SetupObject_setEnabled(target, false)
			elseif Serializable_typeId[target] == 1214 then
				call dispatch_Door_Door_Door_closeDoor(target)
			else
				call DisplayTextToPlayer(Entity_owner[this_1], 0., 0., "|cffC51019Invalid object selected")
			endif
		endif
	elseif temp == 6 then
		call dispatch_Executer_Executer_Executer_changeTerrain(this_1, false)
	else
		call printTimedToPlayer("Executer has no action set", 15., Entity_owner[this_1])
	endif
endfunction

function dispatch_Executer_Executer_Executer_negativeAction takes integer this_1 returns nothing
	if Serializable_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling Executer.negativeAction")
		else
			call error("Called Executer.negativeAction on invalid object.")
		endif
	endif
	call Executer_negativeAction(this_1)
endfunction

function Executer_onLeave takes integer this_1 returns nothing
	local integer leftEntity = unit_getEntity(GetLeavingUnit())
	if StaticBaseObject_enabled[this_1] and dispatch_Executer_Executer_Executer_canTrigger(this_1, leftEntity) then
		call dispatch_LinkedList_LinkedList_LinkedList_remove(Executer_entitiesOnPlate[this_1], leftEntity)
		if dispatch_LinkedList_LinkedList_LinkedList_isEmpty(Executer_entitiesOnPlate[this_1]) and Executer_ON[this_1] then
			call dispatch_Executer_Executer_Executer_negativeAction(this_1)
			set Executer_ON[this_1] = false
			if Executer_dummy[this_1] != null then
				call SetDestructableAnimation(Executer_dummy[this_1], "stand alternate")
			endif
		endif
	endif
endfunction

function dispatch_Executer_Executer_Executer_onLeave takes integer this_1 returns nothing
	if Serializable_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling Executer.onLeave")
		else
			call error("Called Executer.onLeave on invalid object.")
		endif
	endif
	call Executer_onLeave(this_1)
endfunction

function region_loadRegionData takes region this_1 returns integer
	return dispatch_HashMap_HashMap_HashMap_get(EventHelper_regionMap, regionToIndex(this_1))
endfunction

function code__Condition_addCondition_Executer_Executer takes nothing returns nothing
	call dispatch_Executer_Executer_Executer_onLeave(region_loadRegionData(GetTriggeringRegion()))
endfunction

function StaticBaseObject_getRallyAngle takes integer this_1 returns real
	local real tuple_temp
	if StaticBaseObject_rallyUnit[this_1] != null then
		set tuple_temp = vec3_angleTo2d(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1], unit_getPos(StaticBaseObject_rallyUnit[this_1]), unit_getPos_return_y)
		set StaticBaseObject_rallyAngle_radians[this_1] = tuple_temp
	endif
	set StaticBaseObject_getRallyAngle_return_radians = StaticBaseObject_rallyAngle_radians[this_1]
	return StaticBaseObject_getRallyAngle_return_radians
endfunction

function dispatch_StaticBaseObject_BaseObject_StaticBaseObject_getRallyAngle takes integer this_1 returns real
	local real BaseObject_StaticBaseObject_getRallyAngle_result_radians
	local real tuple_temp
	if Serializable_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling StaticBaseObject.getRallyAngle")
		else
			call error("Called StaticBaseObject.getRallyAngle on invalid object.")
		endif
	endif
	set tuple_temp = StaticBaseObject_getRallyAngle(this_1)
	set BaseObject_StaticBaseObject_getRallyAngle_result_radians = tuple_temp
	set dispatch_StaticBaseObject_BaseObject_StaticBaseObject_getRallyAngle_return_radians = BaseObject_StaticBaseObject_getRallyAngle_result_radians
	return dispatch_StaticBaseObject_BaseObject_StaticBaseObject_getRallyAngle_return_radians
endfunction

function construct_BigKiller takes integer this_1, real pos_x_1, real pos_y_1, player owner, real facing_radians returns nothing
	local integer temp = this_1
	local real tuple_temp = vec2_toVec3(pos_x_1, pos_y_1)
	local real tuple_temp_1 = vec2_toVec3_return_y
	local real tuple_temp_2 = vec2_toVec3_return_z
	local real temp_x = tuple_temp
	local real temp_y = tuple_temp_1
	local real temp_z = tuple_temp_2
	local player temp_1 = owner
	local integer temp_tuple_bigKillerId
	local integer tuple_temp_3
	call dispatch_RegionData_RegionData_RegionData_getTypeSet(getRegionData_3304(pos_x_1, pos_y_1))
	set tuple_temp_3 = dispatch_RegionData_RegionData_RegionData_getTypeSet_return_bigKillerId
	set temp_tuple_bigKillerId = tuple_temp_3
	call construct_EscaperSensorSetup(temp, temp_x, temp_y, temp_z, temp_1, temp_tuple_bigKillerId, facing_radians, EscaperKillers_COLL_SIZE_BK, EscaperKillers_COLL_SIZE_BK * 0.75)
	call BigKiller_init(this_1)
endfunction

function new_BigKiller takes real pos_x_1, real pos_y_1, player owner, real facing_radians returns integer
	local integer this_1 = alloc_BigKiller()
	call construct_BigKiller(this_1, pos_x_1, pos_y_1, owner, facing_radians)
	return this_1
endfunction

function construct_BigRandomKiller takes integer this_1, real pos_x_1, real pos_y_1, player owner, real facing_radians returns nothing
	call construct_EscaperSensorSetup(this_1, vec2_toVec3(pos_x_1, pos_y_1), vec2_toVec3_return_y, vec2_toVec3_return_z, owner, EscaperKillers_BIG_RANDOM_KILLER_ID, facing_radians, EscaperKillers_COLL_SIZE_BRK, EscaperKillers_COLL_SIZE_BRK)
	call BigRandomKiller_init(this_1)
	call dispatch_BigRandomKiller_EscaperKillers_BigRandomKiller_setupRandKiller(this_1)
endfunction

function new_BigRandomKiller takes real pos_x_1, real pos_y_1, player owner, real facing_radians returns integer
	local integer this_1 = alloc_BigRandomKiller()
	call construct_BigRandomKiller(this_1, pos_x_1, pos_y_1, owner, facing_radians)
	return this_1
endfunction

function construct_GlaiveKiller takes integer this_1, real pos_x_1, real pos_y_1, player owner, real facing_radians returns nothing
	call construct_EscaperSensorSetup(this_1, vec2_toVec3(pos_x_1, pos_y_1), vec2_toVec3_return_y, vec2_toVec3_return_z, owner, EscaperKillers_GLAIVE_KILLER_ID, facing_radians, EscaperKillers_COLL_SIZE_GLAIVE, EscaperKillers_COLL_SIZE_GLAIVE)
	call GlaiveKiller_init(this_1)
endfunction

function new_GlaiveKiller takes real pos_x_1, real pos_y_1, player owner, real facing_radians returns integer
	local integer this_1 = alloc_GlaiveKiller()
	call construct_GlaiveKiller(this_1, pos_x_1, pos_y_1, owner, facing_radians)
	return this_1
endfunction

function construct_SmallKiller takes integer this_1, real pos_x_1, real pos_y_1, player owner, real facing_radians returns nothing
	local integer temp = this_1
	local real tuple_temp = vec2_toVec3(pos_x_1, pos_y_1)
	local real tuple_temp_1 = vec2_toVec3_return_y
	local real tuple_temp_2 = vec2_toVec3_return_z
	local real temp_x = tuple_temp
	local real temp_y = tuple_temp_1
	local real temp_z = tuple_temp_2
	local player temp_1 = owner
	local integer temp_tuple_smallKillerId
	local integer tuple_temp_3
	call dispatch_RegionData_RegionData_RegionData_getTypeSet(getRegionData_3304(pos_x_1, pos_y_1))
	set tuple_temp_3 = dispatch_RegionData_RegionData_RegionData_getTypeSet_return_smallKillerId
	set temp_tuple_smallKillerId = tuple_temp_3
	call construct_EscaperSensorSetup(temp, temp_x, temp_y, temp_z, temp_1, temp_tuple_smallKillerId, facing_radians, EscaperKillers_COLL_SIZE_SK, EscaperKillers_COLL_SIZE_SK + 4.)
	call SmallKiller_init(this_1)
endfunction

function new_SmallKiller takes real pos_x_1, real pos_y_1, player owner, real facing_radians returns integer
	local integer this_1 = alloc_SmallKiller()
	call construct_SmallKiller(this_1, pos_x_1, pos_y_1, owner, facing_radians)
	return this_1
endfunction

function construct_SmallRandomKiller takes integer this_1, real pos_x_1, real pos_y_1, player owner, real facing_radians returns nothing
	call construct_EscaperSensorSetup(this_1, vec2_toVec3(pos_x_1, pos_y_1), vec2_toVec3_return_y, vec2_toVec3_return_z, owner, EscaperKillers_SMALL_RANDOM_KILLER_ID, facing_radians, EscaperKillers_COLL_SIZE_SRK, EscaperKillers_COLL_SIZE_SRK)
	call SmallRandomKiller_init(this_1)
	call dispatch_SmallRandomKiller_EscaperKillers_SmallRandomKiller_setupRandKiller(this_1)
endfunction

function new_SmallRandomKiller takes real pos_x_1, real pos_y_1, player owner, real facing_radians returns integer
	local integer this_1 = alloc_SmallRandomKiller()
	call construct_SmallRandomKiller(this_1, pos_x_1, pos_y_1, owner, facing_radians)
	return this_1
endfunction

function construct_TankKiller takes integer this_1, real pos_x_1, real pos_y_1, player owner, real facing_radians returns nothing
	call construct_EscaperSensorSetup(this_1, vec2_toVec3(pos_x_1, pos_y_1), vec2_toVec3_return_y, vec2_toVec3_return_z, owner, EscaperKillers_TANK_KILLER_ID, facing_radians, EscaperKillers_COLL_SIZE_TANK, EscaperKillers_COLL_SIZE_TANK)
	call TankKiller_init(this_1)
endfunction

function new_TankKiller takes real pos_x_1, real pos_y_1, player owner, real facing_radians returns integer
	local integer this_1 = alloc_TankKiller()
	call construct_TankKiller(this_1, pos_x_1, pos_y_1, owner, facing_radians)
	return this_1
endfunction

function Executer_createUnitInternal takes integer this_1 returns nothing
	local real tuple_temp = vec3_toVec2(dispatch_StaticBaseObject_BaseObject_StaticBaseObject_getRallyPoint(this_1), dispatch_StaticBaseObject_BaseObject_StaticBaseObject_getRallyPoint_return_y, dispatch_StaticBaseObject_BaseObject_StaticBaseObject_getRallyPoint_return_z)
	local real tuple_temp_1 = vec3_toVec2_return_y
	local real rallyPos_x_1 = tuple_temp
	local real rallyPos_y_1 = tuple_temp_1
	local integer data_1 = getRegionData_3304(rallyPos_x_1, rallyPos_y_1)
	local integer temp
	if dispatch_RegionData_RegionData_RegionData_canBuild(data_1, Entity_owner[this_1]) then
		set temp = Executer_actionUnit[this_1]
		if temp == 3 then
			call new_SmallKiller(rallyPos_x_1, rallyPos_y_1, Entity_owner[this_1], dispatch_StaticBaseObject_BaseObject_StaticBaseObject_getRallyAngle(this_1))
		elseif temp == 4 then
			call new_BigKiller(rallyPos_x_1, rallyPos_y_1, Entity_owner[this_1], dispatch_StaticBaseObject_BaseObject_StaticBaseObject_getRallyAngle(this_1))
		elseif temp == 5 then
			call new_SmallRandomKiller(rallyPos_x_1, rallyPos_y_1, Entity_owner[this_1], dispatch_StaticBaseObject_BaseObject_StaticBaseObject_getRallyAngle(this_1))
		elseif temp == 6 then
			call new_BigRandomKiller(rallyPos_x_1, rallyPos_y_1, Entity_owner[this_1], dispatch_StaticBaseObject_BaseObject_StaticBaseObject_getRallyAngle(this_1))
		elseif temp == 1 then
			call new_TankKiller(rallyPos_x_1, rallyPos_y_1, Entity_owner[this_1], dispatch_StaticBaseObject_BaseObject_StaticBaseObject_getRallyAngle(this_1))
		elseif temp == 2 then
			call new_GlaiveKiller(rallyPos_x_1, rallyPos_y_1, Entity_owner[this_1], dispatch_StaticBaseObject_BaseObject_StaticBaseObject_getRallyAngle(this_1))
		elseif temp == 7 then
			call new_Pointer(rallyPos_x_1, rallyPos_y_1, Entity_owner[this_1], dispatch_StaticBaseObject_BaseObject_StaticBaseObject_getRallyAngle(this_1))
		elseif temp == 8 then
			call new_Knockbacker_3706(rallyPos_x_1, rallyPos_y_1, Entity_owner[this_1], dispatch_StaticBaseObject_BaseObject_StaticBaseObject_getRallyAngle(this_1))
		else
			call error("Unitcreator - Wrong Unittype")
		endif
	else
		call DisplayTextToPlayer(Entity_owner[this_1], 0., 0., "|cffC51019You have no permission to place units in this region!")
	endif
endfunction

function dispatch_Executer_Executer_Executer_createUnitInternal takes integer this_1 returns nothing
	if Serializable_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling Executer.createUnitInternal")
		else
			call error("Called Executer.createUnitInternal on invalid object.")
		endif
	endif
	call Executer_createUnitInternal(this_1)
endfunction

function Executer_moveUnit takes integer this_1 returns nothing
	local real tuple_temp = dispatch_StaticBaseObject_BaseObject_StaticBaseObject_getRallyPoint(this_1)
	local real tuple_temp_1 = dispatch_StaticBaseObject_BaseObject_StaticBaseObject_getRallyPoint_return_y
	local real rallyPos_x_1 = tuple_temp
	local real rallyPos_y_1 = tuple_temp_1
	if Executer_moveOrderString[this_1] == "stop" then
		call IssueImmediateOrder(Executer_unitToMove[this_1], Executer_moveOrderString[this_1])
	else
		call IssuePointOrder(Executer_unitToMove[this_1], Executer_moveOrderString[this_1], rallyPos_x_1, rallyPos_y_1)
	endif
endfunction

function dispatch_Executer_Executer_Executer_moveUnit takes integer this_1 returns nothing
	if Serializable_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling Executer.moveUnit")
		else
			call error("Called Executer.moveUnit on invalid object.")
		endif
	endif
	call Executer_moveUnit(this_1)
endfunction

function Executer_findAction takes integer this_1 returns nothing
	local integer target = unit_getEntity(dispatch_StaticBaseObject_BaseObject_StaticBaseObject_getRallyUnit(this_1))
	local integer temp = Executer_actionMode[this_1]
	local integer door
	local integer instanceOfTemp
	local integer instanceOfTemp_1
	local integer instanceOfTemp_2
	local integer instanceOfTemp_3
	local integer instanceOfTemp_4
	local integer instanceOfTemp_5
	if temp == 0 then
		call DisplayTextToPlayer(Entity_owner[this_1], 0., 0., "|cffC51019Please select an Action Mode for the Executer")
	elseif temp == 2 then
		if target == 0 then
			call DisplayTextToPlayer(Entity_owner[this_1], 0., 0., "|cffC51019Must select an object with the Executer")
		else
			set instanceOfTemp = Serializable_typeId[target]
			if instanceOfTemp >= 1194 and instanceOfTemp <= 1211 then
				call dispatch_StaticBaseObject_BaseObject_StaticBaseObject_setEnabled(target, false)
			else
				set instanceOfTemp_1 = Serializable_typeId[target]
				if instanceOfTemp_1 >= 1172 and instanceOfTemp_1 <= 1192 then
					call dispatch_SetupObject_SetupObject_SetupObject_setEnabled(target, true)
				elseif Serializable_typeId[target] == 1214 then
					call dispatch_Door_Door_Door_closeDoor(target)
				else
					call DisplayTextToPlayer(Entity_owner[this_1], 0., 0., "|cffC51019Invalid object selected")
				endif
			endif
		endif
	elseif temp == 3 then
		if target == 0 then
			call DisplayTextToPlayer(Entity_owner[this_1], 0., 0., "|cffC51019Must select an object with the Executer")
		else
			set instanceOfTemp_2 = Serializable_typeId[target]
			if instanceOfTemp_2 >= 1194 and instanceOfTemp_2 <= 1211 then
				call dispatch_StaticBaseObject_BaseObject_StaticBaseObject_setEnabled(target,  not StaticBaseObject_enabled[target])
			else
				set instanceOfTemp_3 = Serializable_typeId[target]
				if instanceOfTemp_3 >= 1172 and instanceOfTemp_3 <= 1192 then
					call dispatch_SetupObject_SetupObject_SetupObject_setEnabled(target,  not SetupObject_enabled[target])
				elseif Serializable_typeId[target] == 1214 then
					set door = target
					if Door_opened[door] then
						call dispatch_Door_Door_Door_closeDoor(door)
					else
						call dispatch_Door_Door_Door_openDoor(door)
					endif
				else
					call DisplayTextToPlayer(Entity_owner[this_1], 0., 0., "|cffC51019Invalid object selected")
				endif
			endif
		endif
	elseif temp == 1 then
		if target == 0 then
			call DisplayTextToPlayer(Entity_owner[this_1], 0., 0., "|cffC51019Must select an object with the Executer")
		else
			set instanceOfTemp_4 = Serializable_typeId[target]
			if instanceOfTemp_4 >= 1194 and instanceOfTemp_4 <= 1211 then
				call dispatch_StaticBaseObject_BaseObject_StaticBaseObject_setEnabled(target, true)
			else
				set instanceOfTemp_5 = Serializable_typeId[target]
				if instanceOfTemp_5 >= 1172 and instanceOfTemp_5 <= 1192 then
					call dispatch_SetupObject_SetupObject_SetupObject_setEnabled(target, true)
				elseif Serializable_typeId[target] == 1214 then
					call dispatch_Door_Door_Door_openDoor(target)
				else
					call DisplayTextToPlayer(Entity_owner[this_1], 0., 0., "|cffC51019Invalid object selected")
				endif
			endif
		endif
	elseif temp == 6 then
		call dispatch_Executer_Executer_Executer_changeTerrain(this_1, true)
	elseif temp == 5 then
		call dispatch_Executer_Executer_Executer_moveUnit(this_1)
	elseif temp == 4 then
		call dispatch_Executer_Executer_Executer_createUnitInternal(this_1)
	else
		call printTimedToPlayer("Executer has no action set", 15., Entity_owner[this_1])
	endif
endfunction

function dispatch_Executer_Executer_Executer_findAction takes integer this_1 returns nothing
	if Serializable_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling Executer.findAction")
		else
			call error("Called Executer.findAction on invalid object.")
		endif
	endif
	call Executer_findAction(this_1)
endfunction

function Executer_onEnter takes integer this_1 returns nothing
	local integer e_1 = unit_getEntity(GetEnteringUnit())
	if StaticBaseObject_enabled[this_1] and dispatch_Executer_Executer_Executer_canTrigger(this_1, e_1) then
		call dispatch_LinkedList_LinkedList_LinkedList_add_1(Executer_entitiesOnPlate[this_1], e_1)
		if  not Executer_ON[this_1] then
			call dispatch_Executer_Executer_Executer_findAction(this_1)
			set Executer_ON[this_1] = true
			if Executer_dummy[this_1] != null then
				call SetDestructableAnimation(Executer_dummy[this_1], "death")
			endif
		endif
	endif
endfunction

function dispatch_Executer_Executer_Executer_onEnter takes integer this_1 returns nothing
	if Serializable_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling Executer.onEnter")
		else
			call error("Called Executer.onEnter on invalid object.")
		endif
	endif
	call Executer_onEnter(this_1)
endfunction

function code__Condition_addCondition_Executer_Executer_2064 takes nothing returns nothing
	call dispatch_Executer_Executer_Executer_onEnter(region_loadRegionData(GetTriggeringRegion()))
endfunction

function item_isVisible takes item this_1 returns boolean
	return IsItemVisible(this_1)
endfunction

function code__EnumItemsInRect_TerrainUtils takes nothing returns nothing
	if item_isVisible(GetEnumItem()) then
		set TerrainUtils_hiddenItems[TerrainUtils_hiddenItemsCount] = GetEnumItem()
		call item_setVisible(TerrainUtils_hiddenItems[TerrainUtils_hiddenItemsCount], false)
		set TerrainUtils_hiddenItemsCount = TerrainUtils_hiddenItemsCount + 1
	endif
endfunction

function Executer_disable takes integer this_1 returns nothing
	call unit_setVertexColor(UnitEntity_actor[this_1], 44, 44, 44, 255)
	set Executer_disabled[this_1] = true
	call unit_addAbility(UnitEntity_actor[this_1], Executer_REACTIVATE_ABIL)
	call createFText_2346(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1], 0., 0.05, "Deactivated", 10., 2., 50, 50, 50, 0, Entity_owner[this_1])
endfunction

function dispatch_Executer_Executer_Executer_disable takes integer this_1 returns nothing
	if Serializable_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling Executer.disable")
		else
			call error("Called Executer.disable on invalid object.")
		endif
	endif
	call Executer_disable(this_1)
endfunction

function Executer_onEvent takes integer this_1 returns nothing
	local integer entity_1 = unit_getEntity(GetTriggerUnit())
	local integer temp
	if dispatch_Executer_Executer_Executer_canTrigger(this_1, entity_1) then
		set temp = Executer_eventMode[this_1]
		if temp == 0 then
			call DisplayTextToPlayer(Entity_owner[this_1], 0., 0., "|cffC51019Please select an Event Mode for the Executer")
		elseif temp == 1 then
			call dispatch_Executer_Executer_Executer_findAction(this_1)
		elseif temp == 2 then
			if  not Executer_disabled[this_1] then
				call flashEffect(Abilities_charmTarget, dispatch_UnitEntity_Entity_UnitEntity_getPos(this_1), dispatch_UnitEntity_Entity_UnitEntity_getPos_return_y, dispatch_UnitEntity_Entity_UnitEntity_getPos_return_z)
				call dispatch_Executer_Executer_Executer_findAction(this_1)
				call dispatch_Executer_Executer_Executer_disable(this_1)
			endif
		elseif temp == 3 then
			if Executer_ON[this_1] then
				call dispatch_Executer_Executer_Executer_negativeAction(this_1)
				set Executer_ON[this_1] = false
				if Executer_dummy[this_1] != null then
					call SetDestructableAnimation(Executer_dummy[this_1], "death")
				endif
			else
				call dispatch_Executer_Executer_Executer_findAction(this_1)
				set Executer_ON[this_1] = true
				if Executer_dummy[this_1] != null then
					call SetDestructableAnimation(Executer_dummy[this_1], "stand")
				endif
			endif
		endif
	endif
endfunction

function dispatch_Executer_Executer_Executer_onEvent takes integer this_1 returns nothing
	if Serializable_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling Executer.onEvent")
		else
			call error("Called Executer.onEvent on invalid object.")
		endif
	endif
	call Executer_onEvent(this_1)
endfunction

function code__Executer_Executer takes nothing returns nothing
	call dispatch_Executer_Executer_Executer_onEvent(unit_getEntity(trigger_getSource(GetTriggeringTrigger())))
endfunction

function code__Executer_Executer_2067 takes nothing returns nothing
	call dispatch_Executer_Executer_Executer_onEvent(unit_getEntity(trigger_getSource(GetTriggeringTrigger())))
endfunction

function currentCallback takes nothing returns integer
	return ClosureForGroups_tempCallbacks[ClosureForGroups_tempCallbacksCount - 1]
endfunction

function filterCallback takes unit filter returns nothing
	if ClosureForGroups_iterCount < ClosureForGroups_maxCount then
		call dispatch_ForGroupCallback_ClosureForGroups_ForGroupCallback_callback(currentCallback(), filter)
	endif
	set ClosureForGroups_iterCount = ClosureForGroups_iterCount + 1
endfunction

function code__Filter_ClosureForGroups takes nothing returns nothing
	call filterCallback(GetFilterUnit())
endfunction

function code__Filter_GroupEnumUnitsInRect_MGRandKill_MGRandKill takes nothing returns boolean
	return unit_getOwner(GetFilterUnit()) == GameConstants_STAFF_PLAYER
endfunction

function code__Filter_GroupEnumUnitsInRect_Startmaze_Startmaze takes nothing returns boolean
	return unit_getOwner(GetFilterUnit()) == GameConstants_STAFF_PLAYER
endfunction

function popUnit takes nothing returns nothing
	set OnUnitEnterLeave_tempUnitsCount = OnUnitEnterLeave_tempUnitsCount - 1
endfunction

function pushUnit takes unit u_1 returns nothing
	set OnUnitEnterLeave_tempUnits[OnUnitEnterLeave_tempUnitsCount] = u_1
	set OnUnitEnterLeave_tempUnitsCount = OnUnitEnterLeave_tempUnitsCount + 1
endfunction

function trigger_evaluate takes trigger this_1 returns boolean
	return TriggerEvaluate(this_1)
endfunction

function unit_makeAbilityPermanent takes unit this_1, integer abil, boolean flag returns boolean
	return UnitMakeAbilityPermanent(this_1, flag, abil)
endfunction

function prepareUnit takes unit u_1 returns nothing
	local unit receiver = u_1
	local unit receiver_1
	call unit_addAbility(receiver, OnUnitEnterLeave_ABILITY_ID)
	set receiver_1 = receiver
	call unit_makeAbilityPermanent(receiver_1, OnUnitEnterLeave_ABILITY_ID, true)
	call pushUnit(u_1)
	call trigger_evaluate(OnUnitEnterLeave_eventTrigger)
	call popUnit()
endfunction

function code__Filter_registerEnterRegion_nullTimer_OnUnitEnterLeave takes nothing returns nothing
	call prepareUnit(GetFilterUnit())
endfunction

function code__ForGroup_nullTimer_OnUnitEnterLeave takes nothing returns nothing
	call prepareUnit(GetEnumUnit())
endfunction

function StaticEscaperSensorSetup_onSensor takes integer this_1 returns nothing
	local integer target = unit_getEntity(GetTriggerUnit())
	local integer instanceOfTemp = Serializable_typeId[target]
	local real zdelta
	local real temp_tuple_z
	local integer escaper
	local real tuple_temp
	if instanceOfTemp >= 1163 and instanceOfTemp <= 1168 then
		call dispatch_UnitEntity_Entity_UnitEntity_getPos(this_1)
		set tuple_temp = dispatch_UnitEntity_Entity_UnitEntity_getPos_return_z
		set temp_tuple_z = tuple_temp
		set zdelta = temp_tuple_z - Entity_pos_z[target]
		if real_abs(zdelta) <= StaticEscaperSensorSetup_sensorHeight[this_1] then
			set escaper = target
			call dispatch_Escaper_Escaper_Escaper_kill(escaper, this_1)
		endif
	endif
endfunction

function dispatch_StaticEscaperSensorSetup_EscaperSensor_StaticEscaperSensorSetup_onSensor takes integer this_1 returns nothing
	if Serializable_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling StaticEscaperSensorSetup.onSensor")
		else
			call error("Called StaticEscaperSensorSetup.onSensor on invalid object.")
		endif
	endif
	call StaticEscaperSensorSetup_onSensor(this_1)
endfunction

function StaticEscaperSensorSetup_onSensorEvent takes nothing returns nothing
	local integer obj_1 = unit_getEntity(trigger_getSource(GetTriggeringTrigger()))
	call dispatch_StaticEscaperSensorSetup_EscaperSensor_StaticEscaperSensorSetup_onSensor(obj_1)
endfunction

function code__StaticEscaperSensorSetup_EscaperSensor takes nothing returns nothing
	call StaticEscaperSensorSetup_onSensorEvent()
endfunction

function code__StaticEscaperSensorSetup_EscaperSensor_2074 takes nothing returns nothing
	call StaticEscaperSensorSetup_onSensorEvent()
endfunction

function code__Waypoint_Waypoint takes nothing returns boolean
	return unit_getFlyHeight(GetTriggerUnit()) < 64. and StaticBaseObject_enabled[unit_getEntity(trigger_getSource(GetTriggeringTrigger()))]
endfunction

function code__Waypoint_Waypoint_2076 takes nothing returns boolean
	return true
endfunction

function multiboard_isDisplayed takes multiboard this_1 returns boolean
	return IsMultiboardDisplayed(this_1)
endfunction

function startDebug takes nothing returns nothing
	call timer_startPeriodic(CreateTimer(), 1., ref_function_code__startPeriodic_DebugInfo)
endfunction

function code__addAction_DebugInfo takes nothing returns nothing
	if DebugInfo_isFirst then
		set DebugInfo_isFirst = false
		call startDebug()
	endif
	if GetLocalPlayer() == GetTriggerPlayer() then
		call multiboard_display(DebugInfo_mb,  not multiboard_isDisplayed(DebugInfo_mb))
	endif
endfunction

function print takes string msg returns nothing
	call DisplayTimedTextToPlayer(Player_localPlayer, 0., 0., Printing_DEBUG_MSG_DURATION, msg)
endfunction

function code__addAction_RegionData takes nothing returns nothing
	local integer entity_1 = unit_getEntity(GetTriggerUnit())
	local integer instanceOfTemp = Serializable_typeId[entity_1]
	if instanceOfTemp >= 1163 and instanceOfTemp <= 1168 then
		call dispatch_Escaper_Escaper_Escaper_stop(entity_1)
		call dispatch_Escaper_Escaper_Escaper_kill(entity_1, 0)
	elseif entity_1 != 0 and unit_getTypeId(GetTriggerUnit()) != DummyRecycler_DUMMY_UNIT_ID then
		call print(unit_getName(UnitEntity_actor[entity_1]))
		call Log_debug("RegionDataDelete")
		call cyc_RevivePoint_terminate(18, entity_1)
	endif
endfunction

function rectToIndex takes rect object returns integer
	return handle_getTCHandleId(object)
endfunction

function hashtable_loadRectHandle takes hashtable this_1, integer parentKey, integer childKey returns rect
	return LoadRectHandle(this_1, parentKey, childKey)
endfunction

function Table_loadRect takes integer this_1, integer parentKey returns rect
	return hashtable_loadRectHandle(Table_ht, this_1, parentKey)
endfunction

function dispatch_Table_Table_Table_loadRect takes integer this_1, integer parentKey returns rect
	local rect Table_Table_loadRect_result
	if Table_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling Table.loadRect")
		else
			call error("Called Table.loadRect on invalid object.")
		endif
	endif
	set Table_Table_loadRect_result = Table_loadRect(this_1, parentKey)
	return Table_Table_loadRect_result
endfunction

function rectFromIndex takes integer index returns rect
	call dispatch_Table_Table_Table_saveFogState(TypeCasting_typecastdata, 0, ConvertFogState(index))
	return dispatch_Table_Table_Table_loadRect(TypeCasting_typecastdata, 0)
endfunction

function trigger_getSourceRect takes trigger this_1 returns rect
	return rectFromIndex(dispatch_HashMap_HashMap_HashMap_get(EventHelper_rectMap, triggerToIndex(this_1)))
endfunction

function RegionData_enterRect takes nothing returns nothing
	local unit u_1 = GetTriggerUnit()
	local integer data_1 = unit_getEntity(u_1)
	local integer rdata = dispatch_HashMap_HashMap_HashMap_get(RegionData_regionMap, rectToIndex(trigger_getSourceRect(GetTriggeringTrigger())))
	local integer edata
	local integer instanceOfTemp
	if data_1 != 0 then
		set instanceOfTemp = Serializable_typeId[data_1]
		if instanceOfTemp >= 1163 and instanceOfTemp <= 1168 then
			set edata = data_1
			if dispatch_RegionData_RegionData_RegionData_getTypeSet(rdata) == RegionType_getTypeSet(0) and dispatch_RegionData_RegionData_RegionData_getTypeSet_return_walkableId == RegionType_getTypeSet_return_walkableId and dispatch_RegionData_RegionData_RegionData_getTypeSet_return_unwalkableId == RegionType_getTypeSet_return_unwalkableId and dispatch_RegionData_RegionData_RegionData_getTypeSet_return_smallKillerId == RegionType_getTypeSet_return_smallKillerId and dispatch_RegionData_RegionData_RegionData_getTypeSet_return_bigKillerId == RegionType_getTypeSet_return_bigKillerId and dispatch_RegionData_RegionData_RegionData_getTypeSet_return_treeId == RegionType_getTypeSet_return_treeId and dispatch_RegionData_RegionData_RegionData_getTypeSet_return_smallObstacleId == RegionType_getTypeSet_return_smallObstacleId and dispatch_RegionData_RegionData_RegionData_getTypeSet_return_bigObstacleId == RegionType_getTypeSet_return_bigObstacleId and dispatch_RegionData_RegionData_RegionData_getTypeSet_return_bossId == RegionType_getTypeSet_return_bossId and dispatch_RegionData_RegionData_RegionData_getTypeSet_return_minionId == RegionType_getTypeSet_return_minionId and dispatch_RegionData_RegionData_RegionData_getTypeSet_return_highObstacleId == RegionType_getTypeSet_return_highObstacleId then
				call dispatch_UnitEntity_Entity_UnitEntity_setPos(edata, vec3_op_minus(dispatch_UnitEntity_Entity_UnitEntity_getPos(edata), dispatch_UnitEntity_Entity_UnitEntity_getPos_return_y, dispatch_UnitEntity_Entity_UnitEntity_getPos_return_z, dispatch_Escaper_Escaper_Escaper_getRealVel(edata), dispatch_Escaper_Escaper_Escaper_getRealVel_return_y, dispatch_Escaper_Escaper_Escaper_getRealVel_return_z), vec3_op_minus_return_y, vec3_op_minus_return_z)
				call dispatch_Escaper_Escaper_Escaper_stop(edata)
				call dispatch_Escaper_Escaper_Escaper_kill(edata, 0)
				call Entity_setCurrentRegion(edata)
			elseif isEscaperPlayer(Entity_owner[data_1]) then
				call dispatch_RegionData_RegionData_RegionData_revealRegion(rdata, Entity_owner[data_1])
				call dispatch_Escaper_Escaper_Escaper_updateRegionData(edata)
			endif
		elseif ( not dispatch_RegionData_RegionData_RegionData_canBuild(rdata, Entity_owner[data_1])) and ( not (Serializable_typeId[data_1] == 1162)) and ( not (Serializable_typeId[data_1] == 1170)) and ( not (Serializable_typeId[data_1] == 1193)) and ( not (Serializable_typeId[data_1] == 1227)) and ( not (Serializable_typeId[data_1] == 1223)) and ( not (Serializable_typeId[data_1] == 1209)) then
			call printTimedToPlayer("|cffC51019You have no permission to move units into this region", 15., Entity_owner[data_1])
			call Log_debug("no permission")
			if data_1 == 0 then
				call unit_kill(u_1)
			else
				call cyc_RevivePoint_terminate(18, data_1)
			endif
		endif
	endif
endfunction

function code__addAction_RegionData_RegionData takes nothing returns nothing
	call RegionData_enterRect()
endfunction

function EscaperSensorSetup_onSensor takes integer this_1, integer source, integer target returns nothing
	local integer instanceOfTemp = Serializable_typeId[target]
	local real zdelta
	local real temp_tuple_z
	local integer escaper
	local real tuple_temp
	if instanceOfTemp >= 1163 and instanceOfTemp <= 1168 then
		call dispatch_UnitEntity_Entity_UnitEntity_getPos(source)
		set tuple_temp = dispatch_UnitEntity_Entity_UnitEntity_getPos_return_z
		set temp_tuple_z = tuple_temp
		set zdelta = temp_tuple_z - Entity_pos_z[target]
		if real_abs(zdelta) <= EscaperSensorSetup_sensorHeight[this_1] then
			set escaper = target
			call dispatch_Escaper_Escaper_Escaper_kill(escaper, this_1)
		endif
	endif
endfunction

function Knockbacker_onSensor takes integer this_1, integer source, integer target returns nothing
	local integer instanceOfTemp = Serializable_typeId[target]
	local integer escaper
	local real epos_x
	local real epos_y
	local real epos_z
	local real epos2_x
	local real epos2_y
	local real epos2_z
	local real ang_radians
	local real tuple_temp
	local real tuple_temp_1
	local real tuple_temp_2
	local real tuple_temp_3
	local real tuple_temp_4
	local real tuple_temp_5
	local real tuple_temp_6
	if instanceOfTemp >= 1163 and instanceOfTemp <= 1168 then
		if Entity_pos_z[target] <= EscaperSensorSetup_sensorHeight[this_1] then
			set escaper = target
			set tuple_temp = vec3_op_minus(dispatch_UnitEntity_Entity_UnitEntity_getPos(escaper), dispatch_UnitEntity_Entity_UnitEntity_getPos_return_y, dispatch_UnitEntity_Entity_UnitEntity_getPos_return_z, dispatch_Escaper_Escaper_Escaper_getRealVel(escaper), dispatch_Escaper_Escaper_Escaper_getRealVel_return_y, dispatch_Escaper_Escaper_Escaper_getRealVel_return_z)
			set tuple_temp_1 = vec3_op_minus_return_y
			set tuple_temp_2 = vec3_op_minus_return_z
			set epos_x = tuple_temp
			set epos_y = tuple_temp_1
			set epos_z = tuple_temp_2
			set tuple_temp_3 = vec3_op_plus(dispatch_UnitEntity_Entity_UnitEntity_getPos(escaper), dispatch_UnitEntity_Entity_UnitEntity_getPos_return_y, dispatch_UnitEntity_Entity_UnitEntity_getPos_return_z, dispatch_Escaper_Escaper_Escaper_getRealVel(escaper), dispatch_Escaper_Escaper_Escaper_getRealVel_return_y, dispatch_Escaper_Escaper_Escaper_getRealVel_return_z)
			set tuple_temp_4 = vec3_op_plus_return_y
			set tuple_temp_5 = vec3_op_plus_return_z
			set epos2_x = tuple_temp_3
			set epos2_y = tuple_temp_4
			set epos2_z = tuple_temp_5
			set tuple_temp_6 = vec3_angleTo2d_4263(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1], vec3_op_mult(vec3_op_plus(epos_x, epos_y, epos_z, epos2_x, epos2_y, epos2_z), vec3_op_plus_return_y, vec3_op_plus_return_z, 0.5), vec3_op_mult_return_y, vec3_op_mult_return_z)
			set ang_radians = tuple_temp_6
			call dispatch_Entity_Entity_Entity_addVel(escaper, vec2_toVec3(angle_toVec(ang_radians, dispatch_ConfigValue_ConfigValue_ConfigValue_get(Knockbacker_kforce[this_1])), angle_toVec_return_y), vec2_toVec3_return_y, vec2_toVec3_return_z)
			call unit_damageTarget_4137(UnitEntity_actor[this_1], UnitEntity_actor[escaper], dispatch_ConfigValue_ConfigValue_ConfigValue_get(Knockbacker_damage[this_1]))
			call unit_setAnimation(UnitEntity_actor[this_1], "attack")
			call unit_setAnimation(SetupObject_setup[this_1], "attack")
			call effect_destr(addEffect_1565(Abilities_warStompCaster, Entity_pos_x[escaper], Entity_pos_y[escaper], Entity_pos_z[escaper]))
		endif
	endif
endfunction

function Pointer_onSensor takes integer this_1, integer source, integer target returns nothing
	local integer edata = target
	local integer data_1 = source
	local integer instanceOfTemp = Serializable_typeId[edata]
	local integer es
	local real tuple_temp
	if instanceOfTemp >= 1163 and instanceOfTemp <= 1168 then
		set es = edata
		if  not Entity_DupletListModule_active[data_1] then
			set tuple_temp = unit_getFacingAngle(UnitEntity_actor[data_1])
			set Pointer_angl_radians[data_1] = tuple_temp
		endif
		call unit_setFacing(UnitEntity_actor[es], Pointer_angl_radians[data_1])
	endif
endfunction

function dispatch_EscaperSensorSetup_EscaperSensor_EscaperSensorSetup_onSensor takes integer this_1, integer source, integer target returns nothing
	if Serializable_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling EscaperSensorSetup.onSensor")
		else
			call error("Called EscaperSensorSetup.onSensor on invalid object.")
		endif
	endif
	if Serializable_typeId[this_1] <= 1183 then
		if Serializable_typeId[this_1] <= 1182 then
			if Serializable_typeId[this_1] <= 1181 then
				call EscaperSensorSetup_onSensor(this_1, source, target)
			else
				call Knockbacker_onSensor(this_1, source, target)
			endif
		else
			call EscaperSensorSetup_onSensor(this_1, source, target)
		endif
	elseif Serializable_typeId[this_1] <= 1184 then
		call Pointer_onSensor(this_1, source, target)
	else
		call EscaperSensorSetup_onSensor(this_1, source, target)
	endif
endfunction

function onSensor_addSensorListener_EscaperSensorSetup_EscaperSensor takes integer this_1, integer source, integer target returns nothing
	call dispatch_EscaperSensorSetup_EscaperSensor_EscaperSensorSetup_onSensor(this_2977[this_1], source, target)
endfunction

function onSensor_addSensorListener_EscaperSensorSetup_EscaperSensor_3896 takes integer this_1, integer source, integer target returns nothing
	call dispatch_EscaperSensorSetup_EscaperSensor_EscaperSensorSetup_onSensor(this_2978[this_1], source, target)
endfunction

function onSensor_addSensorListener_EscaperSensorSetup_EscaperSensor_3897 takes integer this_1, integer source, integer target returns nothing
	call dispatch_EscaperSensorSetup_EscaperSensor_EscaperSensorSetup_onSensor(this_2979[this_1], source, target)
endfunction

function onSensor_addSensorListener_EscaperSensorSetup_EscaperSensor_3898 takes integer this_1, integer source, integer target returns nothing
	call dispatch_EscaperSensorSetup_EscaperSensor_EscaperSensorSetup_onSensor(this_2980[this_1], source, target)
endfunction

function player_panCameraToTimed takes player this_1, real pos_x_1, real pos_y_1, real duration returns nothing
	call PanCameraToTimedForPlayer(this_1, pos_x_1, pos_y_1, duration)
endfunction

function onSensor_addSensorListener_Portal_EscaperClasses takes integer this_1, integer w_source, integer target returns nothing
	local boolean teleport
	local integer i
	local integer ie
	local integer instanceOfTemp
	local boolean andLeft
	if Portal_destiny_x[this_2938[this_1]] != Vectors_ZERO2_x or Portal_destiny_y[this_2938[this_1]] != Vectors_ZERO2_y then
		set instanceOfTemp = Serializable_typeId[target]
		set andLeft = instanceOfTemp >= 1163 and instanceOfTemp <= 1168
	else
		set andLeft = false
	endif
	if andLeft then
		set teleport = true
		set i = 0
		loop
			exitwhen i > 5
			set ie = item_getEntity(UnitItemInSlot(UnitEntity_actor[target], i))
			if ie != 0 and Serializable_typeId[ie] == 1157 then
				set teleport = false
				exitwhen true
			endif
			set i = i + 1
		endloop
		if teleport then
			call dispatch_UnitEntity_Entity_UnitEntity_setPos(target, vec2_withZ(Portal_destiny_x[this_2938[this_1]], Portal_destiny_y[this_2938[this_1]], Entity_pos_z[target]), vec2_withZ_return_y, vec2_withZ_return_z)
			call flashEffect(Abilities_blinkCaster, Entity_pos_x[this_2938[this_1]], Entity_pos_y[this_2938[this_1]], Entity_pos_z[this_2938[this_1]])
			call flashEffect_3282(Abilities_blinkTarget, Portal_destiny_x[this_2938[this_1]], Portal_destiny_y[this_2938[this_1]])
			if  not Escaper_camlock[target] then
				call player_panCameraToTimed(unit_getOwner(UnitEntity_actor[target]), Portal_destiny_x[this_2938[this_1]], Portal_destiny_y[this_2938[this_1]], 0.03)
			endif
		endif
	endif
endfunction

function dispatch_SensorListener_Sensor_SensorListener_onSensor takes integer this_1, integer source, integer target returns nothing
	if SensorListener_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling SensorListener.onSensor")
		else
			call error("Called SensorListener.onSensor on invalid object.")
		endif
	endif
	if SensorListener_typeId[this_1] <= 1122 then
		if SensorListener_typeId[this_1] <= 1121 then
			if SensorListener_typeId[this_1] <= 1120 then
				call onSensor_addSensorListener_EscaperSensorSetup_EscaperSensor(this_1, source, target)
			else
				call onSensor_addSensorListener_EscaperSensorSetup_EscaperSensor_3896(this_1, source, target)
			endif
		else
			call onSensor_addSensorListener_EscaperSensorSetup_EscaperSensor_3897(this_1, source, target)
		endif
	elseif SensorListener_typeId[this_1] <= 1123 then
		call onSensor_addSensorListener_EscaperSensorSetup_EscaperSensor_3898(this_1, source, target)
	else
		call onSensor_addSensorListener_Portal_EscaperClasses(this_1, source, target)
	endif
endfunction

function code__addAction_Sensor_EscaperSensorSetup_EscaperSensor takes nothing returns nothing
	local trigger trig = GetTriggeringTrigger()
	local unit u_1 = GetTriggerUnit()
	local integer target
	local integer slistener
	if unit_getUserData(u_1) > 0 then
		set target = unit_getEntity(u_1)
		if target != 0 and ( not Entity_done[target]) then
			set slistener = dispatch_HashMap_HashMap_HashMap_get(EscaperSensorSetup_Sensor_sensorListeners, triggerToIndex(trig))
			if slistener != 0 then
				call dispatch_SensorListener_Sensor_SensorListener_onSensor(slistener, unit_getEntity(trigger_getSource(trig)), target)
			endif
		endif
	endif
endfunction

function code__addAction_Sensor_Portal_EscaperClasses takes nothing returns nothing
	local trigger trig = GetTriggeringTrigger()
	local unit u_1 = GetTriggerUnit()
	local integer target
	local integer slistener
	if unit_getUserData(u_1) > 0 then
		set target = unit_getEntity(u_1)
		if target != 0 and ( not Entity_done[target]) then
			set slistener = dispatch_HashMap_HashMap_HashMap_get(Portal_Sensor_sensorListeners, triggerToIndex(trig))
			if slistener != 0 then
				call dispatch_SensorListener_Sensor_SensorListener_onSensor(slistener, unit_getEntity(trigger_getSource(trig)), target)
			endif
		endif
	endif
endfunction

function ChunkedString_hasChunk takes integer this_1 returns boolean
	return ChunkedString_readIndex[this_1] < ChunkedString_chunkCount[this_1]
endfunction

function dispatch_ChunkedString_ChunkedString_ChunkedString_hasChunk takes integer this_1 returns boolean
	local boolean ChunkedString_ChunkedString_hasChunk_result
	if ChunkedString_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling ChunkedString.hasChunk")
		else
			call error("Called ChunkedString.hasChunk on invalid object.")
		endif
	endif
	set ChunkedString_ChunkedString_hasChunk_result = ChunkedString_hasChunk(this_1)
	return ChunkedString_ChunkedString_hasChunk_result
endfunction

function ChunkedString_getChunk takes integer this_1, integer index returns string
	if index == ChunkedString_chunkCount[this_1] then
		return ChunkedString_buffer[this_1]
	endif
	return dispatch_Table_Table_Table_loadString(ChunkedString_table[this_1], index)
endfunction

function dispatch_ChunkedString_ChunkedString_ChunkedString_getChunk takes integer this_1, integer index returns string
	local string ChunkedString_ChunkedString_getChunk_result
	if ChunkedString_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling ChunkedString.getChunk")
		else
			call error("Called ChunkedString.getChunk on invalid object.")
		endif
	endif
	set ChunkedString_ChunkedString_getChunk_result = ChunkedString_getChunk(this_1, index)
	return ChunkedString_ChunkedString_getChunk_result
endfunction

function ChunkedString_readChunk takes integer this_1 returns string
	set ChunkedString_readIndex[this_1] = ChunkedString_readIndex[this_1] + 1
	return dispatch_ChunkedString_ChunkedString_ChunkedString_getChunk(this_1, ChunkedString_readIndex[this_1])
endfunction

function dispatch_ChunkedString_ChunkedString_ChunkedString_readChunk takes integer this_1 returns string
	local string ChunkedString_ChunkedString_readChunk_result
	if ChunkedString_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling ChunkedString.readChunk")
		else
			call error("Called ChunkedString.readChunk on invalid object.")
		endif
	endif
	set ChunkedString_ChunkedString_readChunk_result = ChunkedString_readChunk(this_1)
	return ChunkedString_ChunkedString_readChunk_result
endfunction

function LinkedList_getFirst takes integer this_1 returns integer
	return LLEntry_elem[LLEntry_next[LinkedList_dummy[this_1]]]
endfunction

function dispatch_LinkedList_LinkedList_LinkedList_getFirst takes integer this_1 returns integer
	local integer LinkedList_LinkedList_getFirst_result
	if LinkedList_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling LinkedList.getFirst")
		else
			call error("Called LinkedList.getFirst on invalid object.")
		endif
	endif
	set LinkedList_LinkedList_getFirst_result = LinkedList_getFirst(this_1)
	return LinkedList_LinkedList_getFirst_result
endfunction

function checkQueue takes nothing returns nothing
	local integer syncData
	local string data_1
	local boolean hasChunk
	if  not dispatch_LinkedList_LinkedList_LinkedList_isEmpty(SyncSimple_syncQueue) then
		set syncData = dispatch_LinkedList_LinkedList_LinkedList_getFirst(SyncSimple_syncQueue)
		if SyncData_data[syncData] != null then
			if Player_localPlayer == SyncData_syncer[syncData] then
				call BlzSendSyncData(SyncSimple_DEFAULT_PREFIX, SyncData_data[syncData])
			endif
		else
			set data_1 = dispatch_ChunkedString_ChunkedString_ChunkedString_readChunk(SyncData_buffer[syncData])
			set hasChunk = dispatch_ChunkedString_ChunkedString_ChunkedString_hasChunk(SyncData_buffer[syncData])
			if Player_localPlayer == SyncData_syncer[syncData] then
				if hasChunk then
					call BlzSendSyncData(SyncSimple_DEFAULT_PREFIX, data_1)
				else
					call BlzSendSyncData(SyncSimple_LAST_CHUNK_PREFIX, data_1)
				endif
			endif
		endif
	endif
endfunction

function ChunkedString_getChunkCount takes integer this_1 returns integer
	return ChunkedString_chunkCount[this_1] + 1
endfunction

function dispatch_ChunkedString_ChunkedString_ChunkedString_getChunkCount takes integer this_1 returns integer
	local integer ChunkedString_ChunkedString_getChunkCount_result
	if ChunkedString_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling ChunkedString.getChunkCount")
		else
			call error("Called ChunkedString.getChunkCount on invalid object.")
		endif
	endif
	set ChunkedString_ChunkedString_getChunkCount_result = ChunkedString_getChunkCount(this_1)
	return ChunkedString_ChunkedString_getChunkCount_result
endfunction

function ChunkedString_length takes integer this_1 returns integer
	local integer len
	local integer i
	local integer temp
	if String_ENABLE_MULTIBYTE_SUPPORT then
		set len = 0
		set i = 0
		set temp = dispatch_ChunkedString_ChunkedString_ChunkedString_getChunkCount(this_1) - 1
		loop
			exitwhen i > temp
			set len = len + string_length(dispatch_ChunkedString_ChunkedString_ChunkedString_getChunk(this_1, i))
			set i = i + 1
		endloop
		return len
	else
		return ChunkedString_chunkCount[this_1] * ChunkedString_chunkSize[this_1] + string_length(ChunkedString_buffer[this_1])
	endif
endfunction

function dispatch_ChunkedString_ChunkedString_ChunkedString_length takes integer this_1 returns integer
	local integer ChunkedString_ChunkedString_length_result
	if ChunkedString_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling ChunkedString.length")
		else
			call error("Called ChunkedString.length on invalid object.")
		endif
	endif
	set ChunkedString_ChunkedString_length_result = ChunkedString_length(this_1)
	return ChunkedString_ChunkedString_length_result
endfunction

function ChunkedString_resetRead takes integer this_1 returns nothing
	set ChunkedString_readIndex[this_1] = -1
endfunction

function dispatch_ChunkedString_ChunkedString_ChunkedString_resetRead takes integer this_1 returns nothing
	if ChunkedString_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling ChunkedString.resetRead")
		else
			call error("Called ChunkedString.resetRead on invalid object.")
		endif
	endif
	call ChunkedString_resetRead(this_1)
endfunction

function alloc_PayloadCallback_decompress_loadData_nullTimer_MemoryAccessPedestal_Pedestal takes nothing returns integer
	local integer this_1
	if PayloadCallback_firstFree == 0 then
		if PayloadCallback_maxIndex < JASS_MAX_ARRAY_SIZE then
			set PayloadCallback_maxIndex = PayloadCallback_maxIndex + 1
			set this_1 = PayloadCallback_maxIndex
			set PayloadCallback_typeId[this_1] = 1038
		else
			call error("Out of memory: Could not create PayloadCallback_decompress_loadData_nullTimer_MemoryAccessPedestal_Pedestal.")
			set this_1 = 0
		endif
	else
		set PayloadCallback_firstFree = PayloadCallback_firstFree - 1
		set this_1 = PayloadCallback_nextFree[PayloadCallback_firstFree]
		set PayloadCallback_typeId[this_1] = 1038
	endif
	return this_1
endfunction

function PayloadCallback_init takes integer this_1 returns nothing
	set PayloadCallback_customData[this_1] = 0
endfunction

function construct_PayloadCallback takes integer this_1 returns nothing
	call PayloadCallback_init(this_1)
endfunction

function alloc_PayloadCallback_decodePositions_LZW takes nothing returns integer
	local integer this_1
	if PayloadCallback_firstFree == 0 then
		if PayloadCallback_maxIndex < JASS_MAX_ARRAY_SIZE then
			set PayloadCallback_maxIndex = PayloadCallback_maxIndex + 1
			set this_1 = PayloadCallback_maxIndex
			set PayloadCallback_typeId[this_1] = 1037
		else
			call error("Out of memory: Could not create PayloadCallback_decodePositions_LZW.")
			set this_1 = 0
		endif
	else
		set PayloadCallback_firstFree = PayloadCallback_firstFree - 1
		set this_1 = PayloadCallback_nextFree[PayloadCallback_firstFree]
		set PayloadCallback_typeId[this_1] = 1037
	endif
	return this_1
endfunction

function alloc_PayloadCallback_load_LZW takes nothing returns integer
	local integer this_1
	if PayloadCallback_firstFree == 0 then
		if PayloadCallback_maxIndex < JASS_MAX_ARRAY_SIZE then
			set PayloadCallback_maxIndex = PayloadCallback_maxIndex + 1
			set this_1 = PayloadCallback_maxIndex
			set PayloadCallback_typeId[this_1] = 1044
		else
			call error("Out of memory: Could not create PayloadCallback_load_LZW.")
			set this_1 = 0
		endif
	else
		set PayloadCallback_firstFree = PayloadCallback_firstFree - 1
		set this_1 = PayloadCallback_nextFree[PayloadCallback_firstFree]
		set PayloadCallback_typeId[this_1] = 1044
	endif
	return this_1
endfunction

function BigString_substrings_get takes integer index1, integer index2 returns string
	local string returnVal
	if index2 < 0 or index2 >= 25 then
		call error("Index out of Bounds")
	elseif index2 <= 12 then
		if index2 <= 6 then
			if index2 <= 3 then
				if index2 <= 1 then
					if index2 <= 0 then
						set returnVal = BigString_substrings_0[index1]
					else
						set returnVal = BigString_substrings_1[index1]
					endif
				elseif index2 <= 2 then
					set returnVal = BigString_substrings_2[index1]
				else
					set returnVal = BigString_substrings_3[index1]
				endif
			elseif index2 <= 5 then
				if index2 <= 4 then
					set returnVal = BigString_substrings_4[index1]
				else
					set returnVal = BigString_substrings_5[index1]
				endif
			else
				set returnVal = BigString_substrings_6[index1]
			endif
		elseif index2 <= 9 then
			if index2 <= 8 then
				if index2 <= 7 then
					set returnVal = BigString_substrings_7[index1]
				else
					set returnVal = BigString_substrings_8[index1]
				endif
			else
				set returnVal = BigString_substrings_9[index1]
			endif
		elseif index2 <= 11 then
			if index2 <= 10 then
				set returnVal = BigString_substrings_10[index1]
			else
				set returnVal = BigString_substrings_11[index1]
			endif
		else
			set returnVal = BigString_substrings_12[index1]
		endif
	elseif index2 <= 18 then
		if index2 <= 15 then
			if index2 <= 14 then
				if index2 <= 13 then
					set returnVal = BigString_substrings_13[index1]
				else
					set returnVal = BigString_substrings_14[index1]
				endif
			else
				set returnVal = BigString_substrings_15[index1]
			endif
		elseif index2 <= 17 then
			if index2 <= 16 then
				set returnVal = BigString_substrings_16[index1]
			else
				set returnVal = BigString_substrings_17[index1]
			endif
		else
			set returnVal = BigString_substrings_18[index1]
		endif
	elseif index2 <= 21 then
		if index2 <= 20 then
			if index2 <= 19 then
				set returnVal = BigString_substrings_19[index1]
			else
				set returnVal = BigString_substrings_20[index1]
			endif
		else
			set returnVal = BigString_substrings_21[index1]
		endif
	elseif index2 <= 23 then
		if index2 <= 22 then
			set returnVal = BigString_substrings_22[index1]
		else
			set returnVal = BigString_substrings_23[index1]
		endif
	else
		set returnVal = BigString_substrings_24[index1]
	endif
	return returnVal
endfunction

function BigString_getLength takes integer this_1 returns integer
	return BigString_length[this_1] - BigString_startoffset[this_1]
endfunction

function dispatch_BigString_BigString_BigString_getLength takes integer this_1 returns integer
	local integer BigString_BigString_getLength_result
	if BigString_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling BigString.getLength")
		else
			call error("Called BigString.getLength on invalid object.")
		endif
	endif
	set BigString_BigString_getLength_result = BigString_getLength(this_1)
	return BigString_BigString_getLength_result
endfunction

function BigString_debugPrint takes integer this_1 returns nothing
	local integer i
	local integer temp
	if Printing_config_DEBUG_LEVEL == 0 then
		call Log_debug("BigString length: " + int_toString(dispatch_BigString_BigString_BigString_getLength(this_1)) + " lines: ")
		set i = 0
		set temp = BigString_MAX_SUBSTRINGS - 1
		loop
			exitwhen i > temp
			if string_length(BigString_substrings_get(this_1, i)) > 0 then
				call Log_debug("\n\tLine " + int_toString(i) + " : " + BigString_substrings_get(this_1, i))
			else
				exitwhen true
			endif
			set i = i + 1
		endloop
	endif
endfunction

function dispatch_BigString_BigString_BigString_debugPrint takes integer this_1 returns nothing
	if BigString_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling BigString.debugPrint")
		else
			call error("Called BigString.debugPrint on invalid object.")
		endif
	endif
	call BigString_debugPrint(this_1)
endfunction

function alloc_PayloadCallback_fromString_Encoder_Encoder takes nothing returns integer
	local integer this_1
	if PayloadCallback_firstFree == 0 then
		if PayloadCallback_maxIndex < JASS_MAX_ARRAY_SIZE then
			set PayloadCallback_maxIndex = PayloadCallback_maxIndex + 1
			set this_1 = PayloadCallback_maxIndex
			set PayloadCallback_typeId[this_1] = 1040
		else
			call error("Out of memory: Could not create PayloadCallback_fromString_Encoder_Encoder.")
			set this_1 = 0
		endif
	else
		set PayloadCallback_firstFree = PayloadCallback_firstFree - 1
		set this_1 = PayloadCallback_nextFree[PayloadCallback_firstFree]
		set PayloadCallback_typeId[this_1] = 1040
	endif
	return this_1
endfunction

function alloc_SeqCallback_doSeq_Encoder_Encoder_1894 takes nothing returns integer
	local integer this_1
	if SeqCallback_firstFree == 0 then
		if SeqCallback_maxIndex < JASS_MAX_ARRAY_SIZE then
			set SeqCallback_maxIndex = SeqCallback_maxIndex + 1
			set this_1 = SeqCallback_maxIndex
			set SeqCallback_typeId[this_1] = 1127
		else
			call error("Out of memory: Could not create SeqCallback_doSeq_Encoder_Encoder.")
			set this_1 = 0
		endif
	else
		set SeqCallback_firstFree = SeqCallback_firstFree - 1
		set this_1 = SeqCallback_nextFree[SeqCallback_firstFree]
		set SeqCallback_typeId[this_1] = 1127
	endif
	return this_1
endfunction

function SeqCallback_init takes integer this_1 returns nothing
	set SeqCallback_done[this_1] = false
	set SeqCallback_ref[this_1] = null
endfunction

function construct_SeqCallback takes integer this_1 returns nothing
	call SeqCallback_init(this_1)
endfunction

function doSeq takes integer cb_1 returns nothing
	local timer receiver = getTimer()
	local timer receiver_1
	call timer_setData(receiver, cb_1)
	set SeqCallback_ref[cb_1] = receiver
	set receiver_1 = SeqCallback_ref[cb_1]
	call timer_start(receiver_1, 0.001, ref_function_code__start_SeqWorker)
endfunction

function alloc_BigNum_l takes nothing returns integer
	local integer this_1
	if BigNum_l_firstFree == 0 then
		if BigNum_l_maxIndex < JASS_MAX_ARRAY_SIZE then
			set BigNum_l_maxIndex = BigNum_l_maxIndex + 1
			set this_1 = BigNum_l_maxIndex
			set BigNum_l_typeId[this_1] = 639
		else
			call error("Out of memory: Could not create BigNum_l.")
			set this_1 = 0
		endif
	else
		set BigNum_l_firstFree = BigNum_l_firstFree - 1
		set this_1 = BigNum_l_nextFree[BigNum_l_firstFree]
		set BigNum_l_typeId[this_1] = 639
	endif
	return this_1
endfunction

function BigNum_l_init takes integer this_1 returns nothing
	set BigNum_l_leaf[this_1] = 0
	set BigNum_l_next[this_1] = 0
endfunction

function construct_BigNum_l takes integer this_1 returns nothing
	call BigNum_l_init(this_1)
	set BigNum_l_count = BigNum_l_count + 1
endfunction

function new_BigNum_l takes nothing returns integer
	local integer this_1 = alloc_BigNum_l()
	call construct_BigNum_l(this_1)
	return this_1
endfunction

function Encoder_fromString takes integer this_1, integer bs_1, integer onFinishString_1 returns nothing
	local integer w_i_1 = 0
	local integer w_cur_1 = new_BigNum_l()
	local integer clVar
	set BigNum_list[Encoder_bignum[this_1]] = w_cur_1
	call Log_debug("from String")
	set clVar = alloc_SeqCallback_doSeq_Encoder_Encoder_1894()
	call construct_SeqCallback(clVar)
	set w_cur_2188[clVar] = w_cur_1
	set this_2889[clVar] = this_1
	set bs[clVar] = bs_1
	set w_i[clVar] = w_i_1
	set onFinishString[clVar] = onFinishString_1
	call doSeq(clVar)
endfunction

function dispatch_Encoder_Encoder_Encoder_fromString takes integer this_1, integer bs_1, integer onFinishString_1 returns nothing
	if Encoder_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling Encoder.fromString")
		else
			call error("Called Encoder.fromString on invalid object.")
		endif
	endif
	call Encoder_fromString(this_1, bs_1, onFinishString_1)
endfunction

function Encoder_load takes integer this_1, integer bs_1, integer onFinishLoad_1 returns nothing
	local integer clVar
	local integer temp
	local integer temp_1
	set Encoder_inputhash[this_1] = -1
	set Encoder_comparehash[this_1] = -1
	set temp = this_1
	set temp_1 = bs_1
	set clVar = alloc_PayloadCallback_fromString_Encoder_Encoder()
	call construct_PayloadCallback(clVar)
	set this_2897[clVar] = this_1
	set onFinishLoad[clVar] = onFinishLoad_1
	call dispatch_Encoder_Encoder_Encoder_fromString(temp, temp_1, clVar)
endfunction

function dispatch_Encoder_Encoder_Encoder_load takes integer this_1, integer bs_1, integer onFinishLoad_1 returns nothing
	if Encoder_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling Encoder.load")
		else
			call error("Called Encoder.load on invalid object.")
		endif
	endif
	call Encoder_load(this_1, bs_1, onFinishLoad_1)
endfunction

function alloc_Encoder takes nothing returns integer
	local integer this_1
	if Encoder_firstFree == 0 then
		if Encoder_maxIndex < JASS_MAX_ARRAY_SIZE then
			set Encoder_maxIndex = Encoder_maxIndex + 1
			set this_1 = Encoder_maxIndex
			set Encoder_typeId[this_1] = 743
		else
			call error("Out of memory: Could not create Encoder.")
			set this_1 = 0
		endif
	else
		set Encoder_firstFree = Encoder_firstFree - 1
		set this_1 = Encoder_nextFree[Encoder_firstFree]
		set Encoder_typeId[this_1] = 743
	endif
	return this_1
endfunction

function Encoder_init takes integer this_1 returns nothing
	set Encoder_digits[this_1] = 0.
	set Encoder_hash[this_1] = -1
	set Encoder_inputhash[this_1] = -1
	set Encoder_comparehash[this_1] = -1
endfunction

function alloc_BigNum takes nothing returns integer
	local integer this_1
	if BigNum_firstFree == 0 then
		if BigNum_maxIndex < JASS_MAX_ARRAY_SIZE then
			set BigNum_maxIndex = BigNum_maxIndex + 1
			set this_1 = BigNum_maxIndex
			set BigNum_typeId[this_1] = 638
		else
			call error("Out of memory: Could not create BigNum.")
			set this_1 = 0
		endif
	else
		set BigNum_firstFree = BigNum_firstFree - 1
		set this_1 = BigNum_nextFree[BigNum_firstFree]
		set BigNum_typeId[this_1] = 638
	endif
	return this_1
endfunction

function BigNum_init takes integer this_1 returns nothing
	set BigNum_list[this_1] = 0
endfunction

function construct_BigNum takes integer this_1, integer base returns nothing
	call BigNum_init(this_1)
	set BigNum_base[this_1] = base
endfunction

function new_BigNum takes integer base returns integer
	local integer this_1 = alloc_BigNum()
	call construct_BigNum(this_1, base)
	return this_1
endfunction

function construct_Encoder takes integer this_1, string charset returns nothing
	call Encoder_init(this_1)
	set Encoder_charset[this_1] = charset
	set Encoder_base[this_1] = string_length(charset)
	set Encoder_bignum[this_1] = new_BigNum(Encoder_base[this_1])
endfunction

function new_Encoder takes string charset returns integer
	local integer this_1 = alloc_Encoder()
	call construct_Encoder(this_1, charset)
	return this_1
endfunction

function decodePositions takes integer input, integer onFinish_1 returns nothing
	local integer encoder_1 = new_Encoder(LZW_ALLOWED_PLAYER_CHARS)
	local integer clVar
	local integer temp
	local integer temp_1
	call dispatch_BigString_BigString_BigString_debugPrint(input)
	set temp = encoder_1
	set temp_1 = input
	set clVar = alloc_PayloadCallback_load_LZW()
	call construct_PayloadCallback(clVar)
	set encoder_2346[clVar] = encoder_1
	set onFinish_2554[clVar] = onFinish_1
	call dispatch_Encoder_Encoder_Encoder_load(temp, temp_1, clVar)
endfunction

function StringIterator_onDestroy takes integer this_1 returns nothing
endfunction

function dealloc_StringIterator takes integer obj_1 returns nothing
	if StringIterator_typeId[obj_1] == 0 then
		call error("Double free: object of type StringIterator")
	else
		set StringIterator_nextFree[StringIterator_firstFree] = obj_1
		set StringIterator_firstFree = StringIterator_firstFree + 1
		set StringIterator_typeId[obj_1] = 0
	endif
endfunction

function destroyStringIterator takes integer this_1 returns nothing
	call StringIterator_onDestroy(this_1)
	call dealloc_StringIterator(this_1)
endfunction

function dispatch_StringIterator_destroyStringIterator takes integer this_1 returns nothing
	if StringIterator_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling StringIterator.StringIterator")
		else
			call error("Called StringIterator.StringIterator on invalid object.")
		endif
	endif
	call destroyStringIterator(this_1)
endfunction

function StringIterator_close takes integer this_1 returns nothing
	call dispatch_StringIterator_destroyStringIterator(this_1)
endfunction

function StringIterator_hasNext takes integer this_1 returns boolean
	return StringIterator_currentpos[this_1] < StringIterator_stringLen[this_1]
endfunction

function StringIterator_next takes integer this_1 returns string
	local string wval = string_substring(StringIterator_s[this_1], StringIterator_currentpos[this_1], StringIterator_currentpos[this_1] + 1)
	if String_ENABLE_MULTIBYTE_SUPPORT and string_getHash(wval) == 1843378377 then
		set wval = string_substring(StringIterator_s[this_1], StringIterator_currentpos[this_1], StringIterator_currentpos[this_1] + 2)
		set StringIterator_currentpos[this_1] = StringIterator_currentpos[this_1] + 2
	else
		set StringIterator_currentpos[this_1] = StringIterator_currentpos[this_1] + 1
	endif
	return wval
endfunction

function dispatch_HashMap_HashMap_HashMap_flush takes integer this_1 returns nothing
	if Table_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling HashMap.flush")
		else
			call error("Called HashMap.flush on invalid object.")
		endif
	endif
	if Table_typeId[this_1] <= 1494 then
		call HashMap_flush(this_1)
	else
		call IterableMap_flush(this_1)
	endif
endfunction

function putDict takes string s returns nothing
	call dispatch_HashMap_HashMap_HashMap_put(LZW_dictionary, stringToIndex(s), LZW_dictSize)
	call dispatch_Table_Table_Table_saveString(LZW_dictionary, LZW_dictSize, s)
	set LZW_dictSize = LZW_dictSize + 1
endfunction

function alloc_StringIterator takes nothing returns integer
	local integer this_1
	if StringIterator_firstFree == 0 then
		if StringIterator_maxIndex < JASS_MAX_ARRAY_SIZE then
			set StringIterator_maxIndex = StringIterator_maxIndex + 1
			set this_1 = StringIterator_maxIndex
			set StringIterator_typeId[this_1] = 1244
		else
			call error("Out of memory: Could not create StringIterator.")
			set this_1 = 0
		endif
	else
		set StringIterator_firstFree = StringIterator_firstFree - 1
		set this_1 = StringIterator_nextFree[StringIterator_firstFree]
		set StringIterator_typeId[this_1] = 1244
	endif
	return this_1
endfunction

function StringIterator_init takes integer this_1 returns nothing
endfunction

function construct_StringIterator takes integer this_1, string s, integer currentpos, integer stringLen returns nothing
	call StringIterator_init(this_1)
	set StringIterator_s[this_1] = s
	set StringIterator_currentpos[this_1] = currentpos
	set StringIterator_stringLen[this_1] = stringLen
endfunction

function new_StringIterator takes string s, integer currentpos, integer stringLen returns integer
	local integer this_1 = alloc_StringIterator()
	call construct_StringIterator(this_1, s, currentpos, stringLen)
	return this_1
endfunction

function string_iterator takes string this_1 returns integer
	return new_StringIterator(this_1, 0, string_length(this_1))
endfunction

function initDict takes nothing returns nothing
	local integer iterator
	local string c
	set LZW_dictSize = 0
	call dispatch_HashMap_HashMap_HashMap_flush(LZW_dictionary)
	set iterator = string_iterator(LZW_DICT_INIT)
	loop
		exitwhen  not StringIterator_hasNext(iterator)
		set c = StringIterator_next(iterator)
		call putDict(c)
	endloop
	call StringIterator_close(iterator)
endfunction

function decompress takes integer input, integer onFinish_1 returns nothing
	local integer output_1
	local integer clVar
	local integer temp
	call Log_debug("Start decompress")
	set output_1 = new_BigString()
	call initDict()
	set temp = input
	set clVar = alloc_PayloadCallback_decodePositions_LZW()
	call construct_PayloadCallback(clVar)
	set output[clVar] = output_1
	set onFinish_2559[clVar] = onFinish_1
	call decodePositions(temp, clVar)
endfunction

function BigString_addString takes integer this_1, string sp returns nothing
	local integer idx
	local integer off
	if string_length(sp) > BigString_BIG_SUBSTRING_LEN then
		call error("adding too long string")
	endif
	set idx = real_toInt(dispatch_BigString_BigString_BigString_getLength(this_1) * 1. / BigString_BIG_SUBSTRING_LEN)
	if string_length(BigString_substrings_get(this_1, idx)) + string_length(sp) > BigString_BIG_SUBSTRING_LEN then
		set off = BigString_BIG_SUBSTRING_LEN - string_length(BigString_substrings_get(this_1, idx))
		call BigString_substrings_set(this_1, idx, BigString_substrings_get(this_1, idx) + string_substring(sp, 0, off))
		set idx = idx + 1
		call BigString_substrings_set(this_1, idx, BigString_substrings_get(this_1, idx) + string_substring_4067(sp, off))
	else
		call BigString_substrings_set(this_1, idx, BigString_substrings_get(this_1, idx) + sp)
	endif
	set BigString_length[this_1] = BigString_length[this_1] + string_length(sp)
endfunction

function dispatch_BigString_BigString_BigString_addString takes integer this_1, string sp returns nothing
	if BigString_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling BigString.addString")
		else
			call error("Called BigString.addString on invalid object.")
		endif
	endif
	call BigString_addString(this_1, sp)
endfunction

function dealloc_Table takes integer obj_1 returns nothing
	if Table_typeId[obj_1] == 0 then
		call error("Double free: object of type Table")
	else
		set Table_nextFree[Table_firstFree] = obj_1
		set Table_firstFree = Table_firstFree + 1
		set Table_typeId[obj_1] = 0
	endif
endfunction

function destroyTable takes integer this_1 returns nothing
	call Table_onDestroy(this_1)
	call dealloc_Table(this_1)
endfunction

function dispatch_Table_destroyTable takes integer this_1 returns nothing
	if Table_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling Table.Table")
		else
			call error("Called Table.Table on invalid object.")
		endif
	endif
	if Table_typeId[this_1] <= 1494 then
		call destroyTable(this_1)
	else
		call destroyIterableMap(this_1)
	endif
endfunction

function ChunkedString_onDestroy takes integer this_1 returns nothing
	call dispatch_Table_destroyTable(ChunkedString_table[this_1])
endfunction

function dealloc_ChunkedString takes integer obj_1 returns nothing
	if ChunkedString_typeId[obj_1] == 0 then
		call error("Double free: object of type ChunkedString")
	else
		set ChunkedString_nextFree[ChunkedString_firstFree] = obj_1
		set ChunkedString_firstFree = ChunkedString_firstFree + 1
		set ChunkedString_typeId[obj_1] = 0
	endif
endfunction

function destroyChunkedString takes integer this_1 returns nothing
	call ChunkedString_onDestroy(this_1)
	call dealloc_ChunkedString(this_1)
endfunction

function dispatch_ChunkedString_destroyChunkedString takes integer this_1 returns nothing
	if ChunkedString_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling ChunkedString.ChunkedString")
		else
			call error("Called ChunkedString.ChunkedString on invalid object.")
		endif
	endif
	call destroyChunkedString(this_1)
endfunction

function onLoad_loadData_nullTimer_MemoryAccessPedestal_Pedestal takes integer this_1, integer status, integer data_1 returns nothing
	local integer temp = status
	local integer ref_1
	local texttag receiver
	local integer compressedString
	local integer i
	local integer temp_1
	local integer clVar
	local integer temp_2
	local real tuple_temp
	local real tuple_temp_1
	local real tuple_temp_2
	if temp == 0 then
		call printLog(1, "synced")
		set ref_1 = MemoryAccessPedestal_lastRef[PlayerData_id[pd_2570[this_1]]]
		set receiver = FText_tt[MemoryAccessPedestal_ttag[ref_1]]
		call texttag_center(receiver, Entity_pos_x[ref_1], Entity_pos_y[ref_1], Entity_pos_z[ref_1], "|cff0884CEdecompressing...", 10.)
		set compressedString = new_BigString()
		set i = 0
		set temp_1 = dispatch_ChunkedString_ChunkedString_ChunkedString_getChunkCount(data_1)
		loop
			exitwhen i > temp_1
			call dispatch_BigString_BigString_BigString_addString(compressedString, dispatch_ChunkedString_ChunkedString_ChunkedString_getChunk(data_1, i))
			set i = i + 1
		endloop
		call dispatch_ChunkedString_destroyChunkedString(data_1)
		call printLog(1, "Reconstructed")
		call dispatch_BigString_BigString_BigString_debugPrint(compressedString)
		set tuple_temp = vec2_toVec3(vec2_toTile(vec3_toVec2(Entity_pos_x[ref_1], Entity_pos_y[ref_1], Entity_pos_z[ref_1]), vec3_toVec2_return_y), vec2_toTile_return_y)
		set tuple_temp_1 = vec2_toVec3_return_y
		set tuple_temp_2 = vec2_toVec3_return_z
		set Entity_serializeOrigin_x = tuple_temp
		set Entity_serializeOrigin_y = tuple_temp_1
		set Entity_serializeOrigin_z = tuple_temp_2
		set temp_2 = compressedString
		set clVar = alloc_PayloadCallback_decompress_loadData_nullTimer_MemoryAccessPedestal_Pedestal()
		call construct_PayloadCallback(clVar)
		set ref[clVar] = ref_1
		call decompress(temp_2, clVar)
	else
		call Log_error("ERROR: " + int_toString(status))
	endif
endfunction

function dispatch_LoadListener_SaveLoadData_LoadListener_onLoad takes integer this_1, integer status, integer data_1 returns nothing
	if LoadListener_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling LoadListener.onLoad")
		else
			call error("Called LoadListener.onLoad on invalid object.")
		endif
	endif
	call onLoad_loadData_nullTimer_MemoryAccessPedestal_Pedestal(this_1, status, data_1)
endfunction

function onDataSynced_sync_SaveLoadData takes integer this_1, integer syncedBuffer returns nothing
	if dispatch_ChunkedString_ChunkedString_ChunkedString_length(syncedBuffer) == 0 then
		call dispatch_LoadListener_SaveLoadData_LoadListener_onLoad(listener[this_1], 2, syncedBuffer)
	elseif dispatch_ChunkedString_ChunkedString_ChunkedString_readChunk(syncedBuffer) == "-" then
		call dispatch_LoadListener_SaveLoadData_LoadListener_onLoad(listener[this_1], 3, syncedBuffer)
	else
		call dispatch_ChunkedString_ChunkedString_ChunkedString_resetRead(syncedBuffer)
		call dispatch_LoadListener_SaveLoadData_LoadListener_onLoad(listener[this_1], 0, syncedBuffer)
	endif
endfunction

function dispatch_BufferSyncListener_SyncSimple_BufferSyncListener_onDataSynced takes integer this_1, integer buffer returns nothing
	if BufferSyncListener_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling BufferSyncListener.onDataSynced")
		else
			call error("Called BufferSyncListener.onDataSynced on invalid object.")
		endif
	endif
	call onDataSynced_sync_SaveLoadData(this_1, buffer)
endfunction

function min_2 takes integer numbers_0, integer numbers_1 returns integer
	local integer minNumber = Integer_INT_MAX
	local integer cond_result
	if numbers_0 < minNumber then
		set cond_result = numbers_0
	else
		set cond_result = minNumber
	endif
	set minNumber = cond_result
	if numbers_1 < minNumber then
		set cond_result = numbers_1
	else
		set cond_result = minNumber
	endif
	set minNumber = cond_result
	return minNumber
endfunction

function ChunkedString_append takes integer this_1, string pdata returns nothing
	local string data_1 = pdata
	local integer remain
	loop
		exitwhen  not true
		set remain = ChunkedString_chunkSize[this_1] - string_length(ChunkedString_buffer[this_1])
		if String_ENABLE_MULTIBYTE_SUPPORT and remain > 0 and string_length(data_1) >= remain and string_getHash(string_substring(data_1, remain - 1, remain)) == 1843378377 then
			set remain = remain + 1
		endif
		set ChunkedString_buffer[this_1] = ChunkedString_buffer[this_1] + string_substring(data_1, 0, remain)
		if string_length(ChunkedString_buffer[this_1]) >= ChunkedString_chunkSize[this_1] then
			call dispatch_Table_Table_Table_saveString(ChunkedString_table[this_1], ChunkedString_chunkCount[this_1], ChunkedString_buffer[this_1])
			set ChunkedString_buffer[this_1] = ""
			set ChunkedString_chunkCount[this_1] = ChunkedString_chunkCount[this_1] + 1
		endif
		set data_1 = string_substring_4067(data_1, min_2(remain, string_length(data_1)))
		if string_length(data_1) == 0 then
			exitwhen true
		endif
	endloop
endfunction

function dispatch_ChunkedString_ChunkedString_ChunkedString_append takes integer this_1, string pdata returns nothing
	if ChunkedString_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling ChunkedString.append")
		else
			call error("Called ChunkedString.append on invalid object.")
		endif
	endif
	call ChunkedString_append(this_1, pdata)
endfunction

function dispatch_BoolSyncListener_SyncSimple_BoolSyncListener_onDataSynced takes integer this_1, boolean data_1 returns nothing
endfunction

function dealloc_BoolSyncListener takes integer obj_1 returns nothing
	if BoolSyncListener_typeId[obj_1] == 0 then
		call error("Double free: object of type BoolSyncListener")
	else
		set BoolSyncListener_firstFree = BoolSyncListener_firstFree + 1
		set BoolSyncListener_typeId[obj_1] = 0
	endif
endfunction

function destroyBoolSyncListener takes integer this_1 returns nothing
	call dealloc_BoolSyncListener(this_1)
endfunction

function dispatch_BoolSyncListener_destroyBoolSyncListener takes integer this_1 returns nothing
	if BoolSyncListener_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling BoolSyncListener.BoolSyncListener")
		else
			call error("Called BoolSyncListener.BoolSyncListener on invalid object.")
		endif
	endif
	call destroyBoolSyncListener(this_1)
endfunction

function string_toBool takes string this_1 returns boolean
	local boolean cond_result
	if this_1 == "1" or this_1 == "true" then
		set cond_result = true
	else
		set cond_result = false
	endif
	return cond_result
endfunction

function onDataSynced_sync_SyncSimple takes integer this_1, string data_1 returns nothing
	call dispatch_BoolSyncListener_SyncSimple_BoolSyncListener_onDataSynced(listener_2540[this_1], string_toBool(data_1))
	call dispatch_BoolSyncListener_destroyBoolSyncListener(listener_2540[this_1])
endfunction

function dispatch_IntSyncListener_SyncSimple_IntSyncListener_onDataSynced takes integer this_1, integer data_1 returns nothing
endfunction

function dealloc_IntSyncListener takes integer obj_1 returns nothing
	if IntSyncListener_typeId[obj_1] == 0 then
		call error("Double free: object of type IntSyncListener")
	else
		set IntSyncListener_firstFree = IntSyncListener_firstFree + 1
		set IntSyncListener_typeId[obj_1] = 0
	endif
endfunction

function destroyIntSyncListener takes integer this_1 returns nothing
	call dealloc_IntSyncListener(this_1)
endfunction

function dispatch_IntSyncListener_destroyIntSyncListener takes integer this_1 returns nothing
	if IntSyncListener_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling IntSyncListener.IntSyncListener")
		else
			call error("Called IntSyncListener.IntSyncListener on invalid object.")
		endif
	endif
	call destroyIntSyncListener(this_1)
endfunction

function onDataSynced_sync_SyncSimple_3798 takes integer this_1, string data_1 returns nothing
	call dispatch_IntSyncListener_SyncSimple_IntSyncListener_onDataSynced(listener_2541[this_1], string_toInt(data_1))
	call dispatch_IntSyncListener_destroyIntSyncListener(listener_2541[this_1])
endfunction

function dispatch_RealSyncListener_SyncSimple_RealSyncListener_onDataSynced takes integer this_1, real data_1 returns nothing
endfunction

function dealloc_RealSyncListener takes integer obj_1 returns nothing
	if RealSyncListener_typeId[obj_1] == 0 then
		call error("Double free: object of type RealSyncListener")
	else
		set RealSyncListener_firstFree = RealSyncListener_firstFree + 1
		set RealSyncListener_typeId[obj_1] = 0
	endif
endfunction

function destroyRealSyncListener takes integer this_1 returns nothing
	call dealloc_RealSyncListener(this_1)
endfunction

function dispatch_RealSyncListener_destroyRealSyncListener takes integer this_1 returns nothing
	if RealSyncListener_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling RealSyncListener.RealSyncListener")
		else
			call error("Called RealSyncListener.RealSyncListener on invalid object.")
		endif
	endif
	call destroyRealSyncListener(this_1)
endfunction

function onDataSynced_sync_SyncSimple_3799 takes integer this_1, string data_1 returns nothing
	call dispatch_RealSyncListener_SyncSimple_RealSyncListener_onDataSynced(listener_2542[this_1], string_toReal(data_1))
	call dispatch_RealSyncListener_destroyRealSyncListener(listener_2542[this_1])
endfunction

function dispatch_StringSyncListener_SyncSimple_StringSyncListener_onDataSynced takes integer this_1, string data_1 returns nothing
	if StringSyncListener_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling StringSyncListener.onDataSynced")
		else
			call error("Called StringSyncListener.onDataSynced on invalid object.")
		endif
	endif
	if StringSyncListener_typeId[this_1] <= 1490 then
		if StringSyncListener_typeId[this_1] <= 1489 then
			call onDataSynced_sync_SyncSimple(this_1, data_1)
		else
			call onDataSynced_sync_SyncSimple_3798(this_1, data_1)
		endif
	else
		call onDataSynced_sync_SyncSimple_3799(this_1, data_1)
	endif
endfunction

function dealloc_BufferSyncListener takes integer obj_1 returns nothing
	if BufferSyncListener_typeId[obj_1] == 0 then
		call error("Double free: object of type BufferSyncListener")
	else
		set BufferSyncListener_nextFree[BufferSyncListener_firstFree] = obj_1
		set BufferSyncListener_firstFree = BufferSyncListener_firstFree + 1
		set BufferSyncListener_typeId[obj_1] = 0
	endif
endfunction

function destroyBufferSyncListener takes integer this_1 returns nothing
	call dealloc_BufferSyncListener(this_1)
endfunction

function dispatch_BufferSyncListener_destroyBufferSyncListener takes integer this_1 returns nothing
	if BufferSyncListener_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling BufferSyncListener.BufferSyncListener")
		else
			call error("Called BufferSyncListener.BufferSyncListener on invalid object.")
		endif
	endif
	call destroyBufferSyncListener(this_1)
endfunction

function dealloc_StringSyncListener takes integer obj_1 returns nothing
	if StringSyncListener_typeId[obj_1] == 0 then
		call error("Double free: object of type StringSyncListener")
	else
		set StringSyncListener_firstFree = StringSyncListener_firstFree + 1
		set StringSyncListener_typeId[obj_1] = 0
	endif
endfunction

function destroyStringSyncListener takes integer this_1 returns nothing
	call dealloc_StringSyncListener(this_1)
endfunction

function dispatch_StringSyncListener_destroyStringSyncListener takes integer this_1 returns nothing
	if StringSyncListener_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling StringSyncListener.StringSyncListener")
		else
			call error("Called StringSyncListener.StringSyncListener on invalid object.")
		endif
	endif
	call destroyStringSyncListener(this_1)
endfunction

function SyncData_onDestroy takes integer this_1 returns nothing
	if SyncData_slistener[this_1] != 0 then
		call dispatch_StringSyncListener_destroyStringSyncListener(SyncData_slistener[this_1])
	endif
	if SyncData_blistener[this_1] != 0 then
		call dispatch_BufferSyncListener_destroyBufferSyncListener(SyncData_blistener[this_1])
	endif
	if SyncData_buffer[this_1] != 0 then
		call dispatch_ChunkedString_destroyChunkedString(SyncData_buffer[this_1])
	endif
endfunction

function dealloc_SyncData takes integer obj_1 returns nothing
	if SyncData_typeId[obj_1] == 0 then
		call error("Double free: object of type SyncData")
	else
		set SyncData_nextFree[SyncData_firstFree] = obj_1
		set SyncData_firstFree = SyncData_firstFree + 1
		set SyncData_typeId[obj_1] = 0
	endif
endfunction

function destroySyncData takes integer this_1 returns nothing
	call SyncData_onDestroy(this_1)
	call dealloc_SyncData(this_1)
endfunction

function dispatch_SyncData_destroySyncData takes integer this_1 returns nothing
	if SyncData_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling SyncData.SyncData")
		else
			call error("Called SyncData.SyncData on invalid object.")
		endif
	endif
	call destroySyncData(this_1)
endfunction

function shouldSync takes nothing returns boolean
	return SyncSimple_SYNC_IN_REPLAYS or GameStatus_gameStatus != 3
endfunction

function code__addAction_SyncSimple takes nothing returns nothing
	local string eventData = BlzGetTriggerSyncData()
	local string eventPrefix = BlzGetTriggerSyncPrefix()
	local integer syncData = dispatch_LinkedList_LinkedList_LinkedList_getFirst(SyncSimple_syncQueue)
	if SyncData_data[syncData] != null then
		call dispatch_StringSyncListener_SyncSimple_StringSyncListener_onDataSynced(SyncData_slistener[syncData], eventData)
		call dispatch_LinkedList_LinkedList_LinkedList_dequeue(SyncSimple_syncQueue)
		call dispatch_SyncData_destroySyncData(syncData)
	else
		call dispatch_ChunkedString_ChunkedString_ChunkedString_append(SyncData_syncBuffer[syncData], eventData)
		if eventPrefix == SyncSimple_LAST_CHUNK_PREFIX then
			call dispatch_BufferSyncListener_SyncSimple_BufferSyncListener_onDataSynced(SyncData_blistener[syncData], SyncData_syncBuffer[syncData])
			call dispatch_LinkedList_LinkedList_LinkedList_dequeue(SyncSimple_syncQueue)
			call dispatch_SyncData_destroySyncData(syncData)
		endif
	endif
	if shouldSync() then
		call checkQueue()
	endif
endfunction

function code__addAction_nullTimer_ClosureEvents takes nothing returns nothing
	call EventListener_generalEventCallback()
endfunction

function code__addAction_nullTimer_ClosureEvents_2084 takes nothing returns nothing
	call EventListener_generalEventCallback()
endfunction

function code__addAction_nullTimer_ClosureEvents_2085 takes nothing returns nothing
	call EventListener_generalEventCallback()
endfunction

function getEnterLeaveUnit takes nothing returns unit
	return OnUnitEnterLeave_tempUnits[OnUnitEnterLeave_tempUnitsCount - 1]
endfunction

function shouldIndex takes unit w_u returns boolean
	return true
endfunction

function alloc_UnitIndex takes nothing returns integer
	local integer this_1
	if UnitIndex_firstFree == 0 then
		if UnitIndex_maxIndex < JASS_MAX_ARRAY_SIZE then
			set UnitIndex_maxIndex = UnitIndex_maxIndex + 1
			set this_1 = UnitIndex_maxIndex
			set UnitIndex_typeId[this_1] = 1507
		else
			call error("Out of memory: Could not create UnitIndex.")
			set this_1 = 0
		endif
	else
		set UnitIndex_firstFree = UnitIndex_firstFree - 1
		set this_1 = UnitIndex_nextFree[UnitIndex_firstFree]
		set UnitIndex_typeId[this_1] = 1507
	endif
	return this_1
endfunction

function UnitIndex_init takes integer this_1 returns nothing
endfunction

function popUnit_3937 takes nothing returns nothing
	set UnitIndexer_tempUnitsCount = UnitIndexer_tempUnitsCount - 1
endfunction

function pushUnit_3951 takes unit u_1 returns nothing
	set UnitIndexer_tempUnits[UnitIndexer_tempUnitsCount] = u_1
	set UnitIndexer_tempUnitsCount = UnitIndexer_tempUnitsCount + 1
endfunction

function unit_setUserData takes unit this_1, integer data_1 returns nothing
	call SetUnitUserData(this_1, data_1)
endfunction

function construct_UnitIndex takes integer this_1, unit whichUnit returns nothing
	call UnitIndex_init(this_1)
	set UnitIndex__unit[this_1] = whichUnit
	call unit_setUserData(UnitIndex__unit[this_1], this_1)
	call pushUnit_3951(whichUnit)
	call trigger_evaluate(UnitIndexer_onIndexTrigger)
	call popUnit_3937()
endfunction

function new_UnitIndex takes unit whichUnit returns integer
	local integer this_1 = alloc_UnitIndex()
	call construct_UnitIndex(this_1, whichUnit)
	return this_1
endfunction

function unit_toUnitIndex takes unit this_1 returns integer
	local integer instance_1 = unit_getUserData(this_1)
	if instance_1 == 0 then
		set instance_1 = new_UnitIndex(this_1)
	endif
	return instance_1
endfunction

function code__onEnter_UnitIndexer takes nothing returns nothing
	if shouldIndex(getEnterLeaveUnit()) then
		call unit_toUnitIndex(getEnterLeaveUnit())
	endif
endfunction

function UnitIndex_onDestroy takes integer this_1 returns nothing
	call pushUnit_3951(UnitIndex__unit[this_1])
	call trigger_evaluate(UnitIndexer_onDeindexTrigger)
	call popUnit_3937()
	call unit_setUserData(UnitIndex__unit[this_1], 0)
endfunction

function dealloc_UnitIndex takes integer obj_1 returns nothing
	if UnitIndex_typeId[obj_1] == 0 then
		call error("Double free: object of type UnitIndex")
	else
		set UnitIndex_nextFree[UnitIndex_firstFree] = obj_1
		set UnitIndex_firstFree = UnitIndex_firstFree + 1
		set UnitIndex_typeId[obj_1] = 0
	endif
endfunction

function destroyUnitIndex takes integer this_1 returns nothing
	call UnitIndex_onDestroy(this_1)
	call dealloc_UnitIndex(this_1)
endfunction

function dispatch_UnitIndex_destroyUnitIndex takes integer this_1 returns nothing
	if UnitIndex_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling UnitIndex.UnitIndex")
		else
			call error("Called UnitIndex.UnitIndex on invalid object.")
		endif
	endif
	call destroyUnitIndex(this_1)
endfunction

function unit_deindex takes unit this_1 returns boolean
	if unit_getUserData(this_1) == 0 then
		return false
	else
		call dispatch_UnitIndex_destroyUnitIndex(unit_toUnitIndex(this_1))
		return true
	endif
endfunction

function code__onLeave_UnitIndexer takes nothing returns nothing
	if shouldIndex(getEnterLeaveUnit()) then
		call unit_deindex(getEnterLeaveUnit())
	endif
endfunction

function getIndexingUnit takes nothing returns unit
	return UnitIndexer_tempUnits[UnitIndexer_tempUnitsCount - 1]
endfunction

function code__onUnitDeindex_ClosureEvents takes nothing returns nothing
	call unregisterEventsForUnit(getIndexingUnit())
endfunction

function code__onUnitDeindex_EntityManagement takes nothing returns nothing
	local integer e_1 = unit_getEntity(getIndexingUnit())
	if e_1 != 0 then
		call cyc_RevivePoint_terminate(18, e_1)
	endif
endfunction

function trigger_registerUnitEvent takes trigger this_1, unit whichUnit, unitevent whichEvent returns event
	return TriggerRegisterUnitEvent(this_1, whichUnit, whichEvent)
endfunction

function registerEventsForUnit takes unit u_1 returns nothing
	if fireEvents(u_1) then
		call trigger_registerUnitEvent(ClosureEvents_unitTrig, u_1, EVENT_UNIT_DAMAGED)
	endif
endfunction

function code__onUnitIndex_ClosureEvents takes nothing returns nothing
	call registerEventsForUnit(getIndexingUnit())
endfunction

function triggerFromIndex takes integer index returns trigger
	call dispatch_Table_Table_Table_saveFogState(TypeCasting_typecastdata, 0, ConvertFogState(index))
	return dispatch_Table_Table_Table_loadTrigger(TypeCasting_typecastdata, 0)
endfunction

function code__registerPlayerUnitEvent_RegisterEvents takes nothing returns boolean
	return trigger_evaluate(triggerFromIndex(dispatch_HashMap_HashMap_HashMap_get(RegisterEvents_onCastMap, GetSpellAbilityId())))
endfunction

function RegionData_setOwner takes integer this_1, player p returns nothing
	call dispatch_HashMap_HashMap_HashMap_put(RegionData_permissions[this_1], playerToIndex(p), 2)
endfunction

function dispatch_RegionData_RegionData_RegionData_setOwner takes integer this_1, player p returns nothing
	if RegionData_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling RegionData.setOwner")
		else
			call error("Called RegionData.setOwner on invalid object.")
		endif
	endif
	call RegionData_setOwner(this_1, p)
endfunction

function RegionData_setType takes integer this_1, integer rtype, boolean changeTerrain returns nothing
	local integer temp_tuple_unwalkableId
	local rect temp
	local integer tuple_temp
	set RegionData_rtype[this_1] = rtype
	if rtype != 0 and changeTerrain then
		set temp = RegionData_theRect[this_1]
		call RegionType_getTypeSet(rtype)
		set tuple_temp = RegionType_getTypeSet_return_unwalkableId
		set temp_tuple_unwalkableId = tuple_temp
		call rect_changeTerrain(temp, temp_tuple_unwalkableId)
	endif
endfunction

function dispatch_RegionData_RegionData_RegionData_setType takes integer this_1, integer rtype, boolean changeTerrain returns nothing
	if RegionData_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling RegionData.setType")
		else
			call error("Called RegionData.setType on invalid object.")
		endif
	endif
	call RegionData_setType(this_1, rtype, changeTerrain)
endfunction

function getRegionTypeFromItem takes integer itemId returns integer
	local integer i = 1
	local integer reg
	local integer temp_tuple_regionItemId
	local integer tuple_temp
	loop
		exitwhen i > 5
		set reg = i
		set tuple_temp = RegionType_getTypeSet(reg)
		set temp_tuple_regionItemId = tuple_temp
		if temp_tuple_regionItemId == itemId then
			return reg
		endif
		set i = i + 1
	endloop
	return 0
endfunction

function alloc_SetupBox takes nothing returns integer
	local integer this_1
	if Serializable_firstFree == 0 then
		if Serializable_maxIndex < JASS_MAX_ARRAY_SIZE then
			set Serializable_maxIndex = Serializable_maxIndex + 1
			set this_1 = Serializable_maxIndex
			set Serializable_typeId[this_1] = 1171
		else
			call error("Out of memory: Could not create SetupBox.")
			set this_1 = 0
		endif
	else
		set Serializable_firstFree = Serializable_firstFree - 1
		set this_1 = Serializable_nextFree[Serializable_firstFree]
		set Serializable_typeId[this_1] = 1171
	endif
	return this_1
endfunction

function SetupBox_init takes integer this_1 returns nothing
endfunction

function alloc_EventListener_add_SetupBox_SetupBox takes nothing returns integer
	local integer this_1
	if EventListener_firstFree == 0 then
		if EventListener_maxIndex < JASS_MAX_ARRAY_SIZE then
			set EventListener_maxIndex = EventListener_maxIndex + 1
			set this_1 = EventListener_maxIndex
			set EventListener_typeId[this_1] = 811
		else
			call error("Out of memory: Could not create EventListener_add_SetupBox_SetupBox.")
			set this_1 = 0
		endif
	else
		set EventListener_firstFree = EventListener_firstFree - 1
		set this_1 = EventListener_nextFree[EventListener_firstFree]
		set EventListener_typeId[this_1] = 811
	endif
	return this_1
endfunction

function construct_SetupBox takes integer this_1, real pos_x_1, real pos_y_1, player owner, integer data_1 returns nothing
	local unit receiver
	local unit receiver_1
	local unit receiver_2
	local unit receiver_3
	local unit receiver_4
	local unit receiver_5
	local unit receiver_6
	local unit receiver_7
	local unit receiver_8
	local unit receiver_9
	local integer clVar
	local unit temp
	local playerunitevent temp_1
	call construct_UnitEntity(this_1, createUnit(owner, SetupBox_SETUP_BOX_ID, pos_x_1, pos_y_1, 0.))
	call SetupBox_init(this_1)
	call Entity_setCurrentRegion(this_1)
	set SetupBox_rdata[this_1] = data_1
	set receiver = UnitEntity_actor[this_1]
	call unit_addAbility(receiver, SetupBox_ALLOW_ID)
	set receiver_1 = receiver
	call unit_addAbility(receiver_1, SetupBox_CLEAR_ID)
	set receiver_2 = receiver_1
	call unit_addAbility(receiver_2, SetupBox_SECOND_PAGE)
	set receiver_3 = receiver_2
	call unit_addAbility(receiver_3, SetupBox_INC_GRAVITY)
	set receiver_4 = receiver_3
	call unit_addAbility(receiver_4, SetupBox_DEC_GRAVITY)
	set receiver_5 = receiver_4
	call unit_addAbility(receiver_5, SetupBox_TURND_ID)
	set receiver_6 = receiver_5
	call unit_addAbility(receiver_6, SetupBox_TURNI_ID)
	set receiver_7 = receiver_6
	call unit_addAbility(receiver_7, SetupBox_ABIL_WIZARD)
	set receiver_8 = receiver_7
	call unit_addAbility(receiver_8, SetupBox_CUT_ALLOW)
	set receiver_9 = receiver_8
	call unit_addAbility(receiver_9, SetupBox_EASY_ENABLE)
	set temp = UnitEntity_actor[this_1]
	set temp_1 = EVENT_PLAYER_UNIT_SPELL_EFFECT
	set clVar = alloc_EventListener_add_SetupBox_SetupBox()
	call construct_EventListener(clVar)
	set this_2926[clVar] = this_1
	call EventListener_add_436(temp, temp_1, clVar)
endfunction

function new_SetupBox takes real pos_x_1, real pos_y_1, player owner, integer data_1 returns integer
	local integer this_1 = alloc_SetupBox()
	call construct_SetupBox(this_1, pos_x_1, pos_y_1, owner, data_1)
	return this_1
endfunction

function claimRegion takes nothing returns nothing
	local unit seller = GetTriggerUnit()
	local unit buyer = GetBuyingUnit()
	local item itm = GetSoldItem()
	local integer id = GetItemTypeId(itm)
	local integer entity_1 = unit_getEntity(buyer)
	local integer rdata = getRegionData_3304(unit_getPos(seller), unit_getPos_return_y)
	local integer rtype = getRegionTypeFromItem(id)
	local integer builder
	if Serializable_typeId[entity_1] == 1162 then
		call item_remove(itm)
		if RegionData_rtype[rdata] == 0 and rtype != 0 then
			set builder = entity_1
			if Builder_regionCount[builder] > 0 then
				set Builder_regionCount[builder] = Builder_regionCount[builder] - 1
				call dispatch_RegionData_RegionData_RegionData_setType(rdata, rtype, true)
				call dispatch_RegionData_RegionData_RegionData_setOwner(rdata, Entity_owner[builder])
				call item_remove(GetManipulatedItem())
				call effect_destr(addEffect("Abilities\\Spells\\Other\\Charm\\CharmTarget.mdl", unit_getPos(seller), unit_getPos_return_y))
				call unit_remove(seller)
				call DisplayTextToPlayer(Entity_owner[builder], 0., 0., "|cff6BC54AYou claimed this region!\nA |cffFFCC00Setupunit|cff6BC54A has been created at the |cffFFCC00left top corner|cff6BC54A of your region.")
				call new_SetupBox(GetRectMinX(RegionData_theRect[rdata]) + 192., GetRectMaxY(RegionData_theRect[rdata]) - 192., Entity_owner[builder], rdata)
				if GetLocalPlayer() == Entity_owner[builder] then
					call SelectUnit(UnitEntity_actor[builder], true)
				endif
			else
				call printTimedToPlayer("|cff3187CBYou have used up all your regions. Leave some for the other builders", 15., Entity_owner[builder])
			endif
		endif
	endif
endfunction

function code__registerPlayerUnitEvent_SetupBox takes nothing returns nothing
	call claimRegion()
endfunction

function fireEx_onCast_Arcanery_Arcanery takes integer this_1, integer id returns nothing
	local integer temp
	if  not Entity_done[this_2953[this_1]] then
		set temp = id
		if temp == Arcanery_JUMP_MODE_ID then
			set Arcanery_arcMode[this_2953[this_1]] = 1
		elseif temp == Arcanery_ORB_MODE_ID then
			set Arcanery_arcMode[this_2953[this_1]] = 2
		elseif temp == Arcanery_SILENCE_MODE_ID then
			set Arcanery_arcMode[this_2953[this_1]] = 0
		endif
		call dispatch_Arcanery_Arcanery_Arcanery_recreateEffect(this_2953[this_1])
	endif
endfunction

function fireEx_onCast_Bombertower_Bombertower takes integer this_1, integer id returns nothing
	call onAttackspeedCast(id, UnitEntity_actor[this_2989[this_1]])
endfunction

function dispatch_OnCast_ClosureEvents_OnCast_fireEx takes integer this_1, integer id returns nothing
	if OnCastListener_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling OnCast.fireEx")
		else
			call error("Called OnCast.fireEx on invalid object.")
		endif
	endif
	if OnCastListener_typeId[this_1] <= 1021 then
		call fireEx_onCast_Arcanery_Arcanery(this_1, id)
	else
		call fireEx_onCast_Bombertower_Bombertower(this_1, id)
	endif
endfunction

function OnCast_fire takes integer this_1, unit caster returns nothing
	call dispatch_OnCast_ClosureEvents_OnCast_fireEx(this_1, GetSpellAbilityId())
endfunction

function EventData_getSpellTargetUnit takes nothing returns unit
	return GetSpellTargetUnit()
endfunction

function alloc_Fireball takes nothing returns integer
	local integer this_1
	if Serializable_firstFree == 0 then
		if Serializable_maxIndex < JASS_MAX_ARRAY_SIZE then
			set Serializable_maxIndex = Serializable_maxIndex + 1
			set this_1 = Serializable_maxIndex
			set Serializable_typeId[this_1] = 1143
		else
			call error("Out of memory: Could not create Fireball.")
			set this_1 = 0
		endif
	else
		set Serializable_firstFree = Serializable_firstFree - 1
		set this_1 = Serializable_nextFree[Serializable_firstFree]
		set Serializable_typeId[this_1] = 1143
	endif
	return this_1
endfunction

function Fireball_init takes integer this_1 returns nothing
endfunction

function construct_Fireball takes integer this_1, integer caster, real direction_radians returns nothing
	call construct_Projectile(this_1, vec3_op_plus_4284(vec2_withZ(vec3_toVec2(Entity_pos_x[caster], Entity_pos_y[caster], Entity_pos_z[caster]), vec3_toVec2_return_y, 42.), vec2_withZ_return_y, vec2_withZ_return_z, angle_toVec(direction_radians, 20.), angle_toVec_return_y), vec3_op_plus_return_y_3134, vec3_op_plus_return_z_3136, 46., GameConstants_STAFF_PLAYER, direction_radians, Abilities_fireBallMissile)
	call Fireball_init(this_1)
	set Fireball_caster[this_1] = caster
	call dispatch_Projectile_Projectile_Projectile_setSpeed(this_1, 12.)
	call dispatch_Projectile_Projectile_Projectile_setRanged(this_1, 800.)
	call Entity_setCurrentRegion(this_1)
endfunction

function new_Fireball takes integer caster, real direction_radians returns integer
	local integer this_1 = alloc_Fireball()
	call construct_Fireball(this_1, caster, direction_radians)
	return this_1
endfunction

function fireEx_onPointCast_Warlock_MGWarlock takes integer this_1, unit caster, real target_x, real target_y returns nothing
	call new_Fireball(this_2949[this_1], vec2_angleTo(unit_getPos(caster), unit_getPos_return_y, target_x, target_y))
endfunction

function dispatch_OnPointCast_ClosureEvents_OnPointCast_fireEx takes integer this_1, unit caster, real target_x, real target_y returns nothing
	if OnCastListener_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling OnPointCast.fireEx")
		else
			call error("Called OnPointCast.fireEx on invalid object.")
		endif
	endif
	call fireEx_onPointCast_Warlock_MGWarlock(this_1, caster, target_x, target_y)
endfunction

function OnPointCast_fire takes integer this_1, unit caster returns nothing
	if EventData_getSpellTargetUnit() == null then
		call dispatch_OnPointCast_ClosureEvents_OnPointCast_fireEx(this_1, caster, EventData_getSpellTargetPos(), EventData_getSpellTargetPos_return_y)
	endif
endfunction

function dispatch_OnUnitCast_ClosureEvents_OnUnitCast_fireEx takes integer this_1, unit caster, unit target returns nothing
endfunction

function OnUnitCast_fire takes integer this_1, unit caster returns nothing
	if EventData_getSpellTargetUnit() != null then
		call dispatch_OnUnitCast_ClosureEvents_OnUnitCast_fireEx(this_1, caster, EventData_getSpellTargetUnit())
	endif
endfunction

function dispatch_OnCastListener_ClosureEvents_OnCastListener_fire takes integer this_1, unit caster returns nothing
	if OnCastListener_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling OnCastListener.fire")
		else
			call error("Called OnCastListener.fire on invalid object.")
		endif
	endif
	if OnCastListener_typeId[this_1] <= 1024 then
		if OnCastListener_typeId[this_1] <= 1022 then
			call OnCast_fire(this_1, caster)
		else
			call OnPointCast_fire(this_1, caster)
		endif
	else
		call OnUnitCast_fire(this_1, caster)
	endif
endfunction

function EventListener_onSpellEffect takes nothing returns nothing
	local unit trigUnit = GetTriggerUnit()
	local integer abilId = GetSpellAbilityId()
	local integer index = unit_getIndex(trigUnit)
	local integer listener_1
	local integer nextListener
	local integer listener_2
	local integer nextListener_1
	if EventListener_castMapCasters[index] != 0 then
		set listener_1 = EventListener_castMapCasters[index]
		loop
			exitwhen  not (listener_1 != 0)
			set nextListener = OnCastListener_next[listener_1]
			if OnCastListener_abilId[listener_1] == -1 or OnCastListener_abilId[listener_1] == abilId then
				call dispatch_OnCastListener_ClosureEvents_OnCastListener_fire(listener_1, GetSpellAbilityUnit())
			endif
			set listener_1 = nextListener
		endloop
	endif
	if dispatch_HashMap_HashMap_HashMap_has(EventListener_castMap, abilId) then
		set listener_2 = dispatch_HashMap_HashMap_HashMap_get(EventListener_castMap, abilId)
		loop
			exitwhen  not (listener_2 != 0)
			set nextListener_1 = OnCastListener_next[listener_2]
			if OnCastListener_eventUnit[listener_2] == null or OnCastListener_eventUnit[listener_2] == trigUnit then
				call dispatch_OnCastListener_ClosureEvents_OnCastListener_fire(listener_2, GetSpellAbilityUnit())
			endif
			set listener_2 = nextListener_1
		endloop
	endif
endfunction

function code__registerPlayerUnitEvent_nullTimer_ClosureEvents takes nothing returns nothing
	call EventListener_onSpellEffect()
endfunction

function trigger_execute takes trigger this_1 returns nothing
	call TriggerExecute(this_1)
endfunction

function code__registerPlayerUnitEvent_nullTimer_OnUnitEnterLeave takes nothing returns nothing
	local unit leavingUnit = GetTriggerUnit()
	if unit_getAbilityLevel(leavingUnit, OnUnitEnterLeave_ABILITY_ID) == 0 and GetIssuedOrderId() == OrderIds_undefend then
		call pushUnit(leavingUnit)
		call trigger_execute(OnUnitEnterLeave_eventTrigger)
		call popUnit()
	endif
endfunction

function multiboard_setItemsStyle takes multiboard this_1, boolean showValues, boolean showIcons returns nothing
	call MultiboardSetItemsStyle(this_1, showValues, showIcons)
endfunction

function multiboard_setItemsWidth takes multiboard this_1, real width returns nothing
	call MultiboardSetItemsWidth(this_1, width)
endfunction

function createMultiboard takes nothing returns nothing
	local multiboarditem mbi
	local multiboarditem receiver
	local multiboarditem receiver_1
	local multiboarditem receiver_2
	local multiboarditem receiver_3
	local multiboarditem receiver_4
	local multiboarditem receiver_5
	set DebugInfo_mb = CreateMultiboard()
	call multiboard_setColumnCount(DebugInfo_mb, DebugInfo_columns)
	call multiboard_setRowCount(DebugInfo_mb, DebugInfo_rows)
	call multiboard_setItemsStyle(DebugInfo_mb, true, false)
	call multiboard_setItemsWidth(DebugInfo_mb, 0.04)
	call multiboard_setTitle(DebugInfo_mb, "Debug Info")
	set mbi = multiboard_getItem(DebugInfo_mb, 0, 0)
	set receiver = mbi
	call multiboarditem_setValue(receiver, "Allocations")
	set receiver_1 = receiver
	call multiboarditem_setWidth(receiver_1, 0.10)
	set mbi = multiboard_getItem(DebugInfo_mb, 1, 0)
	set receiver_2 = mbi
	call multiboarditem_setValue(receiver_2, "Callbacks")
	set receiver_3 = receiver_2
	call multiboarditem_setWidth(receiver_3, 0.10)
	set mbi = multiboard_getItem(DebugInfo_mb, 2, 0)
	set receiver_4 = mbi
	call multiboarditem_setValue(receiver_4, "Entites")
	set receiver_5 = receiver_4
	call multiboarditem_setWidth(receiver_5, 0.10)
endfunction

function code__startPeriodic_DebugInfo takes nothing returns nothing
	if DebugInfo_mb == null then
		call createMultiboard()
	endif
	set DebugInfo_seconds = DebugInfo_seconds + 1
	set DebugInfo_totalEventCallbacks = DebugInfo_totalEventCallbacks + DebugInfo_eventCallbacksPerSecond
	set DebugInfo_totalAllocations = DebugInfo_totalAllocations + DebugInfo_allocationsPerSecond
	call multiboarditem_setValue(multiboard_getItem(DebugInfo_mb, 0, 1), int_toString(DebugInfo_allocationsPerSecond))
	call multiboarditem_setValue(multiboard_getItem(DebugInfo_mb, 0, 2), real_toString(DebugInfo_totalAllocations * 1. / DebugInfo_seconds))
	call multiboarditem_setValue(multiboard_getItem(DebugInfo_mb, 1, 1), int_toString(DebugInfo_eventCallbacksPerSecond))
	call multiboarditem_setValue(multiboard_getItem(DebugInfo_mb, 1, 2), real_toString(DebugInfo_totalEventCallbacks * 1. / DebugInfo_seconds))
	call multiboarditem_setValue(multiboard_getItem(DebugInfo_mb, 2, 1), int_toString(Entity_DupletListModule_activeSize))
	call multiboarditem_setValue(multiboard_getItem(DebugInfo_mb, 2, 2), int_toString(Entity_DupletListModule_inactiveSize))
	set DebugInfo_eventCallbacksPerSecond = 0
	set DebugInfo_allocationsPerSecond = 0
endfunction

function code__startPeriodic_GameTimer takes nothing returns nothing
	set GameTimer_currentTime = GameTimer_currentTime + Basics_ANIMATION_PERIOD
endfunction

function code__startPeriodic_ReviveManager takes nothing returns nothing
	call update()
endfunction

function call_doAfter_Bomber_Bomber takes integer this_1 returns boolean
	return unit_issueImmediateOrder(UnitEntity_actor[this_2975[this_1]], "stop")
endfunction

function call_doAfter_Bomber_Bomber_1969 takes integer this_1 returns boolean
	return unit_issueImmediateOrder(UnitEntity_actor[this_2976[this_1]], "stop")
endfunction

function call_doAfter_Bombertower_Bombertower takes integer this_1 returns boolean
	return unit_issueImmediateOrder(Bombertower_dummy[obj[this_1]], "stop")
endfunction

function call_doAfter_Bombertower_Bombertower_1971 takes integer this_1 returns boolean
	return unit_issueImmediateOrder(Bombertower_dummy[obj_2548[this_1]], "stop")
endfunction

function instantBuild takes integer b, real tpos_x_1, real tpos_y_1, integer id returns nothing
	local integer rdata = getRegionData_3304(tpos_x_1, tpos_y_1)
	local integer i
	local integer i2
	if rdata != 0 and dispatch_RegionData_RegionData_RegionData_canBuild(rdata, Entity_owner[b]) then
		set i = 1
		loop
			exitwhen  not (InstantBuild_buildorders[i] > 0)
			if id == InstantBuild_buildorders[i] then
				call newObjectFromId(Entity_owner[b], tpos_x_1, tpos_y_1, i)
				exitwhen true
			endif
			set i = i + 1
		endloop
		set i2 = 139
		loop
			exitwhen i2 > 152
			if id == InstantBuild_buildorders[i2] then
				call newObjectFromId(Entity_owner[b], tpos_x_1, tpos_y_1, i2)
				exitwhen true
			endif
			set i2 = i2 + 1
		endloop
	else
		call DisplayTextToPlayer(Entity_owner[b], 0., 0., "|cffC51019You have no permission to build in this region!")
	endif
	call unit_abortOrder(UnitEntity_actor[b])
endfunction

function call_doAfter_Builder_Builder takes integer this_1 returns nothing
	call instantBuild(this_2924[this_1], orderPos_x[this_1], orderPos_y[this_1], orderId[this_1])
endfunction

function dispatch_Callback_ClosureTimers_Callback_call takes integer this_1 returns nothing
endfunction

function dealloc_Callback takes integer obj_1 returns nothing
	if Callback_typeId[obj_1] == 0 then
		call error("Double free: object of type Callback")
	else
		set Callback_firstFree = Callback_firstFree + 1
		set Callback_typeId[obj_1] = 0
	endif
endfunction

function destroyCallback takes integer this_1 returns nothing
	call dealloc_Callback(this_1)
endfunction

function dispatch_Callback_destroyCallback takes integer this_1 returns nothing
	if Callback_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling Callback.Callback")
		else
			call error("Called Callback.Callback on invalid object.")
		endif
	endif
	call destroyCallback(this_1)
endfunction

function timerdialog_destr takes timerdialog this_1 returns nothing
	call DestroyTimerDialog(this_1)
endfunction

function call_doAfter_ClosureTimers takes integer this_1 returns nothing
	call dispatch_Callback_ClosureTimers_Callback_call(cb[this_1])
	call dispatch_Callback_destroyCallback(cb[this_1])
	call timerdialog_destr(dia[this_1])
endfunction

function call_doAfter_ClosureTimers_1974 takes integer this_1 returns nothing
	set ClosureTimers_x = ClosureTimers_x + 50
endfunction

function call_doAfter_ClosureTimers_1975 takes integer this_1 returns nothing
	set ClosureTimers_x = ClosureTimers_x * 2
endfunction

function call_doAfter_ClosureTimers_1976 takes integer this_1 returns nothing
	set ClosureTimers_x = ClosureTimers_x / 2
	call int_assertEquals(ClosureTimers_x, 250)
endfunction

function call_doAfter_Commands takes integer this_1 returns nothing
	set PlayerData_escaper[pd_2571[this_1]] = new_HolyEscaper(vec2_toVec3(Escaper_currentRevivepoint_x, Escaper_currentRevivepoint_y), vec2_toVec3_return_y, vec2_toVec3_return_z, PlayerData_p[pd_2571[this_1]])
endfunction

function call_doAfter_DummyRecycler_DummyRecycler takes integer this_1 returns nothing
	call DummyRecycler_recycle(u[this_1])
endfunction

function vec2_distanceToSq takes real this_x, real this_y, real v_x, real v_y returns real
	return real_squared(v_x - this_x) + real_squared(v_y - this_y)
endfunction

function call_doAfter_Escaper_Escaper takes integer this_1 returns nothing
	local real smallestDist = 9999999.
	local integer target = 0
	local integer iterator = LinkedList_iterator(Escaper_escapers)
	local integer e_1
	local real dist
	loop
		exitwhen  not LLIterator_hasNext(iterator)
		set e_1 = LLIterator_next(iterator)
		if e_1 != this_2937[this_1] then
			set dist = vec2_distanceToSq(tpos_x_3019[this_1], tpos_y_3022[this_1], vec3_toVec2(dispatch_UnitEntity_Entity_UnitEntity_getPos(e_1), dispatch_UnitEntity_Entity_UnitEntity_getPos_return_y, dispatch_UnitEntity_Entity_UnitEntity_getPos_return_z), vec3_toVec2_return_y)
			if dist < smallestDist then
				set smallestDist = dist
				set target = e_1
			endif
		endif
	endloop
	call LLIterator_close(iterator)
	if target == 0 then
		set target = this_2937[this_1]
	endif
	call flashEffect(Abilities_blinkCaster, dispatch_UnitEntity_Entity_UnitEntity_getPos(this_2937[this_1]), dispatch_UnitEntity_Entity_UnitEntity_getPos_return_y, dispatch_UnitEntity_Entity_UnitEntity_getPos_return_z)
	call dispatch_UnitEntity_Entity_UnitEntity_setPos(this_2937[this_1], dispatch_UnitEntity_Entity_UnitEntity_getPos(target), dispatch_UnitEntity_Entity_UnitEntity_getPos_return_y, dispatch_UnitEntity_Entity_UnitEntity_getPos_return_z)
	call flashEffect(Abilities_blinkCaster, dispatch_UnitEntity_Entity_UnitEntity_getPos(target), dispatch_UnitEntity_Entity_UnitEntity_getPos_return_y, dispatch_UnitEntity_Entity_UnitEntity_getPos_return_z)
endfunction

function call_doAfter_FText_FText takes integer this_1 returns nothing
	call dispatch_FText_FText_FText_recycle(this_2901[this_1])
endfunction

function call_doAfter_FourthCitadelleMaze_FourthCitadelle takes integer this_1 returns boolean
	return unit_issuePointOrder(gg_unit_spnr_0161, "patrol", -3900., -4604.)
endfunction

function alloc_CallbackSingle_doAfter_GameInit_1613 takes nothing returns integer
	local integer this_1
	if CallbackSingle_firstFree == 0 then
		if CallbackSingle_maxIndex < JASS_MAX_ARRAY_SIZE then
			set CallbackSingle_maxIndex = CallbackSingle_maxIndex + 1
			set this_1 = CallbackSingle_maxIndex
			set CallbackSingle_typeId[this_1] = 686
		else
			call error("Out of memory: Could not create CallbackSingle_doAfter_GameInit.")
			set this_1 = 0
		endif
	else
		set CallbackSingle_firstFree = CallbackSingle_firstFree - 1
		set this_1 = CallbackSingle_nextFree[CallbackSingle_firstFree]
		set CallbackSingle_typeId[this_1] = 686
	endif
	return this_1
endfunction

function alloc_CallbackPeriodic_doPeriodically_PlayerData takes nothing returns integer
	local integer this_1
	if CallbackPeriodic_firstFree == 0 then
		if CallbackPeriodic_maxIndex < JASS_MAX_ARRAY_SIZE then
			set CallbackPeriodic_maxIndex = CallbackPeriodic_maxIndex + 1
			set this_1 = CallbackPeriodic_maxIndex
			set CallbackPeriodic_typeId[this_1] = 669
		else
			call error("Out of memory: Could not create CallbackPeriodic_doPeriodically_PlayerData.")
			set this_1 = 0
		endif
	else
		set CallbackPeriodic_firstFree = CallbackPeriodic_firstFree - 1
		set this_1 = CallbackPeriodic_nextFree[CallbackPeriodic_firstFree]
		set CallbackPeriodic_typeId[this_1] = 669
	endif
	return this_1
endfunction

function alloc_CallbackSingle_doAfter_PlayerData takes nothing returns integer
	local integer this_1
	if CallbackSingle_firstFree == 0 then
		if CallbackSingle_maxIndex < JASS_MAX_ARRAY_SIZE then
			set CallbackSingle_maxIndex = CallbackSingle_maxIndex + 1
			set this_1 = CallbackSingle_maxIndex
			set CallbackSingle_typeId[this_1] = 698
		else
			call error("Out of memory: Could not create CallbackSingle_doAfter_PlayerData.")
			set this_1 = 0
		endif
	else
		set CallbackSingle_firstFree = CallbackSingle_firstFree - 1
		set this_1 = CallbackSingle_nextFree[CallbackSingle_firstFree]
		set CallbackSingle_typeId[this_1] = 698
	endif
	return this_1
endfunction

function alloc_LLItrClosure_forEach_PlayerData_1835 takes nothing returns integer
	local integer this_1
	if LLItrClosure_firstFree == 0 then
		if LLItrClosure_maxIndex < JASS_MAX_ARRAY_SIZE then
			set LLItrClosure_maxIndex = LLItrClosure_maxIndex + 1
			set this_1 = LLItrClosure_maxIndex
			set LLItrClosure_typeId[this_1] = 994
		else
			call error("Out of memory: Could not create LLItrClosure_forEach_PlayerData.")
			set this_1 = 0
		endif
	else
		set LLItrClosure_firstFree = LLItrClosure_firstFree - 1
		set this_1 = LLItrClosure_nextFree[LLItrClosure_firstFree]
		set LLItrClosure_typeId[this_1] = 994
	endif
	return this_1
endfunction

function alloc_OnPlayerLeave_onPlayerLeave_PlayerData takes nothing returns integer
	local integer this_1
	if OnPlayerLeave_firstFree == 0 then
		if OnPlayerLeave_maxIndex < JASS_MAX_ARRAY_SIZE then
			set OnPlayerLeave_maxIndex = OnPlayerLeave_maxIndex + 1
			set this_1 = OnPlayerLeave_maxIndex
			set OnPlayerLeave_typeId[this_1] = 1029
		else
			call error("Out of memory: Could not create OnPlayerLeave_onPlayerLeave_PlayerData.")
			set this_1 = 0
		endif
	else
		set OnPlayerLeave_firstFree = OnPlayerLeave_firstFree - 1
		set this_1 = OnPlayerLeave_nextFree[OnPlayerLeave_firstFree]
		set OnPlayerLeave_typeId[this_1] = 1029
	endif
	return this_1
endfunction

function onPlayerLeave takes integer onLeave returns nothing
	set Players_onLeaveListener = onLeave
endfunction

function initPlayers takes nothing returns nothing
	local integer temp = Players_ALL_PLAYERS
	local integer clVar = alloc_LLItrClosure_forEach_PlayerData_1835()
	local integer clVar_1
	local integer clVar_2
	local integer clVar_3
	local integer iterator
	local integer pd_1
	local unit receiver
	local unit receiver_1
	local unit receiver_2
	local integer i
	call dispatch_LinkedList_LinkedList_LinkedList_forEach(temp, clVar)
	set clVar_1 = alloc_OnPlayerLeave_onPlayerLeave_PlayerData()
	call onPlayerLeave(clVar_1)
	set clVar_2 = alloc_CallbackSingle_doAfter_PlayerData()
	call construct_CallbackSingle(clVar_2)
	call doAfter(.1, clVar_2)
	set clVar_3 = alloc_CallbackPeriodic_doPeriodically_PlayerData()
	call construct_CallbackPeriodic(clVar_3)
	call doPeriodically(1., clVar_3)
	set iterator = LinkedList_iterator(PlayerData_builderPlayers)
	loop
		exitwhen  not LLIterator_hasNext(iterator)
		set pd_1 = LLIterator_next(iterator)
		call PlayerData_tmods_set(pd_1, 0, new_TerrainModder(createUnit(PlayerData_p[pd_1], TerrainModder_WALKABLE_ID, BuilderConstants_hidden_x, BuilderConstants_hidden_y, 0.)))
		call PlayerData_tmods_set(pd_1, 1, new_TerrainModder(createUnit(PlayerData_p[pd_1], TerrainModder_UNWALKABLE_ID, BuilderConstants_hidden_x, BuilderConstants_hidden_y, 0.)))
		call PlayerData_tmods_set(pd_1, 2, new_TerrainModder(createUnit(PlayerData_p[pd_1], TerrainModder_SLIDEABLE_ICE_ID, BuilderConstants_hidden_x, BuilderConstants_hidden_y, 0.)))
		call PlayerData_tmods_set(pd_1, 3, new_TerrainModder(createUnit(PlayerData_p[pd_1], TerrainModder_SLIDEABLE_UNC_ICE_ID, BuilderConstants_hidden_x, BuilderConstants_hidden_y, 0.)))
		set PlayerData_prod[pd_1] = new_UnitProducer(BuilderConstants_hidden_x, BuilderConstants_hidden_y, PlayerData_p[pd_1])
		set PlayerData_builder[pd_1] = new_Builder(PlayerData_p[pd_1])
		set receiver = UnitEntity_actor[PlayerData_builder[pd_1]]
		call unit_addItemById(receiver, 1227894833)
		set receiver_1 = receiver
		call unit_addItemById(receiver_1, 1227894834)
		set receiver_2 = receiver_1
		call unit_addItemById(receiver_2, 1227894835)
		set Builder_regionCount[PlayerData_builder[pd_1]] = real_round(17. / dispatch_LinkedList_LinkedList_LinkedList_size(PlayerData_builderPlayers))
		set i = 0
		loop
			exitwhen i > 28
			call dispatch_RegionData_RegionData_RegionData_revealRegion(RegionData_regions[i], PlayerData_p[pd_1])
			set i = i + 1
		endloop
	endloop
	call LLIterator_close(iterator)
endfunction

function initGame takes nothing returns nothing
	local integer clVar
	call printTimed("Initializing map..", 10.)
	call initPlayers()
	call CinematicFadeBJ(bj_CINEFADETYPE_FADEOUT, 0.00, Textures_black_mask, 0., 0., 0., 0.)
	call CreateFogModifierRect(GameConstants_STAFF_PLAYER, FOG_OF_WAR_VISIBLE, MapBounds_playableMapRect, false, false)
	call VolumeGroupReset()
	call EndThematicMusic()
	set clVar = alloc_CallbackSingle_doAfter_GameInit_1613()
	call construct_CallbackSingle(clVar)
	call doAfter(0.01, clVar)
endfunction

function call_doAfter_GameInit takes integer this_1 returns nothing
	call initGame()
endfunction

function alloc_CallbackSingle_doAfter_GameInit_1614 takes nothing returns integer
	local integer this_1
	if CallbackSingle_firstFree == 0 then
		if CallbackSingle_maxIndex < JASS_MAX_ARRAY_SIZE then
			set CallbackSingle_maxIndex = CallbackSingle_maxIndex + 1
			set this_1 = CallbackSingle_maxIndex
			set CallbackSingle_typeId[this_1] = 687
		else
			call error("Out of memory: Could not create CallbackSingle_doAfter_GameInit.")
			set this_1 = 0
		endif
	else
		set CallbackSingle_firstFree = CallbackSingle_firstFree - 1
		set this_1 = CallbackSingle_nextFree[CallbackSingle_firstFree]
		set CallbackSingle_typeId[this_1] = 687
	endif
	return this_1
endfunction

function alloc_ForForceCallback_execute_Startmazes takes nothing returns integer
	local integer this_1
	if ForForceCallback_firstFree == 0 then
		if ForForceCallback_maxIndex < JASS_MAX_ARRAY_SIZE then
			set ForForceCallback_maxIndex = ForForceCallback_maxIndex + 1
			set this_1 = ForForceCallback_maxIndex
			set ForForceCallback_typeId[this_1] = 848
		else
			call error("Out of memory: Could not create ForForceCallback_execute_Startmazes.")
			set this_1 = 0
		endif
	else
		set ForForceCallback_firstFree = ForForceCallback_firstFree - 1
		set this_1 = ForForceCallback_nextFree[ForForceCallback_firstFree]
		set ForForceCallback_typeId[this_1] = 848
	endif
	return this_1
endfunction

function alloc_ForForceCallback_try_Startmazes takes nothing returns integer
	local integer this_1
	if ForForceCallback_firstFree == 0 then
		if ForForceCallback_maxIndex < JASS_MAX_ARRAY_SIZE then
			set ForForceCallback_maxIndex = ForForceCallback_maxIndex + 1
			set this_1 = ForForceCallback_maxIndex
			set ForForceCallback_typeId[this_1] = 858
		else
			call error("Out of memory: Could not create ForForceCallback_try_Startmazes.")
			set this_1 = 0
		endif
	else
		set ForForceCallback_firstFree = ForForceCallback_firstFree - 1
		set this_1 = ForForceCallback_nextFree[ForForceCallback_firstFree]
		set ForForceCallback_typeId[this_1] = 858
	endif
	return this_1
endfunction

function alloc_ForGroupCallback_forUnitsOfPlayer_Startmazes takes nothing returns integer
	local integer this_1
	if ForGroupCallback_firstFree == 0 then
		if ForGroupCallback_maxIndex < JASS_MAX_ARRAY_SIZE then
			set ForGroupCallback_maxIndex = ForGroupCallback_maxIndex + 1
			set this_1 = ForGroupCallback_maxIndex
			set ForGroupCallback_typeId[this_1] = 879
		else
			call error("Out of memory: Could not create ForGroupCallback_forUnitsOfPlayer_Startmazes.")
			set this_1 = 0
		endif
	else
		set ForGroupCallback_firstFree = ForGroupCallback_firstFree - 1
		set this_1 = ForGroupCallback_nextFree[ForGroupCallback_firstFree]
		set ForGroupCallback_typeId[this_1] = 879
	endif
	return this_1
endfunction

function initStartmazes takes nothing returns nothing
	local player temp = GameConstants_STAFF_PLAYER
	local integer clVar = alloc_ForGroupCallback_forUnitsOfPlayer_Startmazes()
	local integer clVar_1
	local integer clVar_2
	call forUnitsOfPlayer(temp, clVar)
	set clVar_1 = alloc_ForForceCallback_execute_Startmazes()
	call execute(clVar_1)
	set clVar_2 = alloc_ForForceCallback_try_Startmazes()
	call try(clVar_2)
endfunction

function partThree takes nothing returns nothing
	local integer clVar
	call initStartmazes()
	set clVar = alloc_CallbackSingle_doAfter_GameInit_1614()
	call construct_CallbackSingle(clVar)
	call doAfter(0.5, clVar)
endfunction

function call_doAfter_GameInit_1983 takes integer this_1 returns nothing
	call partThree()
endfunction

function alloc_CallbackSingle_doAfter_GameInit_1615 takes nothing returns integer
	local integer this_1
	if CallbackSingle_firstFree == 0 then
		if CallbackSingle_maxIndex < JASS_MAX_ARRAY_SIZE then
			set CallbackSingle_maxIndex = CallbackSingle_maxIndex + 1
			set this_1 = CallbackSingle_maxIndex
			set CallbackSingle_typeId[this_1] = 688
		else
			call error("Out of memory: Could not create CallbackSingle_doAfter_GameInit.")
			set this_1 = 0
		endif
	else
		set CallbackSingle_firstFree = CallbackSingle_firstFree - 1
		set this_1 = CallbackSingle_nextFree[CallbackSingle_firstFree]
		set CallbackSingle_typeId[this_1] = 688
	endif
	return this_1
endfunction

function alloc_Selector takes nothing returns integer
	local integer this_1
	if Serializable_firstFree == 0 then
		if Serializable_maxIndex < JASS_MAX_ARRAY_SIZE then
			set Serializable_maxIndex = Serializable_maxIndex + 1
			set this_1 = Serializable_maxIndex
			set Serializable_typeId[this_1] = 1170
		else
			call error("Out of memory: Could not create Selector.")
			set this_1 = 0
		endif
	else
		set Serializable_firstFree = Serializable_firstFree - 1
		set this_1 = Serializable_nextFree[Serializable_firstFree]
		set Serializable_typeId[this_1] = 1170
	endif
	return this_1
endfunction

function Selector_init takes integer this_1 returns nothing
endfunction

function alloc_EventListener_add_Selector_PickSystem takes nothing returns integer
	local integer this_1
	if EventListener_firstFree == 0 then
		if EventListener_maxIndex < JASS_MAX_ARRAY_SIZE then
			set EventListener_maxIndex = EventListener_maxIndex + 1
			set this_1 = EventListener_maxIndex
			set EventListener_typeId[this_1] = 810
		else
			call error("Out of memory: Could not create EventListener_add_Selector_PickSystem.")
			set this_1 = 0
		endif
	else
		set EventListener_firstFree = EventListener_firstFree - 1
		set this_1 = EventListener_nextFree[EventListener_firstFree]
		set EventListener_typeId[this_1] = 810
	endif
	return this_1
endfunction

function real_fromRad takes real this_1 returns real
	set real_fromRad_return_radians = this_1
	return real_fromRad_return_radians
endfunction

function construct_Selector takes integer this_1, integer pd_1 returns nothing
	local unit receiver
	local unit receiver_1
	local unit receiver_2
	local unit receiver_3
	local integer clVar
	local unit temp
	local playerunitevent temp_1
	call construct_UnitEntity(this_1, createUnit_2356(PlayerData_p[pd_1], PickSystem_PICK_DUMMY_ID, PickSystem_PICK_x, PickSystem_PICK_y, PickSystem_PICK_z, real_fromRad(0.)))
	call Selector_init(this_1)
	set Selector_pd[this_1] = pd_1
	set receiver = UnitEntity_actor[this_1]
	call unit_addAbility(receiver, PickSystem_PREV_ID)
	set receiver_1 = receiver
	call unit_addAbility(receiver_1, PickSystem_NEXT_ID)
	set receiver_2 = receiver_1
	call unit_addAbility(receiver_2, PickSystem_PICK_ID)
	set receiver_3 = receiver_2
	call unit_setVertexColor_4206(receiver_3, Colors_COLOR_BLACK_red, Colors_COLOR_BLACK_green, Colors_COLOR_BLACK_blue, Colors_COLOR_BLACK_alpha)
	call player_selectSingle(PlayerData_p[pd_1], UnitEntity_actor[this_1])
	set PlayerData_selector[pd_1] = this_1
	set temp = UnitEntity_actor[this_1]
	set temp_1 = EVENT_PLAYER_UNIT_SPELL_CAST
	set clVar = alloc_EventListener_add_Selector_PickSystem()
	call construct_EventListener(clVar)
	set this_2940[clVar] = this_1
	call EventListener_add_436(temp, temp_1, clVar)
	call dispatch_Entity_Entity_Entity_DupletListModule_deactivate(this_1)
endfunction

function new_Selector takes integer pd_1 returns integer
	local integer this_1 = alloc_Selector()
	call construct_Selector(this_1, pd_1)
	return this_1
endfunction

function startChoose takes nothing returns nothing
	local integer pd_1
	local integer from
	if  not PickSystem_hastStartedYet then
		set PickSystem_hastStartedYet = true
		call CinematicFadeBJ(bj_CINEFADETYPE_FADEIN, 2.00, "ReplaceableTextures\\CameraMasks\\Black_mask.blp", 0., 0., 0., 0.)
		call CameraSetupApplyForceDuration(gg_cam_Camera_001, true, 0.30)
		set from = dispatch_LinkedList_LinkedList_LinkedList_staticItr(PlayerData_allPlayers)
		loop
			exitwhen  not LLIterator_hasNext(from)
			set pd_1 = LLIterator_next(from)
			call dispatch_RegionData_RegionData_RegionData_revealRegion(RegionData_regions[22], PlayerData_p[pd_1])
			call new_Selector(pd_1)
		endloop
		call EnablePreSelect(true, false)
	endif
endfunction

function alloc_LLItrClosure_forEach_PickSystem takes nothing returns integer
	local integer this_1
	if LLItrClosure_firstFree == 0 then
		if LLItrClosure_maxIndex < JASS_MAX_ARRAY_SIZE then
			set LLItrClosure_maxIndex = LLItrClosure_maxIndex + 1
			set this_1 = LLItrClosure_maxIndex
			set LLItrClosure_typeId[this_1] = 992
		else
			call error("Out of memory: Could not create LLItrClosure_forEach_PickSystem.")
			set this_1 = 0
		endif
	else
		set LLItrClosure_firstFree = LLItrClosure_firstFree - 1
		set this_1 = LLItrClosure_nextFree[LLItrClosure_firstFree]
		set LLItrClosure_typeId[this_1] = 992
	endif
	return this_1
endfunction

function startPick takes nothing returns nothing
	local integer temp = Players_ALL_PLAYERS
	local integer clVar = alloc_LLItrClosure_forEach_PickSystem()
	call dispatch_LinkedList_LinkedList_LinkedList_forEach(temp, clVar)
endfunction

function syncInitial takes nothing returns nothing
	local integer clVar
	call startChoose()
	call ClearMapMusic()
	call StopMusic(false)
	set clVar = alloc_CallbackSingle_doAfter_GameInit_1615()
	call construct_CallbackSingle(clVar)
	call doAfter(1., clVar)
	call startPick()
endfunction

function call_doAfter_GameInit_1984 takes integer this_1 returns nothing
	call syncInitial()
endfunction

function call_doAfter_GameInit_1985 takes integer this_1 returns nothing
	call dispatch_JukeBox_JukeBox_JukeBox_playNextMusic(JukeBox_jukeBox)
endfunction

function alloc_JukeBox takes nothing returns integer
	local integer this_1
	if JukeBox_firstFree == 0 then
		if JukeBox_maxIndex < JASS_MAX_ARRAY_SIZE then
			set JukeBox_maxIndex = JukeBox_maxIndex + 1
			set this_1 = JukeBox_maxIndex
			set JukeBox_typeId[this_1] = 984
		else
			call error("Out of memory: Could not create JukeBox.")
			set this_1 = 0
		endif
	else
		set JukeBox_firstFree = JukeBox_firstFree - 1
		set this_1 = JukeBox_nextFree[JukeBox_firstFree]
		set JukeBox_typeId[this_1] = 984
	endif
	return this_1
endfunction

function JukeBox_init takes integer this_1 returns nothing
	set JukeBox_requests[this_1] = new_LinkedList()
	set JukeBox_randomQueue[this_1] = new_LinkedList()
	set JukeBox_lastWasRequest[this_1] = false
	set JukeBox_cb[this_1] = 0
endfunction

function construct_JukeBox takes integer this_1 returns nothing
	call JukeBox_init(this_1)
endfunction

function new_JukeBox takes nothing returns integer
	local integer this_1 = alloc_JukeBox()
	call construct_JukeBox(this_1)
	return this_1
endfunction

function alloc_Music takes nothing returns integer
	local integer this_1
	if Music_firstFree == 0 then
		if Music_maxIndex < JASS_MAX_ARRAY_SIZE then
			set Music_maxIndex = Music_maxIndex + 1
			set this_1 = Music_maxIndex
			set Music_typeId[this_1] = 1017
		else
			call error("Out of memory: Could not create Music.")
			set this_1 = 0
		endif
	else
		set Music_firstFree = Music_firstFree - 1
		set this_1 = Music_nextFree[Music_firstFree]
		set Music_typeId[this_1] = 1017
	endif
	return this_1
endfunction

function Music_init takes integer this_1 returns nothing
endfunction

function string_lastIndexOf takes string this_1, string s returns integer
	local integer i = string_length(this_1) - string_length(s)
	loop
		exitwhen i < 0
		if string_substring(this_1, i, i + string_length(s)) == s then
			return i
		endif
		set i = i - 1
	endloop
	return -1
endfunction

function construct_Music takes integer this_1, integer id, string path, real duration returns nothing
	call Music_init(this_1)
	set Music_spellid[this_1] = id
	set Music_path[this_1] = path
	set Music_name[this_1] = string_substring(path, string_lastIndexOf(path, "\\") + 1, string_lastIndexOf(path, "."))
	set Music_duration[this_1] = duration
endfunction

function new_Music takes integer id, string path, real duration returns integer
	local integer this_1 = alloc_Music()
	call construct_Music(this_1, id, path, duration)
	return this_1
endfunction

function call_doAfter_JukeBox takes integer this_1 returns nothing
	call dispatch_LinkedList_LinkedList_LinkedList_add_1(JukeBox_musics, new_Music(1093677908, "Sound\\Music\\mp3Music\\Doom.mp3", 66.125))
	call dispatch_LinkedList_LinkedList_LinkedList_add_1(JukeBox_musics, new_Music(808464432, "Sound\\Music\\mp3Music\\Human1.mp3", 273.032))
	call dispatch_LinkedList_LinkedList_LinkedList_add_1(JukeBox_musics, new_Music(808464432, "Sound\\Music\\mp3Music\\Human2.mp3", 236.983))
	call dispatch_LinkedList_LinkedList_LinkedList_add_1(JukeBox_musics, new_Music(1093677900, "Sound\\Music\\mp3Music\\HumanX1.mp3", 284.646))
	call dispatch_LinkedList_LinkedList_LinkedList_add_1(JukeBox_musics, new_Music(808464432, "Sound\\Music\\mp3Music\\Orc1.mp3", 311.954))
	call dispatch_LinkedList_LinkedList_LinkedList_add_1(JukeBox_musics, new_Music(808464432, "Sound\\Music\\mp3Music\\Orc2.mp3", 313.496))
	call dispatch_LinkedList_LinkedList_LinkedList_add_1(JukeBox_musics, new_Music(808464432, "Sound\\Music\\mp3Music\\Orc3.mp3", 282.706))
	call dispatch_LinkedList_LinkedList_LinkedList_add_1(JukeBox_musics, new_Music(808464432, "Sound\\Music\\mp3Music\\OrcX1.mp3", 324.953))
	call dispatch_LinkedList_LinkedList_LinkedList_add_1(JukeBox_musics, new_Music(1093677650, "Sound\\Music\\mp3Music\\PursuitTheme.mp3", 86.537))
	call dispatch_LinkedList_LinkedList_LinkedList_add_1(JukeBox_musics, new_Music(1093677904, "Sound\\Music\\mp3Music\\SadMystery.mp3", 84.515))
	call dispatch_LinkedList_LinkedList_LinkedList_add_1(JukeBox_musics, new_Music(808464432, "Sound\\Music\\mp3Music\\Tension.mp3", 19.540))
	call dispatch_LinkedList_LinkedList_LinkedList_add_1(JukeBox_musics, new_Music(1093677909, "Sound\\Music\\mp3Music\\TragicConfrontation.mp3", 72.264))
	call dispatch_LinkedList_LinkedList_LinkedList_add_1(JukeBox_musics, new_Music(808464432, "Sound\\Music\\mp3Music\\Undead1.mp3", 303.507))
	call dispatch_LinkedList_LinkedList_LinkedList_add_1(JukeBox_musics, new_Music(808464432, "Sound\\Music\\mp3Music\\Undead2.mp3", 309.242))
	call dispatch_LinkedList_LinkedList_LinkedList_add_1(JukeBox_musics, new_Music(1093677903, "Sound\\Music\\mp3Music\\PH1.mp3", 281.582))
	call dispatch_LinkedList_LinkedList_LinkedList_add_1(JukeBox_musics, new_Music(1093677901, "Sound\\Music\\mp3Music\\ArthasTheme.mp3", 122.295))
	call dispatch_LinkedList_LinkedList_LinkedList_add_1(JukeBox_musics, new_Music(808464432, "Sound\\Music\\mp3Music\\BloodElfTheme.mp3", 144.552))
	call dispatch_LinkedList_LinkedList_LinkedList_add_1(JukeBox_musics, new_Music(1093677907, "Sound\\Music\\mp3Music\\War2IntroMusic.mp3", 81.136))
	call dispatch_LinkedList_LinkedList_LinkedList_add_1(JukeBox_musics, new_Music(1093677905, "Sound\\Music\\mp3Music\\Credits.mp3", 83.017))
	call dispatch_LinkedList_LinkedList_LinkedList_add_1(JukeBox_musics, new_Music(808464432, "Sound\\Music\\mp3Music\\Comradeship.mp3", 124.927))
	call dispatch_LinkedList_LinkedList_LinkedList_add_1(JukeBox_musics, new_Music(1093677902, "Sound\\Music\\mp3Music\\DarkAgents.mp3", 64.950))
	call dispatch_LinkedList_LinkedList_LinkedList_add_1(JukeBox_musics, new_Music(808464432, "Sound\\Music\\mp3Music\\IllidansTheme.mp3", 108.006))
	call dispatch_LinkedList_LinkedList_LinkedList_add_1(JukeBox_musics, new_Music(808464432, "Sound\\Music\\mp3Music\\LichKingTheme.mp3", 79.193))
	call dispatch_LinkedList_LinkedList_LinkedList_add_1(JukeBox_musics, new_Music(1093677906, "Sound\\Music\\mp3Music\\NagaTheme.mp3", 87.1877))
	set JukeBox_jukeBox = new_JukeBox()
endfunction

function call_doAfter_JukeBox_JukeBox takes integer this_1 returns nothing
	set JukeBox_cb[this_2925[this_1]] = 0
	call JukeBox_playNextMusic(this_2925[this_1])
endfunction

function call_doAfter_MGRandKill_MGRandKill takes integer this_1 returns nothing
	if MGRandKill_fx[this_2942[this_1]] != 0 then
		call new_SmallRandomKiller_3748(MGRandKill_spawn_x[this_2942[this_1]], MGRandKill_spawn_y[this_2942[this_1]], GameConstants_STAFF_PLAYER)
		call new_SmallRandomKiller_3748(MGRandKill_spawn_x[this_2942[this_1]], MGRandKill_spawn_y[this_2942[this_1]], GameConstants_STAFF_PLAYER)
		call new_SmallRandomKiller_3748(MGRandKill_spawn_x[this_2942[this_1]], MGRandKill_spawn_y[this_2942[this_1]], GameConstants_STAFF_PLAYER)
	endif
endfunction

function alloc_PayloadCallback_getStringList_doAfter_MemoryAccessPedestal_Pedestal takes nothing returns integer
	local integer this_1
	if PayloadCallback_firstFree == 0 then
		if PayloadCallback_maxIndex < JASS_MAX_ARRAY_SIZE then
			set PayloadCallback_maxIndex = PayloadCallback_maxIndex + 1
			set this_1 = PayloadCallback_maxIndex
			set PayloadCallback_typeId[this_1] = 1041
		else
			call error("Out of memory: Could not create PayloadCallback_getStringList_doAfter_MemoryAccessPedestal_Pedestal.")
			set this_1 = 0
		endif
	else
		set PayloadCallback_firstFree = PayloadCallback_firstFree - 1
		set this_1 = PayloadCallback_nextFree[PayloadCallback_firstFree]
		set PayloadCallback_typeId[this_1] = 1041
	endif
	return this_1
endfunction

function alloc_CallbackSingle_doAfter_MemoryAccessPedestal_Pedestal takes nothing returns integer
	local integer this_1
	if CallbackSingle_firstFree == 0 then
		if CallbackSingle_maxIndex < JASS_MAX_ARRAY_SIZE then
			set CallbackSingle_maxIndex = CallbackSingle_maxIndex + 1
			set this_1 = CallbackSingle_maxIndex
			set CallbackSingle_typeId[this_1] = 692
		else
			call error("Out of memory: Could not create CallbackSingle_doAfter_MemoryAccessPedestal_Pedestal.")
			set this_1 = 0
		endif
	else
		set CallbackSingle_firstFree = CallbackSingle_firstFree - 1
		set this_1 = CallbackSingle_nextFree[CallbackSingle_firstFree]
		set CallbackSingle_typeId[this_1] = 692
	endif
	return this_1
endfunction

function alloc_ForForceCallback_execute_fromString_Encoder_Encoder takes nothing returns integer
	local integer this_1
	if ForForceCallback_firstFree == 0 then
		if ForForceCallback_maxIndex < JASS_MAX_ARRAY_SIZE then
			set ForForceCallback_maxIndex = ForForceCallback_maxIndex + 1
			set this_1 = ForForceCallback_maxIndex
			set ForForceCallback_typeId[this_1] = 851
		else
			call error("Out of memory: Could not create ForForceCallback_execute_fromString_Encoder_Encoder.")
			set this_1 = 0
		endif
	else
		set ForForceCallback_firstFree = ForForceCallback_firstFree - 1
		set this_1 = ForForceCallback_nextFree[ForForceCallback_firstFree]
		set ForForceCallback_typeId[this_1] = 851
	endif
	return this_1
endfunction

function alloc_ForForceCallback_execute_fromString_Encoder_Encoder_1774 takes nothing returns integer
	local integer this_1
	if ForForceCallback_firstFree == 0 then
		if ForForceCallback_maxIndex < JASS_MAX_ARRAY_SIZE then
			set ForForceCallback_maxIndex = ForForceCallback_maxIndex + 1
			set this_1 = ForForceCallback_maxIndex
			set ForForceCallback_typeId[this_1] = 852
		else
			call error("Out of memory: Could not create ForForceCallback_execute_fromString_Encoder_Encoder.")
			set this_1 = 0
		endif
	else
		set ForForceCallback_firstFree = ForForceCallback_firstFree - 1
		set this_1 = ForForceCallback_nextFree[ForForceCallback_firstFree]
		set ForForceCallback_typeId[this_1] = 852
	endif
	return this_1
endfunction

function alloc_ForForceCallback_execute_fromString_Encoder_Encoder_1775 takes nothing returns integer
	local integer this_1
	if ForForceCallback_firstFree == 0 then
		if ForForceCallback_maxIndex < JASS_MAX_ARRAY_SIZE then
			set ForForceCallback_maxIndex = ForForceCallback_maxIndex + 1
			set this_1 = ForForceCallback_maxIndex
			set ForForceCallback_typeId[this_1] = 853
		else
			call error("Out of memory: Could not create ForForceCallback_execute_fromString_Encoder_Encoder.")
			set this_1 = 0
		endif
	else
		set ForForceCallback_firstFree = ForForceCallback_firstFree - 1
		set this_1 = ForForceCallback_nextFree[ForForceCallback_firstFree]
		set ForForceCallback_typeId[this_1] = 853
	endif
	return this_1
endfunction

function alloc_PayloadCallback_MemoryAccessPedestal_Pedestal takes nothing returns integer
	local integer this_1
	if PayloadCallback_firstFree == 0 then
		if PayloadCallback_maxIndex < JASS_MAX_ARRAY_SIZE then
			set PayloadCallback_maxIndex = PayloadCallback_maxIndex + 1
			set this_1 = PayloadCallback_maxIndex
			set PayloadCallback_typeId[this_1] = 1034
		else
			call error("Out of memory: Could not create PayloadCallback_MemoryAccessPedestal_Pedestal.")
			set this_1 = 0
		endif
	else
		set PayloadCallback_firstFree = PayloadCallback_firstFree - 1
		set this_1 = PayloadCallback_nextFree[PayloadCallback_firstFree]
		set PayloadCallback_typeId[this_1] = 1034
	endif
	return this_1
endfunction

function alloc_PayloadCallback_MemoryAccessPedestal_Pedestal_1862 takes nothing returns integer
	local integer this_1
	if PayloadCallback_firstFree == 0 then
		if PayloadCallback_maxIndex < JASS_MAX_ARRAY_SIZE then
			set PayloadCallback_maxIndex = PayloadCallback_maxIndex + 1
			set this_1 = PayloadCallback_maxIndex
			set PayloadCallback_typeId[this_1] = 1035
		else
			call error("Out of memory: Could not create PayloadCallback_MemoryAccessPedestal_Pedestal.")
			set this_1 = 0
		endif
	else
		set PayloadCallback_firstFree = PayloadCallback_firstFree - 1
		set this_1 = PayloadCallback_nextFree[PayloadCallback_firstFree]
		set PayloadCallback_typeId[this_1] = 1035
	endif
	return this_1
endfunction

function alloc_PayloadCallback_getStringList_parse_decompress_loadData_nullTimer_MemoryAccessPedestal_Pedestal takes nothing returns integer
	local integer this_1
	if PayloadCallback_firstFree == 0 then
		if PayloadCallback_maxIndex < JASS_MAX_ARRAY_SIZE then
			set PayloadCallback_maxIndex = PayloadCallback_maxIndex + 1
			set this_1 = PayloadCallback_maxIndex
			set PayloadCallback_typeId[this_1] = 1042
		else
			call error("Out of memory: Could not create PayloadCallback_getStringList_parse_decompress_loadData_nullTimer_MemoryAccessPedestal_Pedestal.")
			set this_1 = 0
		endif
	else
		set PayloadCallback_firstFree = PayloadCallback_firstFree - 1
		set this_1 = PayloadCallback_nextFree[PayloadCallback_firstFree]
		set PayloadCallback_typeId[this_1] = 1042
	endif
	return this_1
endfunction

function alloc_PayloadCallback_getStringList_parse_decompress_loadData_nullTimer_MemoryAccessPedestal_Pedestal_1870 takes nothing returns integer
	local integer this_1
	if PayloadCallback_firstFree == 0 then
		if PayloadCallback_maxIndex < JASS_MAX_ARRAY_SIZE then
			set PayloadCallback_maxIndex = PayloadCallback_maxIndex + 1
			set this_1 = PayloadCallback_maxIndex
			set PayloadCallback_typeId[this_1] = 1043
		else
			call error("Out of memory: Could not create PayloadCallback_getStringList_parse_decompress_loadData_nullTimer_MemoryAccessPedestal_Pedestal.")
			set this_1 = 0
		endif
	else
		set PayloadCallback_firstFree = PayloadCallback_firstFree - 1
		set this_1 = PayloadCallback_nextFree[PayloadCallback_firstFree]
		set PayloadCallback_typeId[this_1] = 1043
	endif
	return this_1
endfunction

function alloc_PayloadCallback_parse_MemoryAccessPedestal_Pedestal takes nothing returns integer
	local integer this_1
	if PayloadCallback_firstFree == 0 then
		if PayloadCallback_maxIndex < JASS_MAX_ARRAY_SIZE then
			set PayloadCallback_maxIndex = PayloadCallback_maxIndex + 1
			set this_1 = PayloadCallback_maxIndex
			set PayloadCallback_typeId[this_1] = 1045
		else
			call error("Out of memory: Could not create PayloadCallback_parse_MemoryAccessPedestal_Pedestal.")
			set this_1 = 0
		endif
	else
		set PayloadCallback_firstFree = PayloadCallback_firstFree - 1
		set this_1 = PayloadCallback_nextFree[PayloadCallback_firstFree]
		set PayloadCallback_typeId[this_1] = 1045
	endif
	return this_1
endfunction

function alloc_PayloadCallback_parse_MemoryAccessPedestal_Pedestal_1873 takes nothing returns integer
	local integer this_1
	if PayloadCallback_firstFree == 0 then
		if PayloadCallback_maxIndex < JASS_MAX_ARRAY_SIZE then
			set PayloadCallback_maxIndex = PayloadCallback_maxIndex + 1
			set this_1 = PayloadCallback_maxIndex
			set PayloadCallback_typeId[this_1] = 1046
		else
			call error("Out of memory: Could not create PayloadCallback_parse_MemoryAccessPedestal_Pedestal.")
			set this_1 = 0
		endif
	else
		set PayloadCallback_firstFree = PayloadCallback_firstFree - 1
		set this_1 = PayloadCallback_nextFree[PayloadCallback_firstFree]
		set PayloadCallback_typeId[this_1] = 1046
	endif
	return this_1
endfunction

function alloc_PayloadCallback_parse_decompress_loadData_nullTimer_MemoryAccessPedestal_Pedestal takes nothing returns integer
	local integer this_1
	if PayloadCallback_firstFree == 0 then
		if PayloadCallback_maxIndex < JASS_MAX_ARRAY_SIZE then
			set PayloadCallback_maxIndex = PayloadCallback_maxIndex + 1
			set this_1 = PayloadCallback_maxIndex
			set PayloadCallback_typeId[this_1] = 1047
		else
			call error("Out of memory: Could not create PayloadCallback_parse_decompress_loadData_nullTimer_MemoryAccessPedestal_Pedestal.")
			set this_1 = 0
		endif
	else
		set PayloadCallback_firstFree = PayloadCallback_firstFree - 1
		set this_1 = PayloadCallback_nextFree[PayloadCallback_firstFree]
		set PayloadCallback_typeId[this_1] = 1047
	endif
	return this_1
endfunction

function alloc_SeqCallback_doSeq_JsonParser_JsonParser takes nothing returns integer
	local integer this_1
	if SeqCallback_firstFree == 0 then
		if SeqCallback_maxIndex < JASS_MAX_ARRAY_SIZE then
			set SeqCallback_maxIndex = SeqCallback_maxIndex + 1
			set this_1 = SeqCallback_maxIndex
			set SeqCallback_typeId[this_1] = 1128
		else
			call error("Out of memory: Could not create SeqCallback_doSeq_JsonParser_JsonParser.")
			set this_1 = 0
		endif
	else
		set SeqCallback_firstFree = SeqCallback_firstFree - 1
		set this_1 = SeqCallback_nextFree[SeqCallback_firstFree]
		set SeqCallback_typeId[this_1] = 1128
	endif
	return this_1
endfunction

function alloc_SeqCallback_doSeq_JsonParser_JsonParser_1896 takes nothing returns integer
	local integer this_1
	if SeqCallback_firstFree == 0 then
		if SeqCallback_maxIndex < JASS_MAX_ARRAY_SIZE then
			set SeqCallback_maxIndex = SeqCallback_maxIndex + 1
			set this_1 = SeqCallback_maxIndex
			set SeqCallback_typeId[this_1] = 1129
		else
			call error("Out of memory: Could not create SeqCallback_doSeq_JsonParser_JsonParser.")
			set this_1 = 0
		endif
	else
		set SeqCallback_firstFree = SeqCallback_firstFree - 1
		set this_1 = SeqCallback_nextFree[SeqCallback_firstFree]
		set SeqCallback_typeId[this_1] = 1129
	endif
	return this_1
endfunction

function cyc_BigSubString_getCombinedLength takes integer funcChoice, integer this_1 returns nothing
	local integer BigString_BigSubString_getCombinedLength_result
	local integer temp
	if funcChoice == 0 then
		if BigSubString_next[this_1] != 0 and BigSubString_next[this_1] != this_1 then
			set temp = BigSubString_length[this_1]
			call cyc_BigSubString_getCombinedLength(1, BigSubString_next[this_1])
			set tempReturn_integer = temp + tempReturn_integer
			return
		endif
		set tempReturn_integer = BigSubString_length[this_1]
		return
	elseif funcChoice == 1 then
		if BigSubString_typeId[this_1] == 0 then
			if this_1 == 0 then
				call error("Nullpointer exception when calling BigSubString.getCombinedLength")
			else
				call error("Called BigSubString.getCombinedLength on invalid object.")
			endif
		endif
		call cyc_BigSubString_getCombinedLength(0, this_1)
		set BigString_BigSubString_getCombinedLength_result = tempReturn_integer
		set tempReturn_integer = BigString_BigSubString_getCombinedLength_result
		return
	endif
endfunction

function BigSubString_getSingleLength takes integer this_1 returns integer
	return BigSubString_length[this_1]
endfunction

function dispatch_BigSubString_BigString_BigSubString_getSingleLength takes integer this_1 returns integer
	local integer BigString_BigSubString_getSingleLength_result
	if BigSubString_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling BigSubString.getSingleLength")
		else
			call error("Called BigSubString.getSingleLength on invalid object.")
		endif
	endif
	set BigString_BigSubString_getSingleLength_result = BigSubString_getSingleLength(this_1)
	return BigString_BigSubString_getSingleLength_result
endfunction

function BigSubString_getStart takes integer this_1 returns integer
	return BigSubString_start[this_1]
endfunction

function dispatch_BigSubString_BigString_BigSubString_getStart takes integer this_1 returns integer
	local integer BigString_BigSubString_getStart_result
	if BigSubString_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling BigSubString.getStart")
		else
			call error("Called BigSubString.getStart on invalid object.")
		endif
	endif
	set BigString_BigSubString_getStart_result = BigSubString_getStart(this_1)
	return BigString_BigSubString_getStart_result
endfunction

function BigString_getSubStringData takes integer this_1, integer substring returns string
	local integer idx
	local integer offsetstart
	local integer offsetend
	if dispatch_BigSubString_BigString_BigSubString_getStart(substring) + dispatch_BigSubString_BigString_BigSubString_getSingleLength(substring) > BigString_length[this_1] then
		call error("string out of bounds: length: " + int_toString(BigString_length[this_1]) + " s.length: " + int_toString(dispatch_BigSubString_BigString_BigSubString_getSingleLength(substring)) + " s.start: " + int_toString(dispatch_BigSubString_BigString_BigSubString_getStart(substring)))
	endif
	if dispatch_BigSubString_BigString_BigSubString_getSingleLength(substring) > BigString_BIG_SUBSTRING_LEN then
		call error("substring is longer than maxsize")
	endif
	set idx = real_toInt(dispatch_BigSubString_BigString_BigSubString_getStart(substring) * 1. / BigString_BIG_SUBSTRING_LEN)
	set offsetstart = ModuloInteger(dispatch_BigSubString_BigString_BigSubString_getStart(substring), BigString_BIG_SUBSTRING_LEN)
	set offsetend = offsetstart + dispatch_BigSubString_BigString_BigSubString_getSingleLength(substring)
	if offsetend > BigString_BIG_SUBSTRING_LEN then
		return string_substring(BigString_substrings_get(this_1, idx), offsetstart, BigString_BIG_SUBSTRING_LEN) + string_substring(BigString_substrings_get(this_1, idx + 1), 0, offsetend - BigString_BIG_SUBSTRING_LEN)
	endif
	return string_substring(BigString_substrings_get(this_1, idx), offsetstart, offsetend)
endfunction

function dispatch_BigString_BigString_BigString_getSubStringData takes integer this_1, integer substring returns string
	local string BigString_BigString_getSubStringData_result
	if BigString_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling BigString.getSubStringData")
		else
			call error("Called BigString.getSubStringData on invalid object.")
		endif
	endif
	set BigString_BigString_getSubStringData_result = BigString_getSubStringData(this_1, substring)
	return BigString_BigString_getSubStringData_result
endfunction

function cyc_BigSubString_getCombined takes integer funcChoice, integer this_1 returns nothing
	local string s
	local string BigString_BigSubString_getCombined_result
	local string temp
	if funcChoice == 0 then
		call cyc_BigSubString_getCombinedLength(1, this_1)
		if tempReturn_integer > BigString_BIG_SUBSTRING_LEN then
			call error("cannot use getCombined on oversized SubStrings. You need to iterate through the chunks")
		endif
		if BigSubString_parent[this_1] == 0 and BigSubString_preinit[this_1] == null then
			call error("cannot generate new cache without parent")
		endif
		set s = ""
		if BigSubString_preinit[this_1] != null then
			set s = s + BigSubString_preinit[this_1]
		else
			set s = s + dispatch_BigString_BigString_BigString_getSubStringData(BigSubString_parent[this_1], this_1)
		endif
		if BigSubString_next[this_1] != 0 then
			set temp = s
			call cyc_BigSubString_getCombined(1, BigSubString_next[this_1])
			set s = temp + tempReturn_string
		endif
		set tempReturn_string = s
		return
	elseif funcChoice == 1 then
		if BigSubString_typeId[this_1] == 0 then
			if this_1 == 0 then
				call error("Nullpointer exception when calling BigSubString.getCombined")
			else
				call error("Called BigSubString.getCombined on invalid object.")
			endif
		endif
		call cyc_BigSubString_getCombined(0, this_1)
		set BigString_BigSubString_getCombined_result = tempReturn_string
		set tempReturn_string = BigString_BigSubString_getCombined_result
		return
	endif
endfunction

function BigString_getString takes integer this_1, integer startpos, integer plength returns string
	local integer modpos
	local integer idx
	local integer offsetstart
	local integer offsetend
	if startpos + plength > dispatch_BigString_BigString_BigString_getLength(this_1) then
		call error("2Trying to get string out of bounds")
	endif
	if plength > BigString_BIG_SUBSTRING_LEN then
		call error("Trying to get oversized string")
	endif
	set modpos = startpos + BigString_startoffset[this_1]
	set idx = real_toInt(modpos * 1. / BigString_BIG_SUBSTRING_LEN)
	set offsetstart = ModuloInteger(modpos, BigString_BIG_SUBSTRING_LEN)
	set offsetend = offsetstart + plength
	if offsetend > BigString_BIG_SUBSTRING_LEN then
		return string_substring(BigString_substrings_get(this_1, idx), offsetstart, string_length(BigString_substrings_get(this_1, idx))) + string_substring(BigString_substrings_get(this_1, idx + 1), 0, offsetend - BigString_BIG_SUBSTRING_LEN)
	endif
	return string_substring(BigString_substrings_get(this_1, idx), offsetstart, offsetend)
endfunction

function dispatch_BigString_BigString_BigString_getString takes integer this_1, integer startpos, integer plength returns string
	local string BigString_BigString_getString_result
	if BigString_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling BigString.getString")
		else
			call error("Called BigString.getString on invalid object.")
		endif
	endif
	set BigString_BigString_getString_result = BigString_getString(this_1, startpos, plength)
	return BigString_BigString_getString_result
endfunction

function cyc_BigSubString_addToBigString takes integer funcChoice, integer this_1, integer target returns nothing
	local integer off
	if funcChoice == 0 then
		if BigSubString_preinit[this_1] != null then
			call dispatch_BigString_BigString_BigString_addString(target, BigSubString_preinit[this_1])
		else
			set off = 0
			loop
				exitwhen  not (BigSubString_length[this_1] - off > BigString_BIG_SUBSTRING_LEN)
				call dispatch_BigString_BigString_BigString_addString(target, dispatch_BigString_BigString_BigString_getString(BigSubString_parent[this_1], BigSubString_start[this_1] + off, BigString_BIG_SUBSTRING_LEN))
				set off = off + BigString_BIG_SUBSTRING_LEN
			endloop
			call dispatch_BigString_BigString_BigString_addString(target, dispatch_BigString_BigString_BigString_getString(BigSubString_parent[this_1], BigSubString_start[this_1] + off, BigSubString_length[this_1] - off))
		endif
		if BigSubString_next[this_1] != 0 then
			call cyc_BigSubString_addToBigString(1, BigSubString_next[this_1], target)
		endif
	elseif funcChoice == 1 then
		if BigSubString_typeId[this_1] == 0 then
			if this_1 == 0 then
				call error("Nullpointer exception when calling BigSubString.addToBigString")
			else
				call error("Called BigSubString.addToBigString on invalid object.")
			endif
		endif
		call cyc_BigSubString_addToBigString(0, this_1, target)
	endif
endfunction

function BigString_addSubString takes integer this_1, integer substring returns nothing
	call cyc_BigSubString_addToBigString(1, substring, this_1)
endfunction

function dispatch_BigString_BigString_BigString_addSubString takes integer this_1, integer substring returns nothing
	if BigString_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling BigString.addSubString")
		else
			call error("Called BigString.addSubString on invalid object.")
		endif
	endif
	call BigString_addSubString(this_1, substring)
endfunction

function BigNum_l_onDestroy takes integer this_1 returns nothing
	set BigNum_l_count = BigNum_l_count - 1
endfunction

function dealloc_BigNum_l takes integer obj_1 returns nothing
	if BigNum_l_typeId[obj_1] == 0 then
		call error("Double free: object of type BigNum_l")
	else
		set BigNum_l_nextFree[BigNum_l_firstFree] = obj_1
		set BigNum_l_firstFree = BigNum_l_firstFree + 1
		set BigNum_l_typeId[obj_1] = 0
	endif
endfunction

function destroyBigNum_l takes integer this_1 returns nothing
	call BigNum_l_onDestroy(this_1)
	call dealloc_BigNum_l(this_1)
endfunction

function dispatch_BigNum_l_destroyBigNum_l takes integer this_1 returns nothing
	if BigNum_l_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling BigNum_l.BigNum_l")
		else
			call error("Called BigNum_l.BigNum_l on invalid object.")
		endif
	endif
	call destroyBigNum_l(this_1)
endfunction

function BigNum_onDestroy takes integer this_1 returns nothing
	local integer cur = BigNum_list[this_1]
	local integer next
	loop
		exitwhen  not (cur != 0)
		set next = BigNum_l_next[cur]
		call dispatch_BigNum_l_destroyBigNum_l(cur)
		set cur = next
	endloop
endfunction

function dealloc_BigNum takes integer obj_1 returns nothing
	if BigNum_typeId[obj_1] == 0 then
		call error("Double free: object of type BigNum")
	else
		set BigNum_nextFree[BigNum_firstFree] = obj_1
		set BigNum_firstFree = BigNum_firstFree + 1
		set BigNum_typeId[obj_1] = 0
	endif
endfunction

function destroyBigNum takes integer this_1 returns nothing
	call BigNum_onDestroy(this_1)
	call dealloc_BigNum(this_1)
endfunction

function dispatch_BigNum_destroyBigNum takes integer this_1 returns nothing
	if BigNum_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling BigNum.BigNum")
		else
			call error("Called BigNum.BigNum on invalid object.")
		endif
	endif
	call destroyBigNum(this_1)
endfunction

function Encoder_onDestroy takes integer this_1 returns nothing
	call dispatch_BigNum_destroyBigNum(Encoder_bignum[this_1])
endfunction

function dealloc_Encoder takes integer obj_1 returns nothing
	if Encoder_typeId[obj_1] == 0 then
		call error("Double free: object of type Encoder")
	else
		set Encoder_nextFree[Encoder_firstFree] = obj_1
		set Encoder_firstFree = Encoder_firstFree + 1
		set Encoder_typeId[obj_1] = 0
	endif
endfunction

function destroyEncoder takes integer this_1 returns nothing
	call Encoder_onDestroy(this_1)
	call dealloc_Encoder(this_1)
endfunction

function dispatch_Encoder_destroyEncoder takes integer this_1 returns nothing
	if Encoder_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling Encoder.Encoder")
		else
			call error("Called Encoder.Encoder on invalid object.")
		endif
	endif
	call destroyEncoder(this_1)
endfunction

function BigSubString_getSingle takes integer this_1 returns string
	if dispatch_BigSubString_BigString_BigSubString_getSingleLength(this_1) > BigString_BIG_SUBSTRING_LEN then
		call error("cannot use getSingle on oversized SubStrings. You need to iterate through the chunks")
	endif
	if BigSubString_parent[this_1] == 0 and BigSubString_preinit[this_1] == null then
		call error("cannot generate new cache without parent")
	endif
	if BigSubString_preinit[this_1] != null then
		return BigSubString_preinit[this_1]
	else
		return dispatch_BigString_BigString_BigString_getSubStringData(BigSubString_parent[this_1], this_1)
	endif
endfunction

function dispatch_BigSubString_BigString_BigSubString_getSingle takes integer this_1 returns string
	local string BigString_BigSubString_getSingle_result
	if BigSubString_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling BigSubString.getSingle")
		else
			call error("Called BigSubString.getSingle on invalid object.")
		endif
	endif
	set BigString_BigSubString_getSingle_result = BigSubString_getSingle(this_1)
	return BigString_BigSubString_getSingle_result
endfunction

function Json_getString takes integer this_1, string key returns integer
	return Property_value[dispatch_HashMap_HashMap_HashMap_get(Json_properties[this_1], string_getHash(key))]
endfunction

function dispatch_Json_Json_Json_getString takes integer this_1, string key returns integer
	local integer Json_Json_getString_result
	if Json_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling Json.getString")
		else
			call error("Called Json.getString on invalid object.")
		endif
	endif
	set Json_Json_getString_result = Json_getString(this_1, key)
	return Json_Json_getString_result
endfunction

function Json_getInt takes integer this_1, string key returns integer
	local integer s = dispatch_Json_Json_Json_getString(this_1, key)
	local string ss
	if s == 0 or dispatch_BigSubString_BigString_BigSubString_getSingleLength(s) == 0 then
		return 0
	endif
	set ss = dispatch_BigSubString_BigString_BigSubString_getSingle(s)
	return string_toInt(ss)
endfunction

function dispatch_Json_Json_Json_getInt takes integer this_1, string key returns integer
	local integer Json_Json_getInt_result
	if Json_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling Json.getInt")
		else
			call error("Called Json.getInt on invalid object.")
		endif
	endif
	set Json_Json_getInt_result = Json_getInt(this_1, key)
	return Json_Json_getInt_result
endfunction

function Booster_deserialize takes integer this_1, integer json returns nothing
	local integer speed = dispatch_Json_Json_Json_getInt(json, Booster_BOOST_SPEED_KEY)
	if speed > 0 then
		call dispatch_ConfigValue_ConfigValue_ConfigValue_setVal(Booster_boostspeed[this_1], speed * 1.)
	endif
endfunction

function Decoration_deserialize takes integer this_1, integer json returns nothing
	local integer sc
	call dispatch_Decoration_Decoration_Decoration_changeAngle(this_1, real_fromDeg(int_toReal(dispatch_Json_Json_Json_getInt(json, Decoration_KEY_ANGLE))))
	set sc = dispatch_Json_Json_Json_getInt(json, Decoration_KEY_SCALE)
	if sc > 0. then
		call dispatch_ConfigValue_ConfigValue_ConfigValue_setVal(Decoration_scale[this_1], sc / 100.)
		call unit_setScale(UnitEntity_actor[this_1], dispatch_ConfigValue_ConfigValue_ConfigValue_get(Decoration_scale[this_1]))
		call unit_setScale(StaticSetupObject_setup[this_1], dispatch_ConfigValue_ConfigValue_ConfigValue_get(Decoration_scale[this_1]))
	endif
endfunction

function Entity_deserialize takes integer this_1, integer json returns nothing
endfunction

function Door_deserialize takes integer this_1, integer json returns nothing
	call Entity_deserialize(this_1, json)
	set Door_col[this_1] = dispatch_Json_Json_Json_getInt(json, Door_KEY_COLOR)
	call unit_setVertexColor_4206(UnitEntity_actor[this_1], EBRColor_toColor(Door_col[this_1]), EBRColor_toColor_return_green, EBRColor_toColor_return_blue, EBRColor_toColor_return_alpha)
	if dispatch_Json_Json_Json_getInt(json, Door_KEY_ROTATION) == 1 then
		call dispatch_Door_Door_Door_turn(this_1)
	endif
endfunction

function Json_getReal takes integer this_1, string key returns real
	return int_toReal(dispatch_Json_Json_Json_getInt(this_1, key))
endfunction

function dispatch_Json_Json_Json_getReal takes integer this_1, string key returns real
	local real Json_Json_getReal_result
	if Json_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling Json.getReal")
		else
			call error("Called Json.getReal on invalid object.")
		endif
	endif
	set Json_Json_getReal_result = Json_getReal(this_1, key)
	return Json_Json_getReal_result
endfunction

function StaticBaseObject_deserialize takes integer this_1, integer json returns nothing
	local real rpos_x
	local real rpos_y
	local real tuple_temp
	local real tuple_temp_1
	call Entity_deserialize(this_1, json)
	set tuple_temp = Entity_serializeOrigin_x + dispatch_Json_Json_Json_getReal(json, BaseObject_KEY_RALLY_X)
	set tuple_temp_1 = Entity_serializeOrigin_y + dispatch_Json_Json_Json_getReal(json, BaseObject_KEY_RALLY_Y)
	set rpos_x = tuple_temp
	set rpos_y = tuple_temp_1
	call dispatch_StaticBaseObject_BaseObject_StaticBaseObject_setRallyPoint(this_1, rpos_x, rpos_y)
endfunction

function Jumper_deserialize takes integer this_1, integer json returns nothing
	call StaticBaseObject_deserialize(this_1, json)
	call dispatch_ConfigValue_ConfigValue_ConfigValue_setVal(Jumper_jumpForce[this_1], dispatch_Json_Json_Json_getReal(json, "f") / 100.)
endfunction

function Key_deserialize takes integer this_1, integer json returns nothing
	set Key_col[this_1] = dispatch_Json_Json_Json_getInt(json, Key_KEY_COLOR)
	call dispatch_Key_Key_Key_recolor(this_1)
endfunction

function UnitCreator_deserialize takes integer this_1, integer json returns nothing
	set UnitCreator_spawnUnitType[this_1] = dispatch_Json_Json_Json_getInt(json, Unitcreator_KEY_SPAWN)
endfunction

function dispatch_Entity_Entity_Entity_deserialize takes integer this_1, integer json returns nothing
	if Serializable_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling Entity.deserialize")
		else
			call error("Called Entity.deserialize on invalid object.")
		endif
	endif
	if Serializable_typeId[this_1] <= 1200 then
		if Serializable_typeId[this_1] <= 1196 then
			if Serializable_typeId[this_1] <= 1157 then
				if Serializable_typeId[this_1] <= 1156 then
					call Entity_deserialize(this_1, json)
				else
					call Key_deserialize(this_1, json)
				endif
			elseif Serializable_typeId[this_1] <= 1193 then
				call Entity_deserialize(this_1, json)
			else
				call StaticBaseObject_deserialize(this_1, json)
			endif
		elseif Serializable_typeId[this_1] <= 1199 then
			if Serializable_typeId[this_1] <= 1197 then
				call Booster_deserialize(this_1, json)
			else
				call StaticBaseObject_deserialize(this_1, json)
			endif
		else
			call Jumper_deserialize(this_1, json)
		endif
	elseif Serializable_typeId[this_1] <= 1212 then
		if Serializable_typeId[this_1] <= 1208 then
			if Serializable_typeId[this_1] <= 1207 then
				call StaticBaseObject_deserialize(this_1, json)
			else
				call UnitCreator_deserialize(this_1, json)
			endif
		elseif Serializable_typeId[this_1] <= 1211 then
			call StaticBaseObject_deserialize(this_1, json)
		else
			call Entity_deserialize(this_1, json)
		endif
	elseif Serializable_typeId[this_1] <= 1214 then
		if Serializable_typeId[this_1] <= 1213 then
			call Decoration_deserialize(this_1, json)
		else
			call Door_deserialize(this_1, json)
		endif
	else
		call Entity_deserialize(this_1, json)
	endif
endfunction

function JsonParser_setInput takes integer this_1, integer bs_1 returns nothing
	set JsonParser_bigInput[this_1] = bs_1
	set JsonParser_currentPosition[this_1] = 0
	set JsonParser_propStartPosition[this_1] = 0
	set JsonParser_squareBracketLvl[this_1] = 0
	set JsonParser_lastType[this_1] = 0
	set JsonParser_currentToken[this_1] = null
endfunction

function dispatch_JsonParser_JsonParser_JsonParser_setInput takes integer this_1, integer bs_1 returns nothing
	if JsonParser_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling JsonParser.setInput")
		else
			call error("Called JsonParser.setInput on invalid object.")
		endif
	endif
	call JsonParser_setInput(this_1, bs_1)
endfunction

function Json_hasKey takes integer this_1, string key returns boolean
	local integer s = dispatch_Json_Json_Json_getString(this_1, key)
	return  not (s == 0 or dispatch_BigSubString_BigString_BigSubString_getSingleLength(s) == 0)
endfunction

function dispatch_Json_Json_Json_hasKey takes integer this_1, string key returns boolean
	local boolean Json_Json_hasKey_result
	if Json_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling Json.hasKey")
		else
			call error("Called Json.hasKey on invalid object.")
		endif
	endif
	set Json_Json_hasKey_result = Json_hasKey(this_1, key)
	return Json_Json_hasKey_result
endfunction

function Json_reset takes integer this_1 returns nothing
	local integer itr_1
	local integer from
	call dispatch_HashMap_HashMap_HashMap_flush(Json_properties[this_1])
	set itr_1 = dispatch_LinkedList_LinkedList_LinkedList_staticItr(Json_plist[this_1])
	set from = itr_1
	loop
		exitwhen  not LLIterator_hasNext(from)
		call LLIterator_next(from)
		call dispatch_Property_destroyProperty(dispatch_LLIterator_LinkedList_LLIterator_remove(itr_1))
	endloop
endfunction

function dispatch_Json_Json_Json_reset takes integer this_1 returns nothing
	if Json_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling Json.reset")
		else
			call error("Called Json.reset on invalid object.")
		endif
	endif
	call Json_reset(this_1)
endfunction

function TileData_deserialize takes integer this_1, integer json returns nothing
	local integer rdat
	local integer temp
	local integer temp_tuple_walkableId
	local integer temp_tuple_walkableId_1
	local real temp_x
	local real temp_y
	local real temp_x_1
	local real temp_y_1
	local real tuple_temp
	local real tuple_temp_1
	local real tuple_temp_2
	local real tuple_temp_3
	local integer tuple_temp_4
	local real tuple_temp_5
	local real tuple_temp_6
	local integer tuple_temp_7
	set TileData_xoff[this_1] = dispatch_Json_Json_Json_getInt(json, Entity_KEY_X)
	set TileData_yoff[this_1] = dispatch_Json_Json_Json_getInt(json, Entity_KEY_Y)
	set tuple_temp = vec2_toTile(Entity_serializeOrigin_x + TileData_xoff[this_1] * 128., Entity_serializeOrigin_y + TileData_yoff[this_1] * 128.)
	set tuple_temp_1 = vec2_toTile_return_y
	set TileData_pos_x[this_1] = tuple_temp
	set TileData_pos_y[this_1] = tuple_temp_1
	if  not dispatch_RegionData_RegionData_RegionData_canBuild(getRegionData_3304(TileData_pos_x[this_1], TileData_pos_y[this_1]), TileData_owner[this_1]) then
		return
	endif
	set TileData_tile[this_1] = dispatch_Json_Json_Json_getInt(json, Entity_KEY_TYPE)
	if TileData_tile[this_1] == 0 then
		set TileData_tile[this_1] = 1
	endif
	set rdat = getRegionData_3304(TileData_pos_x[this_1], TileData_pos_y[this_1])
	set temp = TileData_tile[this_1]
	if temp == 1 then
		set tuple_temp_2 = TileData_pos_x[this_1]
		set tuple_temp_3 = TileData_pos_y[this_1]
		set temp_x = tuple_temp_2
		set temp_y = tuple_temp_3
		call dispatch_RegionData_RegionData_RegionData_getTypeSet(rdat)
		set tuple_temp_4 = dispatch_RegionData_RegionData_RegionData_getTypeSet_return_walkableId
		set temp_tuple_walkableId = tuple_temp_4
		call vec2_setTerrainType(temp_x, temp_y, temp_tuple_walkableId, -1, 1, 0)
	elseif temp == 4 then
		call vec2_setTerrainType(TileData_pos_x[this_1], TileData_pos_y[this_1], BuilderConstants_CONTROLLABLEICE, -1, 1, 0)
	elseif temp == 5 then
		call vec2_setTerrainType(TileData_pos_x[this_1], TileData_pos_y[this_1], BuilderConstants_UNCONTROLLABLEICE, -1, 1, 0)
	elseif temp == 6 then
		call vec2_setTerrainType(TileData_pos_x[this_1], TileData_pos_y[this_1], BuilderConstants_REVICE, -1, 1, 0)
	elseif temp == 2 then
		call vec2_setTerrainType(TileData_pos_x[this_1], TileData_pos_y[this_1], BuilderConstants_LAVA, -1, 1, 0)
	elseif temp == 3 then
		call vec2_setTerrainType(TileData_pos_x[this_1], TileData_pos_y[this_1], BuilderConstants_POISON, -1, 1, 0)
	else
		set tuple_temp_5 = TileData_pos_x[this_1]
		set tuple_temp_6 = TileData_pos_y[this_1]
		set temp_x_1 = tuple_temp_5
		set temp_y_1 = tuple_temp_6
		call dispatch_RegionData_RegionData_RegionData_getTypeSet(rdat)
		set tuple_temp_7 = dispatch_RegionData_RegionData_RegionData_getTypeSet_return_walkableId
		set temp_tuple_walkableId_1 = tuple_temp_7
		call vec2_setTerrainType(temp_x_1, temp_y_1, temp_tuple_walkableId_1, -1, 1, 0)
	endif
endfunction

function dispatch_TileData_TileData_TileData_deserialize takes integer this_1, integer json returns nothing
	if Serializable_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling TileData.deserialize")
		else
			call error("Called TileData.deserialize on invalid object.")
		endif
	endif
	call TileData_deserialize(this_1, json)
endfunction

function construct_TileData takes integer this_1 returns nothing
	call TileData_init(this_1)
endfunction

function new_TileData takes nothing returns integer
	local integer this_1 = alloc_TileData()
	call construct_TileData(this_1)
	return this_1
endfunction

function alloc_ChunkedString takes nothing returns integer
	local integer this_1
	if ChunkedString_firstFree == 0 then
		if ChunkedString_maxIndex < JASS_MAX_ARRAY_SIZE then
			set ChunkedString_maxIndex = ChunkedString_maxIndex + 1
			set this_1 = ChunkedString_maxIndex
			set ChunkedString_typeId[this_1] = 721
		else
			call error("Out of memory: Could not create ChunkedString.")
			set this_1 = 0
		endif
	else
		set ChunkedString_firstFree = ChunkedString_firstFree - 1
		set this_1 = ChunkedString_nextFree[ChunkedString_firstFree]
		set ChunkedString_typeId[this_1] = 721
	endif
	return this_1
endfunction

function alloc_Table takes nothing returns integer
	local integer this_1
	if Table_firstFree == 0 then
		if Table_maxIndex < JASS_MAX_ARRAY_SIZE then
			set Table_maxIndex = Table_maxIndex + 1
			set this_1 = Table_maxIndex
			set Table_typeId[this_1] = 1493
		else
			call error("Out of memory: Could not create Table.")
			set this_1 = 0
		endif
	else
		set Table_firstFree = Table_firstFree - 1
		set this_1 = Table_nextFree[Table_firstFree]
		set Table_typeId[this_1] = 1493
	endif
	return this_1
endfunction

function new_Table takes nothing returns integer
	local integer this_1 = alloc_Table()
	call construct_Table(this_1)
	return this_1
endfunction

function ChunkedString_init takes integer this_1 returns nothing
	set ChunkedString_table[this_1] = new_Table()
	set ChunkedString_chunkSize[this_1] = ChunkedString_DEFAULT_CHUNK_SIZE
	set ChunkedString_chunkCount[this_1] = 0
	set ChunkedString_readIndex[this_1] = -1
	set ChunkedString_buffer[this_1] = ""
endfunction

function construct_ChunkedString takes integer this_1 returns nothing
	call ChunkedString_init(this_1)
endfunction

function new_ChunkedString takes nothing returns integer
	local integer this_1 = alloc_ChunkedString()
	call construct_ChunkedString(this_1)
	return this_1
endfunction

function File_onDestroy takes integer this_1 returns nothing
endfunction

function dealloc_File takes integer obj_1 returns nothing
	if File_typeId[obj_1] == 0 then
		call error("Double free: object of type File")
	else
		set File_nextFree[File_firstFree] = obj_1
		set File_firstFree = File_firstFree + 1
		set File_typeId[obj_1] = 0
	endif
endfunction

function destroyFile takes integer this_1 returns nothing
	call File_onDestroy(this_1)
	call dealloc_File(this_1)
endfunction

function dispatch_File_destroyFile takes integer this_1 returns nothing
	if File_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling File.File")
		else
			call error("Called File.File on invalid object.")
		endif
	endif
	call destroyFile(this_1)
endfunction

function File_close takes integer this_1 returns nothing
	call dispatch_File_destroyFile(this_1)
endfunction

function dispatch_File_FileIO_File_close takes integer this_1 returns nothing
	if File_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling File.close")
		else
			call error("Called File.close on invalid object.")
		endif
	endif
	call File_close(this_1)
endfunction

function File_validateInput takes string content returns string
	local integer iterator = string_iterator(content)
	local string char_1
	loop
		exitwhen  not StringIterator_hasNext(iterator)
		set char_1 = StringIterator_next(iterator)
		if char_1 == "\\" then
			call StringIterator_close(iterator)
			return char_1
		elseif char_1 == "\"" then
			call StringIterator_close(iterator)
			return char_1
		endif
	endloop
	call StringIterator_close(iterator)
	return null
endfunction

function File_writePreload takes integer this_1, player p, integer buffer returns nothing
	local integer i
	local integer temp
	local string chunk
	if Player_localPlayer == p then
		call PreloadGenClear()
		call PreloadGenStart()
		if dispatch_ChunkedString_ChunkedString_ChunkedString_getChunkCount(buffer) >= FileIO_CHUNKS_PER_FILE then
			call error("FileIO(" + File_filename[this_1] + ") ERROR: String's chunk count exceeds the limit (" + int_toString(FileIO_CHUNKS_PER_FILE) + ").|r")
		endif
		set i = 0
		set temp = dispatch_ChunkedString_ChunkedString_ChunkedString_getChunkCount(buffer) - 1
		loop
			exitwhen i > temp
			set chunk = dispatch_ChunkedString_ChunkedString_ChunkedString_getChunk(buffer, i)
			call Preload("\" )\ncall BlzSetAbilityTooltip('" + FileIO_FILE_IO_ABIL_ID_STR + "', \"" + chunk + "\", " + int_toString(i) + ")\n//")
			set i = i + 1
		endloop
		call Preload("\" )\nendfunction\nfunction a takes nothing returns nothing\n //")
		call PreloadGenEnd(File_filename[this_1])
	endif
endfunction

function dispatch_File_FileIO_File_writePreload takes integer this_1, player p, integer buffer returns nothing
	if File_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling File.writePreload")
		else
			call error("Called File.writePreload on invalid object.")
		endif
	endif
	call File_writePreload(this_1, p, buffer)
endfunction

function File_write_493 takes integer this_1, player p, integer buffer returns nothing
	local integer i
	local integer temp
	local string str
	if SafetyChecks_SAFETY_CHECKS_ENABLED then
		set i = 0
		set temp = dispatch_ChunkedString_ChunkedString_ChunkedString_getChunkCount(buffer) - 1
		loop
			exitwhen i > temp
			set str = dispatch_ChunkedString_ChunkedString_ChunkedString_getChunk(buffer, i)
			if File_validateInput(str) != null then
				call error("FileIO(" + File_filename[this_1] + ") ERROR: Invalid character |cffffcc00" + File_validateInput(str) + "|r")
			endif
			set i = i + 1
		endloop
	endif
	call dispatch_File_FileIO_File_writePreload(this_1, p, buffer)
endfunction

function dispatch_File_FileIO_File_write_2900 takes integer this_1, player p, integer buffer returns nothing
	if File_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling File.write")
		else
			call error("Called File.write on invalid object.")
		endif
	endif
	call File_write_493(this_1, p, buffer)
endfunction

function alloc_File takes nothing returns integer
	local integer this_1
	if File_firstFree == 0 then
		if File_maxIndex < JASS_MAX_ARRAY_SIZE then
			set File_maxIndex = File_maxIndex + 1
			set this_1 = File_maxIndex
			set File_typeId[this_1] = 833
		else
			call error("Out of memory: Could not create File.")
			set this_1 = 0
		endif
	else
		set File_firstFree = File_firstFree - 1
		set this_1 = File_nextFree[File_firstFree]
		set File_typeId[this_1] = 833
	endif
	return this_1
endfunction

function File_init takes integer this_1 returns nothing
	set File_filename[this_1] = ""
endfunction

function construct_File takes integer this_1, string filename returns nothing
	call File_init(this_1)
	set File_filename[this_1] = filename
endfunction

function new_File takes string filename returns integer
	local integer this_1 = alloc_File()
	call construct_File(this_1, filename)
	return this_1
endfunction

function player_getController takes player this_1 returns mapcontrol
	return GetPlayerController(this_1)
endfunction

function player_getSlotState takes player this_1 returns playerslotstate
	return GetPlayerSlotState(this_1)
endfunction

function player_isIngame takes player this_1 returns boolean
	return player_getSlotState(this_1) == PLAYER_SLOT_STATE_PLAYING and player_getController(this_1) == MAP_CONTROL_USER
endfunction

function string_endsWith takes string this_1, string s returns boolean
	local integer len
	if s == "" then
		return true
	endif
	set len = string_length(this_1)
	if string_length(s) > len then
		return false
	endif
	return string_substring(this_1, len - string_length(s), len) == s
endfunction

function player_saveData takes player this_1, string slotName, integer data_1 returns nothing
	local string cond_result
	local integer receiver
	local integer receiver_1
	if  not player_isIngame(this_1) then
		call error("Attempting to save data for player who isn't ingame! id: " + int_toString(player_getId(this_1)))
	endif
	if string_endsWith(slotName, ".pld") then
		set cond_result = slotName
	else
		set cond_result = slotName + ".pld"
	endif
	set receiver = new_File(cond_result)
	call dispatch_File_FileIO_File_write_2900(receiver, this_1, data_1)
	set receiver_1 = receiver
	call dispatch_File_FileIO_File_close(receiver_1)
endfunction

function onExecute_compress_MemoryAccessPedestal_Pedestal takes integer this_1, integer cb_1 returns nothing
	local integer compressedData = PayloadCallback_customData[cb_1]
	local integer cstring = new_ChunkedString()
	local integer i = 0
	local integer temp = dispatch_BigString_BigString_BigString_getLength(compressedData) / BigString_BIG_SUBSTRING_LEN
	local integer remain
	local texttag receiver
	loop
		exitwhen i > temp
		set remain = min_2(BigString_BIG_SUBSTRING_LEN, dispatch_BigString_BigString_BigString_getLength(compressedData) - i * BigString_BIG_SUBSTRING_LEN)
		call dispatch_ChunkedString_ChunkedString_ChunkedString_append(cstring, dispatch_BigString_BigString_BigString_getString(compressedData, i * BigString_BIG_SUBSTRING_LEN, remain))
		set i = i + 1
	endloop
	call player_saveData(Entity_owner[this_3010[this_1]], "EBR\\savedata\\dataSlot" + int_toString(MemoryAccessPedestal_currentSlotId[this_3010[this_1]]) + ".pld", cstring)
	call dispatch_ChunkedString_destroyChunkedString(cstring)
	set receiver = FText_tt[MemoryAccessPedestal_ttag[this_3010[this_1]]]
	call texttag_center(receiver, Entity_pos_x[this_3010[this_1]], Entity_pos_y[this_3010[this_1]], Entity_pos_z[this_3010[this_1]], "|cffFFBD21save finished!", 10.)
	call dispatch_BigString_destroyBigString(big_2202[this_1])
	call dispatch_HashMap_HashMap_HashMap_flush(MemoryAccessPedestal_tileMap[this_3010[this_1]])
	call unit_unpause(UnitEntity_actor[this_3010[this_1]])
endfunction

function alloc_SeqCallback_doSeq_decodePositions_LZW takes nothing returns integer
	local integer this_1
	if SeqCallback_firstFree == 0 then
		if SeqCallback_maxIndex < JASS_MAX_ARRAY_SIZE then
			set SeqCallback_maxIndex = SeqCallback_maxIndex + 1
			set this_1 = SeqCallback_maxIndex
			set SeqCallback_typeId[this_1] = 1133
		else
			call error("Out of memory: Could not create SeqCallback_doSeq_decodePositions_LZW.")
			set this_1 = 0
		endif
	else
		set SeqCallback_firstFree = SeqCallback_firstFree - 1
		set this_1 = SeqCallback_nextFree[SeqCallback_firstFree]
		set SeqCallback_typeId[this_1] = 1133
	endif
	return this_1
endfunction

function onExecute_decodePositions_LZW takes integer this_1, integer cb1_1 returns nothing
	local integer positions_1 = PayloadCallback_customData[cb1_1]
	local integer itr_1 = dispatch_LinkedList_LinkedList_LinkedList_staticItr(positions_1)
	local string A_2 = ""
	local string B_1 = ""
	local integer clVar = alloc_SeqCallback_doSeq_decodePositions_LZW()
	call construct_SeqCallback(clVar)
	set itr_2534[clVar] = itr_1
	set A_1[clVar] = A_2
	set B_70[clVar] = B_1
	set output_2567[clVar] = output[this_1]
	set onFinish_2560[clVar] = onFinish_2559[this_1]
	call doSeq(clVar)
endfunction

function alloc_CallbackSingle_nullTimer_load_LZW takes nothing returns integer
	local integer this_1
	if CallbackSingle_firstFree == 0 then
		if CallbackSingle_maxIndex < JASS_MAX_ARRAY_SIZE then
			set CallbackSingle_maxIndex = CallbackSingle_maxIndex + 1
			set this_1 = CallbackSingle_maxIndex
			set CallbackSingle_typeId[this_1] = 720
		else
			call error("Out of memory: Could not create CallbackSingle_nullTimer_load_LZW.")
			set this_1 = 0
		endif
	else
		set CallbackSingle_firstFree = CallbackSingle_firstFree - 1
		set this_1 = CallbackSingle_nextFree[CallbackSingle_firstFree]
		set CallbackSingle_typeId[this_1] = 720
	endif
	return this_1
endfunction

function PayloadCallback_onDestroy takes integer this_1 returns nothing
endfunction

function dealloc_PayloadCallback takes integer obj_1 returns nothing
	if PayloadCallback_typeId[obj_1] == 0 then
		call error("Double free: object of type PayloadCallback")
	else
		set PayloadCallback_nextFree[PayloadCallback_firstFree] = obj_1
		set PayloadCallback_firstFree = PayloadCallback_firstFree + 1
		set PayloadCallback_typeId[obj_1] = 0
	endif
endfunction

function destroyPayloadCallback takes integer this_1 returns nothing
	call PayloadCallback_onDestroy(this_1)
	call dealloc_PayloadCallback(this_1)
endfunction

function dispatch_PayloadCallback_destroyPayloadCallback takes integer this_1 returns nothing
	if PayloadCallback_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling PayloadCallback.PayloadCallback")
		else
			call error("Called PayloadCallback.PayloadCallback on invalid object.")
		endif
	endif
	call destroyPayloadCallback(this_1)
endfunction

function onExecute_load_LZW takes integer this_1, integer cb_1 returns nothing
	local integer clVar
	if PayloadCallback_customData[cb_1] == 1 then
		set clVar = alloc_CallbackSingle_nullTimer_load_LZW()
		call construct_CallbackSingle(clVar)
		set encoder_2347[clVar] = encoder_2346[this_1]
		set onFinish_2555[clVar] = onFinish_2554[this_1]
		call nullTimer(clVar)
	else
		call error("loaded input is invalid")
	endif
	call dispatch_PayloadCallback_destroyPayloadCallback(cb_1)
endfunction

function cyc_onExecute_save_doSeq_LZW takes integer funcChoice, integer this_1, integer pc, string key, integer parser, integer finalCallback_1 returns nothing
	local integer clVar
	local integer str
	local integer receiver
	local integer temp
	local integer clVar_1
	local integer clVar_2
	local integer temp_1
	local string temp_2
	local integer temp_3
	local integer temp_4
	local string temp_5
	local integer temp_6
	local integer receiver_1
	local integer json
	local real npos_x
	local real npos_y
	local integer tId
	local integer obj_1
	local real tuple_temp
	local real tuple_temp_1
	local texttag receiver_2
	local integer pcb
	local integer clVar_3
	local texttag receiver_3
	local integer td_1
	local integer bs_1
	local integer itr_1
	local integer pcb_1
	local integer clVar_4
	local integer clVar_5
	local integer clVar_6
	local integer clVar_7
	local integer encoded
	local integer clVar_8
	local integer temp_7
	local boolean continue
	local integer next
	local integer receiver_4
	local integer clVar_9
	local texttag receiver_5
	local integer temp_8
	local integer temp_9
	local integer clVar_10
	local integer next_1
	local integer receiver_6
	local integer clVar_11
	local texttag receiver_7
	local integer clVar_12
	local integer temp_10
	local integer temp_11
	if funcChoice == 0 then
		set PayloadCallback_customData[onFinish_2553[this_1]] = PayloadCallback_customData[pc]
		call dispatch_Encoder_destroyEncoder(encoder_2345[this_1])
		call cyc_onExecute_save_doSeq_LZW(24, onFinish_2553[this_1], 0, null, 0, 0)
	elseif funcChoice == 1 then
		if JsonParser_outputList[this_1] != 0 then
			call dispatch_LinkedList_destroyLinkedList(JsonParser_outputList[this_1])
		endif
		set JsonParser_outputList[this_1] = new_LinkedList()
		if dispatch_BigString_BigString_BigString_getLength(JsonParser_bigInput[this_1]) <= 2 then
			call Log_debug("skip empty list")
			call cyc_onExecute_save_doSeq_LZW(24, pc, 0, null, 0, 0)
		else
			set clVar = alloc_SeqCallback_doSeq_JsonParser_JsonParser()
			call construct_SeqCallback(clVar)
			set this_2902[clVar] = this_1
			set finalCallback[clVar] = pc
			call doSeq(clVar)
		endif
	elseif funcChoice == 2 then
		if JsonParser_typeId[this_1] == 0 then
			if this_1 == 0 then
				call error("Nullpointer exception when calling JsonParser.parseList")
			else
				call error("Called JsonParser.parseList on invalid object.")
			endif
		endif
		call cyc_onExecute_save_doSeq_LZW(1, this_1, pc, null, 0, 0)
	elseif funcChoice == 3 then
		set str = dispatch_Json_Json_Json_getString(this_1, key)
		set BigSubString_next[str] = 0
		set PayloadCallback_customData[finalCallback_1] = parser
		set temp = parser
		set receiver = new_BigString()
		call dispatch_BigString_BigString_BigString_addSubString(receiver, str)
		call dispatch_JsonParser_JsonParser_JsonParser_setInput(temp, receiver)
		if Printing_config_DEBUG_LEVEL == 0 then
			call dispatch_BigString_BigString_BigString_debugPrint(JsonParser_bigInput[parser])
		endif
		call cyc_onExecute_save_doSeq_LZW(2, parser, finalCallback_1, null, 0, 0)
	elseif funcChoice == 4 then
		if Json_typeId[this_1] == 0 then
			if this_1 == 0 then
				call error("Nullpointer exception when calling Json.getStringList")
			else
				call error("Called Json.getStringList on invalid object.")
			endif
		endif
		call cyc_onExecute_save_doSeq_LZW(3, this_1, 0, key, parser, finalCallback_1)
	elseif funcChoice == 5 then
		call printLog(1, "on finish parse")
		if dispatch_Json_Json_Json_hasKey(JsonParser_output[MemoryAccessPedestal_parser[ref_2610[this_1]]], MemoryAccessPedestal_ENTITIES_KEY) then
			set temp_1 = JsonParser_output[MemoryAccessPedestal_parser[ref_2610[this_1]]]
			set temp_2 = MemoryAccessPedestal_ENTITIES_KEY
			set temp_3 = MemoryAccessPedestal_listparser[ref_2610[this_1]]
			set clVar_1 = alloc_PayloadCallback_getStringList_parse_decompress_loadData_nullTimer_MemoryAccessPedestal_Pedestal()
			call construct_PayloadCallback(clVar_1)
			set ref_2611[clVar_1] = ref_2610[this_1]
			call cyc_onExecute_save_doSeq_LZW(4, temp_1, 0, temp_2, temp_3, clVar_1)
		elseif dispatch_Json_Json_Json_hasKey(JsonParser_output[MemoryAccessPedestal_parser[ref_2610[this_1]]], MemoryAccessPedestal_TILES_KEY) then
			set temp_4 = JsonParser_output[MemoryAccessPedestal_parser[ref_2610[this_1]]]
			set temp_5 = MemoryAccessPedestal_TILES_KEY
			set temp_6 = MemoryAccessPedestal_listparser[ref_2610[this_1]]
			set clVar_2 = alloc_PayloadCallback_getStringList_parse_decompress_loadData_nullTimer_MemoryAccessPedestal_Pedestal_1870()
			call construct_PayloadCallback(clVar_2)
			set ref_2612[clVar_2] = ref_2610[this_1]
			call cyc_onExecute_save_doSeq_LZW(4, temp_4, 0, temp_5, temp_6, clVar_2)
		endif
	elseif funcChoice == 6 then
		call printLog(1, "doSeq loadTile2s")
		set receiver_1 = td_2883[this_1]
		call dispatch_TileData_TileData_TileData_deserialize(receiver_1, JsonParser_output[MemoryAccessPedestal_parser[this_3006[this_1]]])
		call dispatch_Json_Json_Json_reset(JsonParser_output[MemoryAccessPedestal_parser[this_3006[this_1]]])
		call cyc_onExecute_save_doSeq_LZW(24, cb1[this_1], 0, null, 0, 0)
	elseif funcChoice == 7 then
		set json = JsonParser_output[MemoryAccessPedestal_listparser[this_3002[this_1]]]
		set tuple_temp = dispatch_Json_Json_Json_getReal(json, Entity_KEY_X)
		set tuple_temp_1 = dispatch_Json_Json_Json_getReal(json, Entity_KEY_Y)
		set npos_x = tuple_temp
		set npos_y = tuple_temp_1
		set tId = dispatch_Json_Json_Json_getInt(json, Entity_KEY_TYPE)
		set obj_1 = newObjectFromId(Entity_owner[this_3002[this_1]], vec2_op_plus(vec3_toVec2(Entity_serializeOrigin_x, Entity_serializeOrigin_y, Entity_serializeOrigin_z), vec3_toVec2_return_y, npos_x, npos_y), vec2_op_plus_return_y, tId)
		if obj_1 != 0 and Serializable_typeId[obj_1] > 0 then
			call dispatch_Entity_Entity_Entity_deserialize(obj_1, JsonParser_output[MemoryAccessPedestal_listparser[this_3002[this_1]]])
		else
			call Log_debug("couldn't fine serializable type")
		endif
		call dispatch_Json_Json_Json_reset(JsonParser_output[MemoryAccessPedestal_listparser[this_3002[this_1]]])
		call cyc_onExecute_save_doSeq_LZW(24, cb_2285[this_1], 0, null, 0, 0)
	elseif funcChoice == 8 then
		call printLog(1, "load tiles1")
		call cyc_onExecute_save_doSeq_LZW(13, ref_2612[this_1], JsonParser_outputList[PayloadCallback_customData[pc]], null, 0, 0)
	elseif funcChoice == 9 then
		set receiver_2 = FText_tt[MemoryAccessPedestal_ttag[this_1]]
		call texttag_center(receiver_2, Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1], "|cff0884CEloading Entities...", 10.)
		set MemoryAccessPedestal_itr[this_1] = dispatch_LinkedList_LinkedList_LinkedList_staticItr(pc)
		set clVar_3 = alloc_PayloadCallback_MemoryAccessPedestal_Pedestal()
		call construct_PayloadCallback(clVar_3)
		set this_3001[clVar_3] = this_1
		set pcb = clVar_3
		call cyc_onExecute_save_doSeq_LZW(24, pcb, 0, null, 0, 0)
	elseif funcChoice == 10 then
		if Serializable_typeId[this_1] == 0 then
			if this_1 == 0 then
				call error("Nullpointer exception when calling MemoryAccessPedestal.loadEntities")
			else
				call error("Called MemoryAccessPedestal.loadEntities on invalid object.")
			endif
		endif
		call cyc_onExecute_save_doSeq_LZW(9, this_1, pc, null, 0, 0)
	elseif funcChoice == 11 then
		call cyc_onExecute_save_doSeq_LZW(10, ref_2611[this_1], JsonParser_outputList[MemoryAccessPedestal_listparser[ref_2611[this_1]]], null, 0, 0)
	elseif funcChoice == 12 then
		call printLog(1, "load tiles2")
		set receiver_3 = FText_tt[MemoryAccessPedestal_ttag[this_1]]
		call texttag_center(receiver_3, Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1], "|cff0884CEloading Tiles...", 10.)
		set td_1 = new_TileData()
		set bs_1 = new_BigString()
		set TileData_owner[td_1] = Entity_owner[this_1]
		set itr_1 = dispatch_LinkedList_LinkedList_LinkedList_staticItr(pc)
		set clVar_4 = alloc_PayloadCallback_MemoryAccessPedestal_Pedestal_1862()
		call construct_PayloadCallback(clVar_4)
		set itr_2536[clVar_4] = itr_1
		set bs_2277[clVar_4] = bs_1
		set this_3005[clVar_4] = this_1
		set td[clVar_4] = td_1
		set pcb_1 = clVar_4
		call cyc_onExecute_save_doSeq_LZW(24, pcb_1, 0, null, 0, 0)
	elseif funcChoice == 13 then
		if Serializable_typeId[this_1] == 0 then
			if this_1 == 0 then
				call error("Nullpointer exception when calling MemoryAccessPedestal.loadTiles")
			else
				call error("Called MemoryAccessPedestal.loadTiles on invalid object.")
			endif
		endif
		call cyc_onExecute_save_doSeq_LZW(12, this_1, pc, null, 0, 0)
	elseif funcChoice == 14 then
		call printLog(1, "load tiles1")
		call cyc_onExecute_save_doSeq_LZW(13, this_3004[this_1], JsonParser_outputList[PayloadCallback_customData[pc]], null, 0, 0)
	elseif funcChoice == 15 then
		call Log_debug("loaded..")
		set clVar_5 = alloc_ForForceCallback_execute_fromString_Encoder_Encoder()
		set this_2898[clVar_5] = this_2897[this_1]
		call execute(clVar_5)
		call Log_debug("decoded..")
		set clVar_6 = alloc_ForForceCallback_execute_fromString_Encoder_Encoder_1774()
		set this_2899[clVar_6] = this_2897[this_1]
		call execute(clVar_6)
		call Log_debug("claned..")
		set clVar_7 = alloc_ForForceCallback_execute_fromString_Encoder_Encoder_1775()
		set this_2900[clVar_7] = this_2897[this_1]
		call execute(clVar_7)
		call Log_debug("hashed..")
		set PayloadCallback_customData[onFinishLoad[this_1]] = boolean_toInt(Encoder_inputhash[this_2897[this_1]] == Encoder_comparehash[this_2897[this_1]])
		call cyc_onExecute_save_doSeq_LZW(24, onFinishLoad[this_1], 0, null, 0, 0)
	elseif funcChoice == 16 then
		call Log_debug("positions encoded")
		set encoded = PayloadCallback_customData[pc]
		call dispatch_BigString_BigString_BigString_debugPrint(encoded)
		set PayloadCallback_customData[onFinish_2558[this_1]] = encoded
		call cyc_onExecute_save_doSeq_LZW(24, onFinish_2558[this_1], 0, null, 0, 0)
	elseif funcChoice == 17 then
		call printLog(1, "on finish decompress")
		call dispatch_JsonParser_JsonParser_JsonParser_setInput(MemoryAccessPedestal_parser[ref[this_1]], PayloadCallback_customData[pc])
		set temp_7 = MemoryAccessPedestal_parser[ref[this_1]]
		set clVar_8 = alloc_PayloadCallback_parse_decompress_loadData_nullTimer_MemoryAccessPedestal_Pedestal()
		call construct_PayloadCallback(clVar_8)
		set ref_2610[clVar_8] = ref[this_1]
		call cyc_onExecute_save_doSeq_LZW(20, temp_7, clVar_8, null, 0, 0)
	elseif funcChoice == 18 then
		set continue = true
		call printLog(1, "doSeq loadTiles")
		if dispatch_LLIterator_LinkedList_LLIterator_hasNext(itr_2536[this_1]) then
			call dispatch_BigString_BigString_BigString_reset(bs_2277[this_1])
			set next = dispatch_LLIterator_LinkedList_LLIterator_next(itr_2536[this_1])
			set BigSubString_next[next] = 0
			call cyc_BigSubString_getCombined(1, next)
			call printLog(1, "doSeq loadTiles1: " + tempReturn_string)
			set temp_8 = MemoryAccessPedestal_parser[this_3005[this_1]]
			set receiver_4 = bs_2277[this_1]
			call dispatch_BigString_BigString_BigString_addSubString(receiver_4, next)
			call dispatch_JsonParser_JsonParser_JsonParser_setInput(temp_8, receiver_4)
			set temp_9 = MemoryAccessPedestal_parser[this_3005[this_1]]
			set clVar_9 = alloc_PayloadCallback_parse_MemoryAccessPedestal_Pedestal_1873()
			call construct_PayloadCallback(clVar_9)
			set td_2883[clVar_9] = td[this_1]
			set this_3006[clVar_9] = this_3005[this_1]
			set cb1[clVar_9] = pc
			call cyc_onExecute_save_doSeq_LZW(20, temp_9, clVar_9, null, 0, 0)
		else
			set continue = false
			call printLog(1, "load finished")
			set receiver_5 = FText_tt[MemoryAccessPedestal_ttag[this_3005[this_1]]]
			call texttag_center(receiver_5, Entity_pos_x[this_3005[this_1]], Entity_pos_y[this_3005[this_1]], Entity_pos_z[this_3005[this_1]], "|cffFFBD21load finished!", 10.)
			call dispatch_TileData_destroyTileData(td[this_1])
			call unit_unpause(UnitEntity_actor[this_3005[this_1]])
		endif
		set tempReturn_boolean = continue
		return
	elseif funcChoice == 19 then
		if JsonParser_bigInput[this_1] == 0 or dispatch_BigString_BigString_BigString_getLength(JsonParser_bigInput[this_1]) <= 0 then
			call Log_debug("skip empty input")
			call cyc_onExecute_save_doSeq_LZW(24, pc, 0, null, 0, 0)
			return
		endif
		call dispatch_BigString_BigString_BigString_debugPrint(JsonParser_bigInput[this_1])
		call dispatch_Json_Json_Json_reset(JsonParser_output[this_1])
		set clVar_10 = alloc_SeqCallback_doSeq_JsonParser_JsonParser_1896()
		call construct_SeqCallback(clVar_10)
		set this_2903[clVar_10] = this_1
		set callback[clVar_10] = pc
		call doSeq(clVar_10)
	elseif funcChoice == 20 then
		if JsonParser_typeId[this_1] == 0 then
			if this_1 == 0 then
				call error("Nullpointer exception when calling JsonParser.parse")
			else
				call error("Called JsonParser.parse on invalid object.")
			endif
		endif
		call cyc_onExecute_save_doSeq_LZW(19, this_1, pc, null, 0, 0)
	elseif funcChoice == 21 then
		if dispatch_LLIterator_LinkedList_LLIterator_hasNext(MemoryAccessPedestal_itr[this_3001[this_1]]) then
			call dispatch_BigString_BigString_BigString_reset(MemoryAccessPedestal_bs[this_3001[this_1]])
			set next_1 = dispatch_LLIterator_LinkedList_LLIterator_next(MemoryAccessPedestal_itr[this_3001[this_1]])
			set BigSubString_next[next_1] = 0
			set temp_10 = MemoryAccessPedestal_listparser[this_3001[this_1]]
			set receiver_6 = MemoryAccessPedestal_bs[this_3001[this_1]]
			call dispatch_BigString_BigString_BigString_addSubString(receiver_6, next_1)
			call dispatch_JsonParser_JsonParser_JsonParser_setInput(temp_10, receiver_6)
			set temp_11 = MemoryAccessPedestal_listparser[this_3001[this_1]]
			set clVar_11 = alloc_PayloadCallback_parse_MemoryAccessPedestal_Pedestal()
			call construct_PayloadCallback(clVar_11)
			set this_3002[clVar_11] = this_3001[this_1]
			set cb_2285[clVar_11] = pc
			call cyc_onExecute_save_doSeq_LZW(20, temp_11, clVar_11, null, 0, 0)
		else
			set receiver_7 = FText_tt[MemoryAccessPedestal_ttag[this_3001[this_1]]]
			call texttag_center(receiver_7, Entity_pos_x[this_3001[this_1]], Entity_pos_y[this_3001[this_1]], Entity_pos_z[this_3001[this_1]], "|cff0884CEEntites loaded!", 10.)
			call printLog(1, "entities loaded")
			set clVar_12 = alloc_CallbackSingle_doAfter_MemoryAccessPedestal_Pedestal()
			call construct_CallbackSingle(clVar_12)
			set this_3003[clVar_12] = this_3001[this_1]
			call doAfter(0.5, clVar_12)
		endif
	elseif funcChoice == 22 then
		if PayloadCallback_typeId[this_1] == 0 then
			if this_1 == 0 then
				call error("Nullpointer exception when calling PayloadCallback.onExecute")
			else
				call error("Called PayloadCallback.onExecute on invalid object.")
			endif
		endif
		if PayloadCallback_typeId[this_1] <= 1041 then
			if PayloadCallback_typeId[this_1] <= 1037 then
				if PayloadCallback_typeId[this_1] <= 1035 then
					if PayloadCallback_typeId[this_1] <= 1034 then
						call cyc_onExecute_save_doSeq_LZW(21, this_1, pc, null, 0, 0)
					else
						call cyc_onExecute_save_doSeq_LZW(18, this_1, pc, null, 0, 0)
					endif
				elseif PayloadCallback_typeId[this_1] <= 1036 then
					call onExecute_compress_MemoryAccessPedestal_Pedestal(this_1, pc)
				else
					call onExecute_decodePositions_LZW(this_1, pc)
				endif
			elseif PayloadCallback_typeId[this_1] <= 1039 then
				if PayloadCallback_typeId[this_1] <= 1038 then
					call cyc_onExecute_save_doSeq_LZW(17, this_1, pc, null, 0, 0)
				else
					call cyc_onExecute_save_doSeq_LZW(16, this_1, pc, null, 0, 0)
				endif
			elseif PayloadCallback_typeId[this_1] <= 1040 then
				call cyc_onExecute_save_doSeq_LZW(15, this_1, pc, null, 0, 0)
			else
				call cyc_onExecute_save_doSeq_LZW(14, this_1, pc, null, 0, 0)
			endif
		elseif PayloadCallback_typeId[this_1] <= 1045 then
			if PayloadCallback_typeId[this_1] <= 1043 then
				if PayloadCallback_typeId[this_1] <= 1042 then
					call cyc_onExecute_save_doSeq_LZW(11, this_1, pc, null, 0, 0)
				else
					call cyc_onExecute_save_doSeq_LZW(8, this_1, pc, null, 0, 0)
				endif
			elseif PayloadCallback_typeId[this_1] <= 1044 then
				call onExecute_load_LZW(this_1, pc)
			else
				call cyc_onExecute_save_doSeq_LZW(7, this_1, pc, null, 0, 0)
			endif
		elseif PayloadCallback_typeId[this_1] <= 1047 then
			if PayloadCallback_typeId[this_1] <= 1046 then
				call cyc_onExecute_save_doSeq_LZW(6, this_1, pc, null, 0, 0)
			else
				call cyc_onExecute_save_doSeq_LZW(5, this_1, pc, null, 0, 0)
			endif
		else
			call cyc_onExecute_save_doSeq_LZW(0, this_1, pc, null, 0, 0)
		endif
	elseif funcChoice == 23 then
		call cyc_onExecute_save_doSeq_LZW(22, this_1, this_1, null, 0, 0)
	elseif funcChoice == 24 then
		if PayloadCallback_typeId[this_1] == 0 then
			if this_1 == 0 then
				call error("Nullpointer exception when calling PayloadCallback.doStep")
			else
				call error("Called PayloadCallback.doStep on invalid object.")
			endif
		endif
		call cyc_onExecute_save_doSeq_LZW(23, this_1, 0, null, 0, 0)
	endif
endfunction

function call_doAfter_MemoryAccessPedestal_Pedestal takes integer this_1 returns nothing
	local integer clVar
	local texttag receiver
	local integer temp
	local string temp_1
	local integer temp_2
	if dispatch_Json_Json_Json_hasKey(JsonParser_output[MemoryAccessPedestal_parser[this_3003[this_1]]], MemoryAccessPedestal_TILES_KEY) then
		set temp = JsonParser_output[MemoryAccessPedestal_parser[this_3003[this_1]]]
		set temp_1 = MemoryAccessPedestal_TILES_KEY
		set temp_2 = MemoryAccessPedestal_listparser[this_3003[this_1]]
		set clVar = alloc_PayloadCallback_getStringList_doAfter_MemoryAccessPedestal_Pedestal()
		call construct_PayloadCallback(clVar)
		set this_3004[clVar] = this_3003[this_1]
		call cyc_onExecute_save_doSeq_LZW(4, temp, 0, temp_1, temp_2, clVar)
	else
		call printLog(1, "load finished")
		set receiver = FText_tt[MemoryAccessPedestal_ttag[this_3003[this_1]]]
		call texttag_center(receiver, Entity_pos_x[this_3003[this_1]], Entity_pos_y[this_3003[this_1]], Entity_pos_z[this_3003[this_1]], "|cffFFBD21load finished!", 10.)
		call unit_unpause(UnitEntity_actor[this_3003[this_1]])
	endif
endfunction

function call_doAfter_Minigame_Minigame takes integer this_1 returns nothing
	call dispatch_Minigame_Minigame_Minigame_reset(this_2952[this_1])
endfunction

function call_doAfter_Minigame_Minigame_1991 takes integer this_1 returns nothing
	if  not Escaper_camlock[PlayerData_escaper[pd[this_1]]] then
		call player_panCamToTimed(PlayerData_p[pd[this_1]], UnitEntity_actor[PlayerData_escaper[pd[this_1]]], 0.)
	endif
	call player_select(PlayerData_p[pd[this_1]], UnitEntity_actor[PlayerData_escaper[pd[this_1]]])
endfunction

function call_doAfter_Minion_Minion takes integer this_1 returns nothing
	call cyc_RevivePoint_terminate(18, this_2916[this_1])
endfunction

function call_doAfter_Minion_Minion_1993 takes integer this_1 returns nothing
	call effect_destr(fearEffect[this_1])
	set Minion_state[this_2917[this_1]] = 0
endfunction

function alloc_CallbackSingle_doAfter_doAfter_Minion_Minion takes nothing returns integer
	local integer this_1
	if CallbackSingle_firstFree == 0 then
		if CallbackSingle_maxIndex < JASS_MAX_ARRAY_SIZE then
			set CallbackSingle_maxIndex = CallbackSingle_maxIndex + 1
			set this_1 = CallbackSingle_maxIndex
			set CallbackSingle_typeId[this_1] = 705
		else
			call error("Out of memory: Could not create CallbackSingle_doAfter_doAfter_Minion_Minion.")
			set this_1 = 0
		endif
	else
		set CallbackSingle_firstFree = CallbackSingle_firstFree - 1
		set this_1 = CallbackSingle_nextFree[CallbackSingle_firstFree]
		set CallbackSingle_typeId[this_1] = 705
	endif
	return this_1
endfunction

function alloc_ForGroupCallback_forUnitsInRange_doAfter_Minion_Minion takes nothing returns integer
	local integer this_1
	if ForGroupCallback_firstFree == 0 then
		if ForGroupCallback_maxIndex < JASS_MAX_ARRAY_SIZE then
			set ForGroupCallback_maxIndex = ForGroupCallback_maxIndex + 1
			set this_1 = ForGroupCallback_maxIndex
			set ForGroupCallback_typeId[this_1] = 871
		else
			call error("Out of memory: Could not create ForGroupCallback_forUnitsInRange_doAfter_Minion_Minion.")
			set this_1 = 0
		endif
	else
		set ForGroupCallback_firstFree = ForGroupCallback_firstFree - 1
		set this_1 = ForGroupCallback_nextFree[ForGroupCallback_firstFree]
		set ForGroupCallback_typeId[this_1] = 871
	endif
	return this_1
endfunction

function call_doAfter_Minion_Minion_1994 takes integer this_1 returns nothing
	local real facing_radians
	local real tpos_x_1
	local real tpos_y_1
	local integer clVar
	local integer clVar_1
	local real temp_x
	local real temp_y
	local real temp
	local real tuple_temp
	local real tuple_temp_1
	local real tuple_temp_2
	local real tuple_temp_3
	local real tuple_temp_4
	if Minion_currentHP[this_2918[this_1]] > 0. then
		set tuple_temp = unit_getFacingAngle(UnitEntity_actor[this_2918[this_1]])
		set facing_radians = tuple_temp
		set tuple_temp_1 = vec2_polarOffset(vec3_toVec2(dispatch_UnitEntity_Entity_UnitEntity_getPos(this_2918[this_1]), dispatch_UnitEntity_Entity_UnitEntity_getPos_return_y, dispatch_UnitEntity_Entity_UnitEntity_getPos_return_z), vec3_toVec2_return_y, facing_radians, 80.)
		set tuple_temp_2 = vec2_polarOffset_return_y
		set tpos_x_1 = tuple_temp_1
		set tpos_y_1 = tuple_temp_2
		call flashEffect_3282(Abilities_manaFlareBoltImpact, tpos_x_1, tpos_y_1)
		set tuple_temp_3 = tpos_x_1
		set tuple_temp_4 = tpos_y_1
		set temp_x = tuple_temp_3
		set temp_y = tuple_temp_4
		set temp = Minion_ATTACK_RANGE
		set clVar = alloc_ForGroupCallback_forUnitsInRange_doAfter_Minion_Minion()
		set this_2919[clVar] = this_2918[this_1]
		call forUnitsInRange(temp_x, temp_y, temp, clVar)
		set clVar_1 = alloc_CallbackSingle_doAfter_doAfter_Minion_Minion()
		call construct_CallbackSingle(clVar_1)
		set this_2920[clVar_1] = this_2918[this_1]
		call doAfter(1.3, clVar_1)
	endif
endfunction

function call_doAfter_PlayerData takes integer this_1 returns nothing
	call rebuildBoard()
endfunction

function FirstSnowMaze_initMaze takes integer this_1 returns nothing
	local integer tealDoor
	local integer receiver
	local integer purpleDoor
	local integer receiver_1
	local integer receiver_2
	local integer k1
	local integer k2
	local integer receiver_3
	local unit receiver_4
	local integer receiver_5
	local unit receiver_6
	set Startmaze_inited[this_1] = true
	set tealDoor = new_Door(gg_unit_dor2_0023)
	set receiver = tealDoor
	call dispatch_Door_Door_Door_changeColor(receiver, 1093678423)
	set purpleDoor = new_Door(gg_unit_dor2_0011)
	set receiver_1 = purpleDoor
	call dispatch_Door_Door_Door_changeColor(receiver_1, 1093678419)
	set receiver_2 = receiver_1
	call dispatch_Door_Door_Door_turn(receiver_2)
	set k1 = new_Knockbacker_3706(unit_getPos(gg_unit_knck_0033), unit_getPos_return_y, unit_getOwner(gg_unit_knck_0033), 0.)
	call unit_remove(gg_unit_knck_0033)
	set k2 = new_Knockbacker_3706(unit_getPos(gg_unit_knck_0034), unit_getPos_return_y, unit_getOwner(gg_unit_knck_0034), 0.)
	call unit_remove(gg_unit_knck_0034)
	call unit_issuePointOrder(SetupObject_setup[k1], "patrol", 5920.01, -4320.)
	call unit_issuePointOrder(SetupObject_setup[k2], "patrol", 5110.01, -3830.)
	call unit_issuePointOrder(gg_unit_bisk_0020, "patrol", 6800.01, -5237.)
	call unit_issuePointOrder(gg_unit_bisk_0018, "patrol", 6000.01, -6000.)
	set receiver_3 = unit_getEntity(gg_unit_sick_0013)
	call dispatch_UnitEntity_Entity_UnitEntity_setPos(receiver_3, 5300.01, -6100., 0.)
	set receiver_4 = gg_unit_sick_0013
	call unit_issuePointOrder(receiver_4, "patrol", 5300.01, -5700.)
	set receiver_5 = unit_getEntity(gg_unit_sick_0014)
	call dispatch_UnitEntity_Entity_UnitEntity_setPos(receiver_5, 5100.01, -6100., 0.)
	set receiver_6 = gg_unit_sick_0014
	call unit_issuePointOrder(receiver_6, "patrol", 5100.01, -5700.)
	call unit_issuePointOrder(gg_unit_sick_0012, "patrol", 6500.01, -4400.)
	call unit_issuePointOrder(gg_unit_sick_0036, "patrol", 4320.01, -5200.)
endfunction

function alloc_CallbackSingle_doAfter_FourthCitadelleMaze_FourthCitadelle takes nothing returns integer
	local integer this_1
	if CallbackSingle_firstFree == 0 then
		if CallbackSingle_maxIndex < JASS_MAX_ARRAY_SIZE then
			set CallbackSingle_maxIndex = CallbackSingle_maxIndex + 1
			set this_1 = CallbackSingle_maxIndex
			set CallbackSingle_typeId[this_1] = 684
		else
			call error("Out of memory: Could not create CallbackSingle_doAfter_FourthCitadelleMaze_FourthCitadelle.")
			set this_1 = 0
		endif
	else
		set CallbackSingle_firstFree = CallbackSingle_firstFree - 1
		set this_1 = CallbackSingle_nextFree[CallbackSingle_firstFree]
		set CallbackSingle_typeId[this_1] = 684
	endif
	return this_1
endfunction

function alloc_EventListener_add_Spinner_Spinner takes nothing returns integer
	local integer this_1
	if EventListener_firstFree == 0 then
		if EventListener_maxIndex < JASS_MAX_ARRAY_SIZE then
			set EventListener_maxIndex = EventListener_maxIndex + 1
			set this_1 = EventListener_maxIndex
			set EventListener_typeId[this_1] = 816
		else
			call error("Out of memory: Could not create EventListener_add_Spinner_Spinner.")
			set this_1 = 0
		endif
	else
		set EventListener_firstFree = EventListener_firstFree - 1
		set this_1 = EventListener_nextFree[EventListener_firstFree]
		set EventListener_typeId[this_1] = 816
	endif
	return this_1
endfunction

function construct_Spinner takes integer this_1, unit existing returns nothing
	local unit receiver
	local unit receiver_1
	local integer clVar
	local unit temp
	local playerunitevent temp_1
	call construct_SetupObject(this_1, createUnit(unit_getOwner(existing), BuilderConstants_SPINNER_ID, unit_getPos(existing), unit_getPos_return_y, 0.), existing, 0.)
	call Spinner_init(this_1)
	set Entity_sleeps[this_1] = false
	set receiver = SetupObject_setup[this_1]
	call unit_addAbility(receiver, BuilderConstants_TURN_OFF_ID)
	set receiver_1 = receiver
	call unit_addAbility(receiver_1, Basics_GHOST_INVIS_ID)
	set temp = SetupObject_setup[this_1]
	set temp_1 = EVENT_PLAYER_UNIT_SPELL_EFFECT
	set clVar = alloc_EventListener_add_Spinner_Spinner()
	call construct_EventListener(clVar)
	set this_2995[clVar] = this_1
	call EventListener_add_436(temp, temp_1, clVar)
endfunction

function new_Spinner takes unit existing returns integer
	local integer this_1 = alloc_Spinner()
	call construct_Spinner(this_1, existing)
	return this_1
endfunction

function construct_Teleporter2 takes integer this_1, unit existing returns nothing
	call construct_StaticBaseObject(this_1, unit_getPos(existing), unit_getPos_return_y, existing, Teleporter_EVENT_RADIUS, ref_function_Teleporter_teleport, null)
	call Teleporter_init(this_1)
	call unit_addAbility(UnitEntity_actor[this_1], BuilderConstants_TURN_OFF_ID)
endfunction

function new_Teleporter_3765 takes unit existing returns integer
	local integer this_1 = alloc_Teleporter()
	call construct_Teleporter2(this_1, existing)
	return this_1
endfunction

function FourthCitadelleMaze_initMaze takes integer this_1 returns nothing
	local integer s
	local integer clVar
	local integer t
	set Startmaze_inited[this_1] = true
	set s = new_Spinner(gg_unit_spnr_0147)
	call dispatch_Spinner_Spinner_Spinner_checkObj(s, unit_getEntity(gg_unit_scik_0260))
	call dispatch_Spinner_Spinner_Spinner_checkObj(s, unit_getEntity(gg_unit_scik_0261))
	call dispatch_ConfigValue_ConfigValue_ConfigValue_setVal(Spinner_spinSpeed[s], 4.5 * Angle_DEGTORAD)
	set s = new_Spinner(gg_unit_spnr_0161)
	call dispatch_Spinner_Spinner_Spinner_checkObj(s, unit_getEntity(gg_unit_scik_0215))
	call dispatch_Spinner_Spinner_Spinner_checkObj(s, unit_getEntity(gg_unit_scik_0216))
	call dispatch_Spinner_Spinner_Spinner_checkObj(s, unit_getEntity(gg_unit_scik_0217))
	call dispatch_ConfigValue_ConfigValue_ConfigValue_setVal(Spinner_spinSpeed[s], 4. * Angle_DEGTORAD)
	set clVar = alloc_CallbackSingle_doAfter_FourthCitadelleMaze_FourthCitadelle()
	call construct_CallbackSingle(clVar)
	call doAfter(0.2, clVar)
	set s = new_Spinner(gg_unit_spnr_0157)
	call dispatch_Spinner_Spinner_Spinner_checkObj(s, unit_getEntity(gg_unit_scik_0271))
	call dispatch_Spinner_Spinner_Spinner_checkObj(s, unit_getEntity(gg_unit_scik_0272))
	call dispatch_Spinner_Spinner_Spinner_checkObj(s, unit_getEntity(gg_unit_scik_0273))
	call dispatch_Spinner_Spinner_Spinner_checkObj(s, unit_getEntity(gg_unit_scik_0274))
	call dispatch_Spinner_Spinner_Spinner_checkObj(s, unit_getEntity(gg_unit_scik_0275))
	call dispatch_Spinner_Spinner_Spinner_checkObj(s, unit_getEntity(gg_unit_scik_0276))
	call dispatch_Spinner_Spinner_Spinner_checkObj(s, unit_getEntity(gg_unit_scik_0277))
	call dispatch_Spinner_Spinner_Spinner_checkObj(s, unit_getEntity(gg_unit_scik_0278))
	call dispatch_ConfigValue_ConfigValue_ConfigValue_setVal(Spinner_spinSpeed[s], 1.5 * Angle_DEGTORAD)
	set s = new_Spinner(gg_unit_spnr_0162)
	call dispatch_Spinner_Spinner_Spinner_checkObj(s, unit_getEntity(gg_unit_bcik_0220))
	call dispatch_ConfigValue_ConfigValue_ConfigValue_setVal(Spinner_spinSpeed[s], 7.5 * Angle_DEGTORAD)
	set s = new_Spinner(gg_unit_spnr_0129)
	call dispatch_ConfigValue_ConfigValue_ConfigValue_setVal(Spinner_sinFactor[s], 0.)
	call dispatch_Spinner_Spinner_Spinner_checkObj(s, unit_getEntity(gg_unit_glve_0156))
	call dispatch_ConfigValue_ConfigValue_ConfigValue_setVal(Spinner_spinSpeed[s], 4. * Angle_DEGTORAD)
	set s = new_Spinner(gg_unit_spnr_0130)
	call dispatch_Spinner_Spinner_Spinner_checkObj(s, unit_getEntity(gg_unit_glve_0158))
	call dispatch_Spinner_Spinner_Spinner_checkObj(s, unit_getEntity(gg_unit_glve_0159))
	call dispatch_Spinner_Spinner_Spinner_checkObj(s, unit_getEntity(gg_unit_glve_0160))
	call dispatch_ConfigValue_ConfigValue_ConfigValue_setVal(Spinner_spinSpeed[s], 1.25 * Angle_DEGTORAD)
	call unit_issuePointOrder(gg_unit_scik_0263, "patrol", -2765., -6283.)
	call unit_issuePointOrder(gg_unit_scik_0268, "patrol", -3552., -6419.)
	call unit_issuePointOrder(gg_unit_scik_0269, "patrol", -4317., -5883.)
	call unit_issuePointOrder(gg_unit_scik_0267, "patrol", -4045., -6441.)
	call unit_issuePointOrder(gg_unit_scik_0270, "patrol", -4719., -6655.)
	call unit_issuePointOrder(gg_unit_scik_0210, "patrol", -4544., -6881.)
	call unit_issuePointOrder(gg_unit_scik_0211, "patrol", -4553., -7000.)
	call unit_issuePointOrder(gg_unit_scik_0219, "patrol", -4754., -7185.)
	call unit_issuePointOrder(gg_unit_scik_0218, "patrol", -4720., -7060.)
	call unit_issuePointOrder(gg_unit_scik_0214, "patrol", -2710., -5120.)
	call unit_issuePointOrder(gg_unit_scik_0213, "patrol", -2728., -5100.)
	call unit_issuePointOrder(gg_unit_scik_0221, "patrol", -4576., -4748.)
	call unit_issuePointOrder(gg_unit_scik_0222, "patrol", -4320., -5164.)
	call unit_issuePointOrder(gg_unit_bcik_0266, "patrol", -3312., -6793.)
	call unit_issuePointOrder(gg_unit_bcik_0262, "patrol", -3502., -6077.)
	call unit_issuePointOrder(gg_unit_bcik_0280, "patrol", -3953., -5678.)
	call unit_issuePointOrder(gg_unit_bcik_0225, "patrol", -4648., -3995.)
	set t = new_Teleporter_3765(gg_unit_tele_0234)
	call dispatch_StaticBaseObject_BaseObject_StaticBaseObject_setRallyPoint(t, RegionData_LOUNGE_x, RegionData_LOUNGE_y)
endfunction

function alloc_ForGroupCallback_forUnitsOfPlayer_SecondDesertMaze_SecondDesert takes nothing returns integer
	local integer this_1
	if ForGroupCallback_firstFree == 0 then
		if ForGroupCallback_maxIndex < JASS_MAX_ARRAY_SIZE then
			set ForGroupCallback_maxIndex = ForGroupCallback_maxIndex + 1
			set this_1 = ForGroupCallback_maxIndex
			set ForGroupCallback_typeId[this_1] = 877
		else
			call error("Out of memory: Could not create ForGroupCallback_forUnitsOfPlayer_SecondDesertMaze_SecondDesert.")
			set this_1 = 0
		endif
	else
		set ForGroupCallback_firstFree = ForGroupCallback_firstFree - 1
		set this_1 = ForGroupCallback_nextFree[ForGroupCallback_firstFree]
		set ForGroupCallback_typeId[this_1] = 877
	endif
	return this_1
endfunction

function alloc_ForGroupCallback_forUnitsOfPlayer_SecondDesertMaze_SecondDesert_1795 takes nothing returns integer
	local integer this_1
	if ForGroupCallback_firstFree == 0 then
		if ForGroupCallback_maxIndex < JASS_MAX_ARRAY_SIZE then
			set ForGroupCallback_maxIndex = ForGroupCallback_maxIndex + 1
			set this_1 = ForGroupCallback_maxIndex
			set ForGroupCallback_typeId[this_1] = 878
		else
			call error("Out of memory: Could not create ForGroupCallback_forUnitsOfPlayer_SecondDesertMaze_SecondDesert.")
			set this_1 = 0
		endif
	else
		set ForGroupCallback_firstFree = ForGroupCallback_firstFree - 1
		set this_1 = ForGroupCallback_nextFree[ForGroupCallback_firstFree]
		set ForGroupCallback_typeId[this_1] = 878
	endif
	return this_1
endfunction

function alloc_EventListener_add_Fountain_Fountain takes nothing returns integer
	local integer this_1
	if EventListener_firstFree == 0 then
		if EventListener_maxIndex < JASS_MAX_ARRAY_SIZE then
			set EventListener_maxIndex = EventListener_maxIndex + 1
			set this_1 = EventListener_maxIndex
			set EventListener_typeId[this_1] = 790
		else
			call error("Out of memory: Could not create EventListener_add_Fountain_Fountain.")
			set this_1 = 0
		endif
	else
		set EventListener_firstFree = EventListener_firstFree - 1
		set this_1 = EventListener_nextFree[EventListener_firstFree]
		set EventListener_typeId[this_1] = 790
	endif
	return this_1
endfunction

function construct_Fountain takes integer this_1, unit existing returns nothing
	local integer clVar
	local unit temp
	local playerunitevent temp_1
	call construct_StaticSetupObject(this_1, existing, createUnit(unit_getOwner(existing), BuilderConstants_FOUNTAIN_BOTH_ID, unit_getPos(existing), unit_getPos_return_y, real_asAngleDegrees(270.)), 200., ref_function_Fountain_cure)
	call Fountain_init(this_1)
	set temp = StaticSetupObject_setup[this_1]
	set temp_1 = EVENT_PLAYER_UNIT_SPELL_CAST
	set clVar = alloc_EventListener_add_Fountain_Fountain()
	call construct_EventListener(clVar)
	set this_2992[clVar] = this_1
	call EventListener_add_436(temp, temp_1, clVar)
endfunction

function new_Fountain takes unit existing returns integer
	local integer this_1 = alloc_Fountain()
	call construct_Fountain(this_1, existing)
	return this_1
endfunction

function construct_Jumper takes integer this_1, unit existing returns nothing
	call construct_StaticBaseObject(this_1, unit_getPos(existing), unit_getPos_return_y, existing, 40., ref_function_Jumper_onInRange, null)
	call Jumper_init(this_1)
	call unit_addAbility(UnitEntity_actor[this_1], BuilderConstants_TURN_OFF_ID)
endfunction

function new_Jumper takes unit existing returns integer
	local integer this_1 = alloc_Jumper()
	call construct_Jumper(this_1, existing)
	return this_1
endfunction

function SecondDesertMaze_initMaze takes integer this_1 returns nothing
	local integer clVar
	local integer clVar_1
	local integer t
	local integer j
	local player temp
	local player temp_1
	set Startmaze_inited[this_1] = true
	set temp = GameConstants_STAFF_PLAYER
	set clVar = alloc_ForGroupCallback_forUnitsOfPlayer_SecondDesertMaze_SecondDesert()
	call forUnitsOfPlayer(temp, clVar)
	set temp_1 = GameConstants_STAFF_PLAYER
	set clVar_1 = alloc_ForGroupCallback_forUnitsOfPlayer_SecondDesertMaze_SecondDesert_1795()
	call forUnitsOfPlayer(temp_1, clVar_1)
	call IssuePointOrder(gg_unit_ssak_0121, "patrol", 3612.01, -4650.)
	call IssuePointOrder(gg_unit_ssak_0122, "patrol", 3574.01, -5253.)
	call IssuePointOrder(gg_unit_ssak_0120, "patrol", 3834.01, -5380.)
	call IssuePointOrder(gg_unit_ssak_0123, "patrol", 2932.01, -5615.)
	call IssuePointOrder(gg_unit_ssak_0125, "patrol", 3747.01, -5848.)
	call IssuePointOrder(gg_unit_ssak_0124, "patrol", 4000.01, -6340.)
	call IssuePointOrder(gg_unit_bsak_0127, "patrol", 3900.01, -5952.)
	call IssuePointOrder(gg_unit_bsak_0128, "patrol", 2618.01, -6917.)
	call IssuePointOrder(gg_unit_bsak_0081, "patrol", 1840.01, -6537.)
	call IssuePointOrder(gg_unit_bsak_0080, "patrol", 1293.01, -6286.)
	call IssuePointOrder(gg_unit_bsak_0104, "patrol", 1293.01, -6286.)
	set t = new_Teleporter_3765(gg_unit_tele_0141)
	call dispatch_StaticBaseObject_BaseObject_StaticBaseObject_setRallyPoint(t, RegionData_LOUNGE_x, RegionData_LOUNGE_y)
	set j = new_Jumper(gg_unit_jump_0151)
	call dispatch_StaticBaseObject_BaseObject_StaticBaseObject_setRallyPoint(j, 3329., -6557.)
	call dispatch_ConfigValue_ConfigValue_ConfigValue_setVal(Jumper_jumpForce[j], 5.)
	set j = new_Jumper(gg_unit_jump_0152)
	call dispatch_StaticBaseObject_BaseObject_StaticBaseObject_setRallyPoint(j, 3434., -6245.)
	call dispatch_ConfigValue_ConfigValue_ConfigValue_setVal(Jumper_jumpForce[j], 6.)
	call new_Fountain(gg_unit_fnt2_0065)
	call new_Fountain(gg_unit_fnt2_0067)
	call new_Fountain(gg_unit_fnt2_0074)
endfunction

function alloc_CallbackSingle_doAfter_ThirdForestMaze_ThirdForest takes nothing returns integer
	local integer this_1
	if CallbackSingle_firstFree == 0 then
		if CallbackSingle_maxIndex < JASS_MAX_ARRAY_SIZE then
			set CallbackSingle_maxIndex = CallbackSingle_maxIndex + 1
			set this_1 = CallbackSingle_maxIndex
			set CallbackSingle_typeId[this_1] = 702
		else
			call error("Out of memory: Could not create CallbackSingle_doAfter_ThirdForestMaze_ThirdForest.")
			set this_1 = 0
		endif
	else
		set CallbackSingle_firstFree = CallbackSingle_firstFree - 1
		set this_1 = CallbackSingle_nextFree[CallbackSingle_firstFree]
		set CallbackSingle_typeId[this_1] = 702
	endif
	return this_1
endfunction

function construct_AirKiller3 takes integer this_1, unit existing returns nothing
	call construct_EscaperSensorSetup4(this_1, existing, EscaperKillers_COLL_SIZE_AIR_XY, EscaperKillers_COLL_SIZE_AIR_Z)
	call AirKiller_init(this_1)
endfunction

function new_AirKiller_3609 takes unit existing returns integer
	local integer this_1 = alloc_AirKiller()
	call construct_AirKiller3(this_1, existing)
	return this_1
endfunction

function construct_Executer takes integer this_1, unit existing returns nothing
	call construct_StaticBaseObject(this_1, unit_getPos(existing), unit_getPos_return_y, existing, Executer_EVENT_RADIUS, ref_function_code__Executer_Executer, null)
	call Executer_init(this_1)
endfunction

function new_Executer takes unit existing returns integer
	local integer this_1 = alloc_Executer()
	call construct_Executer(this_1, existing)
	return this_1
endfunction

function construct_Faceless3 takes integer this_1, unit existing returns nothing
	call construct_EscaperSensorSetup4(this_1, existing, Faceless_KILL_RADIUS, Faceless_KILL_RADIUS)
	call Faceless_init(this_1)
	call dispatch_Faceless_Faceless_Faceless_setup(this_1)
endfunction

function new_Faceless_3661 takes unit existing returns integer
	local integer this_1 = alloc_Faceless()
	call construct_Faceless3(this_1, existing)
	return this_1
endfunction

function alloc_EventListener_add_Knockbacker_Knockbacker takes nothing returns integer
	local integer this_1
	if EventListener_firstFree == 0 then
		if EventListener_maxIndex < JASS_MAX_ARRAY_SIZE then
			set EventListener_maxIndex = EventListener_maxIndex + 1
			set this_1 = EventListener_maxIndex
			set EventListener_typeId[this_1] = 802
		else
			call error("Out of memory: Could not create EventListener_add_Knockbacker_Knockbacker.")
			set this_1 = 0
		endif
	else
		set EventListener_firstFree = EventListener_firstFree - 1
		set this_1 = EventListener_nextFree[EventListener_firstFree]
		set EventListener_typeId[this_1] = 802
	endif
	return this_1
endfunction

function construct_Knockbacker takes integer this_1, unit existing returns nothing
	local unit receiver
	local unit receiver_1
	local unit receiver_2
	local unit receiver_3
	local integer clVar
	local unit temp
	local playerunitevent temp_1
	call construct_EscaperSensorSetup4(this_1, existing, 78., 164.)
	call Knockbacker_init(this_1)
	set receiver = SetupObject_setup[this_1]
	call unit_addAbility(receiver, Knockbacker_KNOCK_INC_ID)
	set receiver_1 = receiver
	call unit_addAbility(receiver_1, Knockbacker_KNOCK_DEC_ID)
	set receiver_2 = receiver_1
	call unit_addAbility(receiver_2, Knockbacker_DMG_INC_ID)
	set receiver_3 = receiver_2
	call unit_addAbility(receiver_3, Knockbacker_DMG_DEC_ID)
	set temp = SetupObject_setup[this_1]
	set temp_1 = EVENT_PLAYER_UNIT_SPELL_CAST
	set clVar = alloc_EventListener_add_Knockbacker_Knockbacker()
	call construct_EventListener(clVar)
	set this_2982[clVar] = this_1
	call EventListener_add_436(temp, temp_1, clVar)
endfunction

function new_Knockbacker takes unit existing returns integer
	local integer this_1 = alloc_Knockbacker()
	call construct_Knockbacker(this_1, existing)
	return this_1
endfunction

function construct_UnitCreator takes integer this_1, unit existing returns nothing
	call construct_StaticBaseObject(this_1, unit_getPos(existing), unit_getPos_return_y, existing, 0., null, null)
	call UnitCreator_init(this_1)
	call dispatch_StaticBaseObject_BaseObject_StaticBaseObject_setEnabled(this_1, false)
endfunction

function new_UnitCreator takes unit existing returns integer
	local integer this_1 = alloc_UnitCreator()
	call construct_UnitCreator(this_1, existing)
	return this_1
endfunction

function construct_UnitRemover takes integer this_1, unit existing returns nothing
	call construct_StaticBaseObject(this_1, unit_getPos(existing), unit_getPos_return_y, existing, 64., ref_function_UnitRemover_removeUnit, null)
	call UnitRemover_init(this_1)
	call dispatch_StaticBaseObject_BaseObject_StaticBaseObject_clearQuestionmark(this_1)
	call unit_addAbility(UnitEntity_actor[this_1], BuilderConstants_TURN_OFF_ID)
endfunction

function new_UnitRemover takes unit existing returns integer
	local integer this_1 = alloc_UnitRemover()
	call construct_UnitRemover(this_1, existing)
	return this_1
endfunction

function construct_Waypoint2 takes integer this_1, unit existing returns nothing
	call construct_StaticBaseObject(this_1, unit_getPos(existing), unit_getPos_return_y, existing, Waypoint_EVENT_RADIUS, ref_function_Waypoint_onInRange, ref_function_code__Waypoint_Waypoint_2650)
	call Waypoint_init(this_1)
endfunction

function new_Waypoint_3789 takes unit existing returns integer
	local integer this_1 = alloc_Waypoint()
	call construct_Waypoint2(this_1, existing)
	return this_1
endfunction

function ThirdForestMaze_initMaze takes integer this_1 returns nothing
	local integer data_1
	local integer t
	local integer k1
	local integer k2
	local integer uk
	local integer wp
	local integer receiver
	local integer receiver_1
	local integer receiver_2
	local integer receiver_3
	local integer vw_1
	local integer clVar
	local integer exec
	set Startmaze_inited[this_1] = true
	set data_1 = getRegionData_3304(368., -6647.)
	call dispatch_RegionData_RegionData_RegionData_setOwner(data_1, GameConstants_STAFF_PLAYER)
	set t = new_Teleporter_3765(gg_unit_tele_0044)
	call dispatch_StaticBaseObject_BaseObject_StaticBaseObject_setRallyPoint(t, RegionData_LOUNGE_x, RegionData_LOUNGE_y)
	call unit_issuePointOrder(gg_unit_sgrk_0038, "patrol",  - 122.01, -5897.)
	call unit_issuePointOrder(gg_unit_sgrk_0039, "patrol", 122.01, -5888.)
	call unit_issuePointOrder(gg_unit_sgrk_0153, "patrol", 660.01,  - 5500.01)
	set k1 = new_Knockbacker(gg_unit_knck_0053)
	set k2 = new_Knockbacker(gg_unit_knck_0054)
	call unit_issuePointOrder(SetupObject_setup[k1], "patrol",  - 1000.01, -6150.)
	call unit_issuePointOrder(SetupObject_setup[k2], "patrol",  - 900.01, -7200.)
	call unit_issuePointOrder(gg_unit_bgrk_0145, "patrol", 635.001, -3835.)
	set uk = new_UnitCreator(gg_unit_uncr_0117)
	call dispatch_StaticBaseObject_BaseObject_StaticBaseObject_setRallyPoint(uk, unit_getPos(gg_unit_wayp_0116), unit_getPos_return_y)
	set UnitCreator_tmode[uk] = 1
	call dispatch_StaticBaseObject_BaseObject_StaticBaseObject_setEnabled(uk, true)
	set wp = new_Waypoint_3789(gg_unit_wayp_0116)
	call dispatch_StaticBaseObject_BaseObject_StaticBaseObject_setRallyPoint(wp, unit_getPos(gg_unit_wayp_0101), unit_getPos_return_y)
	set wp = new_Waypoint_3789(gg_unit_wayp_0101)
	call dispatch_StaticBaseObject_BaseObject_StaticBaseObject_setRallyPoint(wp, unit_getPos(gg_unit_wayp_0102), unit_getPos_return_y)
	set wp = new_Waypoint_3789(gg_unit_wayp_0102)
	call dispatch_StaticBaseObject_BaseObject_StaticBaseObject_setRallyPoint(wp, unit_getPos(gg_unit_wayp_0114), unit_getPos_return_y)
	set wp = new_Waypoint_3789(gg_unit_wayp_0114)
	call dispatch_StaticBaseObject_BaseObject_StaticBaseObject_setRallyPoint(wp, unit_getPos(gg_unit_unre_0118), unit_getPos_return_y)
	call new_UnitRemover(gg_unit_unre_0118)
	call new_AirKiller_3609(gg_unit_airk_0149)
	call unit_issuePointOrder(gg_unit_airk_0149, "patrol", -1025., -4565.)
	set receiver = new_Waypoint_3789(gg_unit_wayp_0068)
	call dispatch_StaticBaseObject_BaseObject_StaticBaseObject_setRallyPoint(receiver, unit_getPos(gg_unit_wayp_0066), unit_getPos_return_y)
	call dispatch_ConfigValue_ConfigValue_ConfigValue_setVal(Waypoint_delay[receiver], 1.)
	set receiver_1 = new_Waypoint_3789(gg_unit_wayp_0066)
	call dispatch_StaticBaseObject_BaseObject_StaticBaseObject_setRallyPoint(receiver_1, unit_getPos(gg_unit_wayp_0099), unit_getPos_return_y)
	call dispatch_ConfigValue_ConfigValue_ConfigValue_setVal(Waypoint_delay[receiver_1], 1.)
	set receiver_2 = new_Waypoint_3789(gg_unit_wayp_0078)
	call dispatch_StaticBaseObject_BaseObject_StaticBaseObject_setRallyPoint(receiver_2, unit_getPos(gg_unit_wayp_0068), unit_getPos_return_y)
	call dispatch_ConfigValue_ConfigValue_ConfigValue_setVal(Waypoint_delay[receiver_2], 1.)
	set receiver_3 = new_Waypoint_3789(gg_unit_wayp_0099)
	call dispatch_StaticBaseObject_BaseObject_StaticBaseObject_setRallyPoint(receiver_3, unit_getPos(gg_unit_wayp_0078), unit_getPos_return_y)
	call dispatch_ConfigValue_ConfigValue_ConfigValue_setVal(Waypoint_delay[receiver_3], 1.)
	set vw_1 = new_Faceless_3661(gg_unit_dims_0100)
	set clVar = alloc_CallbackSingle_doAfter_ThirdForestMaze_ThirdForest()
	call construct_CallbackSingle(clVar)
	set vw[clVar] = vw_1
	call doAfter(1.5, clVar)
	call dispatch_ConfigValue_ConfigValue_ConfigValue_setVal(Faceless_invisDur[vw_1], 1.)
	set exec = new_Executer(gg_unit_exec_0076)
	set Executer_eventMode[exec] = 2
	set Executer_actionMode[exec] = 6
	set Executer_tiletype[exec] = 808464432
	call dispatch_StaticBaseObject_BaseObject_StaticBaseObject_setRallyPoint(exec, -387., -4600.)
	set Executer_horizontalTileSize[exec] = 1
endfunction

function dispatch_Startmaze_Startmaze_Startmaze_initMaze takes integer this_1 returns nothing
	if Startmaze_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling Startmaze.initMaze")
		else
			call error("Called Startmaze.initMaze on invalid object.")
		endif
	endif
	if Startmaze_typeId[this_1] <= 1241 then
		if Startmaze_typeId[this_1] <= 1240 then
			call FirstSnowMaze_initMaze(this_1)
		else
			call FourthCitadelleMaze_initMaze(this_1)
		endif
	elseif Startmaze_typeId[this_1] <= 1242 then
		call SecondDesertMaze_initMaze(this_1)
	else
		call ThirdForestMaze_initMaze(this_1)
	endif
endfunction

function call_doAfter_RevivePoint_Revivepoint takes integer this_1 returns nothing
	call dispatch_Startmaze_Startmaze_Startmaze_initMaze(Startmazes_startmazes[Startmazes_currentMaze])
endfunction

function LinkedList_push takes integer this_1, integer elem returns nothing
	call dispatch_LinkedList_LinkedList_LinkedList_add_1(this_1, elem)
endfunction

function dispatch_LinkedList_LinkedList_LinkedList_push takes integer this_1, integer elem returns nothing
	if LinkedList_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling LinkedList.push")
		else
			call error("Called LinkedList.push on invalid object.")
		endif
	endif
	call LinkedList_push(this_1, elem)
endfunction

function Sim3DSound_onDestroy takes integer this_1 returns nothing
endfunction

function dealloc_Sim3DSound takes integer obj_1 returns nothing
	if Sim3DSound_typeId[obj_1] == 0 then
		call error("Double free: object of type Sim3DSound")
	else
		set Sim3DSound_firstFree = Sim3DSound_firstFree + 1
		set Sim3DSound_typeId[obj_1] = 0
	endif
endfunction

function destroySim3DSound takes integer this_1 returns nothing
	call Sim3DSound_onDestroy(this_1)
	call dealloc_Sim3DSound(this_1)
endfunction

function dispatch_Sim3DSound_destroySim3DSound takes integer this_1 returns nothing
	if Sim3DSound_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling Sim3DSound.Sim3DSound")
		else
			call error("Called Sim3DSound.Sim3DSound on invalid object.")
		endif
	endif
	call destroySim3DSound(this_1)
endfunction

function sound_stop takes sound this_1, boolean killWhenDone, boolean fadeOut returns nothing
	call StopSound(this_1, killWhenDone, fadeOut)
endfunction

function SoundInstance_onDestroy takes integer this_1 returns nothing
	call sound_stop(SoundInstance_snd[this_1], true, false)
endfunction

function dealloc_SoundInstance takes integer obj_1 returns nothing
	if SoundInstance_typeId[obj_1] == 0 then
		call error("Double free: object of type SoundInstance")
	else
		set SoundInstance_nextFree[SoundInstance_firstFree] = obj_1
		set SoundInstance_firstFree = SoundInstance_firstFree + 1
		set SoundInstance_typeId[obj_1] = 0
	endif
endfunction

function destroySoundInstance takes integer this_1 returns nothing
	call SoundInstance_onDestroy(this_1)
	call dealloc_SoundInstance(this_1)
endfunction

function dispatch_SoundInstance_destroySoundInstance takes integer this_1 returns nothing
	if SoundInstance_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling SoundInstance.SoundInstance")
		else
			call error("Called SoundInstance.SoundInstance on invalid object.")
		endif
	endif
	call destroySoundInstance(this_1)
endfunction

function SoundDefinition_recycle takes integer this_1, integer instance_1 returns nothing
	set SoundInstance_p[instance_1] = null
	if SoundInstance_s3s[instance_1] != 0 then
		call dispatch_Sim3DSound_destroySim3DSound(SoundInstance_s3s[instance_1])
	endif
	if dispatch_LinkedList_LinkedList_LinkedList_size(SoundDefinition_soundStack[SoundInstance_soundDef[instance_1]]) < 4 then
		call dispatch_LinkedList_LinkedList_LinkedList_push(SoundDefinition_soundStack[SoundInstance_soundDef[instance_1]], instance_1)
	else
		call dispatch_SoundInstance_destroySoundInstance(instance_1)
	endif
endfunction

function dispatch_SoundDefinition_SoundUtils_SoundDefinition_recycle takes integer this_1, integer instance_1 returns nothing
	if SoundDefinition_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling SoundDefinition.recycle")
		else
			call error("Called SoundDefinition.recycle on invalid object.")
		endif
	endif
	call SoundDefinition_recycle(this_1, instance_1)
endfunction

function call_doAfter_SoundDefinition_SoundUtils takes integer this_1 returns nothing
	call dispatch_SoundDefinition_SoundUtils_SoundDefinition_recycle(this_2907[this_1], instance[this_1])
endfunction

function alloc_ForGroupCallback_forUnitsInRange_doAfter_SpellTarget_BossSpellTarget takes nothing returns integer
	local integer this_1
	if ForGroupCallback_firstFree == 0 then
		if ForGroupCallback_maxIndex < JASS_MAX_ARRAY_SIZE then
			set ForGroupCallback_maxIndex = ForGroupCallback_maxIndex + 1
			set this_1 = ForGroupCallback_maxIndex
			set ForGroupCallback_typeId[this_1] = 872
		else
			call error("Out of memory: Could not create ForGroupCallback_forUnitsInRange_doAfter_SpellTarget_BossSpellTarget.")
			set this_1 = 0
		endif
	else
		set ForGroupCallback_firstFree = ForGroupCallback_firstFree - 1
		set this_1 = ForGroupCallback_nextFree[ForGroupCallback_firstFree]
		set ForGroupCallback_typeId[this_1] = 872
	endif
	return this_1
endfunction

function call_doAfter_SpellTarget_BossSpellTarget takes integer this_1 returns nothing
	local real tuple_temp = tpos_x[this_1]
	local real tuple_temp_1 = tpos_y[this_1]
	local real temp_x = tuple_temp
	local real temp_y = tuple_temp_1
	local integer clVar = alloc_ForGroupCallback_forUnitsInRange_doAfter_SpellTarget_BossSpellTarget()
	local real tuple_temp_2
	local real tuple_temp_3
	set this_2915[clVar] = this_2914[this_1]
	set tuple_temp_2 = tpos_x[this_1]
	set tuple_temp_3 = tpos_y[this_1]
	set tpos_x_3018[clVar] = tuple_temp_2
	set tpos_y_3021[clVar] = tuple_temp_3
	call forUnitsInRange(temp_x, temp_y, 200., clVar)
endfunction

function call_doAfter_ThirdForestMaze_ThirdForest takes integer this_1 returns boolean
	return unit_issuePointOrder(UnitEntity_actor[vw[this_1]], "move", unit_getPos(gg_unit_wayp_0078), unit_getPos_return_y)
endfunction

function Waypoint_delayMove takes integer entity_1, real pos_x_1, real pos_y_1 returns nothing
	local integer instanceOfTemp = Serializable_typeId[entity_1]
	if instanceOfTemp >= 1172 and instanceOfTemp <= 1192 then
		call unit_issuePointOrder(SetupObject_setup[entity_1], "move", pos_x_1, pos_y_1)
	else
		call unit_issuePointOrder(UnitEntity_actor[entity_1], "move", pos_x_1, pos_y_1)
	endif
endfunction

function call_doAfter_Waypoint_Waypoint takes integer this_1 returns nothing
	call Waypoint_delayMove(entity[this_1], vec3_toVec2(rallyPos_x_2587[this_1], rallyPos_y_2589[this_1], rallyPos_z_2591[this_1]), vec3_toVec2_return_y)
endfunction

function call_doAfter_add_Buff takes integer this_1 returns nothing
	local integer iterator
	local integer bff
	if unit_hasBuffs(upg[this_1]) then
		set iterator = LinkedList_iterator(unit_getBuffs(upg[this_1]))
		loop
			exitwhen  not LLIterator_hasNext(iterator)
			set bff = LLIterator_next(iterator)
			call dispatch_Buff_Buff_Buff_refresh_2737(bff, true)
		endloop
		call LLIterator_close(iterator)
	endif
endfunction

function call_doAfter_doAfter_Minion_Minion takes integer this_1 returns nothing
	if Minion_state[this_2920[this_1]] == 2 then
		set Minion_state[this_2920[this_1]] = 1
	endif
endfunction

function call_nullTimer_BallItem_Ball takes integer this_1 returns nothing
	call item_remove(ItemEntity_actor[this_2963[this_1]])
	set ItemEntity_actor[this_2963[this_1]] = CreateItem(BasicSpells_BALL_ITEM_ID, Entity_pos_x[this_2963[this_1]], Entity_pos_y[this_2963[this_1]])
	call item_setEntity(ItemEntity_actor[this_2963[this_1]], this_2963[this_1])
endfunction

function call_nullTimer_BallItem_Ball_2013 takes integer this_1 returns nothing
	call item_remove(ItemEntity_actor[this_2964[this_1]])
endfunction

function call_nullTimer_BallItem_Ball_2014 takes integer this_1 returns nothing
	call item_remove(ItemEntity_actor[this_2965[this_1]])
	set ItemEntity_actor[this_2965[this_1]] = CreateItem(BasicSpells_BALL_ITEM_ID, pos_x[this_1], pos_y[this_1])
	call item_setEntity(ItemEntity_actor[this_2965[this_1]], this_2965[this_1])
endfunction

function trigger_registerPlayerChatEvent takes trigger this_1, player whichPlayer, string chatMessageToDetect, boolean exactMatchOnly returns event
	return TriggerRegisterPlayerChatEvent(this_1, whichPlayer, chatMessageToDetect, exactMatchOnly)
endfunction

function call_nullTimer_ClosureEvents takes integer this_1 returns nothing
	local integer i
	local integer temp
	local trigger receiver
	local trigger receiver_1
	local trigger receiver_2
	local trigger receiver_3
	local trigger receiver_4
	local trigger receiver_5
	local trigger receiver_6
	local trigger receiver_7
	local trigger receiver_8
	local trigger receiver_9
	call trigger_addAction(ClosureEvents_unitTrig, ref_function_code__addAction_nullTimer_ClosureEvents)
	call trigger_addAction(ClosureEvents_leaveTrig, ref_function_code__addAction_nullTimer_ClosureEvents_2658)
	call trigger_addAction(ClosureEvents_keyTrig, ref_function_code__addAction_nullTimer_ClosureEvents_2659)
	set i = 0
	set temp = bj_MAX_PLAYERS - 1
	loop
		exitwhen i > temp
		call trigger_registerPlayerEvent(ClosureEvents_leaveTrig, Player_players[i], EVENT_PLAYER_LEAVE)
		set receiver = ClosureEvents_keyTrig
		call trigger_registerPlayerEvent(receiver, Player_players[i], EVENT_PLAYER_ARROW_DOWN_DOWN)
		set receiver_1 = receiver
		call trigger_registerPlayerEvent(receiver_1, Player_players[i], EVENT_PLAYER_ARROW_DOWN_UP)
		set receiver_2 = receiver_1
		call trigger_registerPlayerEvent(receiver_2, Player_players[i], EVENT_PLAYER_ARROW_UP_DOWN)
		set receiver_3 = receiver_2
		call trigger_registerPlayerEvent(receiver_3, Player_players[i], EVENT_PLAYER_ARROW_UP_UP)
		set receiver_4 = receiver_3
		call trigger_registerPlayerEvent(receiver_4, Player_players[i], EVENT_PLAYER_ARROW_LEFT_DOWN)
		set receiver_5 = receiver_4
		call trigger_registerPlayerEvent(receiver_5, Player_players[i], EVENT_PLAYER_ARROW_LEFT_UP)
		set receiver_6 = receiver_5
		call trigger_registerPlayerEvent(receiver_6, Player_players[i], EVENT_PLAYER_ARROW_RIGHT_DOWN)
		set receiver_7 = receiver_6
		call trigger_registerPlayerEvent(receiver_7, Player_players[i], EVENT_PLAYER_ARROW_RIGHT_UP)
		set receiver_8 = receiver_7
		call trigger_registerPlayerEvent(receiver_8, Player_players[i], EVENT_PLAYER_END_CINEMATIC)
		set receiver_9 = receiver_8
		call trigger_registerPlayerChatEvent(receiver_9, Player_players[i], "", false)
		set i = i + 1
	endloop
	call registerPlayerUnitEvent_3996(EVENT_PLAYER_UNIT_SPELL_EFFECT, null, ref_function_code__registerPlayerUnitEvent_nullTimer_ClosureEvents, null)
endfunction

function alloc_ForForceCallback_execute_nullTimer_Encoder_Encoder takes nothing returns integer
	local integer this_1
	if ForForceCallback_firstFree == 0 then
		if ForForceCallback_maxIndex < JASS_MAX_ARRAY_SIZE then
			set ForForceCallback_maxIndex = ForForceCallback_maxIndex + 1
			set this_1 = ForForceCallback_maxIndex
			set ForForceCallback_typeId[this_1] = 854
		else
			call error("Out of memory: Could not create ForForceCallback_execute_nullTimer_Encoder_Encoder.")
			set this_1 = 0
		endif
	else
		set ForForceCallback_firstFree = ForForceCallback_firstFree - 1
		set this_1 = ForForceCallback_nextFree[ForForceCallback_firstFree]
		set ForForceCallback_typeId[this_1] = 854
	endif
	return this_1
endfunction

function alloc_ForForceCallback_execute_nullTimer_Encoder_Encoder_1777 takes nothing returns integer
	local integer this_1
	if ForForceCallback_firstFree == 0 then
		if ForForceCallback_maxIndex < JASS_MAX_ARRAY_SIZE then
			set ForForceCallback_maxIndex = ForForceCallback_maxIndex + 1
			set this_1 = ForForceCallback_maxIndex
			set ForForceCallback_typeId[this_1] = 855
		else
			call error("Out of memory: Could not create ForForceCallback_execute_nullTimer_Encoder_Encoder.")
			set this_1 = 0
		endif
	else
		set ForForceCallback_firstFree = ForForceCallback_firstFree - 1
		set this_1 = ForForceCallback_nextFree[ForForceCallback_firstFree]
		set ForForceCallback_typeId[this_1] = 855
	endif
	return this_1
endfunction

function alloc_ForForceCallback_execute_nullTimer_Encoder_Encoder_1778 takes nothing returns integer
	local integer this_1
	if ForForceCallback_firstFree == 0 then
		if ForForceCallback_maxIndex < JASS_MAX_ARRAY_SIZE then
			set ForForceCallback_maxIndex = ForForceCallback_maxIndex + 1
			set this_1 = ForForceCallback_maxIndex
			set ForForceCallback_typeId[this_1] = 856
		else
			call error("Out of memory: Could not create ForForceCallback_execute_nullTimer_Encoder_Encoder.")
			set this_1 = 0
		endif
	else
		set ForForceCallback_firstFree = ForForceCallback_firstFree - 1
		set this_1 = ForForceCallback_nextFree[ForForceCallback_firstFree]
		set ForForceCallback_typeId[this_1] = 856
	endif
	return this_1
endfunction

function alloc_ForForceCallback_execute_nullTimer_Encoder_Encoder_1779 takes nothing returns integer
	local integer this_1
	if ForForceCallback_firstFree == 0 then
		if ForForceCallback_maxIndex < JASS_MAX_ARRAY_SIZE then
			set ForForceCallback_maxIndex = ForForceCallback_maxIndex + 1
			set this_1 = ForForceCallback_maxIndex
			set ForForceCallback_typeId[this_1] = 857
		else
			call error("Out of memory: Could not create ForForceCallback_execute_nullTimer_Encoder_Encoder.")
			set this_1 = 0
		endif
	else
		set ForForceCallback_firstFree = ForForceCallback_firstFree - 1
		set this_1 = ForForceCallback_nextFree[ForForceCallback_firstFree]
		set ForForceCallback_typeId[this_1] = 857
	endif
	return this_1
endfunction

function call_nullTimer_Encoder_Encoder takes integer this_1 returns nothing
	local integer clVar
	local integer clVar_1
	local integer clVar_2
	local integer clVar_3
	call Log_debug("hash: " + int_toString(Encoder_hash[this_2892[this_1]]))
	set clVar = alloc_ForForceCallback_execute_nullTimer_Encoder_Encoder()
	set this_2893[clVar] = this_2892[this_1]
	call execute(clVar)
	call Log_debug("encoded hash")
	set clVar_1 = alloc_ForForceCallback_execute_nullTimer_Encoder_Encoder_1777()
	set this_2894[clVar_1] = this_2892[this_1]
	call execute(clVar_1)
	call Log_debug("clean")
	set clVar_2 = alloc_ForForceCallback_execute_nullTimer_Encoder_Encoder_1778()
	set this_2895[clVar_2] = this_2892[this_1]
	call execute(clVar_2)
	call Log_debug("before toString bs: " + int_toString(dispatch_BigString_BigString_BigString_getLength(bs_2275[this_1])))
	set clVar_3 = alloc_ForForceCallback_execute_nullTimer_Encoder_Encoder_1779()
	set this_2896[clVar_3] = this_2892[this_1]
	set bs_2276[clVar_3] = bs_2275[this_1]
	set onFinish_2551[clVar_3] = onFinish_2550[this_1]
	call execute(clVar_3)
endfunction

function call_nullTimer_Key_Key takes integer this_1 returns nothing
	local item receiver = ItemEntity_actor[this_2967[this_1]]
	local item receiver_1
	call item_setEntity(receiver, 0)
	set receiver_1 = receiver
	call item_remove(receiver_1)
	set ItemEntity_actor[this_2967[this_1]] = createItem_2353(Key_keyIds[Key_col[this_2967[this_1]]], Entity_pos_x[this_2967[this_1]], Entity_pos_y[this_2967[this_1]], Entity_pos_z[this_2967[this_1]])
	call item_setEntity(ItemEntity_actor[this_2967[this_1]], this_2967[this_1])
endfunction

function alloc_LoadListener_loadData_nullTimer_MemoryAccessPedestal_Pedestal takes nothing returns integer
	local integer this_1
	if LoadListener_firstFree == 0 then
		if LoadListener_maxIndex < JASS_MAX_ARRAY_SIZE then
			set LoadListener_maxIndex = LoadListener_maxIndex + 1
			set this_1 = LoadListener_maxIndex
			set LoadListener_typeId[this_1] = 1006
		else
			call error("Out of memory: Could not create LoadListener_loadData_nullTimer_MemoryAccessPedestal_Pedestal.")
			set this_1 = 0
		endif
	else
		set LoadListener_firstFree = LoadListener_firstFree - 1
		set this_1 = LoadListener_nextFree[LoadListener_firstFree]
		set LoadListener_typeId[this_1] = 1006
	endif
	return this_1
endfunction

function alloc_SyncData takes nothing returns integer
	local integer this_1
	if SyncData_firstFree == 0 then
		if SyncData_maxIndex < JASS_MAX_ARRAY_SIZE then
			set SyncData_maxIndex = SyncData_maxIndex + 1
			set this_1 = SyncData_maxIndex
			set SyncData_typeId[this_1] = 1492
		else
			call error("Out of memory: Could not create SyncData.")
			set this_1 = 0
		endif
	else
		set SyncData_firstFree = SyncData_firstFree - 1
		set this_1 = SyncData_nextFree[SyncData_firstFree]
		set SyncData_typeId[this_1] = 1492
	endif
	return this_1
endfunction

function SyncData_init takes integer this_1 returns nothing
	set SyncData_slistener[this_1] = 0
	set SyncData_blistener[this_1] = 0
	set SyncData_syncer[this_1] = null
	set SyncData_data[this_1] = null
	set SyncData_buffer[this_1] = 0
	set SyncData_syncBuffer[this_1] = 0
endfunction

function construct_SyncData2 takes integer this_1, player syncer, integer blistener, integer data_1 returns nothing
	call SyncData_init(this_1)
	set SyncData_blistener[this_1] = blistener
	set SyncData_buffer[this_1] = data_1
	set SyncData_syncer[this_1] = syncer
	set SyncData_syncBuffer[this_1] = new_ChunkedString()
endfunction

function new_SyncData takes player syncer, integer blistener, integer data_1 returns integer
	local integer this_1 = alloc_SyncData()
	call construct_SyncData2(this_1, syncer, blistener, data_1)
	return this_1
endfunction

function ChunkedString_sync takes integer this_1, player p, integer listener_1 returns nothing
	call dispatch_LinkedList_LinkedList_LinkedList_enqueue(SyncSimple_syncQueue, new_SyncData(p, listener_1, this_1))
	if dispatch_LinkedList_LinkedList_LinkedList_size(SyncSimple_syncQueue) == 1 and shouldSync() then
		call checkQueue()
	endif
endfunction

function alloc_BufferSyncListener_sync_SaveLoadData takes nothing returns integer
	local integer this_1
	if BufferSyncListener_firstFree == 0 then
		if BufferSyncListener_maxIndex < JASS_MAX_ARRAY_SIZE then
			set BufferSyncListener_maxIndex = BufferSyncListener_maxIndex + 1
			set this_1 = BufferSyncListener_maxIndex
			set BufferSyncListener_typeId[this_1] = 656
		else
			call error("Out of memory: Could not create BufferSyncListener_sync_SaveLoadData.")
			set this_1 = 0
		endif
	else
		set BufferSyncListener_firstFree = BufferSyncListener_firstFree - 1
		set this_1 = BufferSyncListener_nextFree[BufferSyncListener_firstFree]
		set BufferSyncListener_typeId[this_1] = 656
	endif
	return this_1
endfunction

function File_readPreload takes integer this_1, integer output_1 returns nothing
	local integer i
	local integer temp
	local string chunk
	call Preloader(File_filename[this_1])
	set i = 0
	set temp = FileIO_CHUNKS_PER_FILE - 1
	loop
		exitwhen i > temp
		set chunk = BlzGetAbilityTooltip(FileIO_FILE_IO_ABIL_ID, i)
		if chunk == " " then
			exitwhen true
		endif
		call BlzSetAbilityTooltip(FileIO_FILE_IO_ABIL_ID, " ", i)
		call dispatch_ChunkedString_ChunkedString_ChunkedString_append(output_1, chunk)
		set i = i + 1
	endloop
endfunction

function dispatch_File_FileIO_File_readPreload takes integer this_1, integer output_1 returns nothing
	if File_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling File.readPreload")
		else
			call error("Called File.readPreload on invalid object.")
		endif
	endif
	call File_readPreload(this_1, output_1)
endfunction

function construct_ChunkedString2 takes integer this_1, integer chunkSize returns nothing
	call ChunkedString_init(this_1)
	set ChunkedString_chunkSize[this_1] = chunkSize
endfunction

function new_ChunkedString_3640 takes integer chunkSize returns integer
	local integer this_1 = alloc_ChunkedString()
	call construct_ChunkedString2(this_1, chunkSize)
	return this_1
endfunction

function File_read takes integer this_1, player p returns integer
	local integer out = new_ChunkedString_3640(ChunkedString_DEFAULT_CHUNK_SIZE)
	if Player_localPlayer == p then
		call dispatch_File_FileIO_File_readPreload(this_1, out)
	endif
	return out
endfunction

function dispatch_File_FileIO_File_read takes integer this_1, player p returns integer
	local integer FileIO_File_read_result
	if File_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling File.read")
		else
			call error("Called File.read on invalid object.")
		endif
	endif
	set FileIO_File_read_result = File_read(this_1, p)
	return FileIO_File_read_result
endfunction

function shouldReadFile takes nothing returns boolean
	return SaveLoadData_READ_FILES_IN_REPLAYS or GameStatus_gameStatus != 3
endfunction

function player_loadData takes player this_1, string slotName, integer listener_1 returns nothing
	local integer file
	local string cond_result
	local integer buffer
	local integer clVar
	local integer temp
	local player temp_1
	if  not player_isIngame(this_1) then
		call dispatch_LoadListener_SaveLoadData_LoadListener_onLoad(listener_1, 1, 0)
		return
	endif
	if string_endsWith(slotName, ".pld") then
		set cond_result = slotName
	else
		set cond_result = slotName + ".pld"
	endif
	set file = new_File(cond_result)
	if shouldReadFile() then
		set buffer = dispatch_File_FileIO_File_read(file, this_1)
	else
		set buffer = new_ChunkedString()
	endif
	call dispatch_File_FileIO_File_close(file)
	set temp = buffer
	set temp_1 = this_1
	set clVar = alloc_BufferSyncListener_sync_SaveLoadData()
	set listener[clVar] = listener_1
	call ChunkedString_sync(temp, temp_1, clVar)
endfunction

function call_nullTimer_MemoryAccessPedestal_Pedestal takes integer this_1 returns nothing
	local texttag receiver
	local integer pd_1
	local integer clVar
	local player temp
	local string temp_1
	call unit_pause(UnitEntity_actor[this_3000[this_1]])
	set receiver = FText_tt[MemoryAccessPedestal_ttag[this_3000[this_1]]]
	call texttag_center(receiver, Entity_pos_x[this_3000[this_1]], Entity_pos_y[this_3000[this_1]], Entity_pos_z[this_3000[this_1]], "|cff0884CEloading...", 10.)
	set MemoryAccessPedestal_lastRef[player_getId(Entity_owner[this_3000[this_1]])] = this_3000[this_1]
	set pd_1 = PlayerData_pData[player_getId(Entity_owner[this_3000[this_1]])]
	set temp = PlayerData_p[pd_1]
	set temp_1 = "EBR\\savedata\\dataSlot" + int_toString(slotId[this_1]) + ".pld"
	set clVar = alloc_LoadListener_loadData_nullTimer_MemoryAccessPedestal_Pedestal()
	set pd_2570[clVar] = pd_1
	call player_loadData(temp, temp_1, clVar)
endfunction

function alloc_SeqCallback_doSeq_nullTimer_MemoryAccessPedestal_Pedestal takes nothing returns integer
	local integer this_1
	if SeqCallback_firstFree == 0 then
		if SeqCallback_maxIndex < JASS_MAX_ARRAY_SIZE then
			set SeqCallback_maxIndex = SeqCallback_maxIndex + 1
			set this_1 = SeqCallback_maxIndex
			set SeqCallback_typeId[this_1] = 1134
		else
			call error("Out of memory: Could not create SeqCallback_doSeq_nullTimer_MemoryAccessPedestal_Pedestal.")
			set this_1 = 0
		endif
	else
		set SeqCallback_firstFree = SeqCallback_firstFree - 1
		set this_1 = SeqCallback_nextFree[SeqCallback_firstFree]
		set SeqCallback_typeId[this_1] = 1134
	endif
	return this_1
endfunction

function call_nullTimer_MemoryAccessPedestal_Pedestal_2019 takes integer this_1 returns nothing
	local unit receiver = UnitEntity_actor[this_3007[this_1]]
	local unit receiver_1
	local texttag receiver_2
	local integer itr_1
	local integer clVar
	local real tuple_temp
	local real tuple_temp_1
	local real tuple_temp_2
	call unit_abortOrder(receiver)
	set receiver_1 = receiver
	call unit_pause(receiver_1)
	set receiver_2 = FText_tt[MemoryAccessPedestal_ttag[this_3007[this_1]]]
	call texttag_center(receiver_2, Entity_pos_x[this_3007[this_1]], Entity_pos_y[this_3007[this_1]], Entity_pos_z[this_3007[this_1]], "|cff0884CEsaving...", 10.)
	set tuple_temp = vec2_toVec3(vec2_toTile(vec3_toVec2(Entity_pos_x[this_3007[this_1]], Entity_pos_y[this_3007[this_1]], Entity_pos_z[this_3007[this_1]]), vec3_toVec2_return_y), vec2_toTile_return_y)
	set tuple_temp_1 = vec2_toVec3_return_y
	set tuple_temp_2 = vec2_toVec3_return_z
	set Entity_serializeOrigin_x = tuple_temp
	set Entity_serializeOrigin_y = tuple_temp_1
	set Entity_serializeOrigin_z = tuple_temp_2
	set itr_1 = dispatch_HashList_HashList_HashList_iterator(MemoryAccessPedestal_entities[this_3007[this_1]])
	set MemoryAccessPedestal_currentSlotId[this_3007[this_1]] = slotId_2878[this_1]
	call dispatch_BigString_BigString_BigString_reset(MemoryAccessPedestal_entString[this_3007[this_1]])
	call dispatch_BigString_BigString_BigString_addString(MemoryAccessPedestal_entString[this_3007[this_1]], Delimiter_token[Json_JSON_OPEN_ARRAY])
	set clVar = alloc_SeqCallback_doSeq_nullTimer_MemoryAccessPedestal_Pedestal()
	call construct_SeqCallback(clVar)
	set itr_2537[clVar] = itr_1
	set this_3008[clVar] = this_3007[this_1]
	call doSeq(clVar)
endfunction

function group_enumUnitsInRect_3319 takes group this_1, rect rec, boolexpr filter returns nothing
	call GroupEnumUnitsInRect(this_1, rec, filter)
endfunction

function group_enumUnitsInRect takes group this_1, rect rec returns nothing
	call group_enumUnitsInRect_3319(this_1, rec, null)
endfunction

function trigger_registerEnterRegion takes trigger this_1, region whichRegion, boolexpr filter returns event
	return TriggerRegisterEnterRegion(this_1, whichRegion, filter)
endfunction

function call_nullTimer_OnUnitEnterLeave takes integer this_1 returns nothing
	local trigger receiver = CreateTrigger()
	local group receiver_1
	local group receiver_2
	call trigger_registerEnterRegion(receiver, MapBounds_boundRegion, Filter(ref_function_code__Filter_registerEnterRegion_nullTimer_OnUnitEnterLeave))
	call registerPlayerUnitEvent(EVENT_PLAYER_UNIT_ISSUED_ORDER, ref_function_code__registerPlayerUnitEvent_nullTimer_OnUnitEnterLeave)
	call group_enumUnitsInRect(OnUnitEnterLeave_preplacedUnits, MapBounds_boundRect)
	call ForGroup(OnUnitEnterLeave_preplacedUnits, ref_function_code__ForGroup_nullTimer_OnUnitEnterLeave)
	set receiver_1 = OnUnitEnterLeave_preplacedUnits
	call group_clear(receiver_1)
	set receiver_2 = receiver_1
	call group_destr(receiver_2)
endfunction

function alloc_EventListener_add_nullTimer_Players takes nothing returns integer
	local integer this_1
	if EventListener_firstFree == 0 then
		if EventListener_maxIndex < JASS_MAX_ARRAY_SIZE then
			set EventListener_maxIndex = EventListener_maxIndex + 1
			set this_1 = EventListener_maxIndex
			set EventListener_typeId[this_1] = 831
		else
			call error("Out of memory: Could not create EventListener_add_nullTimer_Players.")
			set this_1 = 0
		endif
	else
		set EventListener_firstFree = EventListener_firstFree - 1
		set this_1 = EventListener_nextFree[EventListener_firstFree]
		set EventListener_typeId[this_1] = 831
	endif
	return this_1
endfunction

function alloc_OnPlayerLeave_onPlayerLeave_nullTimer_Players takes nothing returns integer
	local integer this_1
	if OnPlayerLeave_firstFree == 0 then
		if OnPlayerLeave_maxIndex < JASS_MAX_ARRAY_SIZE then
			set OnPlayerLeave_maxIndex = OnPlayerLeave_maxIndex + 1
			set this_1 = OnPlayerLeave_maxIndex
			set OnPlayerLeave_typeId[this_1] = 1030
		else
			call error("Out of memory: Could not create OnPlayerLeave_onPlayerLeave_nullTimer_Players.")
			set this_1 = 0
		endif
	else
		set OnPlayerLeave_firstFree = OnPlayerLeave_firstFree - 1
		set this_1 = OnPlayerLeave_nextFree[OnPlayerLeave_firstFree]
		set OnPlayerLeave_typeId[this_1] = 1030
	endif
	return this_1
endfunction

function call_nullTimer_Players takes integer this_1 returns nothing
	local integer i = 0
	local integer temp = bj_MAX_PLAYER_SLOTS - 1
	local integer clVar
	local integer clVar_1
	local playerevent temp_1
	loop
		exitwhen i > temp
		if player_isIngame(Player_players[i]) then
			call dispatch_LinkedList_LinkedList_LinkedList_add_1(Players_ALL_PLAYERS, playerToIndex(Player_players[i]))
		endif
		set i = i + 1
	endloop
	set temp_1 = EVENT_PLAYER_LEAVE
	set clVar = alloc_EventListener_add_nullTimer_Players()
	call construct_EventListener(clVar)
	call EventListener_add(temp_1, clVar)
	set clVar_1 = alloc_OnPlayerLeave_onPlayerLeave_nullTimer_Players()
	call onPlayerLeave(clVar_1)
endfunction

function alloc_ForGroupCallback_forEachFrom_Preloader takes nothing returns integer
	local integer this_1
	if ForGroupCallback_firstFree == 0 then
		if ForGroupCallback_maxIndex < JASS_MAX_ARRAY_SIZE then
			set ForGroupCallback_maxIndex = ForGroupCallback_maxIndex + 1
			set this_1 = ForGroupCallback_maxIndex
			set ForGroupCallback_typeId[this_1] = 861
		else
			call error("Out of memory: Could not create ForGroupCallback_forEachFrom_Preloader.")
			set this_1 = 0
		endif
	else
		set ForGroupCallback_firstFree = ForGroupCallback_firstFree - 1
		set this_1 = ForGroupCallback_nextFree[ForGroupCallback_firstFree]
		set ForGroupCallback_typeId[this_1] = 861
	endif
	return this_1
endfunction

function group_forEachFrom takes group this_1, integer cb_1 returns nothing
	local group from = this_1
	local unit u_1
	loop
		exitwhen  not group_hasNext(from)
		set u_1 = group_next(from)
		call dispatch_ForGroupCallback_ClosureForGroups_ForGroupCallback_callback(cb_1, u_1)
	endloop
	call dispatch_ForGroupCallback_destroyForGroupCallback(cb_1)
endfunction

function finishPreload takes nothing returns nothing
	local integer clVar
	local group temp
	call unit_remove(Preloader_dum)
	set temp = Preloader_dumg
	set clVar = alloc_ForGroupCallback_forEachFrom_Preloader()
	call group_forEachFrom(temp, clVar)
	call group_destr(Preloader_dumg)
	set Preloader_dumg = null
endfunction

function call_nullTimer_Preloader takes integer this_1 returns nothing
	call finishPreload()
endfunction

function alloc_CallbackSingle_doAfter_SoundDefinition_SoundUtils takes nothing returns integer
	local integer this_1
	if CallbackSingle_firstFree == 0 then
		if CallbackSingle_maxIndex < JASS_MAX_ARRAY_SIZE then
			set CallbackSingle_maxIndex = CallbackSingle_maxIndex + 1
			set this_1 = CallbackSingle_maxIndex
			set CallbackSingle_typeId[this_1] = 700
		else
			call error("Out of memory: Could not create CallbackSingle_doAfter_SoundDefinition_SoundUtils.")
			set this_1 = 0
		endif
	else
		set CallbackSingle_firstFree = CallbackSingle_firstFree - 1
		set this_1 = CallbackSingle_nextFree[CallbackSingle_firstFree]
		set CallbackSingle_typeId[this_1] = 700
	endif
	return this_1
endfunction

function sound_play takes sound this_1 returns nothing
	call StartSound(this_1)
endfunction

function SoundDefinition_playSound takes integer this_1, integer instance_1 returns nothing
	local integer clVar
	local real temp
	if SoundInstance_onUnit[instance_1] != null then
		call AttachSoundToUnit(SoundInstance_snd[instance_1], SoundInstance_onUnit[instance_1])
	endif
	if SoundInstance_pos_x[instance_1] != 0. or SoundInstance_pos_y[instance_1] != 0. then
		call SetSoundPosition(SoundInstance_snd[instance_1], SoundInstance_pos_x[instance_1], SoundInstance_pos_y[instance_1], SoundInstance_pos_z[instance_1])
	endif
	if SoundInstance_p[instance_1] != null then
		if GetLocalPlayer() == SoundInstance_p[instance_1] then
			call StartSound(SoundInstance_snd[instance_1])
		endif
	else
		call sound_play(SoundInstance_snd[instance_1])
	endif
	set temp = SoundDefinition_duration[SoundInstance_soundDef[instance_1]] * 0.001
	set clVar = alloc_CallbackSingle_doAfter_SoundDefinition_SoundUtils()
	call construct_CallbackSingle(clVar)
	set this_2907[clVar] = this_1
	set instance[clVar] = instance_1
	call doAfter(temp, clVar)
endfunction

function dispatch_SoundDefinition_SoundUtils_SoundDefinition_playSound takes integer this_1, integer instance_1 returns nothing
	if SoundDefinition_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling SoundDefinition.playSound")
		else
			call error("Called SoundDefinition.playSound on invalid object.")
		endif
	endif
	call SoundDefinition_playSound(this_1, instance_1)
endfunction

function call_nullTimer_SoundDefinition_SoundUtils takes integer this_1 returns nothing
	call dispatch_SoundDefinition_SoundUtils_SoundDefinition_playSound(this_2904[this_1], snd[this_1])
endfunction

function call_nullTimer_SoundDefinition_SoundUtils_2024 takes integer this_1 returns nothing
	call dispatch_SoundDefinition_SoundUtils_SoundDefinition_playSound(this_2905[this_1], snd_2880[this_1])
endfunction

function call_nullTimer_SoundDefinition_SoundUtils_2025 takes integer this_1 returns nothing
	call dispatch_SoundDefinition_SoundUtils_SoundDefinition_playSound(this_2906[this_1], snd_2881[this_1])
endfunction

function alloc_SeqCallback_doSeq_nullTimer_load_LZW takes nothing returns integer
	local integer this_1
	if SeqCallback_firstFree == 0 then
		if SeqCallback_maxIndex < JASS_MAX_ARRAY_SIZE then
			set SeqCallback_maxIndex = SeqCallback_maxIndex + 1
			set this_1 = SeqCallback_maxIndex
			set SeqCallback_typeId[this_1] = 1135
		else
			call error("Out of memory: Could not create SeqCallback_doSeq_nullTimer_load_LZW.")
			set this_1 = 0
		endif
	else
		set SeqCallback_firstFree = SeqCallback_firstFree - 1
		set this_1 = SeqCallback_nextFree[SeqCallback_firstFree]
		set SeqCallback_typeId[this_1] = 1135
	endif
	return this_1
endfunction

function cyc_BigNum_l_divSmall takes integer funcChoice, integer this_1, integer base, integer denom returns nothing
	local integer remainder
	local integer num
	local integer quotient
	local integer BigNum_BigNum_l_divSmall_result
	if funcChoice == 0 then
		set remainder = 0
		if BigNum_l_next[this_1] != 0 then
			call cyc_BigNum_l_divSmall(1, BigNum_l_next[this_1], base, denom)
			set remainder = tempReturn_integer
		endif
		set num = BigNum_l_leaf[this_1] + remainder * base
		set quotient = num / denom
		set remainder = num - quotient * denom
		set BigNum_l_leaf[this_1] = quotient
		set tempReturn_integer = remainder
		return
	elseif funcChoice == 1 then
		if BigNum_l_typeId[this_1] == 0 then
			if this_1 == 0 then
				call error("Nullpointer exception when calling BigNum_l.divSmall")
			else
				call error("Called BigNum_l.divSmall on invalid object.")
			endif
		endif
		call cyc_BigNum_l_divSmall(0, this_1, base, denom)
		set BigNum_BigNum_l_divSmall_result = tempReturn_integer
		set tempReturn_integer = BigNum_BigNum_l_divSmall_result
		return
	endif
endfunction

function BigNum_divSmall takes integer this_1, integer denom returns integer
	call cyc_BigNum_l_divSmall(1, BigNum_list[this_1], BigNum_base[this_1], denom)
	return tempReturn_integer
endfunction

function dispatch_BigNum_BigNum_BigNum_divSmall takes integer this_1, integer denom returns integer
	local integer BigNum_BigNum_divSmall_result
	if BigNum_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling BigNum.divSmall")
		else
			call error("Called BigNum.divSmall on invalid object.")
		endif
	endif
	set BigNum_BigNum_divSmall_result = BigNum_divSmall(this_1, denom)
	return BigNum_BigNum_divSmall_result
endfunction

function Encoder_decode takes integer this_1, integer max returns integer
	return dispatch_BigNum_BigNum_BigNum_divSmall(Encoder_bignum[this_1], max + 1)
endfunction

function dispatch_Encoder_Encoder_Encoder_decode takes integer this_1, integer max returns integer
	local integer Encoder_Encoder_decode_result
	if Encoder_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling Encoder.decode")
		else
			call error("Called Encoder.decode on invalid object.")
		endif
	endif
	set Encoder_Encoder_decode_result = Encoder_decode(this_1, max)
	return Encoder_Encoder_decode_result
endfunction

function call_nullTimer_load_LZW takes integer this_1 returns nothing
	local integer dictSize_1
	local integer positions_1
	local integer clVar
	call Log_debug("file valid2")
	set dictSize_1 = dispatch_Encoder_Encoder_Encoder_decode(encoder_2347[this_1], LZW_maxDictSize)
	call Log_debug("dictSize: " + int_toString(dictSize_1))
	set positions_1 = new_LinkedList()
	call Log_debug("start decoding pos")
	set clVar = alloc_SeqCallback_doSeq_nullTimer_load_LZW()
	call construct_SeqCallback(clVar)
	set encoder_2348[clVar] = encoder_2347[this_1]
	set dictSize_2304[clVar] = dictSize_1
	set positions[clVar] = positions_1
	set onFinish_2556[clVar] = onFinish_2555[this_1]
	call doSeq(clVar)
endfunction

function dispatch_CallbackSingle_ClosureTimers_CallbackSingle_call takes integer this_1 returns nothing
	if CallbackSingle_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling CallbackSingle.call")
		else
			call error("Called CallbackSingle.call on invalid object.")
		endif
	endif
	if CallbackSingle_typeId[this_1] <= 695 then
		if CallbackSingle_typeId[this_1] <= 683 then
			if CallbackSingle_typeId[this_1] <= 677 then
				if CallbackSingle_typeId[this_1] <= 674 then
					if CallbackSingle_typeId[this_1] <= 672 then
						if CallbackSingle_typeId[this_1] <= 671 then
							call call_doAfter_Bomber_Bomber(this_1)
						else
							call call_doAfter_Bomber_Bomber_1969(this_1)
						endif
					elseif CallbackSingle_typeId[this_1] <= 673 then
						call call_doAfter_Bombertower_Bombertower(this_1)
					else
						call call_doAfter_Bombertower_Bombertower_1971(this_1)
					endif
				elseif CallbackSingle_typeId[this_1] <= 676 then
					if CallbackSingle_typeId[this_1] <= 675 then
						call call_doAfter_Builder_Builder(this_1)
					else
						call call_doAfter_ClosureTimers(this_1)
					endif
				else
					call call_doAfter_ClosureTimers_1974(this_1)
				endif
			elseif CallbackSingle_typeId[this_1] <= 680 then
				if CallbackSingle_typeId[this_1] <= 679 then
					if CallbackSingle_typeId[this_1] <= 678 then
						call call_doAfter_ClosureTimers_1975(this_1)
					else
						call call_doAfter_ClosureTimers_1976(this_1)
					endif
				else
					call call_doAfter_Commands(this_1)
				endif
			elseif CallbackSingle_typeId[this_1] <= 682 then
				if CallbackSingle_typeId[this_1] <= 681 then
					call call_doAfter_DummyRecycler_DummyRecycler(this_1)
				else
					call call_doAfter_Escaper_Escaper(this_1)
				endif
			else
				call call_doAfter_FText_FText(this_1)
			endif
		elseif CallbackSingle_typeId[this_1] <= 689 then
			if CallbackSingle_typeId[this_1] <= 686 then
				if CallbackSingle_typeId[this_1] <= 685 then
					if CallbackSingle_typeId[this_1] <= 684 then
						call call_doAfter_FourthCitadelleMaze_FourthCitadelle(this_1)
					else
						call call_doAfter_GameInit(this_1)
					endif
				else
					call call_doAfter_GameInit_1983(this_1)
				endif
			elseif CallbackSingle_typeId[this_1] <= 688 then
				if CallbackSingle_typeId[this_1] <= 687 then
					call call_doAfter_GameInit_1984(this_1)
				else
					call call_doAfter_GameInit_1985(this_1)
				endif
			else
				call call_doAfter_JukeBox(this_1)
			endif
		elseif CallbackSingle_typeId[this_1] <= 692 then
			if CallbackSingle_typeId[this_1] <= 691 then
				if CallbackSingle_typeId[this_1] <= 690 then
					call call_doAfter_JukeBox_JukeBox(this_1)
				else
					call call_doAfter_MGRandKill_MGRandKill(this_1)
				endif
			else
				call call_doAfter_MemoryAccessPedestal_Pedestal(this_1)
			endif
		elseif CallbackSingle_typeId[this_1] <= 694 then
			if CallbackSingle_typeId[this_1] <= 693 then
				call call_doAfter_Minigame_Minigame(this_1)
			else
				call call_doAfter_Minigame_Minigame_1991(this_1)
			endif
		else
			call call_doAfter_Minion_Minion(this_1)
		endif
	elseif CallbackSingle_typeId[this_1] <= 708 then
		if CallbackSingle_typeId[this_1] <= 702 then
			if CallbackSingle_typeId[this_1] <= 699 then
				if CallbackSingle_typeId[this_1] <= 697 then
					if CallbackSingle_typeId[this_1] <= 696 then
						call call_doAfter_Minion_Minion_1993(this_1)
					else
						call call_doAfter_Minion_Minion_1994(this_1)
					endif
				elseif CallbackSingle_typeId[this_1] <= 698 then
					call call_doAfter_PlayerData(this_1)
				else
					call call_doAfter_RevivePoint_Revivepoint(this_1)
				endif
			elseif CallbackSingle_typeId[this_1] <= 701 then
				if CallbackSingle_typeId[this_1] <= 700 then
					call call_doAfter_SoundDefinition_SoundUtils(this_1)
				else
					call call_doAfter_SpellTarget_BossSpellTarget(this_1)
				endif
			else
				call call_doAfter_ThirdForestMaze_ThirdForest(this_1)
			endif
		elseif CallbackSingle_typeId[this_1] <= 705 then
			if CallbackSingle_typeId[this_1] <= 704 then
				if CallbackSingle_typeId[this_1] <= 703 then
					call call_doAfter_Waypoint_Waypoint(this_1)
				else
					call call_doAfter_add_Buff(this_1)
				endif
			else
				call call_doAfter_doAfter_Minion_Minion(this_1)
			endif
		elseif CallbackSingle_typeId[this_1] <= 707 then
			if CallbackSingle_typeId[this_1] <= 706 then
				call call_nullTimer_BallItem_Ball(this_1)
			else
				call call_nullTimer_BallItem_Ball_2013(this_1)
			endif
		else
			call call_nullTimer_BallItem_Ball_2014(this_1)
		endif
	elseif CallbackSingle_typeId[this_1] <= 714 then
		if CallbackSingle_typeId[this_1] <= 711 then
			if CallbackSingle_typeId[this_1] <= 710 then
				if CallbackSingle_typeId[this_1] <= 709 then
					call call_nullTimer_ClosureEvents(this_1)
				else
					call call_nullTimer_Encoder_Encoder(this_1)
				endif
			else
				call call_nullTimer_Key_Key(this_1)
			endif
		elseif CallbackSingle_typeId[this_1] <= 713 then
			if CallbackSingle_typeId[this_1] <= 712 then
				call call_nullTimer_MemoryAccessPedestal_Pedestal(this_1)
			else
				call call_nullTimer_MemoryAccessPedestal_Pedestal_2019(this_1)
			endif
		else
			call call_nullTimer_OnUnitEnterLeave(this_1)
		endif
	elseif CallbackSingle_typeId[this_1] <= 717 then
		if CallbackSingle_typeId[this_1] <= 716 then
			if CallbackSingle_typeId[this_1] <= 715 then
				call call_nullTimer_Players(this_1)
			else
				call call_nullTimer_Preloader(this_1)
			endif
		else
			call call_nullTimer_SoundDefinition_SoundUtils(this_1)
		endif
	elseif CallbackSingle_typeId[this_1] <= 719 then
		if CallbackSingle_typeId[this_1] <= 718 then
			call call_nullTimer_SoundDefinition_SoundUtils_2024(this_1)
		else
			call call_nullTimer_SoundDefinition_SoundUtils_2025(this_1)
		endif
	else
		call call_nullTimer_load_LZW(this_1)
	endif
endfunction

function CallbackSingle_staticCallback takes nothing returns nothing
	local timer t = GetExpiredTimer()
	local integer cb_1 = timer_getData(t)
	call dispatch_CallbackSingle_ClosureTimers_CallbackSingle_call(cb_1)
	call dispatch_CallbackSingle_destroyCallbackSingle(cb_1)
endfunction

function code__start_CallbackSingle_ClosureTimers takes nothing returns nothing
	call CallbackSingle_staticCallback()
endfunction

function Minigame_onEndEvt takes nothing returns nothing
	call dispatch_Minigame_Minigame_Minigame_reset(timer_getData(GetExpiredTimer()))
endfunction

function code__start_Minigame_Minigame takes nothing returns nothing
	call Minigame_onEndEvt()
endfunction

function Encoder_itochar takes integer this_1, integer i returns string
	return SubString(Encoder_charset[this_1], i, i + 1)
endfunction

function dispatch_Encoder_Encoder_Encoder_itochar takes integer this_1, integer i returns string
	local string Encoder_Encoder_itochar_result
	if Encoder_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling Encoder.itochar")
		else
			call error("Called Encoder.itochar on invalid object.")
		endif
	endif
	set Encoder_Encoder_itochar_result = Encoder_itochar(this_1, i)
	return Encoder_Encoder_itochar_result
endfunction

function onExecute_doSeq_Encoder_Encoder takes integer this_1, integer cb_1 returns boolean
	local boolean continue = true
	if w_cur[this_1] != 0 then
		call dispatch_BigString_BigString_BigString_addString(big[this_1], dispatch_Encoder_Encoder_Encoder_itochar(this_2888[this_1], BigNum_l_leaf[w_cur[this_1]]))
		set w_cur[this_1] = BigNum_l_next[w_cur[this_1]]
	else
		set continue = false
		set PayloadCallback_customData[onFinish[this_1]] = big[this_1]
		call cyc_onExecute_save_doSeq_LZW(24, onFinish[this_1], 0, null, 0, 0)
	endif
	return continue
endfunction

function Encoder_chartoi takes integer this_1, string c returns integer
	local integer i = 0
	local string cs = Encoder_charset[this_1]
	local integer len = Encoder_base[this_1]
	loop
		exitwhen  not (i < len and c != SubString(cs, i, i + 1))
		set i = i + 1
	endloop
	return i
endfunction

function dispatch_Encoder_Encoder_Encoder_chartoi takes integer this_1, string c returns integer
	local integer Encoder_Encoder_chartoi_result
	if Encoder_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling Encoder.chartoi")
		else
			call error("Called Encoder.chartoi on invalid object.")
		endif
	endif
	set Encoder_Encoder_chartoi_result = Encoder_chartoi(this_1, c)
	return Encoder_Encoder_chartoi_result
endfunction

function onExecute_doSeq_Encoder_Encoder_3875 takes integer this_1, integer cb_1 returns boolean
	local boolean continue = true
	set BigNum_l_leaf[w_cur_2188[this_1]] = dispatch_Encoder_Encoder_Encoder_chartoi(this_2889[this_1], dispatch_BigString_BigString_BigString_getString(bs[this_1], w_i[this_1], 1))
	if w_i[this_1] < dispatch_BigString_BigString_BigString_getLength(bs[this_1]) - 1 then
		set BigNum_l_next[w_cur_2188[this_1]] = new_BigNum_l()
		set w_cur_2188[this_1] = BigNum_l_next[w_cur_2188[this_1]]
		set w_i[this_1] = w_i[this_1] + 1
	else
		set continue = false
		call dispatch_BigString_destroyBigString(bs[this_1])
		call cyc_onExecute_save_doSeq_LZW(24, onFinishString[this_1], 0, null, 0, 0)
	endif
	return continue
endfunction

function alloc_BigSubString takes nothing returns integer
	local integer this_1
	if BigSubString_firstFree == 0 then
		if BigSubString_maxIndex < JASS_MAX_ARRAY_SIZE then
			set BigSubString_maxIndex = BigSubString_maxIndex + 1
			set this_1 = BigSubString_maxIndex
			set BigSubString_typeId[this_1] = 641
		else
			call error("Out of memory: Could not create BigSubString.")
			set this_1 = 0
		endif
	else
		set BigSubString_firstFree = BigSubString_firstFree - 1
		set this_1 = BigSubString_nextFree[BigSubString_firstFree]
		set BigSubString_typeId[this_1] = 641
	endif
	return this_1
endfunction

function BigSubString_init takes integer this_1 returns nothing
	set BigSubString_parent[this_1] = 0
	set BigSubString_next[this_1] = 0
	set BigSubString_start[this_1] = 0
	set BigSubString_length[this_1] = 0
	set BigSubString_preinit[this_1] = null
endfunction

function construct_BigSubString2 takes integer this_1, integer parent, integer start, integer length returns nothing
	call BigSubString_init(this_1)
	set BigSubString_parent[this_1] = parent
	set BigSubString_start[this_1] = start
	set BigSubString_length[this_1] = length
endfunction

function new_BigSubString_3628 takes integer parent, integer start, integer length returns integer
	local integer this_1 = alloc_BigSubString()
	call construct_BigSubString2(this_1, parent, start, length)
	return this_1
endfunction

function JsonParser_parseListSeq takes integer this_1 returns nothing
	local string temp
	local integer bss
	local integer bss_1
	set JsonParser_currentToken[this_1] = dispatch_BigString_BigString_BigString_getString(JsonParser_bigInput[this_1], JsonParser_currentPosition[this_1], 1)
	set temp = JsonParser_currentToken[this_1]
	if temp == Delimiter_token[Json_JSON_OPEN_ARRAY] then
		set JsonParser_squareBracketLvl[this_1] = JsonParser_squareBracketLvl[this_1] + 1
		if JsonParser_squareBracketLvl[this_1] == 1 then
			set JsonParser_propStartPosition[this_1] = JsonParser_currentPosition[this_1] + 1
		endif
	elseif temp == Delimiter_token[Json_JSON_CLOSE_ARRAY] then
		set JsonParser_squareBracketLvl[this_1] = JsonParser_squareBracketLvl[this_1] - 1
		if JsonParser_squareBracketLvl[this_1] == 0 then
			set bss = new_BigSubString_3628(JsonParser_bigInput[this_1], JsonParser_propStartPosition[this_1], JsonParser_currentPosition[this_1] - JsonParser_propStartPosition[this_1])
			call dispatch_LinkedList_LinkedList_LinkedList_add_1(JsonParser_outputList[this_1], bss)
			set JsonParser_propStartPosition[this_1] = JsonParser_currentPosition[this_1] + 1
		endif
	elseif temp == Delimiter_token[Json_JSON_SIGN_COMMA] then
		if JsonParser_squareBracketLvl[this_1] == 1 then
			set bss_1 = new_BigSubString_3628(JsonParser_bigInput[this_1], JsonParser_propStartPosition[this_1], JsonParser_currentPosition[this_1] - JsonParser_propStartPosition[this_1])
			call dispatch_LinkedList_LinkedList_LinkedList_add_1(JsonParser_outputList[this_1], bss_1)
			set JsonParser_propStartPosition[this_1] = JsonParser_currentPosition[this_1] + 1
		endif
	endif
	set JsonParser_currentPosition[this_1] = JsonParser_currentPosition[this_1] + 1
endfunction

function dispatch_JsonParser_JsonParser_JsonParser_parseListSeq takes integer this_1 returns nothing
	if JsonParser_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling JsonParser.parseListSeq")
		else
			call error("Called JsonParser.parseListSeq on invalid object.")
		endif
	endif
	call JsonParser_parseListSeq(this_1)
endfunction

function onExecute_doSeq_JsonParser_JsonParser takes integer this_1, integer cb_1 returns boolean
	local boolean continue = true
	if JsonParser_currentPosition[this_2902[this_1]] < dispatch_BigString_BigString_BigString_getLength(JsonParser_bigInput[this_2902[this_1]]) then
		call dispatch_JsonParser_JsonParser_JsonParser_parseListSeq(this_2902[this_1])
	else
		set continue = false
		call Log_debug("parsed list")
		call cyc_onExecute_save_doSeq_LZW(24, finalCallback[this_1], 0, null, 0, 0)
	endif
	return continue
endfunction

function Json_addProperty takes integer this_1, integer p returns nothing
	if Property_name[p] != 0 and BigSubString_length[Property_name[p]] >= 0 then
		call dispatch_LinkedList_LinkedList_LinkedList_add_1(Json_plist[this_1], p)
		set BigSubString_next[Property_name[p]] = 0
		set BigSubString_next[Property_value[p]] = 0
		call dispatch_HashMap_HashMap_HashMap_put(Json_properties[this_1], string_getHash(dispatch_BigSubString_BigString_BigSubString_getSingle(Property_name[p])), p)
	endif
endfunction

function dispatch_Json_Json_Json_addProperty takes integer this_1, integer p returns nothing
	if Json_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling Json.addProperty")
		else
			call error("Called Json.addProperty on invalid object.")
		endif
	endif
	call Json_addProperty(this_1, p)
endfunction

function alloc_Property takes nothing returns integer
	local integer this_1
	if Property_firstFree == 0 then
		if Property_maxIndex < JASS_MAX_ARRAY_SIZE then
			set Property_maxIndex = Property_maxIndex + 1
			set this_1 = Property_maxIndex
			set Property_typeId[this_1] = 1050
		else
			call error("Out of memory: Could not create Property.")
			set this_1 = 0
		endif
	else
		set Property_firstFree = Property_firstFree - 1
		set this_1 = Property_nextFree[Property_firstFree]
		set Property_typeId[this_1] = 1050
	endif
	return this_1
endfunction

function Property_init takes integer this_1 returns nothing
endfunction

function construct_Property takes integer this_1, integer name, integer value returns nothing
	call Property_init(this_1)
	set Property_name[this_1] = name
	set Property_value[this_1] = value
endfunction

function new_Property takes integer name, integer value returns integer
	local integer this_1 = alloc_Property()
	call construct_Property(this_1, name, value)
	return this_1
endfunction

function JsonParser_onLetter takes integer this_1 returns nothing
	local integer temp = JsonParser_lastType[this_1]
	if temp == 0 then
		set JsonParser_propName[this_1] = new_BigSubString_3628(JsonParser_bigInput[this_1], JsonParser_currentPosition[this_1], 1)
		set JsonParser_propStartPosition[this_1] = JsonParser_currentPosition[this_1] + 1
	elseif temp == 2 then
		set JsonParser_propVal[this_1] = new_BigSubString_3628(JsonParser_bigInput[this_1], JsonParser_propStartPosition[this_1], JsonParser_currentPosition[this_1] - JsonParser_propStartPosition[this_1])
		call dispatch_Json_Json_Json_addProperty(JsonParser_output[this_1], new_Property(JsonParser_propName[this_1], JsonParser_propVal[this_1]))
		set JsonParser_propName[this_1] = new_BigSubString_3628(JsonParser_bigInput[this_1], JsonParser_currentPosition[this_1], 1)
		set JsonParser_propStartPosition[this_1] = JsonParser_currentPosition[this_1] + 1
	elseif temp == 4 then
		set JsonParser_propName[this_1] = new_BigSubString_3628(JsonParser_bigInput[this_1], JsonParser_currentPosition[this_1], 1)
		set JsonParser_propStartPosition[this_1] = JsonParser_currentPosition[this_1] + 1
	endif
	set JsonParser_lastType[this_1] = 1
endfunction

function dispatch_JsonParser_JsonParser_JsonParser_onLetter takes integer this_1 returns nothing
	if JsonParser_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling JsonParser.onLetter")
		else
			call error("Called JsonParser.onLetter on invalid object.")
		endif
	endif
	call JsonParser_onLetter(this_1)
endfunction

function JsonParser_onNumber takes integer this_1 returns nothing
	local integer temp = JsonParser_lastType[this_1]
	if temp == 1 then
		set JsonParser_propStartPosition[this_1] = JsonParser_currentPosition[this_1]
	endif
	set JsonParser_lastType[this_1] = 2
endfunction

function dispatch_JsonParser_JsonParser_JsonParser_onNumber takes integer this_1 returns nothing
	if JsonParser_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling JsonParser.onNumber")
		else
			call error("Called JsonParser.onNumber on invalid object.")
		endif
	endif
	call JsonParser_onNumber(this_1)
endfunction

function JsonParser_parseSeq takes integer this_1 returns nothing
	local string temp
	set JsonParser_currentToken[this_1] = dispatch_BigString_BigString_BigString_getString(JsonParser_bigInput[this_1], JsonParser_currentPosition[this_1], 1)
	set temp = JsonParser_currentToken[this_1]
	if temp == Delimiter_token[Json_JSON_OPEN_ARRAY] then
		set JsonParser_squareBracketLvl[this_1] = JsonParser_squareBracketLvl[this_1] + 1
		if JsonParser_squareBracketLvl[this_1] == 1 then
			set JsonParser_propStartPosition[this_1] = JsonParser_currentPosition[this_1]
		endif
		set JsonParser_lastType[this_1] = 3
	elseif temp == Delimiter_token[Json_JSON_CLOSE_ARRAY] then
		set JsonParser_squareBracketLvl[this_1] = JsonParser_squareBracketLvl[this_1] - 1
		if JsonParser_squareBracketLvl[this_1] == 0 then
			set JsonParser_propVal[this_1] = new_BigSubString_3628(JsonParser_bigInput[this_1], JsonParser_propStartPosition[this_1], JsonParser_currentPosition[this_1] - JsonParser_propStartPosition[this_1] + 1)
			call dispatch_Json_Json_Json_addProperty(JsonParser_output[this_1], new_Property(JsonParser_propName[this_1], JsonParser_propVal[this_1]))
			set JsonParser_propStartPosition[this_1] = JsonParser_currentPosition[this_1] + 1
		endif
		set JsonParser_lastType[this_1] = 4
	elseif JsonParser_squareBracketLvl[this_1] == 0 then
		if string_contains(JsonParser_lettermap, JsonParser_currentToken[this_1]) then
			call dispatch_JsonParser_JsonParser_JsonParser_onLetter(this_1)
		elseif string_contains(JsonParser_numbermap, JsonParser_currentToken[this_1]) then
			call dispatch_JsonParser_JsonParser_JsonParser_onNumber(this_1)
		endif
	endif
	set JsonParser_currentPosition[this_1] = JsonParser_currentPosition[this_1] + 1
endfunction

function dispatch_JsonParser_JsonParser_JsonParser_parseSeq takes integer this_1 returns nothing
	if JsonParser_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling JsonParser.parseSeq")
		else
			call error("Called JsonParser.parseSeq on invalid object.")
		endif
	endif
	call JsonParser_parseSeq(this_1)
endfunction

function onExecute_doSeq_JsonParser_JsonParser_3877 takes integer this_1, integer cb_1 returns boolean
	local boolean continue = true
	if JsonParser_currentPosition[this_2903[this_1]] < dispatch_BigString_BigString_BigString_getLength(JsonParser_bigInput[this_2903[this_1]]) then
		call dispatch_JsonParser_JsonParser_JsonParser_parseSeq(this_2903[this_1])
	else
		set continue = false
		if JsonParser_propStartPosition[this_2903[this_1]] < JsonParser_currentPosition[this_2903[this_1]] then
			set JsonParser_propVal[this_2903[this_1]] = new_BigSubString_3628(JsonParser_bigInput[this_2903[this_1]], JsonParser_propStartPosition[this_2903[this_1]], JsonParser_currentPosition[this_2903[this_1]] - JsonParser_propStartPosition[this_2903[this_1]])
			call dispatch_Json_Json_Json_addProperty(JsonParser_output[this_2903[this_1]], new_Property(JsonParser_propName[this_2903[this_1]], JsonParser_propVal[this_2903[this_1]]))
		endif
		call cyc_onExecute_save_doSeq_LZW(24, callback[this_1], 0, null, 0, 0)
	endif
	return continue
endfunction

function alloc_PayloadCallback_save_doSeq_LZW takes nothing returns integer
	local integer this_1
	if PayloadCallback_firstFree == 0 then
		if PayloadCallback_maxIndex < JASS_MAX_ARRAY_SIZE then
			set PayloadCallback_maxIndex = PayloadCallback_maxIndex + 1
			set this_1 = PayloadCallback_maxIndex
			set PayloadCallback_typeId[this_1] = 1048
		else
			call error("Out of memory: Could not create PayloadCallback_save_doSeq_LZW.")
			set this_1 = 0
		endif
	else
		set PayloadCallback_firstFree = PayloadCallback_firstFree - 1
		set this_1 = PayloadCallback_nextFree[PayloadCallback_firstFree]
		set PayloadCallback_typeId[this_1] = 1048
	endif
	return this_1
endfunction

function BigNum_addSmall takes integer this_1, integer pcarry returns nothing
	local integer cur = BigNum_list[this_1]
	local integer carry = pcarry
	local integer sum
	if cur == 0 then
		set cur = new_BigNum_l()
		set BigNum_list[this_1] = cur
	endif
	loop
		exitwhen  not (carry != 0)
		set sum = BigNum_l_leaf[cur] + carry
		set carry = sum / BigNum_base[this_1]
		set sum = sum - carry * BigNum_base[this_1]
		set BigNum_l_leaf[cur] = sum
		if BigNum_l_next[cur] == 0 then
			set BigNum_l_next[cur] = new_BigNum_l()
		endif
		set cur = BigNum_l_next[cur]
	endloop
endfunction

function dispatch_BigNum_BigNum_BigNum_addSmall takes integer this_1, integer pcarry returns nothing
	if BigNum_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling BigNum.addSmall")
		else
			call error("Called BigNum.addSmall on invalid object.")
		endif
	endif
	call BigNum_addSmall(this_1, pcarry)
endfunction

function BigNum_mulSmall takes integer this_1, integer x returns nothing
	local integer cur = BigNum_list[this_1]
	local integer carry = 0
	local integer product
	local integer remainder
	loop
		exitwhen  not (cur != 0 or carry != 0)
		set product = x * BigNum_l_leaf[cur] + carry
		set carry = product / BigNum_base[this_1]
		set remainder = product - carry * BigNum_base[this_1]
		set BigNum_l_leaf[cur] = remainder
		if BigNum_l_next[cur] == 0 and carry != 0 then
			set BigNum_l_next[cur] = new_BigNum_l()
		endif
		set cur = BigNum_l_next[cur]
	endloop
endfunction

function dispatch_BigNum_BigNum_BigNum_mulSmall takes integer this_1, integer x returns nothing
	if BigNum_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling BigNum.mulSmall")
		else
			call error("Called BigNum.mulSmall on invalid object.")
		endif
	endif
	call BigNum_mulSmall(this_1, x)
endfunction

function log takes real py, real pbase returns real
	local real y = py
	local real base = pbase
	local real factor = 1.0
	local real logy = 0.0
	local real sign = 1.0
	if y < 0. then
		return 0.0
	endif
	if y < 1. then
		set y = 1.0 / y
		set sign =  - 1.0
	endif
	loop
		exitwhen  not (y >= 1.0001)
		if y > base then
			set y = y / base
			set logy = logy + factor
		else
			set base = SquareRoot(base)
			set factor = factor / 2.
		endif
	endloop
	return sign * logy
endfunction

function Encoder_encode takes integer this_1, integer wval, integer max returns nothing
	set Encoder_digits[this_1] = Encoder_digits[this_1] + log(max + 1., Encoder_base[this_1] + 0.)
	call dispatch_BigNum_BigNum_BigNum_mulSmall(Encoder_bignum[this_1], max + 1)
	call dispatch_BigNum_BigNum_BigNum_addSmall(Encoder_bignum[this_1], wval)
	call Log_trace("encoded val: " + int_toString(wval) + " max: " + int_toString(max))
endfunction

function dispatch_Encoder_Encoder_Encoder_encode takes integer this_1, integer wval, integer max returns nothing
	if Encoder_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling Encoder.encode")
		else
			call error("Called Encoder.encode on invalid object.")
		endif
	endif
	call Encoder_encode(this_1, wval, max)
endfunction

function alloc_CallbackSingle_nullTimer_Encoder_Encoder takes nothing returns integer
	local integer this_1
	if CallbackSingle_firstFree == 0 then
		if CallbackSingle_maxIndex < JASS_MAX_ARRAY_SIZE then
			set CallbackSingle_maxIndex = CallbackSingle_maxIndex + 1
			set this_1 = CallbackSingle_maxIndex
			set CallbackSingle_typeId[this_1] = 710
		else
			call error("Out of memory: Could not create CallbackSingle_nullTimer_Encoder_Encoder.")
			set this_1 = 0
		endif
	else
		set CallbackSingle_firstFree = CallbackSingle_firstFree - 1
		set this_1 = CallbackSingle_nextFree[CallbackSingle_firstFree]
		set CallbackSingle_typeId[this_1] = 710
	endif
	return this_1
endfunction

function alloc_ForForceCallback_execute_Encoder_Encoder takes nothing returns integer
	local integer this_1
	if ForForceCallback_firstFree == 0 then
		if ForForceCallback_maxIndex < JASS_MAX_ARRAY_SIZE then
			set ForForceCallback_maxIndex = ForForceCallback_maxIndex + 1
			set this_1 = ForForceCallback_maxIndex
			set ForForceCallback_typeId[this_1] = 838
		else
			call error("Out of memory: Could not create ForForceCallback_execute_Encoder_Encoder.")
			set this_1 = 0
		endif
	else
		set ForForceCallback_firstFree = ForForceCallback_firstFree - 1
		set this_1 = ForForceCallback_nextFree[ForForceCallback_firstFree]
		set ForForceCallback_typeId[this_1] = 838
	endif
	return this_1
endfunction

function alloc_ForForceCallback_execute_Encoder_Encoder_1761 takes nothing returns integer
	local integer this_1
	if ForForceCallback_firstFree == 0 then
		if ForForceCallback_maxIndex < JASS_MAX_ARRAY_SIZE then
			set ForForceCallback_maxIndex = ForForceCallback_maxIndex + 1
			set this_1 = ForForceCallback_maxIndex
			set ForForceCallback_typeId[this_1] = 839
		else
			call error("Out of memory: Could not create ForForceCallback_execute_Encoder_Encoder.")
			set this_1 = 0
		endif
	else
		set ForForceCallback_firstFree = ForForceCallback_firstFree - 1
		set this_1 = ForForceCallback_nextFree[ForForceCallback_firstFree]
		set ForForceCallback_typeId[this_1] = 839
	endif
	return this_1
endfunction

function Encoder_save takes integer this_1, integer bs_1, integer onFinish_1 returns nothing
	local integer clVar
	local integer clVar_1
	local integer clVar_2
	call Log_debug("save1")
	set clVar = alloc_ForForceCallback_execute_Encoder_Encoder()
	set this_2890[clVar] = this_1
	call execute(clVar)
	call Log_debug("save2")
	set Encoder_hash[this_1] = -1
	set clVar_1 = alloc_ForForceCallback_execute_Encoder_Encoder_1761()
	set this_2891[clVar_1] = this_1
	call execute(clVar_1)
	set clVar_2 = alloc_CallbackSingle_nullTimer_Encoder_Encoder()
	call construct_CallbackSingle(clVar_2)
	set this_2892[clVar_2] = this_1
	set bs_2275[clVar_2] = bs_1
	set onFinish_2550[clVar_2] = onFinish_1
	call nullTimer(clVar_2)
endfunction

function dispatch_Encoder_Encoder_Encoder_save takes integer this_1, integer bs_1, integer onFinish_1 returns nothing
	if Encoder_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling Encoder.save")
		else
			call error("Called Encoder.save on invalid object.")
		endif
	endif
	call Encoder_save(this_1, bs_1, onFinish_1)
endfunction

function onExecute_doSeq_LZW takes integer this_1, integer cb_1 returns boolean
	local boolean continue = true
	local integer clVar
	local integer temp
	local integer temp_1
	if dispatch_LLIterator_LinkedList_LLIterator_hasNext(itr[this_1]) then
		call dispatch_Encoder_Encoder_Encoder_encode(encoder[this_1], dispatch_LLIterator_LinkedList_LLIterator_next(itr[this_1]), dictSize[this_1])
	else
		set continue = false
		call dispatch_Encoder_Encoder_Encoder_encode(encoder[this_1], dictSize[this_1], LZW_maxDictSize)
		call dispatch_LinkedList_destroyLinkedList(intList[this_1])
		set temp = encoder[this_1]
		set temp_1 = new_BigString()
		set clVar = alloc_PayloadCallback_save_doSeq_LZW()
		call construct_PayloadCallback(clVar)
		set onFinish_2553[clVar] = onFinish_2552[this_1]
		set encoder_2345[clVar] = encoder[this_1]
		call dispatch_Encoder_Encoder_Encoder_save(temp, temp_1, clVar)
	endif
	return continue
endfunction

function alloc_PayloadCallback_encodePositions_doSeq_LZW takes nothing returns integer
	local integer this_1
	if PayloadCallback_firstFree == 0 then
		if PayloadCallback_maxIndex < JASS_MAX_ARRAY_SIZE then
			set PayloadCallback_maxIndex = PayloadCallback_maxIndex + 1
			set this_1 = PayloadCallback_maxIndex
			set PayloadCallback_typeId[this_1] = 1039
		else
			call error("Out of memory: Could not create PayloadCallback_encodePositions_doSeq_LZW.")
			set this_1 = 0
		endif
	else
		set PayloadCallback_firstFree = PayloadCallback_firstFree - 1
		set this_1 = PayloadCallback_nextFree[PayloadCallback_firstFree]
		set PayloadCallback_typeId[this_1] = 1039
	endif
	return this_1
endfunction

function BigString_charAt takes integer this_1, integer offset returns integer
	return new_BigSubString_3628(this_1, offset, 1)
endfunction

function dispatch_BigString_BigString_BigString_charAt takes integer this_1, integer offset returns integer
	local integer BigString_BigString_charAt_result
	if BigString_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling BigString.charAt")
		else
			call error("Called BigString.charAt on invalid object.")
		endif
	endif
	set BigString_BigString_charAt_result = BigString_charAt(this_1, offset)
	return BigString_BigString_charAt_result
endfunction

function BigSubString_concat takes integer this_1, integer next returns integer
	local integer t
	if next == 0 then
		call error("null")
	endif
	set t = this_1
	loop
		exitwhen  not (BigSubString_next[t] != 0)
		set t = BigSubString_next[t]
	endloop
	set BigSubString_next[t] = next
	return this_1
endfunction

function dispatch_BigSubString_BigString_BigSubString_concat takes integer this_1, integer next returns integer
	local integer BigString_BigSubString_concat_result
	if BigSubString_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling BigSubString.concat")
		else
			call error("Called BigSubString.concat on invalid object.")
		endif
	endif
	set BigString_BigSubString_concat_result = BigSubString_concat(this_1, next)
	return BigString_BigSubString_concat_result
endfunction

function alloc_SeqCallback_doSeq_LZW takes nothing returns integer
	local integer this_1
	if SeqCallback_firstFree == 0 then
		if SeqCallback_maxIndex < JASS_MAX_ARRAY_SIZE then
			set SeqCallback_maxIndex = SeqCallback_maxIndex + 1
			set this_1 = SeqCallback_maxIndex
			set SeqCallback_typeId[this_1] = 1130
		else
			call error("Out of memory: Could not create SeqCallback_doSeq_LZW.")
			set this_1 = 0
		endif
	else
		set SeqCallback_firstFree = SeqCallback_firstFree - 1
		set this_1 = SeqCallback_nextFree[SeqCallback_firstFree]
		set SeqCallback_typeId[this_1] = 1130
	endif
	return this_1
endfunction

function encodePositions takes integer intList_1, integer dictSize_1, integer onFinish_1 returns nothing
	local string st
	local integer iterator
	local integer s
	local integer encoder_1
	local integer itr_1
	local integer clVar
	if dictSize_1 > LZW_maxDictSize then
		call error("dictionary size exceeds max size")
	endif
	if Printing_config_DEBUG_LEVEL == 0 then
		set st = ""
		set iterator = LinkedList_iterator(intList_1)
		loop
			exitwhen  not LLIterator_hasNext(iterator)
			set s = LLIterator_next(iterator)
			set st = st + int_toString(s) + ","
		endloop
		call LLIterator_close(iterator)
		call printLog(0, "encoding positions: " + st)
	endif
	set encoder_1 = new_Encoder(LZW_ALLOWED_PLAYER_CHARS)
	set itr_1 = dispatch_LinkedList_LinkedList_LinkedList_staticItr(intList_1)
	set clVar = alloc_SeqCallback_doSeq_LZW()
	call construct_SeqCallback(clVar)
	set itr[clVar] = itr_1
	set encoder[clVar] = encoder_1
	set dictSize[clVar] = dictSize_1
	set intList[clVar] = intList_1
	set onFinish_2552[clVar] = onFinish_1
	call doSeq(clVar)
endfunction

function construct_BigSubString takes integer this_1, string preInit returns nothing
	call BigSubString_init(this_1)
	set BigSubString_preinit[this_1] = preInit
	set BigSubString_length[this_1] = string_length(BigSubString_preinit[this_1])
endfunction

function new_BigSubString takes string preInit returns integer
	local integer this_1 = alloc_BigSubString()
	call construct_BigSubString(this_1, preInit)
	return this_1
endfunction

function onExecute_doSeq_LZW_3879 takes integer this_1, integer cb_1 returns boolean
	local boolean continue = true
	local string sng
	local integer clVar
	local integer temp
	local integer temp_1
	local integer temp_2
	if inc[this_1] < dispatch_BigString_BigString_BigString_getLength(data[this_1]) - 1 then
		if A[this_1] != 0 then
			call dispatch_BigSubString_destroyBigSubString(A[this_1])
		endif
		set A[this_1] = dispatch_BigString_BigString_BigString_charAt(data[this_1], inc[this_1])
		set inc[this_1] = inc[this_1] + 1
		if B[this_1] != 0 then
			call dispatch_BigSubString_destroyBigSubString(B[this_1])
		endif
		set B[this_1] = dispatch_BigString_BigString_BigString_charAt(data[this_1], inc[this_1])
		call dispatch_BigSubString_BigString_BigSubString_concat(A[this_1], B[this_1])
		loop
			exitwhen  not true
			set temp_2 = LZW_dictionary
			call cyc_BigSubString_getCombined(1, A[this_1])
			if  not dispatch_HashMap_HashMap_HashMap_has(temp_2, stringToIndex(tempReturn_string)) then
				exitwhen true
			endif
			set sng = dispatch_BigSubString_BigString_BigSubString_getSingle(A[this_1])
			if A[this_1] != 0 then
				call dispatch_BigSubString_destroyBigSubString(A[this_1])
			endif
			set A[this_1] = new_BigSubString(sng + dispatch_BigSubString_BigString_BigSubString_getSingle(B[this_1]))
			set inc[this_1] = inc[this_1] + 1
			if inc[this_1] < dispatch_BigString_BigString_BigString_getLength(data[this_1]) then
				if B[this_1] != 0 then
					call dispatch_BigSubString_destroyBigSubString(B[this_1])
				endif
				set B[this_1] = dispatch_BigString_BigString_BigString_charAt(data[this_1], inc[this_1])
				call dispatch_BigSubString_BigString_BigSubString_concat(A[this_1], B[this_1])
			else
				exitwhen true
			endif
		endloop
		call dispatch_LinkedList_LinkedList_LinkedList_add_1(intList_2530[this_1], dispatch_HashMap_HashMap_HashMap_get(LZW_dictionary, stringToIndex(dispatch_BigSubString_BigString_BigSubString_getSingle(A[this_1]))))
		call cyc_BigSubString_getCombined(1, A[this_1])
		call putDict(tempReturn_string)
	else
		call Log_debug("Compressed")
		set continue = false
		if B[this_1] != 0 and string_charAt(dispatch_BigSubString_BigString_BigSubString_getSingle(A[this_1]), dispatch_BigSubString_BigString_BigSubString_getSingleLength(A[this_1]) - 1) != dispatch_BigSubString_BigString_BigSubString_getSingle(B[this_1]) then
			call dispatch_LinkedList_LinkedList_LinkedList_add_1(intList_2530[this_1], dispatch_HashMap_HashMap_HashMap_get(LZW_dictionary, stringToIndex(dispatch_BigSubString_BigString_BigSubString_getSingle(B[this_1]))))
		endif
		set temp = intList_2530[this_1]
		set temp_1 = LZW_dictSize
		set clVar = alloc_PayloadCallback_encodePositions_doSeq_LZW()
		call construct_PayloadCallback(clVar)
		set onFinish_2558[clVar] = onFinish_2557[this_1]
		call encodePositions(temp, temp_1, clVar)
	endif
	return continue
endfunction

function Json_addToBigString takes integer this_1, integer big_1 returns integer
	local integer from = dispatch_LinkedList_LinkedList_LinkedList_staticItr(Json_plist[this_1])
	local integer p
	loop
		exitwhen  not LLIterator_hasNext(from)
		set p = LLIterator_next(from)
		call dispatch_BigString_BigString_BigString_addString(big_1, dispatch_BigSubString_BigString_BigSubString_getSingle(Property_name[p]))
		call cyc_BigSubString_addToBigString(1, Property_value[p], big_1)
	endloop
	return big_1
endfunction

function dispatch_Json_Json_Json_addToBigString takes integer this_1, integer big_1 returns integer
	local integer Json_Json_addToBigString_result
	if Json_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling Json.addToBigString")
		else
			call error("Called Json.addToBigString on invalid object.")
		endif
	endif
	set Json_Json_addToBigString_result = Json_addToBigString(this_1, big_1)
	return Json_Json_addToBigString_result
endfunction

function alloc_PayloadCallback_compress_MemoryAccessPedestal_Pedestal takes nothing returns integer
	local integer this_1
	if PayloadCallback_firstFree == 0 then
		if PayloadCallback_maxIndex < JASS_MAX_ARRAY_SIZE then
			set PayloadCallback_maxIndex = PayloadCallback_maxIndex + 1
			set this_1 = PayloadCallback_maxIndex
			set PayloadCallback_typeId[this_1] = 1036
		else
			call error("Out of memory: Could not create PayloadCallback_compress_MemoryAccessPedestal_Pedestal.")
			set this_1 = 0
		endif
	else
		set PayloadCallback_firstFree = PayloadCallback_firstFree - 1
		set this_1 = PayloadCallback_nextFree[PayloadCallback_firstFree]
		set PayloadCallback_typeId[this_1] = 1036
	endif
	return this_1
endfunction

function alloc_SeqCallback_doSeq_LZW_1898 takes nothing returns integer
	local integer this_1
	if SeqCallback_firstFree == 0 then
		if SeqCallback_maxIndex < JASS_MAX_ARRAY_SIZE then
			set SeqCallback_maxIndex = SeqCallback_maxIndex + 1
			set this_1 = SeqCallback_maxIndex
			set SeqCallback_typeId[this_1] = 1131
		else
			call error("Out of memory: Could not create SeqCallback_doSeq_LZW.")
			set this_1 = 0
		endif
	else
		set SeqCallback_firstFree = SeqCallback_firstFree - 1
		set this_1 = SeqCallback_nextFree[SeqCallback_firstFree]
		set SeqCallback_typeId[this_1] = 1131
	endif
	return this_1
endfunction

function compress takes integer data_1, integer onFinish_1 returns nothing
	local integer intList_1
	local integer inc_1
	local integer A_2
	local integer B_1
	local integer clVar
	call Log_debug("Compressing:")
	call dispatch_BigString_BigString_BigString_debugPrint(data_1)
	set intList_1 = new_LinkedList()
	call initDict()
	set inc_1 = 0
	set A_2 = 0
	set B_1 = 0
	set clVar = alloc_SeqCallback_doSeq_LZW_1898()
	call construct_SeqCallback(clVar)
	set inc[clVar] = inc_1
	set data[clVar] = data_1
	set A[clVar] = A_2
	set B[clVar] = B_1
	set intList_2530[clVar] = intList_1
	set onFinish_2557[clVar] = onFinish_1
	call doSeq(clVar)
endfunction

function BigString_asSubstring takes integer this_1 returns integer
	return new_BigSubString_3628(this_1, 0, BigString_length[this_1])
endfunction

function dispatch_BigString_BigString_BigString_asSubstring takes integer this_1 returns integer
	local integer BigString_BigString_asSubstring_result
	if BigString_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling BigString.asSubstring")
		else
			call error("Called BigString.asSubstring on invalid object.")
		endif
	endif
	set BigString_BigString_asSubstring_result = BigString_asSubstring(this_1)
	return BigString_BigString_asSubstring_result
endfunction

function MemoryAccessPedestal_saveFile takes integer this_1 returns nothing
	local texttag receiver
	local integer json
	local integer big_1
	local texttag receiver_1
	local integer clVar
	local integer temp
	call Log_debug("Save file")
	set receiver = FText_tt[MemoryAccessPedestal_ttag[this_1]]
	call texttag_center(receiver, Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1], "|cff0884CEpreparing...", 10.)
	set json = new_Json()
	set big_1 = new_BigString()
	call dispatch_Json_Json_Json_addProperty(json, new_Property(new_BigSubString(MemoryAccessPedestal_ENTITIES_KEY), dispatch_BigString_BigString_BigString_asSubstring(MemoryAccessPedestal_entString[this_1])))
	call dispatch_Json_Json_Json_addProperty(json, new_Property(new_BigSubString(MemoryAccessPedestal_TILES_KEY), dispatch_BigString_BigString_BigString_asSubstring(MemoryAccessPedestal_tileString[this_1])))
	call dispatch_Json_Json_Json_addToBigString(json, big_1)
	call dispatch_Json_destroyJson(json)
	set receiver_1 = FText_tt[MemoryAccessPedestal_ttag[this_1]]
	call texttag_center(receiver_1, Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1], "|cff0884CEcompressing...", 10.)
	call printLog(1, "start compress")
	set temp = big_1
	set clVar = alloc_PayloadCallback_compress_MemoryAccessPedestal_Pedestal()
	call construct_PayloadCallback(clVar)
	set this_3010[clVar] = this_1
	set big_2202[clVar] = big_1
	call compress(temp, clVar)
endfunction

function dispatch_MemoryAccessPedestal_Pedestal_MemoryAccessPedestal_saveFile takes integer this_1 returns nothing
	if Serializable_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling MemoryAccessPedestal.saveFile")
		else
			call error("Called MemoryAccessPedestal.saveFile on invalid object.")
		endif
	endif
	call MemoryAccessPedestal_saveFile(this_1)
endfunction

function construct_Property2 takes integer this_1, string name, string value returns nothing
	call Property_init(this_1)
	set Property_name[this_1] = new_BigSubString(name)
	set Property_value[this_1] = new_BigSubString(value)
endfunction

function new_Property_3730 takes string name, string value returns integer
	local integer this_1 = alloc_Property()
	call construct_Property2(this_1, name, value)
	return this_1
endfunction

function TileData_serialize takes integer this_1 returns integer
	local integer json
	local integer receiver
	local integer receiver_1
	local integer receiver_2
	set TileData_tile[this_1] = getTileFromType(TileData_pos_x[this_1], TileData_pos_y[this_1])
	set receiver = new_Json()
	call dispatch_Json_Json_Json_addProperty(receiver, new_Property_3730(Entity_KEY_X, int_toString(real_toInt(TileData_xoff[this_1] - Entity_serializeOrigin_x / 128.))))
	set receiver_1 = receiver
	call dispatch_Json_Json_Json_addProperty(receiver_1, new_Property_3730(Entity_KEY_Y, int_toString(real_toInt(TileData_yoff[this_1] - Entity_serializeOrigin_y / 128.))))
	set json = receiver_1
	if TileData_tile[this_1] != 1 then
		set receiver_2 = json
		call dispatch_Json_Json_Json_addProperty(receiver_2, new_Property_3730(Entity_KEY_TYPE, int_toString(TileData_tile[this_1])))
	endif
	return json
endfunction

function dispatch_TileData_TileData_TileData_serialize takes integer this_1 returns integer
	local integer TileData_TileData_serialize_result
	if Serializable_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling TileData.serialize")
		else
			call error("Called TileData.serialize on invalid object.")
		endif
	endif
	set TileData_TileData_serialize_result = TileData_serialize(this_1)
	return TileData_TileData_serialize_result
endfunction

function onExecute_doSeq_MemoryAccessPedestal_Pedestal takes integer this_1, integer cb_1 returns boolean
	local boolean continue = true
	if dispatch_LLIterator_LinkedList_LLIterator_hasNext(itr_2538[this_1]) then
		call dispatch_Json_Json_Json_addToBigString(dispatch_TileData_TileData_TileData_serialize(dispatch_LLIterator_LinkedList_LLIterator_next(itr_2538[this_1])), MemoryAccessPedestal_tileString[this_3009[this_1]])
		if dispatch_LLIterator_LinkedList_LLIterator_hasNext(itr_2538[this_1]) then
			call dispatch_BigString_BigString_BigString_addString(MemoryAccessPedestal_tileString[this_3009[this_1]], Delimiter_token[Json_JSON_SIGN_COMMA])
		endif
		call dispatch_TileData_destroyTileData(dispatch_LLIterator_LinkedList_LLIterator_remove(itr_2538[this_1]))
	else
		set continue = false
		call dispatch_BigString_BigString_BigString_addString(MemoryAccessPedestal_tileString[this_3009[this_1]], Delimiter_token[Json_JSON_CLOSE_ARRAY])
		call dispatch_BigString_BigString_BigString_debugPrint(MemoryAccessPedestal_tileString[this_3009[this_1]])
		call Log_debug("Saved tiles seq")
		call dispatch_MemoryAccessPedestal_Pedestal_MemoryAccessPedestal_saveFile(this_3009[this_1])
	endif
	return continue
endfunction

function LLIterator_lookahead takes integer this_1 returns integer
	local integer retVal = 0
	if dispatch_LLIterator_LinkedList_LLIterator_hasNext(this_1) then
		set retVal = LLEntry_elem[LLEntry_next[LLIterator_current[this_1]]]
	endif
	return retVal
endfunction

function dispatch_LLIterator_LinkedList_LLIterator_lookahead takes integer this_1 returns integer
	local integer LinkedList_LLIterator_lookahead_result
	if LLIterator_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling LLIterator.lookahead")
		else
			call error("Called LLIterator.lookahead on invalid object.")
		endif
	endif
	set LinkedList_LLIterator_lookahead_result = LLIterator_lookahead(this_1)
	return LinkedList_LLIterator_lookahead_result
endfunction

function onExecute_doSeq_decodePositions_LZW takes integer this_1, integer cb2 returns boolean
	local boolean continue = true
	local integer idx
	if dispatch_LLIterator_LinkedList_LLIterator_hasNext(itr_2534[this_1]) then
		set idx = dispatch_LLIterator_LinkedList_LLIterator_next(itr_2534[this_1])
		set A_1[this_1] = dispatch_Table_Table_Table_loadString(LZW_dictionary, idx)
		if dispatch_LLIterator_LinkedList_LLIterator_hasNext(itr_2534[this_1]) and dispatch_LLIterator_LinkedList_LLIterator_lookahead(itr_2534[this_1]) < LZW_dictSize then
			set B_70[this_1] = dispatch_Table_Table_Table_loadString(LZW_dictionary, dispatch_LLIterator_LinkedList_LLIterator_lookahead(itr_2534[this_1]))
			set B_70[this_1] = string_charAt(B_70[this_1], 0)
		elseif  not dispatch_LLIterator_LinkedList_LLIterator_hasNext(itr_2534[this_1]) then
			set B_70[this_1] = null
		else
			set B_70[this_1] = string_charAt(A_1[this_1], 0)
		endif
		if B_70[this_1] != null and string_length(B_70[this_1]) > 0 then
			call putDict(A_1[this_1] + B_70[this_1])
		endif
		call dispatch_BigString_BigString_BigString_addString(output_2567[this_1], A_1[this_1])
	else
		set continue = false
		call Log_debug("decompressed")
		call dispatch_BigString_BigString_BigString_debugPrint(output_2567[this_1])
		set PayloadCallback_customData[onFinish_2560[this_1]] = output_2567[this_1]
		call cyc_onExecute_save_doSeq_LZW(24, onFinish_2560[this_1], 0, null, 0, 0)
	endif
	return continue
endfunction

function dispatch_HLIterator_HashList_HLIterator_hasNext takes integer this_1 returns boolean
	local boolean HashList_HLIterator_hasNext_result
	if HLIterator_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling HLIterator.hasNext")
		else
			call error("Called HLIterator.hasNext on invalid object.")
		endif
	endif
	set HashList_HLIterator_hasNext_result = HLIterator_hasNext(this_1)
	return HashList_HLIterator_hasNext_result
endfunction

function dispatch_HLIterator_HashList_HLIterator_next takes integer this_1 returns integer
	local integer HashList_HLIterator_next_result
	if HLIterator_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling HLIterator.next")
		else
			call error("Called HLIterator.next on invalid object.")
		endif
	endif
	set HashList_HLIterator_next_result = HLIterator_next(this_1)
	return HashList_HLIterator_next_result
endfunction

function HLIterator_remove takes integer this_1 returns nothing
	call dispatch_HashList_HashList_HashList_removeAt(HLIterator_list[this_1], HLIterator_i[this_1] - 1)
	set HLIterator_i[this_1] = HLIterator_i[this_1] - 1
endfunction

function dispatch_HLIterator_HashList_HLIterator_remove takes integer this_1 returns nothing
	if HLIterator_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling HLIterator.remove")
		else
			call error("Called HLIterator.remove on invalid object.")
		endif
	endif
	call HLIterator_remove(this_1)
endfunction

function MemoryAccessPedestal_isValid takes integer this_1, integer next returns boolean
	local integer instanceOfTemp
	local integer instanceOfTemp_1
	local boolean andLeft
	local boolean andLeft_1
	if Serializable_typeId[next] > 0 then
		set instanceOfTemp = Serializable_typeId[next]
		set andLeft =  not (instanceOfTemp >= 1137 and instanceOfTemp <= 1227)
	else
		set andLeft = false
	endif
	if andLeft then
		set andLeft_1 = true
	else
		set instanceOfTemp_1 = Serializable_typeId[next]
		set andLeft_1 = instanceOfTemp_1 >= 1160 and instanceOfTemp_1 <= 1227 and unit_isAlive(UnitEntity_actor[next])
	endif
	return andLeft_1
endfunction

function dispatch_MemoryAccessPedestal_Pedestal_MemoryAccessPedestal_isValid takes integer this_1, integer next returns boolean
	local boolean Pedestal_MemoryAccessPedestal_isValid_result
	if Serializable_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling MemoryAccessPedestal.isValid")
		else
			call error("Called MemoryAccessPedestal.isValid on invalid object.")
		endif
	endif
	set Pedestal_MemoryAccessPedestal_isValid_result = MemoryAccessPedestal_isValid(this_1, next)
	return Pedestal_MemoryAccessPedestal_isValid_result
endfunction

function alloc_SeqCallback_doSeq_MemoryAccessPedestal_Pedestal takes nothing returns integer
	local integer this_1
	if SeqCallback_firstFree == 0 then
		if SeqCallback_maxIndex < JASS_MAX_ARRAY_SIZE then
			set SeqCallback_maxIndex = SeqCallback_maxIndex + 1
			set this_1 = SeqCallback_maxIndex
			set SeqCallback_typeId[this_1] = 1132
		else
			call error("Out of memory: Could not create SeqCallback_doSeq_MemoryAccessPedestal_Pedestal.")
			set this_1 = 0
		endif
	else
		set SeqCallback_firstFree = SeqCallback_firstFree - 1
		set this_1 = SeqCallback_nextFree[SeqCallback_firstFree]
		set SeqCallback_typeId[this_1] = 1132
	endif
	return this_1
endfunction

function MemoryAccessPedestal_saveTileSeq takes integer this_1 returns nothing
	local texttag receiver
	local integer itr_1
	local integer clVar
	call Log_debug("Save tiles seq")
	set receiver = FText_tt[MemoryAccessPedestal_ttag[this_1]]
	call texttag_center(receiver, Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1], "|cff0884CEsaving tiles...", 10.)
	call dispatch_BigString_BigString_BigString_reset(MemoryAccessPedestal_tileString[this_1])
	call dispatch_BigString_BigString_BigString_addString(MemoryAccessPedestal_tileString[this_1], Delimiter_token[Json_JSON_OPEN_ARRAY])
	set itr_1 = dispatch_LinkedList_LinkedList_LinkedList_staticItr(MemoryAccessPedestal_tiles[this_1])
	set clVar = alloc_SeqCallback_doSeq_MemoryAccessPedestal_Pedestal()
	call construct_SeqCallback(clVar)
	set itr_2538[clVar] = itr_1
	set this_3009[clVar] = this_1
	call doSeq(clVar)
endfunction

function dispatch_MemoryAccessPedestal_Pedestal_MemoryAccessPedestal_saveTileSeq takes integer this_1 returns nothing
	if Serializable_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling MemoryAccessPedestal.saveTileSeq")
		else
			call error("Called MemoryAccessPedestal.saveTileSeq on invalid object.")
		endif
	endif
	call MemoryAccessPedestal_saveTileSeq(this_1)
endfunction

function Entity_serialize takes integer this_1 returns integer
	local integer json = new_Json()
	call dispatch_Entity_Entity_Entity_getPos(this_1)
	call dispatch_Json_Json_Json_addProperty(json, new_Property_3730(Entity_KEY_X, int_toString(real_toInt(Entity_pos_x[this_1] - Entity_serializeOrigin_x))))
	call dispatch_Json_Json_Json_addProperty(json, new_Property_3730(Entity_KEY_Y, int_toString(real_toInt(Entity_pos_y[this_1] - Entity_serializeOrigin_y))))
	call dispatch_Json_Json_Json_addProperty(json, new_Property_3730(Entity_KEY_Z, int_toString(real_toInt(Entity_pos_z[this_1] - Entity_serializeOrigin_z))))
	return json
endfunction

function AirKiller_serialize takes integer this_1 returns integer
	local integer json = Entity_serialize(this_1)
	local integer receiver = json
	call dispatch_Json_Json_Json_addProperty(receiver, new_Property_3730(Entity_KEY_TYPE, int_toString(SerializeIds_AIRKILL_INDEX)))
	return json
endfunction

function StaticBaseObject_serialize takes integer this_1 returns integer
	local integer json = Entity_serialize(this_1)
	local integer receiver
	local integer receiver_1
	local real tuple_temp
	local real tuple_temp_1
	local real tuple_temp_2
	if StaticBaseObject_rallyUnit[this_1] != null then
		set tuple_temp = unit_getPos3Zero(StaticBaseObject_rallyUnit[this_1])
		set tuple_temp_1 = unit_getPos3Zero_return_y
		set tuple_temp_2 = unit_getPos3Zero_return_z
		set StaticBaseObject_rallyPoint_x[this_1] = tuple_temp
		set StaticBaseObject_rallyPoint_y[this_1] = tuple_temp_1
		set StaticBaseObject_rallyPoint_z[this_1] = tuple_temp_2
	endif
	set receiver = json
	call dispatch_Json_Json_Json_addProperty(receiver, new_Property_3730(BaseObject_KEY_RALLY_X, int_toString(real_toInt(StaticBaseObject_rallyPoint_x[this_1] - Entity_serializeOrigin_x))))
	set receiver_1 = receiver
	call dispatch_Json_Json_Json_addProperty(receiver_1, new_Property_3730(BaseObject_KEY_RALLY_Y, int_toString(real_toInt(StaticBaseObject_rallyPoint_y[this_1] - Entity_serializeOrigin_y))))
	return json
endfunction

function Arcanery_serialize takes integer this_1 returns integer
	local integer json = StaticBaseObject_serialize(this_1)
	local integer receiver = json
	call dispatch_Json_Json_Json_addProperty(receiver, new_Property_3730(Entity_KEY_TYPE, int_toString(SerializeIds_ARCANERY_INDEX)))
	return json
endfunction

function BigKiller_serialize takes integer this_1 returns integer
	local integer json = Entity_serialize(this_1)
	local integer receiver = json
	call dispatch_Json_Json_Json_addProperty(receiver, new_Property_3730(Entity_KEY_TYPE, int_toString(SerializeIds_BIGKILL_INDEX)))
	return json
endfunction

function BigObstacle_serialize takes integer this_1 returns integer
	local integer json = Entity_serialize(this_1)
	local integer receiver = json
	call dispatch_Json_Json_Json_addProperty(receiver, new_Property_3730(Entity_KEY_TYPE, int_toString(SerializeIds_BIGOBS_INDEX)))
	return json
endfunction

function BigRandomKiller_serialize takes integer this_1 returns integer
	local integer json = Entity_serialize(this_1)
	local integer receiver = json
	call dispatch_Json_Json_Json_addProperty(receiver, new_Property_3730(Entity_KEY_TYPE, int_toString(SerializeIds_BIGRANDKILL_INDEX)))
	return json
endfunction

function Bomber_serialize takes integer this_1 returns integer
	local integer json = Entity_serialize(this_1)
	local integer receiver = json
	call dispatch_Json_Json_Json_addProperty(receiver, new_Property_3730(Entity_KEY_TYPE, int_toString(SerializeIds_BOMBER_INDEX)))
	return json
endfunction

function Bombertower_serialize takes integer this_1 returns integer
	local integer json = StaticBaseObject_serialize(this_1)
	call dispatch_Json_Json_Json_addProperty(json, new_Property_3730(Entity_KEY_TYPE, int_toString(SerializeIds_BOMBTOWER_INDEX)))
	return json
endfunction

function Booster_serialize takes integer this_1 returns integer
	local integer json = StaticBaseObject_serialize(this_1)
	local integer receiver = json
	local integer receiver_1
	call dispatch_Json_Json_Json_addProperty(receiver, new_Property_3730(Entity_KEY_TYPE, int_toString(SerializeIds_BOOSTER_INDEX)))
	if dispatch_ConfigValue_ConfigValue_ConfigValue_getInt(Booster_boostspeed[this_1]) != 200 then
		set receiver_1 = json
		call dispatch_Json_Json_Json_addProperty(receiver_1, new_Property_3730(Booster_BOOST_SPEED_KEY, int_toString(dispatch_ConfigValue_ConfigValue_ConfigValue_getInt(Booster_boostspeed[this_1]))))
	endif
	return json
endfunction

function Boots_serialize takes integer this_1 returns integer
	local integer json = Entity_serialize(this_1)
	local integer receiver = json
	call dispatch_Json_Json_Json_addProperty(receiver, new_Property_3730(Entity_KEY_TYPE, int_toString(SerializeIds_BOOTS_INDEX)))
	return json
endfunction

function Coin_serialize takes integer this_1 returns integer
	local integer json = Entity_serialize(this_1)
	local integer receiver = json
	call dispatch_Json_Json_Json_addProperty(receiver, new_Property_3730(Entity_KEY_TYPE, int_toString(SerializeIds_COIN_INDEX)))
	return json
endfunction

function CongaLineHead_serialize takes integer this_1 returns integer
	local integer json = Entity_serialize(this_1)
	local integer receiver = json
	call dispatch_Json_Json_Json_addProperty(receiver, new_Property_3730(Entity_KEY_TYPE, int_toString(SerializeIds_CONGA_INDEX)))
	return json
endfunction

function Decoration_serialize takes integer this_1 returns integer
	local integer json = Entity_serialize(this_1)
	local integer receiver = json
	local integer receiver_1
	local integer receiver_2
	call dispatch_Json_Json_Json_addProperty(receiver, new_Property_3730(Entity_KEY_TYPE, int_toString(Decoration_tid[this_1])))
	if Decoration_hasBeenChanged[this_1] then
		set receiver_1 = json
		call dispatch_Json_Json_Json_addProperty(receiver_1, new_Property_3730(Decoration_KEY_ANGLE, int_toString(real_toInt(angle_degrees(unit_getFacingAngle(UnitEntity_actor[this_1]))))))
	endif
	if dispatch_ConfigValue_ConfigValue_ConfigValue_get(Decoration_scale[this_1]) != 1.0 then
		set receiver_2 = json
		call dispatch_Json_Json_Json_addProperty(receiver_2, new_Property_3730(Decoration_KEY_SCALE, int_toString(real_toInt(dispatch_ConfigValue_ConfigValue_ConfigValue_get(Decoration_scale[this_1]) * 100.))))
	endif
	return json
endfunction

function Door_serialize takes integer this_1 returns integer
	local integer json = Entity_serialize(this_1)
	call dispatch_Json_Json_Json_addProperty(json, new_Property_3730(Entity_KEY_TYPE, int_toString(SerializeIds_DOOR_INDEX)))
	call dispatch_Json_Json_Json_addProperty(json, new_Property_3730(Door_KEY_COLOR, int_toString(Door_col[this_1])))
	call dispatch_Json_Json_Json_addProperty(json, new_Property_3730(Door_KEY_ROTATION, int_toString(boolean_toInt(Door_vertical[this_1]))))
	return json
endfunction

function Executer_serialize takes integer this_1 returns integer
	local integer json = StaticBaseObject_serialize(this_1)
	local integer receiver = json
	call dispatch_Json_Json_Json_addProperty(receiver, new_Property_3730(Entity_KEY_TYPE, int_toString(SerializeIds_EXECUTER_INDEX)))
	return json
endfunction

function Faceless_serialize takes integer this_1 returns integer
	local integer json = Entity_serialize(this_1)
	local integer receiver = json
	call dispatch_Json_Json_Json_addProperty(receiver, new_Property_3730(Entity_KEY_TYPE, int_toString(SerializeIds_FACELESS_INDEX)))
	return json
endfunction

function FireKiller_serialize takes integer this_1 returns integer
	local integer json = Entity_serialize(this_1)
	local integer receiver = json
	call dispatch_Json_Json_Json_addProperty(receiver, new_Property_3730(Entity_KEY_TYPE, int_toString(SerializeIds_FIREKILL_INDEX)))
	return json
endfunction

function Fountain_serialize takes integer this_1 returns integer
	local integer json = Entity_serialize(this_1)
	call dispatch_Json_Json_Json_addProperty(json, new_Property_3730(Entity_KEY_TYPE, int_toString(SerializeIds_FOUNTAIN_INDEX)))
	return json
endfunction

function GlaiveKiller_serialize takes integer this_1 returns integer
	local integer json = Entity_serialize(this_1)
	local integer receiver = json
	call dispatch_Json_Json_Json_addProperty(receiver, new_Property_3730(Entity_KEY_TYPE, int_toString(SerializeIds_GLAIVEKILL_INDEX)))
	return json
endfunction

function HighObstacle_serialize takes integer this_1 returns integer
	local integer json = Entity_serialize(this_1)
	local integer receiver = json
	call dispatch_Json_Json_Json_addProperty(receiver, new_Property_3730(Entity_KEY_TYPE, int_toString(SerializeIds_HIGH_OBS_INDEX)))
	return json
endfunction

function Jumper_serialize takes integer this_1 returns integer
	local integer json = StaticBaseObject_serialize(this_1)
	call dispatch_Json_Json_Json_addProperty(json, new_Property_3730(Entity_KEY_TYPE, int_toString(SerializeIds_JUMPER_INDEX)))
	call dispatch_Json_Json_Json_addProperty(json, new_Property_3730("f", int_toString(real_toInt(dispatch_ConfigValue_ConfigValue_ConfigValue_get(Jumper_jumpForce[this_1]) * 100.))))
	return json
endfunction

function Key_serialize takes integer this_1 returns integer
	local integer json = Entity_serialize(this_1)
	call dispatch_Json_Json_Json_addProperty(json, new_Property_3730(Entity_KEY_TYPE, int_toString(SerializeIds_KEY_INDEX)))
	call dispatch_Json_Json_Json_addProperty(json, new_Property_3730(Key_KEY_COLOR, int_toString(Key_col[this_1])))
	return json
endfunction

function Knockbacker_serialize takes integer this_1 returns integer
	local integer json = Entity_serialize(this_1)
	local integer receiver = json
	call dispatch_Json_Json_Json_addProperty(receiver, new_Property_3730(Entity_KEY_TYPE, int_toString(SerializeIds_KNOCKBACKER_INDEX)))
	return json
endfunction

function ObjectTarget_serialize takes integer this_1 returns integer
	local integer json = Entity_serialize(this_1)
	local integer receiver = json
	call dispatch_Json_Json_Json_addProperty(receiver, new_Property_3730(Entity_KEY_TYPE, int_toString(SerializeIds_OBJ_TARGET_INDEX)))
	return json
endfunction

function Pointer_serialize takes integer this_1 returns integer
	local integer json = Entity_serialize(this_1)
	local integer receiver = json
	call dispatch_Json_Json_Json_addProperty(receiver, new_Property_3730(Entity_KEY_TYPE, int_toString(SerializeIds_POINTER_INDEX)))
	return json
endfunction

function Powernode_serialize takes integer this_1 returns integer
	local integer json = Entity_serialize(this_1)
	call dispatch_Json_Json_Json_addProperty(json, new_Property_3730(Entity_KEY_TYPE, int_toString(SerializeIds_POWERNODE_INDEX)))
	return json
endfunction

function RevivePoint_serialize takes integer this_1 returns integer
	local integer json = Entity_serialize(this_1)
	local integer receiver = json
	call dispatch_Json_Json_Json_addProperty(receiver, new_Property_3730(Entity_KEY_TYPE, int_toString(SerializeIds_REVIVE_INDEX)))
	return json
endfunction

function SmallKiller_serialize takes integer this_1 returns integer
	local integer json = Entity_serialize(this_1)
	local integer receiver = json
	call dispatch_Json_Json_Json_addProperty(receiver, new_Property_3730(Entity_KEY_TYPE, int_toString(SerializeIds_SMALLKILL_INDEX)))
	return json
endfunction

function SmallObstacle_serialize takes integer this_1 returns integer
	local integer json = Entity_serialize(this_1)
	local integer receiver = json
	call dispatch_Json_Json_Json_addProperty(receiver, new_Property_3730(Entity_KEY_TYPE, int_toString(SerializeIds_SMALLOBS_INDEX)))
	return json
endfunction

function SmallRandomKiller_serialize takes integer this_1 returns integer
	local integer json = Entity_serialize(this_1)
	local integer receiver = json
	call dispatch_Json_Json_Json_addProperty(receiver, new_Property_3730(Entity_KEY_TYPE, int_toString(SerializeIds_SMALLRANDKILL_INDEX)))
	return json
endfunction

function Spinner_serialize takes integer this_1 returns integer
	local integer json = Entity_serialize(this_1)
	call dispatch_Json_Json_Json_addProperty(json, new_Property_3730(Entity_KEY_TYPE, int_toString(SerializeIds_SPINNER_INDEX)))
	return json
endfunction

function TankKiller_serialize takes integer this_1 returns integer
	local integer json = Entity_serialize(this_1)
	local integer receiver = json
	call dispatch_Json_Json_Json_addProperty(receiver, new_Property_3730(Entity_KEY_TYPE, int_toString(SerializeIds_TANKKILL_INDEX)))
	return json
endfunction

function Teleporter_serialize takes integer this_1 returns integer
	local integer json = StaticBaseObject_serialize(this_1)
	call dispatch_Json_Json_Json_addProperty(json, new_Property_3730("t", int_toString(SerializeIds_TELEPORTER_INDEX)))
	return json
endfunction

function TerrainBlocker_serialize takes integer this_1 returns integer
	local integer json = StaticBaseObject_serialize(this_1)
	local integer receiver = json
	call dispatch_Json_Json_Json_addProperty(receiver, new_Property_3730(Entity_KEY_TYPE, int_toString(SerializeIds_TBLOCKER_INDEX)))
	return json
endfunction

function TerrainChanger_serialize takes integer this_1 returns integer
	local integer json = Entity_serialize(this_1)
	local integer receiver = json
	call dispatch_Json_Json_Json_addProperty(receiver, new_Property_3730(Entity_KEY_TYPE, int_toString(SerializeIds_TC_INDEX)))
	return json
endfunction

function Texter_serialize takes integer this_1 returns integer
	local integer json = StaticBaseObject_serialize(this_1)
	local integer receiver = json
	call dispatch_Json_Json_Json_addProperty(receiver, new_Property_3730(Entity_KEY_TYPE, int_toString(SerializeIds_TEXTER_INDEX)))
	return json
endfunction

function Tome_serialize takes integer this_1 returns integer
	local integer json = Entity_serialize(this_1)
	local integer receiver = json
	call dispatch_Json_Json_Json_addProperty(receiver, new_Property_3730(Entity_KEY_TYPE, int_toString(SerializeIds_TOME_INDEX)))
	return json
endfunction

function Tracks_serialize takes integer this_1 returns integer
	local integer json = Entity_serialize(this_1)
	call dispatch_Json_Json_Json_addProperty(json, new_Property_3730(Entity_KEY_TYPE, int_toString(SerializeIds_TRACKS_INDEX)))
	return json
endfunction

function Trap_serialize takes integer this_1 returns integer
	local integer json = StaticBaseObject_serialize(this_1)
	local integer receiver = json
	call dispatch_Json_Json_Json_addProperty(receiver, new_Property_3730(Entity_KEY_TYPE, int_toString(SerializeIds_TRAP_INDEX)))
	return json
endfunction

function Tree_serialize takes integer this_1 returns integer
	local integer json = Entity_serialize(this_1)
	local integer receiver = json
	call dispatch_Json_Json_Json_addProperty(receiver, new_Property_3730(Entity_KEY_TYPE, int_toString(SerializeIds_TREE_INDEX)))
	return json
endfunction

function UnitCreator_serialize takes integer this_1 returns integer
	local integer json = StaticBaseObject_serialize(this_1)
	local integer receiver = json
	local integer receiver_1
	call dispatch_Json_Json_Json_addProperty(receiver, new_Property_3730(Entity_KEY_TYPE, int_toString(SerializeIds_UNITCREATOR_INDEX)))
	set receiver_1 = json
	call dispatch_Json_Json_Json_addProperty(receiver_1, new_Property_3730(Unitcreator_KEY_SPAWN, int_toString(UnitCreator_spawnUnitType[this_1])))
	return json
endfunction

function UnitRemover_serialize takes integer this_1 returns integer
	local integer json = StaticBaseObject_serialize(this_1)
	local integer receiver = json
	call dispatch_Json_Json_Json_addProperty(receiver, new_Property_3730(Entity_KEY_TYPE, int_toString(SerializeIds_UNITREMOVER_INDEX)))
	return json
endfunction

function VolcanoObstacle_serialize takes integer this_1 returns integer
	local integer json = Entity_serialize(this_1)
	local integer receiver = json
	call dispatch_Json_Json_Json_addProperty(receiver, new_Property_3730(Entity_KEY_TYPE, int_toString(SerializeIds_VOLCANO_INDEX)))
	return json
endfunction

function Vortex_serialize takes integer this_1 returns integer
	local integer json = Entity_serialize(this_1)
	call dispatch_Json_Json_Json_addProperty(json, new_Property_3730(Entity_KEY_TYPE, int_toString(SerializeIds_VORTEX_INDEX)))
	return json
endfunction

function Wall_serialize takes integer this_1 returns integer
	local integer json = Entity_serialize(this_1)
	local integer receiver = json
	call dispatch_Json_Json_Json_addProperty(receiver, new_Property_3730(Entity_KEY_TYPE, int_toString(Wall_tId[this_1])))
	return json
endfunction

function Waypoint_serialize takes integer this_1 returns integer
	local integer json = StaticBaseObject_serialize(this_1)
	local integer receiver = json
	call dispatch_Json_Json_Json_addProperty(receiver, new_Property_3730(Entity_KEY_TYPE, int_toString(SerializeIds_WAYPOINT_INDEX)))
	return json
endfunction

function cyc_dispatch_Entity_Entity_Entity_serialize takes integer funcChoice, integer this_1 returns nothing
	local integer Entity_Entity_serialize_result
	if funcChoice == 0 then
		if Serializable_typeId[this_1] == 0 then
			if this_1 == 0 then
				call error("Nullpointer exception when calling Entity.serialize")
			else
				call error("Called Entity.serialize on invalid object.")
			endif
		endif
		if Serializable_typeId[this_1] <= 1194 then
			if Serializable_typeId[this_1] <= 1179 then
				if Serializable_typeId[this_1] <= 1168 then
					if Serializable_typeId[this_1] <= 1157 then
						if Serializable_typeId[this_1] <= 1155 then
							if Serializable_typeId[this_1] <= 1154 then
								set Entity_Entity_serialize_result = Entity_serialize(this_1)
							else
								set Entity_Entity_serialize_result = Boots_serialize(this_1)
							endif
						elseif Serializable_typeId[this_1] <= 1156 then
							set Entity_Entity_serialize_result = Coin_serialize(this_1)
						else
							set Entity_Entity_serialize_result = Key_serialize(this_1)
						endif
					elseif Serializable_typeId[this_1] <= 1160 then
						if Serializable_typeId[this_1] <= 1158 then
							set Entity_Entity_serialize_result = Tome_serialize(this_1)
						else
							set Entity_Entity_serialize_result = Entity_serialize(this_1)
						endif
					elseif Serializable_typeId[this_1] <= 1161 then
						set Entity_Entity_serialize_result = Bomber_serialize(this_1)
					else
						set Entity_Entity_serialize_result = Entity_serialize(this_1)
					endif
				elseif Serializable_typeId[this_1] <= 1175 then
					if Serializable_typeId[this_1] <= 1173 then
						if Serializable_typeId[this_1] <= 1169 then
							call cyc_dispatch_Entity_Entity_Entity_serialize(1, this_1)
							set Entity_Entity_serialize_result = tempReturn_integer
						else
							set Entity_Entity_serialize_result = Entity_serialize(this_1)
						endif
					elseif Serializable_typeId[this_1] <= 1174 then
						set Entity_Entity_serialize_result = CongaLineHead_serialize(this_1)
					else
						set Entity_Entity_serialize_result = Entity_serialize(this_1)
					endif
				elseif Serializable_typeId[this_1] <= 1177 then
					if Serializable_typeId[this_1] <= 1176 then
						set Entity_Entity_serialize_result = AirKiller_serialize(this_1)
					else
						set Entity_Entity_serialize_result = BigKiller_serialize(this_1)
					endif
				elseif Serializable_typeId[this_1] <= 1178 then
					set Entity_Entity_serialize_result = BigRandomKiller_serialize(this_1)
				else
					set Entity_Entity_serialize_result = Faceless_serialize(this_1)
				endif
			elseif Serializable_typeId[this_1] <= 1187 then
				if Serializable_typeId[this_1] <= 1183 then
					if Serializable_typeId[this_1] <= 1181 then
						if Serializable_typeId[this_1] <= 1180 then
							set Entity_Entity_serialize_result = FireKiller_serialize(this_1)
						else
							set Entity_Entity_serialize_result = GlaiveKiller_serialize(this_1)
						endif
					elseif Serializable_typeId[this_1] <= 1182 then
						set Entity_Entity_serialize_result = Knockbacker_serialize(this_1)
					else
						set Entity_Entity_serialize_result = Entity_serialize(this_1)
					endif
				elseif Serializable_typeId[this_1] <= 1185 then
					if Serializable_typeId[this_1] <= 1184 then
						set Entity_Entity_serialize_result = Pointer_serialize(this_1)
					else
						set Entity_Entity_serialize_result = SmallKiller_serialize(this_1)
					endif
				elseif Serializable_typeId[this_1] <= 1186 then
					set Entity_Entity_serialize_result = SmallRandomKiller_serialize(this_1)
				else
					set Entity_Entity_serialize_result = TankKiller_serialize(this_1)
				endif
			elseif Serializable_typeId[this_1] <= 1191 then
				if Serializable_typeId[this_1] <= 1189 then
					if Serializable_typeId[this_1] <= 1188 then
						set Entity_Entity_serialize_result = ObjectTarget_serialize(this_1)
					else
						set Entity_Entity_serialize_result = Powernode_serialize(this_1)
					endif
				elseif Serializable_typeId[this_1] <= 1190 then
					set Entity_Entity_serialize_result = Entity_serialize(this_1)
				else
					set Entity_Entity_serialize_result = Spinner_serialize(this_1)
				endif
			elseif Serializable_typeId[this_1] <= 1193 then
				if Serializable_typeId[this_1] <= 1192 then
					set Entity_Entity_serialize_result = TerrainChanger_serialize(this_1)
				else
					set Entity_Entity_serialize_result = Entity_serialize(this_1)
				endif
			else
				set Entity_Entity_serialize_result = StaticBaseObject_serialize(this_1)
			endif
		elseif Serializable_typeId[this_1] <= 1212 then
			if Serializable_typeId[this_1] <= 1204 then
				if Serializable_typeId[this_1] <= 1198 then
					if Serializable_typeId[this_1] <= 1196 then
						if Serializable_typeId[this_1] <= 1195 then
							set Entity_Entity_serialize_result = Arcanery_serialize(this_1)
						else
							set Entity_Entity_serialize_result = Bombertower_serialize(this_1)
						endif
					elseif Serializable_typeId[this_1] <= 1197 then
						set Entity_Entity_serialize_result = Booster_serialize(this_1)
					else
						set Entity_Entity_serialize_result = StaticBaseObject_serialize(this_1)
					endif
				elseif Serializable_typeId[this_1] <= 1200 then
					if Serializable_typeId[this_1] <= 1199 then
						set Entity_Entity_serialize_result = Executer_serialize(this_1)
					else
						set Entity_Entity_serialize_result = Jumper_serialize(this_1)
					endif
				elseif Serializable_typeId[this_1] <= 1203 then
					set Entity_Entity_serialize_result = StaticBaseObject_serialize(this_1)
				else
					set Entity_Entity_serialize_result = Teleporter_serialize(this_1)
				endif
			elseif Serializable_typeId[this_1] <= 1208 then
				if Serializable_typeId[this_1] <= 1206 then
					if Serializable_typeId[this_1] <= 1205 then
						set Entity_Entity_serialize_result = TerrainBlocker_serialize(this_1)
					else
						set Entity_Entity_serialize_result = Texter_serialize(this_1)
					endif
				elseif Serializable_typeId[this_1] <= 1207 then
					set Entity_Entity_serialize_result = Trap_serialize(this_1)
				else
					set Entity_Entity_serialize_result = UnitCreator_serialize(this_1)
				endif
			elseif Serializable_typeId[this_1] <= 1210 then
				if Serializable_typeId[this_1] <= 1209 then
					set Entity_Entity_serialize_result = StaticBaseObject_serialize(this_1)
				else
					set Entity_Entity_serialize_result = UnitRemover_serialize(this_1)
				endif
			elseif Serializable_typeId[this_1] <= 1211 then
				set Entity_Entity_serialize_result = Waypoint_serialize(this_1)
			else
				set Entity_Entity_serialize_result = Entity_serialize(this_1)
			endif
		elseif Serializable_typeId[this_1] <= 1220 then
			if Serializable_typeId[this_1] <= 1216 then
				if Serializable_typeId[this_1] <= 1214 then
					if Serializable_typeId[this_1] <= 1213 then
						set Entity_Entity_serialize_result = Decoration_serialize(this_1)
					else
						set Entity_Entity_serialize_result = Door_serialize(this_1)
					endif
				elseif Serializable_typeId[this_1] <= 1215 then
					set Entity_Entity_serialize_result = Fountain_serialize(this_1)
				else
					set Entity_Entity_serialize_result = RevivePoint_serialize(this_1)
				endif
			elseif Serializable_typeId[this_1] <= 1218 then
				if Serializable_typeId[this_1] <= 1217 then
					set Entity_Entity_serialize_result = Entity_serialize(this_1)
				else
					set Entity_Entity_serialize_result = BigObstacle_serialize(this_1)
				endif
			elseif Serializable_typeId[this_1] <= 1219 then
				set Entity_Entity_serialize_result = HighObstacle_serialize(this_1)
			else
				set Entity_Entity_serialize_result = SmallObstacle_serialize(this_1)
			endif
		elseif Serializable_typeId[this_1] <= 1224 then
			if Serializable_typeId[this_1] <= 1222 then
				if Serializable_typeId[this_1] <= 1221 then
					set Entity_Entity_serialize_result = VolcanoObstacle_serialize(this_1)
				else
					set Entity_Entity_serialize_result = Wall_serialize(this_1)
				endif
			elseif Serializable_typeId[this_1] <= 1223 then
				set Entity_Entity_serialize_result = Entity_serialize(this_1)
			else
				set Entity_Entity_serialize_result = Tracks_serialize(this_1)
			endif
		elseif Serializable_typeId[this_1] <= 1226 then
			if Serializable_typeId[this_1] <= 1225 then
				set Entity_Entity_serialize_result = Tree_serialize(this_1)
			else
				set Entity_Entity_serialize_result = Vortex_serialize(this_1)
			endif
		else
			set Entity_Entity_serialize_result = Entity_serialize(this_1)
		endif
		set tempReturn_integer = Entity_Entity_serialize_result
		return
	elseif funcChoice == 1 then
		call cyc_dispatch_Entity_Entity_Entity_serialize(0, ItemEntityBridge_obj[this_1])
		set tempReturn_integer = tempReturn_integer
		return
	endif
endfunction

function dispatch_Serializable_Entity_Serializable_serialize takes integer this_1 returns integer
	local integer Entity_Serializable_serialize_result
	if Serializable_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling Serializable.serialize")
		else
			call error("Called Serializable.serialize on invalid object.")
		endif
	endif
	if Serializable_typeId[this_1] <= 1195 then
		if Serializable_typeId[this_1] <= 1179 then
			if Serializable_typeId[this_1] <= 1168 then
				if Serializable_typeId[this_1] <= 1157 then
					if Serializable_typeId[this_1] <= 1155 then
						if Serializable_typeId[this_1] <= 1154 then
							set Entity_Serializable_serialize_result = Entity_serialize(this_1)
						else
							set Entity_Serializable_serialize_result = Boots_serialize(this_1)
						endif
					elseif Serializable_typeId[this_1] <= 1156 then
						set Entity_Serializable_serialize_result = Coin_serialize(this_1)
					else
						set Entity_Serializable_serialize_result = Key_serialize(this_1)
					endif
				elseif Serializable_typeId[this_1] <= 1160 then
					if Serializable_typeId[this_1] <= 1158 then
						set Entity_Serializable_serialize_result = Tome_serialize(this_1)
					else
						set Entity_Serializable_serialize_result = Entity_serialize(this_1)
					endif
				elseif Serializable_typeId[this_1] <= 1161 then
					set Entity_Serializable_serialize_result = Bomber_serialize(this_1)
				else
					set Entity_Serializable_serialize_result = Entity_serialize(this_1)
				endif
			elseif Serializable_typeId[this_1] <= 1175 then
				if Serializable_typeId[this_1] <= 1173 then
					if Serializable_typeId[this_1] <= 1169 then
						call cyc_dispatch_Entity_Entity_Entity_serialize(1, this_1)
						set Entity_Serializable_serialize_result = tempReturn_integer
					else
						set Entity_Serializable_serialize_result = Entity_serialize(this_1)
					endif
				elseif Serializable_typeId[this_1] <= 1174 then
					set Entity_Serializable_serialize_result = CongaLineHead_serialize(this_1)
				else
					set Entity_Serializable_serialize_result = Entity_serialize(this_1)
				endif
			elseif Serializable_typeId[this_1] <= 1177 then
				if Serializable_typeId[this_1] <= 1176 then
					set Entity_Serializable_serialize_result = AirKiller_serialize(this_1)
				else
					set Entity_Serializable_serialize_result = BigKiller_serialize(this_1)
				endif
			elseif Serializable_typeId[this_1] <= 1178 then
				set Entity_Serializable_serialize_result = BigRandomKiller_serialize(this_1)
			else
				set Entity_Serializable_serialize_result = Faceless_serialize(this_1)
			endif
		elseif Serializable_typeId[this_1] <= 1187 then
			if Serializable_typeId[this_1] <= 1183 then
				if Serializable_typeId[this_1] <= 1181 then
					if Serializable_typeId[this_1] <= 1180 then
						set Entity_Serializable_serialize_result = FireKiller_serialize(this_1)
					else
						set Entity_Serializable_serialize_result = GlaiveKiller_serialize(this_1)
					endif
				elseif Serializable_typeId[this_1] <= 1182 then
					set Entity_Serializable_serialize_result = Knockbacker_serialize(this_1)
				else
					set Entity_Serializable_serialize_result = Entity_serialize(this_1)
				endif
			elseif Serializable_typeId[this_1] <= 1185 then
				if Serializable_typeId[this_1] <= 1184 then
					set Entity_Serializable_serialize_result = Pointer_serialize(this_1)
				else
					set Entity_Serializable_serialize_result = SmallKiller_serialize(this_1)
				endif
			elseif Serializable_typeId[this_1] <= 1186 then
				set Entity_Serializable_serialize_result = SmallRandomKiller_serialize(this_1)
			else
				set Entity_Serializable_serialize_result = TankKiller_serialize(this_1)
			endif
		elseif Serializable_typeId[this_1] <= 1191 then
			if Serializable_typeId[this_1] <= 1189 then
				if Serializable_typeId[this_1] <= 1188 then
					set Entity_Serializable_serialize_result = ObjectTarget_serialize(this_1)
				else
					set Entity_Serializable_serialize_result = Powernode_serialize(this_1)
				endif
			elseif Serializable_typeId[this_1] <= 1190 then
				set Entity_Serializable_serialize_result = Entity_serialize(this_1)
			else
				set Entity_Serializable_serialize_result = Spinner_serialize(this_1)
			endif
		elseif Serializable_typeId[this_1] <= 1193 then
			if Serializable_typeId[this_1] <= 1192 then
				set Entity_Serializable_serialize_result = TerrainChanger_serialize(this_1)
			else
				set Entity_Serializable_serialize_result = Entity_serialize(this_1)
			endif
		elseif Serializable_typeId[this_1] <= 1194 then
			set Entity_Serializable_serialize_result = StaticBaseObject_serialize(this_1)
		else
			set Entity_Serializable_serialize_result = Arcanery_serialize(this_1)
		endif
	elseif Serializable_typeId[this_1] <= 1213 then
		if Serializable_typeId[this_1] <= 1205 then
			if Serializable_typeId[this_1] <= 1199 then
				if Serializable_typeId[this_1] <= 1197 then
					if Serializable_typeId[this_1] <= 1196 then
						set Entity_Serializable_serialize_result = Bombertower_serialize(this_1)
					else
						set Entity_Serializable_serialize_result = Booster_serialize(this_1)
					endif
				elseif Serializable_typeId[this_1] <= 1198 then
					set Entity_Serializable_serialize_result = StaticBaseObject_serialize(this_1)
				else
					set Entity_Serializable_serialize_result = Executer_serialize(this_1)
				endif
			elseif Serializable_typeId[this_1] <= 1203 then
				if Serializable_typeId[this_1] <= 1200 then
					set Entity_Serializable_serialize_result = Jumper_serialize(this_1)
				else
					set Entity_Serializable_serialize_result = StaticBaseObject_serialize(this_1)
				endif
			elseif Serializable_typeId[this_1] <= 1204 then
				set Entity_Serializable_serialize_result = Teleporter_serialize(this_1)
			else
				set Entity_Serializable_serialize_result = TerrainBlocker_serialize(this_1)
			endif
		elseif Serializable_typeId[this_1] <= 1209 then
			if Serializable_typeId[this_1] <= 1207 then
				if Serializable_typeId[this_1] <= 1206 then
					set Entity_Serializable_serialize_result = Texter_serialize(this_1)
				else
					set Entity_Serializable_serialize_result = Trap_serialize(this_1)
				endif
			elseif Serializable_typeId[this_1] <= 1208 then
				set Entity_Serializable_serialize_result = UnitCreator_serialize(this_1)
			else
				set Entity_Serializable_serialize_result = StaticBaseObject_serialize(this_1)
			endif
		elseif Serializable_typeId[this_1] <= 1211 then
			if Serializable_typeId[this_1] <= 1210 then
				set Entity_Serializable_serialize_result = UnitRemover_serialize(this_1)
			else
				set Entity_Serializable_serialize_result = Waypoint_serialize(this_1)
			endif
		elseif Serializable_typeId[this_1] <= 1212 then
			set Entity_Serializable_serialize_result = Entity_serialize(this_1)
		else
			set Entity_Serializable_serialize_result = Decoration_serialize(this_1)
		endif
	elseif Serializable_typeId[this_1] <= 1221 then
		if Serializable_typeId[this_1] <= 1217 then
			if Serializable_typeId[this_1] <= 1215 then
				if Serializable_typeId[this_1] <= 1214 then
					set Entity_Serializable_serialize_result = Door_serialize(this_1)
				else
					set Entity_Serializable_serialize_result = Fountain_serialize(this_1)
				endif
			elseif Serializable_typeId[this_1] <= 1216 then
				set Entity_Serializable_serialize_result = RevivePoint_serialize(this_1)
			else
				set Entity_Serializable_serialize_result = Entity_serialize(this_1)
			endif
		elseif Serializable_typeId[this_1] <= 1219 then
			if Serializable_typeId[this_1] <= 1218 then
				set Entity_Serializable_serialize_result = BigObstacle_serialize(this_1)
			else
				set Entity_Serializable_serialize_result = HighObstacle_serialize(this_1)
			endif
		elseif Serializable_typeId[this_1] <= 1220 then
			set Entity_Serializable_serialize_result = SmallObstacle_serialize(this_1)
		else
			set Entity_Serializable_serialize_result = VolcanoObstacle_serialize(this_1)
		endif
	elseif Serializable_typeId[this_1] <= 1225 then
		if Serializable_typeId[this_1] <= 1223 then
			if Serializable_typeId[this_1] <= 1222 then
				set Entity_Serializable_serialize_result = Wall_serialize(this_1)
			else
				set Entity_Serializable_serialize_result = Entity_serialize(this_1)
			endif
		elseif Serializable_typeId[this_1] <= 1224 then
			set Entity_Serializable_serialize_result = Tracks_serialize(this_1)
		else
			set Entity_Serializable_serialize_result = Tree_serialize(this_1)
		endif
	elseif Serializable_typeId[this_1] <= 1227 then
		if Serializable_typeId[this_1] <= 1226 then
			set Entity_Serializable_serialize_result = Vortex_serialize(this_1)
		else
			set Entity_Serializable_serialize_result = Entity_serialize(this_1)
		endif
	else
		set Entity_Serializable_serialize_result = TileData_serialize(this_1)
	endif
	return Entity_Serializable_serialize_result
endfunction

function onExecute_doSeq_nullTimer_MemoryAccessPedestal_Pedestal takes integer this_1, integer cb_1 returns boolean
	local boolean continue = true
	local integer next
	local integer json
	if dispatch_HLIterator_HashList_HLIterator_hasNext(itr_2537[this_1]) then
		set next = dispatch_HLIterator_HashList_HLIterator_next(itr_2537[this_1])
		if dispatch_MemoryAccessPedestal_Pedestal_MemoryAccessPedestal_isValid(this_3008[this_1], next) then
			set json = dispatch_Serializable_Entity_Serializable_serialize(next)
			call dispatch_Json_Json_Json_addToBigString(json, MemoryAccessPedestal_entString[this_3008[this_1]])
			call dispatch_Json_destroyJson(json)
			if dispatch_HLIterator_HashList_HLIterator_hasNext(itr_2537[this_1]) then
				call dispatch_BigString_BigString_BigString_addString(MemoryAccessPedestal_entString[this_3008[this_1]], Delimiter_token[Json_JSON_SIGN_COMMA])
			endif
			call effect_destr(effectFromIndex(dispatch_HashMap_HashMap_HashMap_get(MemoryAccessPedestal_effects[this_3008[this_1]], next)))
			call dispatch_HashMap_HashMap_HashMap_remove(MemoryAccessPedestal_effects[this_3008[this_1]], next)
			call dispatch_HLIterator_HashList_HLIterator_remove(itr_2537[this_1])
		endif
	else
		set continue = false
		call dispatch_BigString_BigString_BigString_addString(MemoryAccessPedestal_entString[this_3008[this_1]], Delimiter_token[Json_JSON_CLOSE_ARRAY])
		call Log_debug("Save tiles")
		call dispatch_MemoryAccessPedestal_Pedestal_MemoryAccessPedestal_saveTileSeq(this_3008[this_1])
	endif
	return continue
endfunction

function BigNum_isZero takes integer this_1 returns boolean
	local integer cur = BigNum_list[this_1]
	loop
		exitwhen  not (cur != 0)
		if BigNum_l_leaf[cur] != 0 then
			return false
		endif
		set cur = BigNum_l_next[cur]
	endloop
	return true
endfunction

function dispatch_BigNum_BigNum_BigNum_isZero takes integer this_1 returns boolean
	local boolean BigNum_BigNum_isZero_result
	if BigNum_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling BigNum.isZero")
		else
			call error("Called BigNum.isZero on invalid object.")
		endif
	endif
	set BigNum_BigNum_isZero_result = BigNum_isZero(this_1)
	return BigNum_BigNum_isZero_result
endfunction

function LinkedList_addtoStart takes integer this_1, integer elem returns nothing
	local integer entry = new_LLEntry(elem, LinkedList_dummy[this_1], LLEntry_next[LinkedList_dummy[this_1]])
	set LLEntry_prev[LLEntry_next[LinkedList_dummy[this_1]]] = entry
	set LLEntry_next[LinkedList_dummy[this_1]] = entry
	set LinkedList_size[this_1] = LinkedList_size[this_1] + 1
endfunction

function dispatch_LinkedList_LinkedList_LinkedList_addtoStart takes integer this_1, integer elem returns nothing
	if LinkedList_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling LinkedList.addtoStart")
		else
			call error("Called LinkedList.addtoStart on invalid object.")
		endif
	endif
	call LinkedList_addtoStart(this_1, elem)
endfunction

function onExecute_doSeq_nullTimer_load_LZW takes integer this_1, integer cb1_1 returns boolean
	local boolean continue = true
	local integer dec
	local string st
	local integer iterator
	local integer s
	if  not dispatch_BigNum_BigNum_BigNum_isZero(Encoder_bignum[encoder_2348[this_1]]) then
		set dec = dispatch_Encoder_Encoder_Encoder_decode(encoder_2348[this_1], dictSize_2304[this_1])
		call dispatch_LinkedList_LinkedList_LinkedList_addtoStart(positions[this_1], dec)
	else
		set continue = false
		if Printing_config_DEBUG_LEVEL == 0 then
			set st = ""
			set iterator = LinkedList_iterator(positions[this_1])
			loop
				exitwhen  not LLIterator_hasNext(iterator)
				set s = LLIterator_next(iterator)
				set st = st + int_toString(s) + ","
			endloop
			call LLIterator_close(iterator)
			call printLog(0, "decoded positions: " + st)
		endif
		set PayloadCallback_customData[onFinish_2556[this_1]] = positions[this_1]
		call cyc_onExecute_save_doSeq_LZW(24, onFinish_2556[this_1], 0, null, 0, 0)
	endif
	return continue
endfunction

function dispatch_SeqCallback_SeqWorker_SeqCallback_onExecute takes integer this_1, integer cb_1 returns boolean
	local boolean SeqWorker_SeqCallback_onExecute_result
	if SeqCallback_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling SeqCallback.onExecute")
		else
			call error("Called SeqCallback.onExecute on invalid object.")
		endif
	endif
	if SeqCallback_typeId[this_1] <= 1130 then
		if SeqCallback_typeId[this_1] <= 1128 then
			if SeqCallback_typeId[this_1] <= 1127 then
				if SeqCallback_typeId[this_1] <= 1126 then
					set SeqWorker_SeqCallback_onExecute_result = onExecute_doSeq_Encoder_Encoder(this_1, cb_1)
				else
					set SeqWorker_SeqCallback_onExecute_result = onExecute_doSeq_Encoder_Encoder_3875(this_1, cb_1)
				endif
			else
				set SeqWorker_SeqCallback_onExecute_result = onExecute_doSeq_JsonParser_JsonParser(this_1, cb_1)
			endif
		elseif SeqCallback_typeId[this_1] <= 1129 then
			set SeqWorker_SeqCallback_onExecute_result = onExecute_doSeq_JsonParser_JsonParser_3877(this_1, cb_1)
		else
			set SeqWorker_SeqCallback_onExecute_result = onExecute_doSeq_LZW(this_1, cb_1)
		endif
	elseif SeqCallback_typeId[this_1] <= 1133 then
		if SeqCallback_typeId[this_1] <= 1132 then
			if SeqCallback_typeId[this_1] <= 1131 then
				set SeqWorker_SeqCallback_onExecute_result = onExecute_doSeq_LZW_3879(this_1, cb_1)
			else
				set SeqWorker_SeqCallback_onExecute_result = onExecute_doSeq_MemoryAccessPedestal_Pedestal(this_1, cb_1)
			endif
		else
			set SeqWorker_SeqCallback_onExecute_result = onExecute_doSeq_decodePositions_LZW(this_1, cb_1)
		endif
	elseif SeqCallback_typeId[this_1] <= 1134 then
		set SeqWorker_SeqCallback_onExecute_result = onExecute_doSeq_nullTimer_MemoryAccessPedestal_Pedestal(this_1, cb_1)
	else
		set SeqWorker_SeqCallback_onExecute_result = onExecute_doSeq_nullTimer_load_LZW(this_1, cb_1)
	endif
	return SeqWorker_SeqCallback_onExecute_result
endfunction

function SeqCallback_doStep takes integer this_1 returns boolean
	if  not SeqCallback_done[this_1] then
		return dispatch_SeqCallback_SeqWorker_SeqCallback_onExecute(this_1, this_1)
	endif
	return false
endfunction

function dispatch_SeqCallback_SeqWorker_SeqCallback_doStep takes integer this_1 returns boolean
	local boolean SeqWorker_SeqCallback_doStep_result
	if SeqCallback_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling SeqCallback.doStep")
		else
			call error("Called SeqCallback.doStep on invalid object.")
		endif
	endif
	set SeqWorker_SeqCallback_doStep_result = SeqCallback_doStep(this_1)
	return SeqWorker_SeqCallback_doStep_result
endfunction

function SeqCallback_onDestroy takes integer this_1 returns nothing
	if SeqCallback_ref[this_1] != null then
		call timer_release(SeqCallback_ref[this_1])
		set SeqCallback_ref[this_1] = null
	endif
endfunction

function dealloc_SeqCallback takes integer obj_1 returns nothing
	if SeqCallback_typeId[obj_1] == 0 then
		call error("Double free: object of type SeqCallback")
	else
		set SeqCallback_nextFree[SeqCallback_firstFree] = obj_1
		set SeqCallback_firstFree = SeqCallback_firstFree + 1
		set SeqCallback_typeId[obj_1] = 0
	endif
endfunction

function destroySeqCallback takes integer this_1 returns nothing
	call SeqCallback_onDestroy(this_1)
	call dealloc_SeqCallback(this_1)
endfunction

function dispatch_SeqCallback_destroySeqCallback takes integer this_1 returns nothing
	if SeqCallback_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling SeqCallback.SeqCallback")
		else
			call error("Called SeqCallback.SeqCallback on invalid object.")
		endif
	endif
	call destroySeqCallback(this_1)
endfunction

function SeqCallback_terminate takes integer this_1 returns nothing
	if ( not SeqCallback_done[this_1]) or SeqCallback_ref[this_1] != null then
		set SeqCallback_done[this_1] = true
		call dispatch_SeqCallback_destroySeqCallback(this_1)
	endif
endfunction

function dispatch_SeqCallback_SeqWorker_SeqCallback_terminate takes integer this_1 returns nothing
	if SeqCallback_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling SeqCallback.terminate")
		else
			call error("Called SeqCallback.terminate on invalid object.")
		endif
	endif
	call SeqCallback_terminate(this_1)
endfunction

function onSeq takes nothing returns nothing
	local timer time = GetExpiredTimer()
	local integer rcb = timer_getData(time)
	if ( not SeqCallback_done[rcb]) and SeqCallback_ref[rcb] != null then
		if dispatch_SeqCallback_SeqWorker_SeqCallback_doStep(rcb) then
			call timer_start(time, 0.001, ref_function_code__start_SeqWorker_2675)
		else
			call dispatch_SeqCallback_SeqWorker_SeqCallback_terminate(rcb)
		endif
	endif
endfunction

function code__start_SeqWorker takes nothing returns nothing
	call onSeq()
endfunction

function code__start_SeqWorker_2101 takes nothing returns nothing
	call onSeq()
endfunction

function correctKeys takes nothing returns nothing
	local item itm = GetEnumItem()
	local integer k
	local integer k_1
	if GetItemTypeId(itm) == 1227894841 then
		call new_Key(GetItemX(itm), GetItemY(itm), GameConstants_STAFF_PLAYER)
		call item_remove(itm)
	elseif GetItemTypeId(itm) == 1227894858 then
		set k = new_Key(GetItemX(itm), GetItemY(itm), GameConstants_STAFF_PLAYER)
		set Key_col[k] = 4
		call dispatch_Key_Key_Key_recolor(k)
		call item_remove(itm)
	elseif GetItemTypeId(itm) == 1227894840 then
		set k_1 = new_Key(GetItemX(itm), GetItemY(itm), GameConstants_STAFF_PLAYER)
		set Key_col[k_1] = 3
		call dispatch_Key_Key_Key_recolor(k_1)
		call item_remove(itm)
	endif
endfunction

function correctRegion takes nothing returns nothing
	local integer from = dispatch_LinkedList_LinkedList_LinkedList_staticItr(Escaper_escapers)
	local integer e_1
	loop
		exitwhen  not LLIterator_hasNext(from)
		set e_1 = LLIterator_next(from)
		call dispatch_Escaper_Escaper_Escaper_updateRegionData(e_1)
	endloop
endfunction

function deleteKeys takes nothing returns nothing
	local item itm = GetEnumItem()
	if item_getEntity(itm) != 0 then
		call Log_debug("Delete Keys")
		call cyc_RevivePoint_terminate(18, item_getEntity(itm))
	else
		call item_remove(itm)
	endif
endfunction

function cyc_BigNum_l_clean takes integer funcChoice, integer this_1 returns nothing
	local boolean BigNum_BigNum_l_clean_result
	local boolean andLeft
	if funcChoice == 0 then
		if BigNum_l_next[this_1] == 0 and BigNum_l_leaf[this_1] == 0 then
			set tempReturn_boolean = true
			return
		else
			if BigNum_l_next[this_1] != 0 then
				call cyc_BigNum_l_clean(1, BigNum_l_next[this_1])
				set andLeft = tempReturn_boolean
			else
				set andLeft = false
			endif
			if andLeft then
				call dispatch_BigNum_l_destroyBigNum_l(BigNum_l_next[this_1])
				set BigNum_l_next[this_1] = 0
				set tempReturn_boolean = BigNum_l_leaf[this_1] == 0
				return
			else
				set tempReturn_boolean = false
				return
			endif
		endif
	elseif funcChoice == 1 then
		if BigNum_l_typeId[this_1] == 0 then
			if this_1 == 0 then
				call error("Nullpointer exception when calling BigNum_l.clean")
			else
				call error("Called BigNum_l.clean on invalid object.")
			endif
		endif
		call cyc_BigNum_l_clean(0, this_1)
		set BigNum_BigNum_l_clean_result = tempReturn_boolean
		set tempReturn_boolean = BigNum_BigNum_l_clean_result
		return
	endif
endfunction

function BigNum_clean takes integer this_1 returns nothing
	call cyc_BigNum_l_clean(1, BigNum_list[this_1])
endfunction

function dispatch_BigNum_BigNum_BigNum_clean takes integer this_1 returns nothing
	if BigNum_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling BigNum.clean")
		else
			call error("Called BigNum.clean on invalid object.")
		endif
	endif
	call BigNum_clean(this_1)
endfunction

function Encoder_clean takes integer this_1 returns nothing
	call dispatch_BigNum_BigNum_BigNum_clean(Encoder_bignum[this_1])
endfunction

function dispatch_Encoder_Encoder_Encoder_clean takes integer this_1 returns nothing
	if Encoder_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling Encoder.clean")
		else
			call error("Called Encoder.clean on invalid object.")
		endif
	endif
	call Encoder_clean(this_1)
endfunction

function run_execute_Encoder_Encoder takes integer this_1 returns nothing
	call dispatch_Encoder_Encoder_Encoder_clean(this_2890[this_1])
endfunction

function Encoder_hash_1 takes integer this_1 returns integer
	local integer hash
	local integer x
	local integer cur
	call Log_debug("hash")
	set hash = 0
	set cur = BigNum_list[Encoder_bignum[this_1]]
	loop
		exitwhen  not (cur != 0)
		set x = BigNum_l_leaf[cur]
		set hash = ModuloInteger(hash + 79 * hash / (x + 1) + 293 * x / (1 + hash - hash / Encoder_base[this_1] * Encoder_base[this_1]) + 479, Encoder_maxHash)
		set cur = BigNum_l_next[cur]
	endloop
	call Log_debug("hashed")
	return hash
endfunction

function dispatch_Encoder_Encoder_Encoder_hash takes integer this_1 returns integer
	local integer Encoder_Encoder_hash_result
	if Encoder_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling Encoder.hash")
		else
			call error("Called Encoder.hash on invalid object.")
		endif
	endif
	set Encoder_Encoder_hash_result = Encoder_hash_1(this_1)
	return Encoder_Encoder_hash_result
endfunction

function run_execute_Encoder_Encoder_3999 takes integer this_1 returns nothing
	set Encoder_hash[this_2891[this_1]] = dispatch_Encoder_Encoder_Encoder_hash(this_2891[this_1])
endfunction

function dispatch_LimitedExecuteAction_Execute_LimitedExecuteAction_run takes integer this_1 returns nothing
endfunction

function dispatch_LimitedExecuteCondition_Execute_LimitedExecuteCondition_check takes integer this_1 returns boolean
	return false
endfunction

function alloc_ForForceCallback_execute_Execute takes nothing returns integer
	local integer this_1
	if ForForceCallback_firstFree == 0 then
		if ForForceCallback_maxIndex < JASS_MAX_ARRAY_SIZE then
			set ForForceCallback_maxIndex = ForForceCallback_maxIndex + 1
			set this_1 = ForForceCallback_maxIndex
			set ForForceCallback_typeId[this_1] = 840
		else
			call error("Out of memory: Could not create ForForceCallback_execute_Execute.")
			set this_1 = 0
		endif
	else
		set ForForceCallback_firstFree = ForForceCallback_firstFree - 1
		set this_1 = ForForceCallback_nextFree[ForForceCallback_firstFree]
		set ForForceCallback_typeId[this_1] = 840
	endif
	return this_1
endfunction

function executeWhileInternal takes integer resetCount_1, integer condition_1, integer action_1 returns nothing
	local integer clVar = alloc_ForForceCallback_execute_Execute()
	set condition[clVar] = condition_1
	set resetCount[clVar] = resetCount_1
	set action[clVar] = action_1
	call execute(clVar)
endfunction

function run_execute_Execute takes integer this_1 returns nothing
	local integer i = 0
	loop
		exitwhen  not (dispatch_LimitedExecuteCondition_Execute_LimitedExecuteCondition_check(condition[this_1]) and i < resetCount[this_1])
		call dispatch_LimitedExecuteAction_Execute_LimitedExecuteAction_run(action[this_1])
		set i = i + 1
	endloop
	if dispatch_LimitedExecuteCondition_Execute_LimitedExecuteCondition_check(condition[this_1]) then
		call executeWhileInternal(resetCount[this_1], condition[this_1], action[this_1])
	endif
endfunction

function booleanToIndex takes boolean u_1 returns integer
	local integer cond_result
	if u_1 then
		set cond_result = 1
	else
		set cond_result = 0
	endif
	return cond_result
endfunction

function groupToIndex takes group object returns integer
	return handle_getTCHandleId(object)
endfunction

function push takes group g returns nothing
	set GroupUtils_stack[GroupUtils_numStack] = g
	call dispatch_HashMap_HashMap_HashMap_put(GroupUtils_used, groupToIndex(GroupUtils_stack[GroupUtils_numStack]), booleanToIndex(false))
	set GroupUtils_numStack = GroupUtils_numStack + 1
endfunction

function run_execute_GroupUtils takes integer this_1 returns nothing
	local integer i
	local integer temp
	set GroupUtils_numTotal = GroupUtils_numTotal + createNow[this_1]
	set i = 1
	set temp = createNow[this_1]
	loop
		exitwhen i > temp
		call push(CreateGroup())
		set i = i + 1
	endloop
endfunction

function tile takes integer x, integer y returns integer
	if x < 0 or x >= TerrainUtils_TILES_X or y < 0 or y >= TerrainUtils_TILES_Y then
		set tile_return_id = -1
		return tile_return_id
	endif
	set tile_return_id = y * TerrainUtils_TILES_X + x
	return tile_return_id
endfunction

function tile_getX takes integer this_id returns real
	return ModuloInteger(this_id, TerrainUtils_TILES_X) * 128. + MapBounds_boundMin_x
endfunction

function tile_getY takes integer this_id returns real
	return this_id / TerrainUtils_TILES_X * 128. + MapBounds_boundMin_y
endfunction

function tile_toVec2 takes integer this_id returns real
	set tile_toVec2_return_x = tile_getX(this_id)
	set tile_toVec2_return_y = tile_getY(this_id)
	return tile_toVec2_return_x
endfunction

function run_execute_Heightmap takes integer this_1 returns nothing
	local integer y
	local integer temp
	local integer tile_id
	local integer tuple_temp
	set Reference_val[xRef[this_1]] = Reference_val[xRef[this_1]] + 1
	set y = 0
	set temp = TerrainUtils_TILES_Y
	loop
		exitwhen y > temp
		set tuple_temp = tile(Reference_val[xRef[this_1]], y)
		set tile_id = tuple_temp
		call dispatch_HashMap_HashMap_HashMap_put(zMap[this_1], tile_id, realToIndex(vec2_getTerrainZ(tile_toVec2(tile_id), tile_toVec2_return_y)))
		set y = y + 1
	endloop
endfunction

function realFromIndex takes integer index returns real
	return index / TypeCasting_R2I_PRECISION
endfunction

function run_execute_Heightmap_4003 takes integer this_1 returns nothing
	local integer x
	local integer y
	local integer temp
	local integer temp_tuple_id
	local integer temp_tuple_id_1
	local integer temp_tuple_id_2
	local integer temp_tuple_id_3
	local integer temp_1
	local integer temp_2
	local integer temp_3
	local integer temp_4
	local integer temp_5
	local integer temp_6
	local integer temp_7
	local real temp_1_1
	local real temp_2_1
	local real temp_8
	local real temp_9
	local real temp_10
	local real tuple_temp
	local real tuple_temp_1
	local integer tuple_temp_2
	local integer tuple_temp_3
	local integer tuple_temp_4
	local integer tuple_temp_5
	local integer tuple_temp_6
	local integer tuple_temp_7
	local integer tuple_temp_8
	local real tuple_temp_9
	local real tuple_temp_10
	local real tuple_temp_11
	local real tuple_temp_12
	local real tuple_temp_13
	local real tuple_temp_14
	set Reference_val[xRef_3153[this_1]] = Reference_val[xRef_3153[this_1]] + 1
	set x = Reference_val[xRef_3153[this_1]]
	set y = 0
	set temp = TerrainUtils_TILES_Y
	loop
		exitwhen y > temp
		set temp_5 = x + TerrainUtils_TILES_X * y
		set temp_6 = x
		set temp_7 = y
		set tuple_temp = MapBounds_boundMin_x + x * 128
		set tuple_temp_1 = MapBounds_boundMin_y + y * 128
		set temp_1_1 = tuple_temp
		set temp_2_1 = tuple_temp_1
		set temp_1 = zMap_3157[this_1]
		set tuple_temp_2 = tile(x, y)
		set temp_tuple_id = tuple_temp_2
		set temp_8 = realFromIndex(dispatch_HashMap_HashMap_HashMap_get(temp_1, temp_tuple_id))
		set temp_2 = zMap_3157[this_1]
		set tuple_temp_3 = tile(x + 1, y)
		set temp_tuple_id_1 = tuple_temp_3
		set temp_9 = realFromIndex(dispatch_HashMap_HashMap_HashMap_get(temp_2, temp_tuple_id_1))
		set temp_3 = zMap_3157[this_1]
		set tuple_temp_4 = tile(x, y + 1)
		set temp_tuple_id_2 = tuple_temp_4
		set temp_10 = realFromIndex(dispatch_HashMap_HashMap_HashMap_get(temp_3, temp_tuple_id_2))
		set temp_4 = zMap_3157[this_1]
		set tuple_temp_5 = tile(x + 1, y + 1)
		set temp_tuple_id_3 = tuple_temp_5
		set tuple_temp_6 = temp_5
		set tuple_temp_7 = temp_6
		set tuple_temp_8 = temp_7
		set tuple_temp_9 = temp_1_1
		set tuple_temp_10 = temp_2_1
		set tuple_temp_11 = temp_8
		set tuple_temp_12 = temp_9
		set tuple_temp_13 = temp_10
		set tuple_temp_14 = realFromIndex(dispatch_HashMap_HashMap_HashMap_get(temp_4, temp_tuple_id_3))
		set Heightmap_quads_id[x + TerrainUtils_TILES_X * y] = tuple_temp_6
		set Heightmap_quads_x[x + TerrainUtils_TILES_X * y] = tuple_temp_7
		set Heightmap_quads_y[x + TerrainUtils_TILES_X * y] = tuple_temp_8
		set Heightmap_quads_botLeft_x[x + TerrainUtils_TILES_X * y] = tuple_temp_9
		set Heightmap_quads_botLeft_y[x + TerrainUtils_TILES_X * y] = tuple_temp_10
		set Heightmap_quads_z1[x + TerrainUtils_TILES_X * y] = tuple_temp_11
		set Heightmap_quads_z2[x + TerrainUtils_TILES_X * y] = tuple_temp_12
		set Heightmap_quads_z3[x + TerrainUtils_TILES_X * y] = tuple_temp_13
		set Heightmap_quads_z4[x + TerrainUtils_TILES_X * y] = tuple_temp_14
		set y = y + 1
	endloop
endfunction

function run_execute_MGSpacey_MGSpacey takes integer this_1 returns nothing
	local integer iterator = LinkedList_iterator(MGSpacey_rocks)
	local integer rock
	loop
		exitwhen  not LLIterator_hasNext(iterator)
		set rock = LLIterator_next(iterator)
		if rock != 0 then
			call cyc_RevivePoint_terminate(18, rock)
		endif
	endloop
	call LLIterator_close(iterator)
	call dispatch_LinkedList_LinkedList_LinkedList_clear(MGSpacey_rocks)
endfunction

function run_execute_MGSpacey_MGSpacey_4005 takes integer this_1 returns nothing
	local integer iterator = LinkedList_iterator(MGSpacey_ships)
	local integer ship
	loop
		exitwhen  not LLIterator_hasNext(iterator)
		set ship = LLIterator_next(iterator)
		if ship != 0 and ( not Entity_done[ship]) then
			call cyc_RevivePoint_terminate(18, ship)
		endif
	endloop
	call LLIterator_close(iterator)
	call dispatch_LinkedList_LinkedList_LinkedList_clear(MGSpacey_ships)
endfunction

function run_execute_MGWarlock_MGWarlock takes integer this_1 returns nothing
	local integer iterator = LinkedList_iterator(MGWarlock_warlocks)
	local integer warlock
	loop
		exitwhen  not LLIterator_hasNext(iterator)
		set warlock = LLIterator_next(iterator)
		if warlock != 0 and ( not Entity_done[warlock]) then
			call cyc_RevivePoint_terminate(18, warlock)
		endif
	endloop
	call LLIterator_close(iterator)
	call dispatch_LinkedList_LinkedList_LinkedList_clear(MGWarlock_warlocks)
endfunction

function run_execute_RegionData takes integer this_1 returns nothing
	loop
		exitwhen  not (RegionData_x <= xmax[this_1])
		call ebrtile_setType(vec2_getEBRTile(RegionData_x, RegionData_y), vec2_getEBRTile_return_y, vec2_getEBRTile_return_key, vec2_getEBRTile_return_currentType, vec2_getEBRTile_return_lastType, vec2_getEBRTile_return_modifiers_val, ttype[this_1])
		set RegionData_x = RegionData_x + 128.
	endloop
	set RegionData_x = xmin[this_1]
	set RegionData_y = RegionData_y + 128.
endfunction

function alloc_BallItem takes nothing returns integer
	local integer this_1
	if Serializable_firstFree == 0 then
		if Serializable_maxIndex < JASS_MAX_ARRAY_SIZE then
			set Serializable_maxIndex = Serializable_maxIndex + 1
			set this_1 = Serializable_maxIndex
			set Serializable_typeId[this_1] = 1154
		else
			call error("Out of memory: Could not create BallItem.")
			set this_1 = 0
		endif
	else
		set Serializable_firstFree = Serializable_firstFree - 1
		set this_1 = Serializable_nextFree[Serializable_firstFree]
		set Serializable_typeId[this_1] = 1154
	endif
	return this_1
endfunction

function BallItem_init takes integer this_1 returns nothing
endfunction

function construct_BallItem takes integer this_1, real pos_x_1, real pos_y_1, player owner returns nothing
	call construct_ItemObject(this_1, pos_x_1, pos_y_1, CreateItem(BasicSpells_BALL_ITEM_ID, pos_x_1, pos_y_1), CreateUnit(owner, Key_KEY_DUMMY_ID, pos_x_1, pos_y_1, 0.))
	call BallItem_init(this_1)
endfunction

function new_BallItem takes real pos_x_1, real pos_y_1, player owner returns integer
	local integer this_1 = alloc_BallItem()
	call construct_BallItem(this_1, pos_x_1, pos_y_1, owner)
	return this_1
endfunction

function alloc_FirstSnowMaze takes nothing returns integer
	local integer this_1
	if Startmaze_firstFree == 0 then
		if Startmaze_maxIndex < JASS_MAX_ARRAY_SIZE then
			set Startmaze_maxIndex = Startmaze_maxIndex + 1
			set this_1 = Startmaze_maxIndex
			set Startmaze_typeId[this_1] = 1240
		else
			call error("Out of memory: Could not create FirstSnowMaze.")
			set this_1 = 0
		endif
	else
		set Startmaze_firstFree = Startmaze_firstFree - 1
		set this_1 = Startmaze_nextFree[Startmaze_firstFree]
		set Startmaze_typeId[this_1] = 1240
	endif
	return this_1
endfunction

function FirstSnowMaze_init takes integer this_1 returns nothing
endfunction

function Startmaze_init takes integer this_1 returns nothing
	set Startmaze_inited[this_1] = false
	set Startmaze_rdata[this_1] = RegionData_EMPTY_REGION
endfunction

function construct_Startmaze takes integer this_1 returns nothing
	call Startmaze_init(this_1)
endfunction

function construct_FirstSnowMaze takes integer this_1, integer rd returns nothing
	call construct_Startmaze(this_1)
	call FirstSnowMaze_init(this_1)
	set Startmaze_rdata[this_1] = rd
	call dispatch_RegionData_RegionData_RegionData_setType(Startmaze_rdata[this_1], 4, false)
endfunction

function new_FirstSnowMaze takes integer rd returns integer
	local integer this_1 = alloc_FirstSnowMaze()
	call construct_FirstSnowMaze(this_1, rd)
	return this_1
endfunction

function alloc_FourthCitadelleMaze takes nothing returns integer
	local integer this_1
	if Startmaze_firstFree == 0 then
		if Startmaze_maxIndex < JASS_MAX_ARRAY_SIZE then
			set Startmaze_maxIndex = Startmaze_maxIndex + 1
			set this_1 = Startmaze_maxIndex
			set Startmaze_typeId[this_1] = 1241
		else
			call error("Out of memory: Could not create FourthCitadelleMaze.")
			set this_1 = 0
		endif
	else
		set Startmaze_firstFree = Startmaze_firstFree - 1
		set this_1 = Startmaze_nextFree[Startmaze_firstFree]
		set Startmaze_typeId[this_1] = 1241
	endif
	return this_1
endfunction

function FourthCitadelleMaze_init takes integer this_1 returns nothing
endfunction

function construct_FourthCitadelleMaze takes integer this_1, integer rd returns nothing
	call construct_Startmaze(this_1)
	call FourthCitadelleMaze_init(this_1)
	set Startmaze_rdata[this_1] = rd
	call dispatch_RegionData_RegionData_RegionData_setType(Startmaze_rdata[this_1], 1, false)
endfunction

function new_FourthCitadelleMaze takes integer rd returns integer
	local integer this_1 = alloc_FourthCitadelleMaze()
	call construct_FourthCitadelleMaze(this_1, rd)
	return this_1
endfunction

function alloc_MinigameTeleporter takes nothing returns integer
	local integer this_1
	if Serializable_firstFree == 0 then
		if Serializable_maxIndex < JASS_MAX_ARRAY_SIZE then
			set Serializable_maxIndex = Serializable_maxIndex + 1
			set this_1 = Serializable_maxIndex
			set Serializable_typeId[this_1] = 1203
		else
			call error("Out of memory: Could not create MinigameTeleporter.")
			set this_1 = 0
		endif
	else
		set Serializable_firstFree = Serializable_firstFree - 1
		set this_1 = Serializable_nextFree[Serializable_firstFree]
		set Serializable_typeId[this_1] = 1203
	endif
	return this_1
endfunction

function MinigameTeleporter_init takes integer this_1 returns nothing
	set MinigameTeleporter_inprogress[this_1] = false
endfunction

function construct_MinigameTeleporter takes integer this_1, unit existing returns nothing
	local unit receiver
	local unit receiver_1
	local unit receiver_2
	call construct_StaticBaseObject(this_1, unit_getPos(existing), unit_getPos_return_y, existing, MinigameTeleporter_EVENT_RADIUS, ref_function_MinigameTeleporter_checkVote, null)
	call MinigameTeleporter_init(this_1)
	set receiver = UnitEntity_actor[this_1]
	call unit_removeAbility(receiver, BuilderConstants_REMOVE_OBJECT_ID)
	set receiver_1 = receiver
	call unit_removeAbility(receiver_1, BuilderConstants_MAKE_UNIT_INVISIBLE_ID)
	set receiver_2 = receiver_1
	call unit_removeAbility(receiver_2, MinigameTeleporter_ESC_ID)
	call dispatch_StaticBaseObject_BaseObject_StaticBaseObject_clearQuestionmark(this_1)
	set MinigameTeleporter_text[this_1] = createCenterFText(vec2_toVec3(unit_getPos(existing), unit_getPos_return_y), vec2_toVec3_return_y, vec2_toVec3_return_z, "|cffffcc00Vote for minigame", 10.)
endfunction

function new_MinigameTeleporter takes unit existing returns integer
	local integer this_1 = alloc_MinigameTeleporter()
	call construct_MinigameTeleporter(this_1, existing)
	return this_1
endfunction

function alloc_SecondDesertMaze takes nothing returns integer
	local integer this_1
	if Startmaze_firstFree == 0 then
		if Startmaze_maxIndex < JASS_MAX_ARRAY_SIZE then
			set Startmaze_maxIndex = Startmaze_maxIndex + 1
			set this_1 = Startmaze_maxIndex
			set Startmaze_typeId[this_1] = 1242
		else
			call error("Out of memory: Could not create SecondDesertMaze.")
			set this_1 = 0
		endif
	else
		set Startmaze_firstFree = Startmaze_firstFree - 1
		set this_1 = Startmaze_nextFree[Startmaze_firstFree]
		set Startmaze_typeId[this_1] = 1242
	endif
	return this_1
endfunction

function SecondDesertMaze_init takes integer this_1 returns nothing
endfunction

function construct_SecondDesertMaze takes integer this_1, integer rd returns nothing
	call construct_Startmaze(this_1)
	call SecondDesertMaze_init(this_1)
	set Startmaze_rdata[this_1] = rd
	call dispatch_RegionData_RegionData_RegionData_setType(Startmaze_rdata[this_1], 2, false)
endfunction

function new_SecondDesertMaze takes integer rd returns integer
	local integer this_1 = alloc_SecondDesertMaze()
	call construct_SecondDesertMaze(this_1, rd)
	return this_1
endfunction

function alloc_ThirdForestMaze takes nothing returns integer
	local integer this_1
	if Startmaze_firstFree == 0 then
		if Startmaze_maxIndex < JASS_MAX_ARRAY_SIZE then
			set Startmaze_maxIndex = Startmaze_maxIndex + 1
			set this_1 = Startmaze_maxIndex
			set Startmaze_typeId[this_1] = 1243
		else
			call error("Out of memory: Could not create ThirdForestMaze.")
			set this_1 = 0
		endif
	else
		set Startmaze_firstFree = Startmaze_firstFree - 1
		set this_1 = Startmaze_nextFree[Startmaze_firstFree]
		set Startmaze_typeId[this_1] = 1243
	endif
	return this_1
endfunction

function ThirdForestMaze_init takes integer this_1 returns nothing
endfunction

function construct_ThirdForestMaze takes integer this_1, integer rd returns nothing
	call construct_Startmaze(this_1)
	call ThirdForestMaze_init(this_1)
	set Startmaze_rdata[this_1] = rd
	call dispatch_RegionData_RegionData_RegionData_setType(Startmaze_rdata[this_1], 3, false)
	set RegionData_specialAbil[Startmaze_rdata[this_1]] = SetupBox_JUMP_SPELL_ID
	set RegionData_allowCut[Startmaze_rdata[this_1]] = true
endfunction

function new_ThirdForestMaze takes integer rd returns integer
	local integer this_1 = alloc_ThirdForestMaze()
	call construct_ThirdForestMaze(this_1, rd)
	return this_1
endfunction

function run_execute_Startmazes takes integer this_1 returns nothing
	set Startmazes_startmazes[0] = new_FirstSnowMaze(RegionData_regions[0])
	set Startmazes_startmazes[1] = new_SecondDesertMaze(RegionData_regions[1])
	set Startmazes_startmazes[2] = new_ThirdForestMaze(RegionData_regions[2])
	set Startmazes_startmazes[3] = new_FourthCitadelleMaze(RegionData_regions[3])
	set MinigameTeleporter_MINI_TP = new_MinigameTeleporter(gg_unit_tele_0150)
	call createCenterFText(vec2_toVec3(unit_getPos(gg_unit_revp_0322), unit_getPos_return_y), vec2_toVec3_return_y, vec2_toVec3_return_z, "|cff0884D6Lounge", 13.5)
	call new_BallItem(-5780., -6287., Basics_DUMMY_PLAYER)
	call EnumItemsInRect(MapBounds_playableMapRect, null, ref_function_correctKeys)
endfunction

function alloc_ForForceCallback_execute_execute_TerrainData takes nothing returns integer
	local integer this_1
	if ForForceCallback_firstFree == 0 then
		if ForForceCallback_maxIndex < JASS_MAX_ARRAY_SIZE then
			set ForForceCallback_maxIndex = ForForceCallback_maxIndex + 1
			set this_1 = ForForceCallback_maxIndex
			set ForForceCallback_typeId[this_1] = 850
		else
			call error("Out of memory: Could not create ForForceCallback_execute_execute_TerrainData.")
			set this_1 = 0
		endif
	else
		set ForForceCallback_firstFree = ForForceCallback_firstFree - 1
		set this_1 = ForForceCallback_nextFree[ForForceCallback_firstFree]
		set ForForceCallback_typeId[this_1] = 850
	endif
	return this_1
endfunction

function run_execute_TerrainData takes integer this_1 returns nothing
	local integer clVar
	local real tuple_temp
	local real tuple_temp_1
	loop
		exitwhen  not (realPos_y[this_1] < MapBounds_playableMax_y)
		set clVar = alloc_ForForceCallback_execute_execute_TerrainData()
		set tuple_temp = realPos_x[this_1]
		set tuple_temp_1 = realPos_y[this_1]
		set realPos_x_2593[clVar] = tuple_temp
		set realPos_y_2595[clVar] = tuple_temp_1
		call execute(clVar)
		set realPos_y[this_1] = realPos_y[this_1] + 128.
	endloop
endfunction

function hashtable_saveTile takes hashtable this_1, integer tile_x, integer tile_y, integer tile_key, integer tile_currentType, integer tile_lastType, integer tile_modifiers_val returns nothing
	call hashtable_saveInt(this_1, tile_key, 0, tile_key)
	call hashtable_saveInt(this_1, tile_key, 1, tile_currentType)
	call hashtable_saveInt(this_1, tile_key, 2, tile_lastType)
	call hashtable_saveInt(this_1, tile_key, 3, tile_modifiers_val)
endfunction

function run_execute_execute_TerrainData takes integer this_1 returns nothing
	local integer x = real_round(realPos_x_2593[this_1] / 128.)
	local integer y = real_round(realPos_y_2595[this_1] / 128.)
	call hashtable_saveTile(TerrainData_tileMap, x, y, x * TerrainData_xCells + y, GetTerrainType(realPos_x_2593[this_1], realPos_y_2595[this_1]), GetTerrainType(realPos_x_2593[this_1], realPos_y_2595[this_1]), 0)
endfunction

function run_execute_fromString_Encoder_Encoder takes integer this_1 returns nothing
	set Encoder_inputhash[this_2898[this_1]] = dispatch_Encoder_Encoder_Encoder_decode(this_2898[this_1], Encoder_maxHash)
endfunction

function run_execute_fromString_Encoder_Encoder_4012 takes integer this_1 returns nothing
	call dispatch_Encoder_Encoder_Encoder_clean(this_2899[this_1])
endfunction

function run_execute_fromString_Encoder_Encoder_4013 takes integer this_1 returns nothing
	set Encoder_comparehash[this_2900[this_1]] = dispatch_Encoder_Encoder_Encoder_hash(this_2900[this_1])
endfunction

function run_execute_nullTimer_Encoder_Encoder takes integer this_1 returns nothing
	call dispatch_Encoder_Encoder_Encoder_encode(this_2893[this_1], Encoder_hash[this_2893[this_1]], Encoder_maxHash)
endfunction

function run_execute_nullTimer_Encoder_Encoder_4015 takes integer this_1 returns nothing
	call dispatch_Encoder_Encoder_Encoder_clean(this_2894[this_1])
endfunction

function Encoder_length takes integer this_1 returns real
	return Encoder_digits[this_1]
endfunction

function dispatch_Encoder_Encoder_Encoder_length takes integer this_1 returns real
	local real Encoder_Encoder_length_result
	if Encoder_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling Encoder.length")
		else
			call error("Called Encoder.length on invalid object.")
		endif
	endif
	set Encoder_Encoder_length_result = Encoder_length(this_1)
	return Encoder_Encoder_length_result
endfunction

function Encoder_pad takes integer this_1 returns nothing
	local integer cur = BigNum_list[Encoder_bignum[this_1]]
	local integer prev = 0
	local integer maxlen = R2I(1.0 + dispatch_Encoder_Encoder_Encoder_length(this_1))
	loop
		exitwhen  not (cur != 0)
		set prev = cur
		set cur = BigNum_l_next[cur]
		set maxlen = maxlen - 1
	endloop
	loop
		exitwhen  not (maxlen > 0)
		set BigNum_l_next[prev] = new_BigNum_l()
		set prev = BigNum_l_next[prev]
		set maxlen = maxlen - 1
	endloop
endfunction

function dispatch_Encoder_Encoder_Encoder_pad takes integer this_1 returns nothing
	if Encoder_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling Encoder.pad")
		else
			call error("Called Encoder.pad on invalid object.")
		endif
	endif
	call Encoder_pad(this_1)
endfunction

function run_execute_nullTimer_Encoder_Encoder_4016 takes integer this_1 returns nothing
	call dispatch_Encoder_Encoder_Encoder_pad(this_2895[this_1])
endfunction

function alloc_SeqCallback_doSeq_Encoder_Encoder takes nothing returns integer
	local integer this_1
	if SeqCallback_firstFree == 0 then
		if SeqCallback_maxIndex < JASS_MAX_ARRAY_SIZE then
			set SeqCallback_maxIndex = SeqCallback_maxIndex + 1
			set this_1 = SeqCallback_maxIndex
			set SeqCallback_typeId[this_1] = 1126
		else
			call error("Out of memory: Could not create SeqCallback_doSeq_Encoder_Encoder.")
			set this_1 = 0
		endif
	else
		set SeqCallback_firstFree = SeqCallback_firstFree - 1
		set this_1 = SeqCallback_nextFree[SeqCallback_firstFree]
		set SeqCallback_typeId[this_1] = 1126
	endif
	return this_1
endfunction

function Encoder_toString takes integer this_1, integer big_1, integer onFinish_1 returns nothing
	local integer w_cur_1
	local integer clVar
	call Log_debug("toString digits: " + real_toString(Encoder_digits[this_1]))
	set w_cur_1 = BigNum_list[Encoder_bignum[this_1]]
	set clVar = alloc_SeqCallback_doSeq_Encoder_Encoder()
	call construct_SeqCallback(clVar)
	set w_cur[clVar] = w_cur_1
	set big[clVar] = big_1
	set this_2888[clVar] = this_1
	set onFinish[clVar] = onFinish_1
	call doSeq(clVar)
endfunction

function dispatch_Encoder_Encoder_Encoder_toString takes integer this_1, integer big_1, integer onFinish_1 returns nothing
	if Encoder_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling Encoder.toString")
		else
			call error("Called Encoder.toString on invalid object.")
		endif
	endif
	call Encoder_toString(this_1, big_1, onFinish_1)
endfunction

function run_execute_nullTimer_Encoder_Encoder_4017 takes integer this_1 returns nothing
	call dispatch_Encoder_Encoder_Encoder_toString(this_2896[this_1], bs_2276[this_1], onFinish_2551[this_1])
endfunction

function alloc_LobbyTeleporter takes nothing returns integer
	local integer this_1
	if Serializable_firstFree == 0 then
		if Serializable_maxIndex < JASS_MAX_ARRAY_SIZE then
			set Serializable_maxIndex = Serializable_maxIndex + 1
			set this_1 = Serializable_maxIndex
			set Serializable_typeId[this_1] = 1201
		else
			call error("Out of memory: Could not create LobbyTeleporter.")
			set this_1 = 0
		endif
	else
		set Serializable_firstFree = Serializable_firstFree - 1
		set this_1 = Serializable_nextFree[Serializable_firstFree]
		set Serializable_typeId[this_1] = 1201
	endif
	return this_1
endfunction

function LobbyTeleporter_init takes integer this_1 returns nothing
	set LobbyTeleporter_ftext[this_1] = 0
	set LobbyTeleporter_currentPlus[this_1] = 0
	set LobbyTeleporter_ready[this_1] = false
	set LobbyTeleporter_startmaze[this_1] = false
endfunction

function construct_LobbyTeleporter takes integer this_1, unit existing, boolean builder returns nothing
	local unit receiver
	local unit receiver_1
	local unit receiver_2
	call construct_StaticBaseObject(this_1, unit_getPos(existing), unit_getPos_return_y, existing, LobbyTeleporter_EVENT_RADIUS, ref_function_LobbyTeleporter_checkVote, null)
	call LobbyTeleporter_init(this_1)
	set receiver = UnitEntity_actor[this_1]
	call unit_removeAbility(receiver, BuilderConstants_REMOVE_OBJECT_ID)
	set receiver_1 = receiver
	call unit_removeAbility(receiver_1, BuilderConstants_MAKE_UNIT_INVISIBLE_ID)
	set receiver_2 = receiver_1
	call unit_removeAbility(receiver_2, LobbyTeleporter_ESC_ID)
	if builder then
		set LobbyTeleporter_ftext[this_1] = createCenterFText(vec2_toVec3(unit_getPos(existing), unit_getPos_return_y), vec2_toVec3_return_y, vec2_toVec3_return_z, player_getNameColored_3918(unit_getOwner(existing)) + " |cffffcc00building", 6.)
	else
		set LobbyTeleporter_startmaze[this_1] = true
		set LobbyTeleporter_ftext[this_1] = createFText(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1], "", 10.)
	endif
endfunction

function new_LobbyTeleporter takes unit existing, boolean builder returns integer
	local integer this_1 = alloc_LobbyTeleporter()
	call construct_LobbyTeleporter(this_1, existing, builder)
	return this_1
endfunction

function setBuilderTeleporter takes nothing returns nothing
	if PlayerData_pData[8] != 0 then
		call new_LobbyTeleporter(gg_unit_tele_0058, true)
	else
		call unit_remove(gg_unit_tele_0058)
	endif
	if PlayerData_pData[9] != 0 then
		call new_LobbyTeleporter(gg_unit_tele_0063, true)
	else
		call unit_remove(gg_unit_tele_0063)
	endif
	if PlayerData_pData[10] != 0 then
		call new_LobbyTeleporter(gg_unit_tele_0115, true)
	else
		call unit_remove(gg_unit_tele_0115)
	endif
	if PlayerData_pData[11] != 0 then
		call new_LobbyTeleporter(gg_unit_tele_0143, true)
	else
		call unit_remove(gg_unit_tele_0143)
	endif
endfunction

function setStartTeleport takes integer tpid, integer locid returns nothing
	local integer t = 0
	local integer temp = tpid
	local integer temp_1
	if temp == 0 then
		set t = new_LobbyTeleporter(gg_unit_tele_0061, false)
	elseif temp == 1 then
		set t = new_LobbyTeleporter(gg_unit_tele_0324, false)
	elseif temp == 2 then
		set t = new_LobbyTeleporter(gg_unit_tele_0323, false)
	endif
	call unit_removeAbility(UnitEntity_actor[t], BuilderConstants_REMOVE_OBJECT_ID)
	set temp_1 = locid
	if temp_1 == 1 then
		call dispatch_StaticBaseObject_BaseObject_StaticBaseObject_setRallyPoint(t, 3456., -4160.)
		call texttag_center(FText_tt[LobbyTeleporter_ftext[t]], dispatch_UnitEntity_Entity_UnitEntity_getPos(t), dispatch_UnitEntity_Entity_UnitEntity_getPos_return_y, dispatch_UnitEntity_Entity_UnitEntity_getPos_return_z, "|cffE68C19Desert Startmaze", 12.5)
	elseif temp_1 == 2 then
		call dispatch_StaticBaseObject_BaseObject_StaticBaseObject_setRallyPoint(t, 500., -6900.)
		call texttag_center(FText_tt[LobbyTeleporter_ftext[t]], dispatch_UnitEntity_Entity_UnitEntity_getPos(t), dispatch_UnitEntity_Entity_UnitEntity_getPos_return_y, dispatch_UnitEntity_Entity_UnitEntity_getPos_return_z, "|cff3A9C3AForest Startmaze", 12.5)
	elseif temp_1 == 3 then
		call dispatch_StaticBaseObject_BaseObject_StaticBaseObject_setRallyPoint(t, -2433., -6148.)
		call texttag_center(FText_tt[LobbyTeleporter_ftext[t]], dispatch_UnitEntity_Entity_UnitEntity_getPos(t), dispatch_UnitEntity_Entity_UnitEntity_getPos_return_y, dispatch_UnitEntity_Entity_UnitEntity_getPos_return_z, "|cffA5084ACitadel Startmaze", 12.5)
	endif
	set LobbyTeleporter_currentPlus[t] = 999
	set LobbyTeleporter_ready[t] = true
endfunction

function run_try_Startmazes takes integer this_1 returns nothing
	local integer rand
	call setBuilderTeleporter()
	set rand = GetRandomInt(0, 7)
	if rand < 2 then
		call setStartTeleport(0, 3)
		call setStartTeleport(1, 2)
		call setStartTeleport(2, 1)
	elseif rand < 5 then
		call setStartTeleport(0, 1)
		call setStartTeleport(1, 3)
		call setStartTeleport(2, 2)
	elseif rand <= 7 then
		call setStartTeleport(0, 2)
		call setStartTeleport(1, 3)
		call setStartTeleport(2, 1)
	endif
endfunction

function dispatch_ForForceCallback_Execute_ForForceCallback_run takes integer this_1 returns nothing
	if ForForceCallback_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling ForForceCallback.run")
		else
			call error("Called ForForceCallback.run on invalid object.")
		endif
	endif
	if ForForceCallback_typeId[this_1] <= 848 then
		if ForForceCallback_typeId[this_1] <= 843 then
			if ForForceCallback_typeId[this_1] <= 840 then
				if ForForceCallback_typeId[this_1] <= 839 then
					if ForForceCallback_typeId[this_1] <= 838 then
						call run_execute_Encoder_Encoder(this_1)
					else
						call run_execute_Encoder_Encoder_3999(this_1)
					endif
				else
					call run_execute_Execute(this_1)
				endif
			elseif ForForceCallback_typeId[this_1] <= 842 then
				if ForForceCallback_typeId[this_1] <= 841 then
					call run_execute_GroupUtils(this_1)
				else
					call run_execute_Heightmap(this_1)
				endif
			else
				call run_execute_Heightmap_4003(this_1)
			endif
		elseif ForForceCallback_typeId[this_1] <= 846 then
			if ForForceCallback_typeId[this_1] <= 845 then
				if ForForceCallback_typeId[this_1] <= 844 then
					call run_execute_MGSpacey_MGSpacey(this_1)
				else
					call run_execute_MGSpacey_MGSpacey_4005(this_1)
				endif
			else
				call run_execute_MGWarlock_MGWarlock(this_1)
			endif
		elseif ForForceCallback_typeId[this_1] <= 847 then
			call run_execute_RegionData(this_1)
		else
			call run_execute_Startmazes(this_1)
		endif
	elseif ForForceCallback_typeId[this_1] <= 853 then
		if ForForceCallback_typeId[this_1] <= 851 then
			if ForForceCallback_typeId[this_1] <= 850 then
				if ForForceCallback_typeId[this_1] <= 849 then
					call run_execute_TerrainData(this_1)
				else
					call run_execute_execute_TerrainData(this_1)
				endif
			else
				call run_execute_fromString_Encoder_Encoder(this_1)
			endif
		elseif ForForceCallback_typeId[this_1] <= 852 then
			call run_execute_fromString_Encoder_Encoder_4012(this_1)
		else
			call run_execute_fromString_Encoder_Encoder_4013(this_1)
		endif
	elseif ForForceCallback_typeId[this_1] <= 856 then
		if ForForceCallback_typeId[this_1] <= 855 then
			if ForForceCallback_typeId[this_1] <= 854 then
				call run_execute_nullTimer_Encoder_Encoder(this_1)
			else
				call run_execute_nullTimer_Encoder_Encoder_4015(this_1)
			endif
		else
			call run_execute_nullTimer_Encoder_Encoder_4016(this_1)
		endif
	elseif ForForceCallback_typeId[this_1] <= 857 then
		call run_execute_nullTimer_Encoder_Encoder_4017(this_1)
	else
		call run_try_Startmazes(this_1)
	endif
endfunction

function getCurrentCallback takes nothing returns integer
	return Execute_tempCallbacks[Execute_tempCallbacksCount - 1]
endfunction

function setCurrentCallbackSuccess takes boolean value returns nothing
	set Execute_tempCallbacksSuccess[Execute_tempCallbacksCount - 1] = value
endfunction

function executeCurrentCallback takes nothing returns nothing
	set ErrorHandling_lastError = ""
	call dispatch_ForForceCallback_Execute_ForForceCallback_run(getCurrentCallback())
	call setCurrentCallbackSuccess(true)
endfunction

function init_Abilities takes nothing returns boolean
	set Abilities_aIamTarget = "Abilities\\Spells\\Items\\AIam\\AIamTarget.mdx"
	set Abilities_ancestralSpiritCaster = "Abilities\\Spells\\Orc\\AncestralSpirit\\AncestralSpiritCaster.mdx"
	set Abilities_ancientProtectorMissile = "Abilities\\Weapons\\AncientProtectorMissile\\AncientProtectorMissile.mdx"
	set Abilities_aneuCaster = "Abilities\\Spells\\Other\\Aneu\\AneuCaster.mdx"
	set Abilities_blinkCaster = "Abilities\\Spells\\NightElf\\Blink\\BlinkCaster.mdx"
	set Abilities_blinkTarget = "Abilities\\Spells\\NightElf\\Blink\\BlinkTarget.mdx"
	set Abilities_boltImpact = "Abilities\\Weapons\\Bolt\\BoltImpact.mdx"
	set Abilities_charmTarget = "Abilities\\Spells\\Other\\Charm\\CharmTarget.mdx"
	set Abilities_creepSleepTarget = "Abilities\\Spells\\Other\\CreepSleep\\CreepSleepTarget.mdx"
	set Abilities_demolisherMissile = "Abilities\\Weapons\\DemolisherMissile\\DemolisherMissile.mdx"
	set Abilities_dispelMagicTarget = "Abilities\\Spells\\Human\\DispelMagic\\DispelMagicTarget.mdx"
	set Abilities_faerieDragonMissile = "Abilities\\Weapons\\FaerieDragonMissile\\FaerieDragonMissile.mdx"
	set Abilities_fireBallMissile = "Abilities\\Weapons\\FireBallMissile\\FireBallMissile.mdx"
	set Abilities_flameStrikeEmbers = "Abilities\\Spells\\Human\\FlameStrike\\FlameStrikeEmbers.mdx"
	set Abilities_frostNovaTarget = "Abilities\\Spells\\Undead\\FrostNova\\FrostNovaTarget.mdx"
	set Abilities_generalAuraTarget = "Abilities\\Spells\\Other\\GeneralAuraTarget\\GeneralAuraTarget.mdx"
	set Abilities_greenDragonMissile = "Abilities\\Weapons\\GreenDragonMissile\\GreenDragonMissile.mdx"
	set Abilities_healTarget = "Abilities\\Spells\\Human\\Heal\\HealTarget.mdx"
	set Abilities_innerFireTarget = "Abilities\\Spells\\Human\\InnerFire\\InnerFireTarget.mdx"
	set Abilities_makuraMissile = "Abilities\\Weapons\\MakuraMissile\\MakuraMissile.mdx"
	set Abilities_manaBurnTarget = "Abilities\\Spells\\NightElf\\ManaBurn\\ManaBurnTarget.mdx"
	set Abilities_manaFlareBoltImpact = "Abilities\\Spells\\Human\\ManaFlare\\ManaFlareBoltImpact.mdx"
	set Abilities_poisonStingTarget = "Abilities\\Weapons\\PoisonSting\\PoisonStingTarget.mdx"
	set Abilities_polyMorphTarget = "Abilities\\Spells\\Human\\Polymorph\\PolyMorphTarget.mdx"
	set Abilities_rockBoltMissile = "Abilities\\Weapons\\RockBoltMissile\\RockBoltMissile.mdx"
	set Abilities_silenceTarget = "Abilities\\Spells\\Other\\Silence\\SilenceTarget.mdx"
	set Abilities_sleepTarget = "Abilities\\Spells\\Undead\\Sleep\\SleepTarget.mdx"
	set Abilities_spellBreakerAttack = "Abilities\\Spells\\Human\\Feedback\\SpellBreakerAttack.mdx"
	set Abilities_spellShieldCaster = "Abilities\\Spells\\Items\\SpellShieldAmulet\\SpellShieldCaster.mdx"
	set Abilities_vengeanceMissile = "Abilities\\Weapons\\VengeanceMissile\\VengeanceMissile.mdx"
	set Abilities_warStompCaster = "Abilities\\Spells\\Orc\\WarStomp\\WarStompCaster.mdx"
	return true
endfunction

function init_AbilityIds takes nothing returns boolean
	set AbilityIds_wander = 1098342766
	return true
endfunction

function init_AbilityObjEditing takes nothing returns boolean
	return true
endfunction

function init_AirPhysicsModule takes nothing returns boolean
	set AirPhysicsModule_MAX_MASS = 250
	return true
endfunction

function init_Angle takes nothing returns boolean
	set Angle_DEGTORAD = 0.017453293
	set Angle_RADTODEG = 57.295779513
	return true
endfunction

function init_Arcanery takes nothing returns boolean
	local integer tuple_temp
	local integer tuple_temp_1
	set Arcanery_SILENCE_ID = 1095577978
	set tuple_temp = 1095577979
	set tuple_temp_1 = 1112354865
	set Arcanery_SILENCE_BUFF_abilId = tuple_temp
	set Arcanery_SILENCE_BUFF_buffId = tuple_temp_1
	set Arcanery_SILENCE_MODE_ID = 1095577980
	set Arcanery_JUMP_MODE_ID = 1095577981
	set Arcanery_ORB_MODE_ID = 1095577982
	return true
endfunction

function init_AttachmentPoints takes nothing returns boolean
	return true
endfunction

function preloadAbility_1 takes integer abilIds_0 returns boolean
	local boolean result_1 = true
	call unit_addAbility(Preloader_dum, abilIds_0)
	if Preloader_dum == null then
		call error("Do not load abilities after map init when autoFinish = true")
	elseif  not unit_hasAbility(Preloader_dum, abilIds_0) then
		call Log_trace("PreloadAbility: Ability " + int_toRawCode(abilIds_0) + " does not exist.")
		set result_1 = false
	endif
	return result_1
endfunction

function init_Attackspeed takes nothing returns boolean
	set Attackspeed_ATTACK_SPEED_RATE_POSITIVE_ID = 1093677655
	set Attackspeed_ATTACK_SPEED_RATE_NEGATIVE_ID = 1093677654
	set Attackspeed_ATTACK_SPEED_DUMMY_ID = 1093677620
	set Attackspeed_ATTACK_SPEED_INCREASE = 1095578479
	set Attackspeed_ATTACK_SPEED_DECREASE = 1095578478
	call preloadAbility_1(Attackspeed_ATTACK_SPEED_RATE_POSITIVE_ID)
	call preloadAbility_1(Attackspeed_ATTACK_SPEED_RATE_NEGATIVE_ID)
	call preloadAbility_1(Attackspeed_ATTACK_SPEED_DUMMY_ID)
	call preloadAbility_1(Attackspeed_ATTACK_SPEED_INCREASE)
	call preloadAbility_1(Attackspeed_ATTACK_SPEED_DECREASE)
	return true
endfunction

function init_AudioTaunts takes nothing returns boolean
	return true
endfunction

function init_BaseObject takes nothing returns boolean
	set BaseObject_KEY_RALLY_X = "r"
	set BaseObject_KEY_RALLY_Y = "s"
	return true
endfunction

function alloc_EventListener_add_BasicSpells takes nothing returns integer
	local integer this_1
	if EventListener_firstFree == 0 then
		if EventListener_maxIndex < JASS_MAX_ARRAY_SIZE then
			set EventListener_maxIndex = EventListener_maxIndex + 1
			set this_1 = EventListener_maxIndex
			set EventListener_typeId[this_1] = 755
		else
			call error("Out of memory: Could not create EventListener_add_BasicSpells.")
			set this_1 = 0
		endif
	else
		set EventListener_firstFree = EventListener_firstFree - 1
		set this_1 = EventListener_nextFree[EventListener_firstFree]
		set EventListener_typeId[this_1] = 755
	endif
	return this_1
endfunction

function init_BasicSpells takes nothing returns boolean
	local integer clVar
	local playerunitevent temp
	set BasicSpells_BALL_SPELL_ID = 1095577698
	set BasicSpells_BALL_ITEM_ID = 1095577699
	set temp = EVENT_PLAYER_UNIT_SPELL_CAST
	set clVar = alloc_EventListener_add_BasicSpells()
	call construct_EventListener(clVar)
	call EventListener_add(temp, clVar)
	return true
endfunction

function init_Basics takes nothing returns boolean
	set Basics_ANIMATION_PERIOD = 0.030
	set Basics_MAX_COLLISION_SIZE = 197.0
	set Basics_HEIGHT_ENABLER = 1097691750
	set Basics_LOCUST_ID = 1097625443
	set Basics_GHOST_INVIS_ID = 1097295983
	set Basics_GHOST_VIS_ID = 1097167976
	set Basics_DUMMY_PLAYER = Player_players[PLAYER_NEUTRAL_PASSIVE]
	return true
endfunction

function init_BigNum takes nothing returns boolean
	set BigNum_l_count = 0
	return true
endfunction

function init_BigString takes nothing returns boolean
	set BigString_BIG_SUBSTRING_LEN = 450
	set BigString_MAX_SUBSTRINGS = 25
	return true
endfunction

function int_bitXor takes integer this_1, integer other returns integer
	return BlzBitXor(this_1, other)
endfunction

function initPows takes nothing returns nothing
	local integer allPows
	local integer i
	local integer temp
	local integer i_1
	local integer temp_1
	set BitSet_pows[0] = 1
	set allPows = 1
	set i = 1
	set temp = BitSet_BITSET_SIZE - 1
	loop
		exitwhen i > temp
		set BitSet_pows[i] = BitSet_pows[i - 1] * 2
		set allPows = int_bitOr(allPows, BitSet_pows[i])
		set i = i + 1
	endloop
	set i_1 = 0
	set temp_1 = BitSet_BITSET_SIZE - 1
	loop
		exitwhen i_1 > temp_1
		set BitSet_reversePows[i_1] = int_bitXor(allPows, BitSet_pows[i_1])
		set i_1 = i_1 + 1
	endloop
endfunction

function init_BitSet takes nothing returns boolean
	set BitSet_BITSET_SIZE = 32
	call initPows()
	return true
endfunction

function init_Bomber takes nothing returns boolean
	set Bomber_BOMBER_ID = 1651335794
	set Bomber_AUTOATTACK_ID = 1093677890
	set Bomber_ATTACK_ORDER = 851983
	set Bomber_ATTACK_GROUND_ORDER = 851984
	set Bomber_STOP_ORDER = 851972
	set Bomber_MOVE_ORDER = 851971
	return true
endfunction

function init_Bombertower takes nothing returns boolean
	set Bombertower_ATTACK_ORDER = 851983
	set Bombertower_ATTACK_GROUND_ORDER = 851984
	set Bombertower_STOP_ORDER = 851972
	return true
endfunction

function init_Booster takes nothing returns boolean
	set Booster_SPEED_UP_ID = 1095578476
	set Booster_SPEED_DOWN_ID = 1095578477
	set Booster_EVENT_RADIUS = 32.
	set Booster_BOOST_SPEED_KEY = "b"
	return true
endfunction

function init_Boots takes nothing returns boolean
	set Boots_BOOTS_DUMMY_ID = 2016424042
	return true
endfunction

function alloc_SoundDefinition takes nothing returns integer
	local integer this_1
	if SoundDefinition_firstFree == 0 then
		if SoundDefinition_maxIndex < JASS_MAX_ARRAY_SIZE then
			set SoundDefinition_maxIndex = SoundDefinition_maxIndex + 1
			set this_1 = SoundDefinition_maxIndex
			set SoundDefinition_typeId[this_1] = 1230
		else
			call error("Out of memory: Could not create SoundDefinition.")
			set this_1 = 0
		endif
	else
		set SoundDefinition_firstFree = SoundDefinition_firstFree - 1
		set this_1 = SoundDefinition_nextFree[SoundDefinition_firstFree]
		set SoundDefinition_typeId[this_1] = 1230
	endif
	return this_1
endfunction

function SoundDefinition_init takes integer this_1 returns nothing
	set SoundDefinition_soundStack[this_1] = new_LinkedList()
	set SoundDefinition_duration[this_1] = 10000
	set SoundDefinition_looping[this_1] = false
	set SoundDefinition_is3D[this_1] = false
	set SoundDefinition_stopOnLeaveRange[this_1] = SoundUtils_DEFAULT_SOUND_STOPS_ON_LEAVE_RANGE
	set SoundDefinition_fadeIn[this_1] = SoundUtils_DEFAULT_SOUND_FADE_IN_RATE
	set SoundDefinition_fadeOut[this_1] = SoundUtils_DEFAULT_SOUND_FADE_OUT_RATE
	set SoundDefinition_eaxSetting[this_1] = SoundUtils_DEFAULT_SOUND_EAX_SETTINGS
endfunction

function construct_SoundDefinition2 takes integer this_1, string file, boolean looping returns nothing
	call SoundDefinition_init(this_1)
	set SoundDefinition_file[this_1] = file
	set SoundDefinition_looping[this_1] = looping
endfunction

function new_SoundDefinition takes string file, boolean looping returns integer
	local integer this_1 = alloc_SoundDefinition()
	call construct_SoundDefinition2(this_1, file, looping)
	return this_1
endfunction

function init_Boss takes nothing returns boolean
	set Boss_HP_UP_ID = 1093678677
	set Boss_HP_DOWN_ID = 1093678676
	set Boss_REAL_HP_BIG_ID = 1093678680
	set Boss_REAL_HP_SMALL_ID = 1093678681
	set Boss_AOE_SPELL_ID = 1093678678
	set Boss_MISSILE_SPELL_ID = 1093678679
	set Boss_REVIVE_ID = 1093678924
	set Boss_SUMMON_MINION_ID = 1095577905
	call new_SoundDefinition("Units\\Undead\\Varimathras\\VarimathrasReady1.wav", false)
	set Boss_MINION_SPAWN_SOUND = new_SoundDefinition("Abilities\\Spells\\Human\\FlameStrike\\FlameStrikeTargetWaveNonLoop1.waw", false)
	set Boss_REVIVE_SOUND = new_SoundDefinition("Units\\Undead\\Varimathras\\VarimathrasReady1.wav", false)
	return true
endfunction

function init_BossDamager takes nothing returns boolean
	set BossDamager_DAMAGER_ID = 1848652111
	set BossDamager_DMG_INC_ID = 1093678923
	set BossDamager_DMG_DEC_ID = 1093678922
	set BossDamager_EVENT_RADIUS = 32.
	return true
endfunction

function init_BossSpellTarget takes nothing returns boolean
	set BossSpellTarget_SPELLTARGET_ID = 1966092358
	set BossSpellTarget_AOE_ID = 1093678678
	set BossSpellTarget_MISSILE_ID = 1093678679
	set BossSpellTarget_targets = new_HashMap()
	set BossSpellTarget_MISSILE_RADIUS = 64.
	set BossSpellTarget_MISSILE_SPEED = 12.
	return true
endfunction

function DamageEvent_addListener_284 takes integer priority, integer listener_1 returns integer
	if DamageEvent_firstListeners[priority] != 0 then
		set DamageListener_next[listener_1] = DamageEvent_firstListeners[priority]
	endif
	set DamageEvent_firstListeners[priority] = listener_1
	if DamageEvent_maxPriority < priority then
		set DamageEvent_maxPriority = priority
	endif
	return listener_1
endfunction

function DamageEvent_addListener takes integer listener_1 returns integer
	return DamageEvent_addListener_284(DamageEvent_maxPriority, listener_1)
endfunction

function alloc_DamageListener_addListener_Buff takes nothing returns integer
	local integer this_1
	if DamageListener_firstFree == 0 then
		if DamageListener_maxIndex < JASS_MAX_ARRAY_SIZE then
			set DamageListener_maxIndex = DamageListener_maxIndex + 1
			set this_1 = DamageListener_maxIndex
			set DamageListener_typeId[this_1] = 737
		else
			call error("Out of memory: Could not create DamageListener_addListener_Buff.")
			set this_1 = 0
		endif
	else
		set DamageListener_firstFree = DamageListener_firstFree - 1
		set this_1 = DamageListener_nextFree[DamageListener_firstFree]
		set DamageListener_typeId[this_1] = 737
	endif
	return this_1
endfunction

function alloc_EventListener_add_Buff takes nothing returns integer
	local integer this_1
	if EventListener_firstFree == 0 then
		if EventListener_maxIndex < JASS_MAX_ARRAY_SIZE then
			set EventListener_maxIndex = EventListener_maxIndex + 1
			set this_1 = EventListener_maxIndex
			set EventListener_typeId[this_1] = 766
		else
			call error("Out of memory: Could not create EventListener_add_Buff.")
			set this_1 = 0
		endif
	else
		set EventListener_firstFree = EventListener_firstFree - 1
		set this_1 = EventListener_nextFree[EventListener_firstFree]
		set EventListener_typeId[this_1] = 766
	endif
	return this_1
endfunction

function alloc_EventListener_add_Buff_1685 takes nothing returns integer
	local integer this_1
	if EventListener_firstFree == 0 then
		if EventListener_maxIndex < JASS_MAX_ARRAY_SIZE then
			set EventListener_maxIndex = EventListener_maxIndex + 1
			set this_1 = EventListener_maxIndex
			set EventListener_typeId[this_1] = 767
		else
			call error("Out of memory: Could not create EventListener_add_Buff.")
			set this_1 = 0
		endif
	else
		set EventListener_firstFree = EventListener_firstFree - 1
		set this_1 = EventListener_nextFree[EventListener_firstFree]
		set EventListener_typeId[this_1] = 767
	endif
	return this_1
endfunction

function DamageListener_init takes integer this_1 returns nothing
	set DamageListener_next[this_1] = 0
endfunction

function construct_DamageListener takes integer this_1 returns nothing
	call DamageListener_init(this_1)
endfunction

function alloc_BackIterator takes nothing returns integer
	local integer this_1
	if BackIterator_firstFree == 0 then
		if BackIterator_maxIndex < JASS_MAX_ARRAY_SIZE then
			set BackIterator_maxIndex = BackIterator_maxIndex + 1
			set this_1 = BackIterator_maxIndex
		else
			call error("Out of memory: Could not create BackIterator.")
			set this_1 = 0
		endif
	else
		set BackIterator_firstFree = BackIterator_firstFree - 1
		set this_1 = BackIterator_nextFree[BackIterator_firstFree]
	endif
	return this_1
endfunction

function BackIterator_init takes integer this_1 returns nothing
endfunction

function construct_BackIterator takes integer this_1, boolean destroyOnClose returns nothing
	call BackIterator_init(this_1)
endfunction

function new_BackIterator takes boolean destroyOnClose returns integer
	local integer this_1 = alloc_BackIterator()
	call construct_BackIterator(this_1, destroyOnClose)
	return this_1
endfunction

function alloc_Iterator_1820 takes nothing returns integer
	local integer this_1
	if Iterator_firstFree_1035 == 0 then
		if Iterator_maxIndex_1039 < JASS_MAX_ARRAY_SIZE then
			set Iterator_maxIndex_1039 = Iterator_maxIndex_1039 + 1
			set this_1 = Iterator_maxIndex_1039
			set Iterator_typeId_1047[this_1] = 979
		else
			call error("Out of memory: Could not create Iterator.")
			set this_1 = 0
		endif
	else
		set Iterator_firstFree_1035 = Iterator_firstFree_1035 - 1
		set this_1 = Iterator_nextFree_1043[Iterator_firstFree_1035]
		set Iterator_typeId_1047[this_1] = 979
	endif
	return this_1
endfunction

function Iterator_init_802 takes integer this_1 returns nothing
	set Iterator_current_1031[this_1] = Buff_LinkedListModule_first
endfunction

function construct_Iterator_2226 takes integer this_1, boolean destroyOnClose returns nothing
	call Iterator_init_802(this_1)
endfunction

function new_Iterator_3695 takes boolean destroyOnClose returns integer
	local integer this_1 = alloc_Iterator_1820()
	call construct_Iterator_2226(this_1, destroyOnClose)
	return this_1
endfunction

function init_Buff takes nothing returns boolean
	local integer clVar
	local integer clVar_1
	local integer clVar_2
	local playerunitevent temp
	local playerunitevent temp_1
	set Buff_BUFF_ANIM_PERIOD = 0.25
	set Buff_LinkedListModule_first = 0
	set Buff_LinkedListModule_last = 0
	set Buff_LinkedListModule_size = 0
	call new_Iterator_3695(false)
	call new_BackIterator(false)
	set clVar = alloc_DamageListener_addListener_Buff()
	call construct_DamageListener(clVar)
	call DamageEvent_addListener(clVar)
	set temp = EVENT_PLAYER_UNIT_UPGRADE_FINISH
	set clVar_1 = alloc_EventListener_add_Buff()
	call construct_EventListener(clVar_1)
	call EventListener_add(temp, clVar_1)
	set temp_1 = EVENT_PLAYER_UNIT_DEATH
	set clVar_2 = alloc_EventListener_add_Buff_1685()
	call construct_EventListener(clVar_2)
	call EventListener_add(temp_1, clVar_2)
	return true
endfunction

function init_BuffIds takes nothing returns boolean
	return true
endfunction

function init_Builder takes nothing returns boolean
	set Builder_BUILDER_CIRCLES_ID = 2016424044
	set Builder_MENU_CIRCLES_ID = 1095577710
	set Builder_MENU_OBJECTS_ID = 1095577711
	set Builder_MENU_ENVIROMENTALS_ID = 1095577712
	set Builder_MENU_DECORATIONS_ID = 1095577713
	set Builder_CHAOS_BUILDER_1 = 1095577714
	set Builder_CHAOS_BUILDER_2 = 1095577715
	set Builder_CHAOS_BUILDER_3 = 1095577716
	set Builder_CHAOS_BUILDER_4 = 1095577717
	return true
endfunction

function init_BuilderConstants takes nothing returns boolean
	local integer i
	local real tuple_temp
	local real tuple_temp_1
	set BuilderConstants_TURN_ON_ID = 1095577650
	set BuilderConstants_TURN_OFF_ID = 1095577651
	set BuilderConstants_MAKE_UNIT_INVISIBLE_ID = 1095577652
	set BuilderConstants_MAKE_UNIT_VISIBLE_ID = 1095577653
	set BuilderConstants_REMOVE_OBJECT_ID = 1095577654
	set BuilderConstants_MODE_ESCAPERS_ID = 1095577655
	set BuilderConstants_MODE_KILLERS_ID = 1095577656
	set BuilderConstants_MODE_BOTH_ID = 1095577657
	set BuilderConstants_TELEPORTER_ID = 1952803941
	set BuilderConstants_WAYPOINT_ID = 2002876784
	set BuilderConstants_ARCANERY_ID = 1634886497
	set BuilderConstants_EXECUTER_ID = 1702389091
	set BuilderConstants_TC_BLOCKER_ID = 1952670316
	set BuilderConstants_UNIT_CREATOR_ID = 1970168690
	set BuilderConstants_UNIT_REMOVER_ID = 1970172517
	set BuilderConstants_REVIVE_POINT_ID = 1919252080
	set BuilderConstants_JUMPER_ID = 1786080624
	set BuilderConstants_TEXTER_ID = 1952807028
	set BuilderConstants_BOOSTER_ID = 1651733618
	set BuilderConstants_TRAP_ID = 1953653104
	set BuilderConstants_BOMB_TOWER_ID = 1651335796
	set BuilderConstants_CONGA_LINE_HEAD_ID = 1668048996
	set BuilderConstants_DOORDUMMY_ID = 1685025329
	set BuilderConstants_DOORORDER_ID = 1685025330
	set BuilderConstants_FOUNTAIN_BOTH_ID = 1718514737
	set BuilderConstants_FOUNTAIN_HEAL_ID = 1718514738
	set BuilderConstants_FOUNTAIN_CURE_ID = 1718514739
	set BuilderConstants_POWER_NODE_ID = 1886875236
	set BuilderConstants_SPINNER_ID = 1936748146
	set BuilderConstants_BUILD_TRACKS_ID = 1953653091
	set BuilderConstants_VORTEX_ID = 1987212408
	set BuilderConstants_PED_ID = 2016423985
	set BuilderConstants_VOLCANO_ID = 1987013731
	set BuilderConstants_HOR_WALL_ID = 1752654188
	set BuilderConstants_VER_WALL_ID = 1987535212
	set BuilderConstants_WALL_ID = 2002873452
	set BuilderConstants_TREE_DUMMY_ID = 1953654117
	set BuilderConstants_SOBS_DUMMY_ID = 1936679539
	set BuilderConstants_BOBS_DUMMY_ID = 1651466867
	set BuilderConstants_HOBS_DUMMY_ID = 2003335526
	set BuilderConstants_REMAINS_ID = 2016423986
	set BuilderConstants_FARM_ID = 2016423987
	set BuilderConstants_ICE_CRYSTAL_ID = 2016423988
	set BuilderConstants_OBELISK_ID = 2016423989
	set BuilderConstants_POISON_EGGS_ID = 2016423990
	set BuilderConstants_LANTERN_ID = 2016423991
	set BuilderConstants_MUSHROOM_ID = 2016423992
	set BuilderConstants_POST_LANTERN_ID = 2016423993
	set BuilderConstants_RUNE_ID = 2016424033
	set BuilderConstants_TORCH_ID = 2016424034
	set BuilderConstants_SUPERLIGHT_ID = 2016424035
	set BuilderConstants_SMALL_GRASS_KILLER_ID = 1936159339
	set BuilderConstants_SMALL_ICE_KILLER_ID = 1936286571
	set BuilderConstants_SMALL_CITADEL_KILLER_ID = 1935894891
	set BuilderConstants_SMALL_SAND_KILLER_ID = 1936941419
	set BuilderConstants_SMALL_SUNKEN_KILLER_ID = 1936946539
	set BuilderConstants_BIG_GRASS_KILLER_ID = 1650946667
	set BuilderConstants_BIG_ICE_KILLER_ID = 1651077995
	set BuilderConstants_BIG_CITADEL_KILLER_ID = 1650682219
	set BuilderConstants_BIG_SAND_KILLER_ID = 1651728747
	set BuilderConstants_BIG_SUNKEN_KILLER_ID = 1651733867
	set BuilderConstants_ESC_STRONG_ID = 1213018161
	set BuilderConstants_ESC_ICE_ID = 1213018163
	set BuilderConstants_ESC_FAST_ID = 1213018164
	set BuilderConstants_ESC_HOLY_ID = 1213018165
	set BuilderConstants_ESC_BLIND_ID = 1213018166
	set tuple_temp = -6000.
	set tuple_temp_1 = 6000.
	set BuilderConstants_hidden_x = tuple_temp
	set BuilderConstants_hidden_y = tuple_temp_1
	set BuilderConstants_CONTROLLABLEICE = 1315529573
	set BuilderConstants_UNCONTROLLABLEICE = 1231317865
	set BuilderConstants_REVICE = 1198285174
	set BuilderConstants_LAVA = 1198290531
	set BuilderConstants_POISON = 1131442035
	set BuilderConstants_RUNES = 1232233067
	set BuilderConstants_MENU_2 = 1093677135
	set BuilderConstants_MENU_3 = 1093678402
	set BuilderConstants_MENU_BOSS = 1093677892
	set BuilderConstants_KEY_SPELL_ID = 1093677914
	set BuilderConstants_TOME_SPELL_ID = 1093678128
	set BuilderConstants_COIN_SPELL_ID = 1093679182
	set BuilderConstants_BOOTS_SPELL_ID = 1093677913
	set BuilderConstants_BM_BOSS_ID = 1093677894
	set BuilderConstants_BM_SPELLTARGET_ID = 1093678673
	set BuilderConstants_BM_DAMAGER_ID = 1093678674
	set BuilderConstants_BM_WEAPON_ID = 1093678921
	set BuilderConstants_TOME_ID = 1227894849
	set BuilderConstants_COIN_ID = 1227895088
	set BuilderConstants_BOOTS_ID = 1227894861
	set BuilderConstants_REGION_ADMIN_ID = 1918985325
	set BuilderConstants_colorSpells[0] = 1093678420
	set BuilderConstants_colorSpells[1] = 1093678421
	set BuilderConstants_colorSpells[2] = 1093678422
	set BuilderConstants_colorSpells[3] = 1093678423
	set BuilderConstants_colorSpells[4] = 1093678419
	set BuilderConstants_colorSpells[5] = 1093678424
	set BuilderConstants_colorSpells[6] = 1093678425
	set BuilderConstants_colorSpells[7] = 1093678426
	set BuilderConstants_colorSpells[8] = 1093678640
	set i = 0
	loop
		exitwhen i > 8
		call preloadAbility_1(BuilderConstants_colorSpells[i])
		set i = i + 1
	endloop
	return true
endfunction

function init_Buildings takes nothing returns boolean
	return true
endfunction

function init_Camerashakes takes nothing returns boolean
	set Camerashakes_LOOP_PERIOD = 0.10
	set Camerashakes_SHAKE_REDUCE_FLAT = 0.50
	set Camerashakes_SHAKE_REDUCE_PERCENT = 0.05
	set Camerashakes_SHAKE_THRESHOLD = 0.50
	set Camerashakes_RICHTER_MAX = 5.0
	set Camerashakes_RICHTER_MIN = 2.0
	set Camerashakes_shakingPlayers = CreateForce()
	call timer_startPeriodic(CreateTimer(), Camerashakes_LOOP_PERIOD, ref_function_onLoop)
	return true
endfunction

function alloc_OrderStringFactory takes nothing returns integer
	local integer this_1
	if OrderStringFactory_firstFree == 0 then
		if OrderStringFactory_maxIndex < JASS_MAX_ARRAY_SIZE then
			set OrderStringFactory_maxIndex = OrderStringFactory_maxIndex + 1
			set this_1 = OrderStringFactory_maxIndex
		else
			call error("Out of memory: Could not create OrderStringFactory.")
			set this_1 = 0
		endif
	else
		set OrderStringFactory_firstFree = OrderStringFactory_firstFree - 1
		set this_1 = OrderStringFactory_nextFree[OrderStringFactory_firstFree]
	endif
	return this_1
endfunction

function OrderStringFactory_init takes integer this_1 returns nothing
endfunction

function construct_OrderStringFactory takes integer this_1 returns nothing
	call OrderStringFactory_init(this_1)
endfunction

function new_OrderStringFactory takes nothing returns integer
	local integer this_1 = alloc_OrderStringFactory()
	call construct_OrderStringFactory(this_1)
	return this_1
endfunction

function init_ChannelAbilityPreset takes nothing returns boolean
	call new_OrderStringFactory()
	return true
endfunction

function init_ChunkedString takes nothing returns boolean
	set ChunkedString_DEFAULT_CHUNK_SIZE = 200
	return true
endfunction

function alloc_CallbackSingle_nullTimer_ClosureEvents takes nothing returns integer
	local integer this_1
	if CallbackSingle_firstFree == 0 then
		if CallbackSingle_maxIndex < JASS_MAX_ARRAY_SIZE then
			set CallbackSingle_maxIndex = CallbackSingle_maxIndex + 1
			set this_1 = CallbackSingle_maxIndex
			set CallbackSingle_typeId[this_1] = 709
		else
			call error("Out of memory: Could not create CallbackSingle_nullTimer_ClosureEvents.")
			set this_1 = 0
		endif
	else
		set CallbackSingle_firstFree = CallbackSingle_firstFree - 1
		set this_1 = CallbackSingle_nextFree[CallbackSingle_firstFree]
		set CallbackSingle_typeId[this_1] = 709
	endif
	return this_1
endfunction

function onUnitDeindex takes code func returns nothing
	call trigger_addCondition(UnitIndexer_onDeindexTrigger, Condition(func))
endfunction

function onUnitIndex takes code func returns nothing
	call trigger_addCondition(UnitIndexer_onIndexTrigger, Condition(func))
endfunction

function init_ClosureEvents takes nothing returns boolean
	local integer clVar
	set ClosureEvents_EVENT_PLAYER_CHAT_FILTER = ConvertPlayerEvent(96)
	set EventListener_castMap = new_HashMap()
	set EventListener_useMouseEvents = false
	set ClosureEvents_unitTrig = CreateTrigger()
	set ClosureEvents_leaveTrig = CreateTrigger()
	set ClosureEvents_keyTrig = CreateTrigger()
	set ClosureEvents_eventTypeCounter = 0
	call onUnitIndex(ref_function_code__onUnitIndex_ClosureEvents)
	call onUnitDeindex(ref_function_code__onUnitDeindex_ClosureEvents)
	set clVar = alloc_CallbackSingle_nullTimer_ClosureEvents()
	call construct_CallbackSingle(clVar)
	call nullTimer(clVar)
	return true
endfunction

function init_ClosureForGroups takes nothing returns boolean
	local real tuple_temp
	local real tuple_temp_1
	set ClosureForGroups_DUMMY_GROUP = CreateGroup()
	set ClosureForGroups_tempCallbacksCount = 0
	set ClosureForGroups_maxCount = Integer_INT_MAX
	set ClosureForGroups_iterCount = 0
	set ClosureForGroups_filter = Filter(ref_function_code__Filter_ClosureForGroups)
	call Rect(0., 0., 0., 0.)
	set tuple_temp = Vectors_ZERO2_x
	set tuple_temp_1 = Vectors_ZERO2_y
	return true
endfunction

function init_ClosureTimers takes nothing returns boolean
	set ClosureTimers_x = 200
	return true
endfunction

function init_CodeGenerator takes nothing returns boolean
	return true
endfunction

function init_Coin takes nothing returns boolean
	set Coin_COIN_DUMMY_ID = 2016424043
	return true
endfunction

function alloc_CollisionWorld takes nothing returns integer
	local integer this_1
	if CollisionWorld_firstFree == 0 then
		if CollisionWorld_maxIndex < JASS_MAX_ARRAY_SIZE then
			set CollisionWorld_maxIndex = CollisionWorld_maxIndex + 1
			set this_1 = CollisionWorld_maxIndex
		else
			call error("Out of memory: Could not create CollisionWorld.")
			set this_1 = 0
		endif
	else
		set CollisionWorld_firstFree = CollisionWorld_firstFree - 1
		set this_1 = CollisionWorld_nextFree[CollisionWorld_firstFree]
	endif
	return this_1
endfunction

function CollisionWorld_init takes integer this_1 returns nothing
	call new_LinkedList()
	call new_LinkedList()
endfunction

function construct_CollisionWorld takes integer this_1, rect re returns nothing
	call CollisionWorld_init(this_1)
	call rect_getMinX(re)
	call rect_getMinY(re)
	call rect_getMaxX(re)
	call rect_getMaxY(re)
endfunction

function new_CollisionWorld takes rect re returns integer
	local integer this_1 = alloc_CollisionWorld()
	call construct_CollisionWorld(this_1, re)
	return this_1
endfunction

function alloc_SphereShape takes nothing returns integer
	local integer this_1
	if CollisionShape_firstFree == 0 then
		if CollisionShape_maxIndex < JASS_MAX_ARRAY_SIZE then
			set CollisionShape_maxIndex = CollisionShape_maxIndex + 1
			set this_1 = CollisionShape_maxIndex
		else
			call error("Out of memory: Could not create SphereShape.")
			set this_1 = 0
		endif
	else
		set CollisionShape_firstFree = CollisionShape_firstFree - 1
		set this_1 = CollisionShape_nextFree[CollisionShape_firstFree]
	endif
	return this_1
endfunction

function SphereShape_init takes integer this_1 returns nothing
endfunction

function construct_SphereShape takes integer this_1 returns nothing
	call SphereShape_init(this_1)
endfunction

function new_SphereShape takes nothing returns integer
	local integer this_1 = alloc_SphereShape()
	call construct_SphereShape(this_1)
	return this_1
endfunction

function init_Collision takes nothing returns boolean
	call new_CollisionWorld(MapBounds_playableMapRect)
	call new_SphereShape()
	return true
endfunction

function initializeTable takes nothing returns nothing
	local integer i = 0
	loop
		exitwhen i > 15
		call dispatch_Table_Table_Table_saveInt(Colors_decs, string_getHash(Colors_hexs[i]), i)
		set i = i + 1
	endloop
endfunction

function init_Colors takes nothing returns boolean
	local integer tuple_temp
	local integer tuple_temp_1
	local integer tuple_temp_2
	local integer tuple_temp_3
	local integer tuple_temp_4
	local integer tuple_temp_5
	local integer tuple_temp_6
	local integer tuple_temp_7
	local integer tuple_temp_8
	local integer tuple_temp_9
	local integer tuple_temp_10
	local integer tuple_temp_11
	local integer tuple_temp_12
	local integer tuple_temp_13
	local integer tuple_temp_14
	local integer tuple_temp_15
	local integer tuple_temp_16
	local integer tuple_temp_17
	local integer tuple_temp_18
	local integer tuple_temp_19
	local integer tuple_temp_20
	local integer tuple_temp_21
	local integer tuple_temp_22
	local integer tuple_temp_23
	local integer tuple_temp_24
	local integer tuple_temp_25
	local integer tuple_temp_26
	local integer tuple_temp_27
	local integer tuple_temp_28
	local integer tuple_temp_29
	local integer tuple_temp_30
	local integer tuple_temp_31
	local integer tuple_temp_32
	local integer tuple_temp_33
	local integer tuple_temp_34
	local integer tuple_temp_35
	local integer tuple_temp_36
	local integer tuple_temp_37
	local integer tuple_temp_38
	local integer tuple_temp_39
	local integer tuple_temp_40
	local integer tuple_temp_41
	local integer tuple_temp_42
	local integer tuple_temp_43
	local integer tuple_temp_44
	local integer tuple_temp_45
	local integer tuple_temp_46
	local integer tuple_temp_47
	local integer tuple_temp_48
	local integer tuple_temp_49
	local integer tuple_temp_50
	local integer tuple_temp_51
	local integer tuple_temp_52
	local integer tuple_temp_53
	local integer tuple_temp_54
	local integer tuple_temp_55
	local integer tuple_temp_56
	local integer tuple_temp_57
	local integer tuple_temp_58
	local integer tuple_temp_59
	local integer tuple_temp_60
	local integer tuple_temp_61
	local integer tuple_temp_62
	local integer tuple_temp_63
	local integer tuple_temp_64
	local integer tuple_temp_65
	local integer tuple_temp_66
	local integer tuple_temp_67
	local integer tuple_temp_68
	local integer tuple_temp_69
	local integer tuple_temp_70
	local integer tuple_temp_71
	local integer tuple_temp_72
	local integer tuple_temp_73
	local integer tuple_temp_74
	local integer tuple_temp_75
	local integer tuple_temp_76
	local integer tuple_temp_77
	local integer tuple_temp_78
	local integer tuple_temp_79
	local integer tuple_temp_80
	local integer tuple_temp_81
	local integer tuple_temp_82
	local integer tuple_temp_83
	set Colors_hexs[0] = "0"
	set Colors_hexs[1] = "1"
	set Colors_hexs[2] = "2"
	set Colors_hexs[3] = "3"
	set Colors_hexs[4] = "4"
	set Colors_hexs[5] = "5"
	set Colors_hexs[6] = "6"
	set Colors_hexs[7] = "7"
	set Colors_hexs[8] = "8"
	set Colors_hexs[9] = "9"
	set Colors_hexs[10] = "A"
	set Colors_hexs[11] = "B"
	set Colors_hexs[12] = "C"
	set Colors_hexs[13] = "D"
	set Colors_hexs[14] = "E"
	set Colors_hexs[15] = "F"
	set Colors_decs = new_Table()
	set tuple_temp = 255
	set tuple_temp_1 = 255
	set tuple_temp_2 = 255
	set tuple_temp_3 = 255
	set Colors_COLOR_WHITE_red = tuple_temp
	set Colors_COLOR_WHITE_green = tuple_temp_1
	set Colors_COLOR_WHITE_blue = tuple_temp_2
	set Colors_COLOR_WHITE_alpha = tuple_temp_3
	set tuple_temp_4 = 0
	set tuple_temp_5 = 0
	set tuple_temp_6 = 0
	set tuple_temp_7 = 0
	set Colors_COLOR_BLACK_red = tuple_temp_4
	set Colors_COLOR_BLACK_green = tuple_temp_5
	set Colors_COLOR_BLACK_blue = tuple_temp_6
	set Colors_COLOR_BLACK_alpha = tuple_temp_7
	set tuple_temp_8 = 255
	set tuple_temp_9 = 204
	set tuple_temp_10 = 0
	set tuple_temp_11 = 255
	set Colors_COLOR_GOLD_red = tuple_temp_8
	set Colors_COLOR_GOLD_green = tuple_temp_9
	set Colors_COLOR_GOLD_blue = tuple_temp_10
	set Colors_COLOR_GOLD_alpha = tuple_temp_11
	call colorA_toColorString(Colors_COLOR_WHITE_red, Colors_COLOR_WHITE_green, Colors_COLOR_WHITE_blue, Colors_COLOR_WHITE_alpha)
	call colorA_toColorString(Colors_COLOR_BLACK_red, Colors_COLOR_BLACK_green, Colors_COLOR_BLACK_blue, Colors_COLOR_BLACK_alpha)
	call colorA_toColorString(Colors_COLOR_GOLD_red, Colors_COLOR_GOLD_green, Colors_COLOR_GOLD_blue, Colors_COLOR_GOLD_alpha)
	set Colors_MAX_PLAYER_COLORS = 23
	set tuple_temp_12 = 255
	set tuple_temp_13 = 2
	set tuple_temp_14 = 2
	set Colors_PLAYER_COLORS_red[0] = tuple_temp_12
	set Colors_PLAYER_COLORS_green[0] = tuple_temp_13
	set Colors_PLAYER_COLORS_blue[0] = tuple_temp_14
	set tuple_temp_15 = 0
	set tuple_temp_16 = 65
	set tuple_temp_17 = 255
	set Colors_PLAYER_COLORS_red[1] = tuple_temp_15
	set Colors_PLAYER_COLORS_green[1] = tuple_temp_16
	set Colors_PLAYER_COLORS_blue[1] = tuple_temp_17
	set tuple_temp_18 = 27
	set tuple_temp_19 = 229
	set tuple_temp_20 = 184
	set Colors_PLAYER_COLORS_red[2] = tuple_temp_18
	set Colors_PLAYER_COLORS_green[2] = tuple_temp_19
	set Colors_PLAYER_COLORS_blue[2] = tuple_temp_20
	set tuple_temp_21 = 83
	set tuple_temp_22 = 0
	set tuple_temp_23 = 128
	set Colors_PLAYER_COLORS_red[3] = tuple_temp_21
	set Colors_PLAYER_COLORS_green[3] = tuple_temp_22
	set Colors_PLAYER_COLORS_blue[3] = tuple_temp_23
	set tuple_temp_24 = 255
	set tuple_temp_25 = 252
	set tuple_temp_26 = 0
	set Colors_PLAYER_COLORS_red[4] = tuple_temp_24
	set Colors_PLAYER_COLORS_green[4] = tuple_temp_25
	set Colors_PLAYER_COLORS_blue[4] = tuple_temp_26
	set tuple_temp_27 = 254
	set tuple_temp_28 = 137
	set tuple_temp_29 = 13
	set Colors_PLAYER_COLORS_red[5] = tuple_temp_27
	set Colors_PLAYER_COLORS_green[5] = tuple_temp_28
	set Colors_PLAYER_COLORS_blue[5] = tuple_temp_29
	set tuple_temp_30 = 31
	set tuple_temp_31 = 191
	set tuple_temp_32 = 0
	set Colors_PLAYER_COLORS_red[6] = tuple_temp_30
	set Colors_PLAYER_COLORS_green[6] = tuple_temp_31
	set Colors_PLAYER_COLORS_blue[6] = tuple_temp_32
	set tuple_temp_33 = 228
	set tuple_temp_34 = 90
	set tuple_temp_35 = 175
	set Colors_PLAYER_COLORS_red[7] = tuple_temp_33
	set Colors_PLAYER_COLORS_green[7] = tuple_temp_34
	set Colors_PLAYER_COLORS_blue[7] = tuple_temp_35
	set tuple_temp_36 = 148
	set tuple_temp_37 = 149
	set tuple_temp_38 = 150
	set Colors_PLAYER_COLORS_red[8] = tuple_temp_36
	set Colors_PLAYER_COLORS_green[8] = tuple_temp_37
	set Colors_PLAYER_COLORS_blue[8] = tuple_temp_38
	set tuple_temp_39 = 125
	set tuple_temp_40 = 190
	set tuple_temp_41 = 241
	set Colors_PLAYER_COLORS_red[9] = tuple_temp_39
	set Colors_PLAYER_COLORS_green[9] = tuple_temp_40
	set Colors_PLAYER_COLORS_blue[9] = tuple_temp_41
	set tuple_temp_42 = 15
	set tuple_temp_43 = 97
	set tuple_temp_44 = 69
	set Colors_PLAYER_COLORS_red[10] = tuple_temp_42
	set Colors_PLAYER_COLORS_green[10] = tuple_temp_43
	set Colors_PLAYER_COLORS_blue[10] = tuple_temp_44
	set tuple_temp_45 = 77
	set tuple_temp_46 = 41
	set tuple_temp_47 = 3
	set Colors_PLAYER_COLORS_red[11] = tuple_temp_45
	set Colors_PLAYER_COLORS_green[11] = tuple_temp_46
	set Colors_PLAYER_COLORS_blue[11] = tuple_temp_47
	set tuple_temp_48 = 155
	set tuple_temp_49 = 0
	set tuple_temp_50 = 0
	set Colors_PLAYER_COLORS_red[12] = tuple_temp_48
	set Colors_PLAYER_COLORS_green[12] = tuple_temp_49
	set Colors_PLAYER_COLORS_blue[12] = tuple_temp_50
	set tuple_temp_51 = 0
	set tuple_temp_52 = 0
	set tuple_temp_53 = 195
	set Colors_PLAYER_COLORS_red[13] = tuple_temp_51
	set Colors_PLAYER_COLORS_green[13] = tuple_temp_52
	set Colors_PLAYER_COLORS_blue[13] = tuple_temp_53
	set tuple_temp_54 = 0
	set tuple_temp_55 = 234
	set tuple_temp_56 = 255
	set Colors_PLAYER_COLORS_red[14] = tuple_temp_54
	set Colors_PLAYER_COLORS_green[14] = tuple_temp_55
	set Colors_PLAYER_COLORS_blue[14] = tuple_temp_56
	set tuple_temp_57 = 190
	set tuple_temp_58 = 0
	set tuple_temp_59 = 254
	set Colors_PLAYER_COLORS_red[15] = tuple_temp_57
	set Colors_PLAYER_COLORS_green[15] = tuple_temp_58
	set Colors_PLAYER_COLORS_blue[15] = tuple_temp_59
	set tuple_temp_60 = 235
	set tuple_temp_61 = 205
	set tuple_temp_62 = 135
	set Colors_PLAYER_COLORS_red[16] = tuple_temp_60
	set Colors_PLAYER_COLORS_green[16] = tuple_temp_61
	set Colors_PLAYER_COLORS_blue[16] = tuple_temp_62
	set tuple_temp_63 = 248
	set tuple_temp_64 = 164
	set tuple_temp_65 = 139
	set Colors_PLAYER_COLORS_red[17] = tuple_temp_63
	set Colors_PLAYER_COLORS_green[17] = tuple_temp_64
	set Colors_PLAYER_COLORS_blue[17] = tuple_temp_65
	set tuple_temp_66 = 191
	set tuple_temp_67 = 255
	set tuple_temp_68 = 128
	set Colors_PLAYER_COLORS_red[18] = tuple_temp_66
	set Colors_PLAYER_COLORS_green[18] = tuple_temp_67
	set Colors_PLAYER_COLORS_blue[18] = tuple_temp_68
	set tuple_temp_69 = 220
	set tuple_temp_70 = 185
	set tuple_temp_71 = 235
	set Colors_PLAYER_COLORS_red[19] = tuple_temp_69
	set Colors_PLAYER_COLORS_green[19] = tuple_temp_70
	set Colors_PLAYER_COLORS_blue[19] = tuple_temp_71
	set tuple_temp_72 = 40
	set tuple_temp_73 = 40
	set tuple_temp_74 = 40
	set Colors_PLAYER_COLORS_red[20] = tuple_temp_72
	set Colors_PLAYER_COLORS_green[20] = tuple_temp_73
	set Colors_PLAYER_COLORS_blue[20] = tuple_temp_74
	set tuple_temp_75 = 235
	set tuple_temp_76 = 240
	set tuple_temp_77 = 255
	set Colors_PLAYER_COLORS_red[21] = tuple_temp_75
	set Colors_PLAYER_COLORS_green[21] = tuple_temp_76
	set Colors_PLAYER_COLORS_blue[21] = tuple_temp_77
	set tuple_temp_78 = 0
	set tuple_temp_79 = 120
	set tuple_temp_80 = 30
	set Colors_PLAYER_COLORS_red[22] = tuple_temp_78
	set Colors_PLAYER_COLORS_green[22] = tuple_temp_79
	set Colors_PLAYER_COLORS_blue[22] = tuple_temp_80
	set tuple_temp_81 = 164
	set tuple_temp_82 = 111
	set tuple_temp_83 = 51
	set Colors_PLAYER_COLORS_red[23] = tuple_temp_81
	set Colors_PLAYER_COLORS_green[23] = tuple_temp_82
	set Colors_PLAYER_COLORS_blue[23] = tuple_temp_83
	set Colors_PLAYER_COLOR_NAMES[0] = "red"
	set Colors_PLAYER_COLOR_NAMES[1] = "blue"
	set Colors_PLAYER_COLOR_NAMES[2] = "teal"
	set Colors_PLAYER_COLOR_NAMES[3] = "purple"
	set Colors_PLAYER_COLOR_NAMES[4] = "yellow"
	set Colors_PLAYER_COLOR_NAMES[5] = "orange"
	set Colors_PLAYER_COLOR_NAMES[6] = "green"
	set Colors_PLAYER_COLOR_NAMES[7] = "pink"
	set Colors_PLAYER_COLOR_NAMES[8] = "gray"
	set Colors_PLAYER_COLOR_NAMES[9] = "light blue"
	set Colors_PLAYER_COLOR_NAMES[10] = "dark green"
	set Colors_PLAYER_COLOR_NAMES[11] = "brown"
	set Colors_PLAYER_COLOR_NAMES[12] = "maroon"
	set Colors_PLAYER_COLOR_NAMES[13] = "navy"
	set Colors_PLAYER_COLOR_NAMES[14] = "turquoise"
	set Colors_PLAYER_COLOR_NAMES[15] = "violet"
	set Colors_PLAYER_COLOR_NAMES[16] = "wheat"
	set Colors_PLAYER_COLOR_NAMES[17] = "peach"
	set Colors_PLAYER_COLOR_NAMES[18] = "mint"
	set Colors_PLAYER_COLOR_NAMES[19] = "lavender"
	set Colors_PLAYER_COLOR_NAMES[20] = "coal"
	set Colors_PLAYER_COLOR_NAMES[21] = "snow"
	set Colors_PLAYER_COLOR_NAMES[22] = "emerald"
	set Colors_PLAYER_COLOR_NAMES[23] = "peanut"
	call initializeTable()
	return true
endfunction

function alloc_EventListener_add_Commands takes nothing returns integer
	local integer this_1
	if EventListener_firstFree == 0 then
		if EventListener_maxIndex < JASS_MAX_ARRAY_SIZE then
			set EventListener_maxIndex = EventListener_maxIndex + 1
			set this_1 = EventListener_maxIndex
			set EventListener_typeId[this_1] = 772
		else
			call error("Out of memory: Could not create EventListener_add_Commands.")
			set this_1 = 0
		endif
	else
		set EventListener_firstFree = EventListener_firstFree - 1
		set this_1 = EventListener_nextFree[EventListener_firstFree]
		set EventListener_typeId[this_1] = 772
	endif
	return this_1
endfunction

function init_Commands takes nothing returns boolean
	local playerevent temp = ClosureEvents_EVENT_PLAYER_CHAT_FILTER
	local integer clVar = alloc_EventListener_add_Commands()
	call construct_EventListener(clVar)
	call EventListener_add(temp, clVar)
	return true
endfunction

function init_CongaObjects takes nothing returns boolean
	set CongaObjects_ADD_ID = 1095577906
	set CongaObjects_INC_ID = 1095577907
	set CongaObjects_DEC_ID = 1095577908
	set CongaObjects_CONGA_STRICT_ID = 1095577909
	set CongaObjects_CONGA_LOOSE_ID = 1095577910
	set CongaObjects_CONGA_CONFIG_ID = 1095577912
	return true
endfunction

function init_CustomBar takes nothing returns boolean
	set CustomBar_DEFAULT_BACKGROUND = -16777216
	set CustomBar_DEFAULT_FOREGROUND = -1
	set CustomBar_count = 0
	set CustomBar_animationTimer = CreateTimer()
	return true
endfunction

function alloc_EventListener_add_DamageEvent takes nothing returns integer
	local integer this_1
	if EventListener_firstFree == 0 then
		if EventListener_maxIndex < JASS_MAX_ARRAY_SIZE then
			set EventListener_maxIndex = EventListener_maxIndex + 1
			set this_1 = EventListener_maxIndex
			set EventListener_typeId[this_1] = 774
		else
			call error("Out of memory: Could not create EventListener_add_DamageEvent.")
			set this_1 = 0
		endif
	else
		set EventListener_firstFree = EventListener_firstFree - 1
		set this_1 = EventListener_nextFree[EventListener_firstFree]
		set EventListener_typeId[this_1] = 774
	endif
	return this_1
endfunction

function alloc_EventListener_add_DamageEvent_1693 takes nothing returns integer
	local integer this_1
	if EventListener_firstFree == 0 then
		if EventListener_maxIndex < JASS_MAX_ARRAY_SIZE then
			set EventListener_maxIndex = EventListener_maxIndex + 1
			set this_1 = EventListener_maxIndex
			set EventListener_typeId[this_1] = 775
		else
			call error("Out of memory: Could not create EventListener_add_DamageEvent.")
			set this_1 = 0
		endif
	else
		set EventListener_firstFree = EventListener_firstFree - 1
		set this_1 = EventListener_nextFree[EventListener_firstFree]
		set EventListener_typeId[this_1] = 775
	endif
	return this_1
endfunction

function alloc_DamageElement takes nothing returns integer
	local integer this_1
	if DamageElement_firstFree == 0 then
		if DamageElement_maxIndex < JASS_MAX_ARRAY_SIZE then
			set DamageElement_maxIndex = DamageElement_maxIndex + 1
			set this_1 = DamageElement_maxIndex
		else
			call error("Out of memory: Could not create DamageElement.")
			set this_1 = 0
		endif
	else
		set DamageElement_firstFree = DamageElement_firstFree - 1
		set this_1 = DamageElement_nextFree[DamageElement_firstFree]
	endif
	return this_1
endfunction

function DamageElement_init takes integer this_1 returns nothing
endfunction

function construct_DamageElement takes integer this_1, string name, integer color_red, integer color_green, integer color_blue, integer color_alpha returns nothing
	call DamageElement_init(this_1)
endfunction

function new_DamageElement takes string name, integer color_red, integer color_green, integer color_blue, integer color_alpha returns integer
	local integer this_1 = alloc_DamageElement()
	call construct_DamageElement(this_1, name, color_red, color_green, color_blue, color_alpha)
	return this_1
endfunction

function init_DamageEvent takes nothing returns boolean
	local integer clVar
	local integer clVar_1
	local playerunitevent temp
	local playerunitevent temp_1
	set DamageEvent_DETECT_NATIVE_ABILITIES = true
	set DamageEvent_DAMAGE_ELEMENT_ATTACK = new_DamageElement("Physical", 223, 59, 33, 255)
	set DamageInstance_current = 0
	set DamageInstance_count = 0
	set DamageEvent_nextDamageId = 0
	set DamageEvent_nextDamageType = 4
	set DamageEvent_nextDamageElement = 0
	set DamageEvent_abort = false
	set DamageEvent_maxPriority = 0
	set DamageEvent_maxUnreducedPriority = 0
	set temp = EVENT_PLAYER_UNIT_DAMAGING
	set clVar = alloc_EventListener_add_DamageEvent()
	call construct_EventListener(clVar)
	call EventListener_add(temp, clVar)
	set temp_1 = EVENT_PLAYER_UNIT_DAMAGED
	set clVar_1 = alloc_EventListener_add_DamageEvent_1693()
	call construct_EventListener(clVar_1)
	call EventListener_add(temp_1, clVar_1)
	return true
endfunction

function alloc_EventListener_add_DebugInfo takes nothing returns integer
	local integer this_1
	if EventListener_firstFree == 0 then
		if EventListener_maxIndex < JASS_MAX_ARRAY_SIZE then
			set EventListener_maxIndex = EventListener_maxIndex + 1
			set this_1 = EventListener_maxIndex
			set EventListener_typeId[this_1] = 776
		else
			call error("Out of memory: Could not create EventListener_add_DebugInfo.")
			set this_1 = 0
		endif
	else
		set EventListener_firstFree = EventListener_firstFree - 1
		set this_1 = EventListener_nextFree[EventListener_firstFree]
		set EventListener_typeId[this_1] = 776
	endif
	return this_1
endfunction

function init_DebugInfo takes nothing returns boolean
	local integer i
	local trigger receiver
	local trigger receiver_1
	local integer clVar
	local playerevent temp
	set DebugInfo_rows = 3
	set DebugInfo_columns = 3
	set DebugInfo_seconds = 0
	set DebugInfo_eventCallbacksPerSecond = 0
	set DebugInfo_totalEventCallbacks = 0
	set DebugInfo_allocationsPerSecond = 0
	set DebugInfo_totalAllocations = 0
	set DebugInfo_isFirst = true
	set i = 0
	loop
		exitwhen i > 11
		set receiver = CreateTrigger()
		call trigger_registerPlayerChatEvent(receiver, Player_players[i], "-debug", true)
		set receiver_1 = receiver
		call trigger_addAction(receiver_1, ref_function_code__addAction_DebugInfo)
		set i = i + 1
	endloop
	set temp = ClosureEvents_EVENT_PLAYER_CHAT_FILTER
	set clVar = alloc_EventListener_add_DebugInfo()
	call construct_EventListener(clVar)
	call EventListener_add(temp, clVar)
	return true
endfunction

function init_Decoration takes nothing returns boolean
	set Decoration_CHANGE_FACE_ID = 1095578216
	set Decoration_INC_SCALE = 1095578217
	set Decoration_DEC_SCALE = 1095578218
	set Decoration_KEY_SCALE = "d"
	set Decoration_KEY_ANGLE = "e"
	return true
endfunction

function init_Destructable takes nothing returns boolean
	return true
endfunction

function init_Doodads takes nothing returns boolean
	set Doodads_shimmeringPortal = "Doodads\\Cinematic\\ShimmeringPortal\\ShimmeringPortal.mdx"
	return true
endfunction

function init_Door takes nothing returns boolean
	set Door_DOORPATH = 2016424051
	set Door_DOORPATH_O = 2016424052
	set Door_DOOROPEN_ABILITY_ID = 1093677130
	set Door_DOORTURN_ABILITY_ID = 1093677399
	set Door_EVENT_RADIUS = 192.
	set Door_KEY_COLOR_ID[0] = 1227894841
	set Door_KEY_COLOR_ID[1] = 1227894851
	set Door_KEY_COLOR_ID[2] = 1227894836
	set Door_KEY_COLOR_ID[3] = 1227894840
	set Door_KEY_COLOR_ID[4] = 1227894858
	set Door_KEY_COLOR_ID[5] = 1227894837
	set Door_KEY_COLOR_ID[6] = 1227894863
	set Door_KEY_COLOR_ID[7] = 1227894850
	set Door_KEY_COLOR_ID[8] = 1227894838
	set Door_KEY_COLOR = "c"
	set Door_KEY_ROTATION = "d"
	return true
endfunction

function init_DummyRecycler takes nothing returns boolean
	local integer i
	local integer temp
	local real facing_radians
	local integer j
	local integer temp_1
	local unit dummy
	local real tuple_temp
	set DummyRecycler_DUMMY_UNIT_ID = 2016424038
	set DummyRecycler_ROOT_ENABLER = 1095577704
	set DummyRecycler_DIFFERENT_ANGLES = 8
	set DummyRecycler_ANGLE_DEGREE = 360 * 1. / DummyRecycler_DIFFERENT_ANGLES
	set DummyRecycler_SAVED_UNITS_PER_ANGLE = 6
	call realToIndex(1.)
	set i = 0
	set temp = DummyRecycler_DIFFERENT_ANGLES - 1
	loop
		exitwhen i > temp
		set DummyRecycler_angleQueues[i] = new_LinkedList()
		set tuple_temp = i * DummyRecycler_ANGLE_DEGREE
		set facing_radians = tuple_temp
		set j = 0
		set temp_1 = DummyRecycler_SAVED_UNITS_PER_ANGLE - 1
		loop
			exitwhen j > temp_1
			set dummy = createDummy(vec2_op_minus(MapBounds_boundMax_x, MapBounds_boundMax_y, 16., 16.), vec2_op_minus_return_y, facing_radians)
			call dispatch_LinkedList_LinkedList_LinkedList_enqueue(DummyRecycler_angleQueues[i], unitToIndex(dummy))
			set j = j + 1
		endloop
		set i = i + 1
	endloop
	return true
endfunction

function init_Encoder takes nothing returns boolean
	set Encoder_maxHash = 1000
	return true
endfunction

function alloc_EventListener_add_Entity takes nothing returns integer
	local integer this_1
	if EventListener_firstFree == 0 then
		if EventListener_maxIndex < JASS_MAX_ARRAY_SIZE then
			set EventListener_maxIndex = EventListener_maxIndex + 1
			set this_1 = EventListener_maxIndex
			set EventListener_typeId[this_1] = 780
		else
			call error("Out of memory: Could not create EventListener_add_Entity.")
			set this_1 = 0
		endif
	else
		set EventListener_firstFree = EventListener_firstFree - 1
		set this_1 = EventListener_nextFree[EventListener_firstFree]
		set EventListener_typeId[this_1] = 780
	endif
	return this_1
endfunction

function alloc_EventListener_add_Entity_1699 takes nothing returns integer
	local integer this_1
	if EventListener_firstFree == 0 then
		if EventListener_maxIndex < JASS_MAX_ARRAY_SIZE then
			set EventListener_maxIndex = EventListener_maxIndex + 1
			set this_1 = EventListener_maxIndex
			set EventListener_typeId[this_1] = 781
		else
			call error("Out of memory: Could not create EventListener_add_Entity.")
			set this_1 = 0
		endif
	else
		set EventListener_firstFree = EventListener_firstFree - 1
		set this_1 = EventListener_nextFree[EventListener_firstFree]
		set EventListener_typeId[this_1] = 781
	endif
	return this_1
endfunction

function alloc_EventListener_add_Entity_1700 takes nothing returns integer
	local integer this_1
	if EventListener_firstFree == 0 then
		if EventListener_maxIndex < JASS_MAX_ARRAY_SIZE then
			set EventListener_maxIndex = EventListener_maxIndex + 1
			set this_1 = EventListener_maxIndex
			set EventListener_typeId[this_1] = 782
		else
			call error("Out of memory: Could not create EventListener_add_Entity.")
			set this_1 = 0
		endif
	else
		set EventListener_firstFree = EventListener_firstFree - 1
		set this_1 = EventListener_nextFree[EventListener_firstFree]
		set EventListener_typeId[this_1] = 782
	endif
	return this_1
endfunction

function init_Entity takes nothing returns boolean
	local integer clVar
	local integer clVar_1
	local integer clVar_2
	local playerunitevent temp
	local playerunitevent temp_1
	local playerunitevent temp_2
	local real tuple_temp
	local real tuple_temp_1
	local real tuple_temp_2
	set Entity_KEY_X = "x"
	set Entity_KEY_Y = "y"
	set Entity_KEY_Z = "z"
	set Entity_KEY_TYPE = "t"
	set tuple_temp = Vectors_ZERO3_x
	set tuple_temp_1 = Vectors_ZERO3_y
	set tuple_temp_2 = Vectors_ZERO3_z
	set Entity_serializeOrigin_x = tuple_temp
	set Entity_serializeOrigin_y = tuple_temp_1
	set Entity_serializeOrigin_z = tuple_temp_2
	set Entity_DupletListModule_firstActive = 0
	set Entity_DupletListModule_lastActive = 0
	set Entity_DupletListModule_firstInactive = 0
	set Entity_DupletListModule_lastInactive = 0
	set Entity_DupletListModule_activeSize = 0
	set Entity_DupletListModule_inactiveSize = 0
	set temp = EVENT_PLAYER_UNIT_PICKUP_ITEM
	set clVar = alloc_EventListener_add_Entity()
	call construct_EventListener(clVar)
	call EventListener_add(temp, clVar)
	set temp_1 = EVENT_PLAYER_UNIT_DROP_ITEM
	set clVar_1 = alloc_EventListener_add_Entity_1699()
	call construct_EventListener(clVar_1)
	call EventListener_add(temp_1, clVar_1)
	set temp_2 = EVENT_PLAYER_UNIT_USE_ITEM
	set clVar_2 = alloc_EventListener_add_Entity_1700()
	call construct_EventListener(clVar_2)
	call EventListener_add(temp_2, clVar_2)
	return true
endfunction

function Buff_LinkedListModule_iterator takes nothing returns integer
	return new_Iterator_3695(true)
endfunction

function alloc_Iterator takes nothing returns integer
	local integer this_1
	if Iterator_firstFree == 0 then
		if Iterator_maxIndex < JASS_MAX_ARRAY_SIZE then
			set Iterator_maxIndex = Iterator_maxIndex + 1
			set this_1 = Iterator_maxIndex
			set Iterator_typeId[this_1] = 978
		else
			call error("Out of memory: Could not create Iterator.")
			set this_1 = 0
		endif
	else
		set Iterator_firstFree = Iterator_firstFree - 1
		set this_1 = Iterator_nextFree[Iterator_firstFree]
		set Iterator_typeId[this_1] = 978
	endif
	return this_1
endfunction

function Iterator_init takes integer this_1 returns nothing
	set Iterator_current[this_1] = Entity_DupletListModule_firstActive
endfunction

function construct_Iterator takes integer this_1 returns nothing
	call Iterator_init(this_1)
endfunction

function new_Iterator takes nothing returns integer
	local integer this_1 = alloc_Iterator()
	call construct_Iterator(this_1)
	return this_1
endfunction

function Entity_DupletListModule_iterator takes nothing returns integer
	return new_Iterator()
endfunction

function init_EntityManagement takes nothing returns boolean
	set EntityManagement_activeItr = Entity_DupletListModule_iterator()
	set EntityManagement_buffItr = Buff_LinkedListModule_iterator()
	return true
endfunction

function init_Entity_config takes nothing returns boolean
	return true
endfunction

function init_Environment takes nothing returns boolean
	return true
endfunction

function init_ErrorHandling takes nothing returns boolean
	set ErrorHandling_MUTE_ERROR_DURATION = 60
	set ErrorHandling_PRIMARY_ERROR_KEY = -1
	set ErrorHandling_HT = hashtable_compiletime
	set ErrorHandling_lastError = ""
	set ErrorHandling_suppressErrorMessages = false
	return true
endfunction

function init_Escaper takes nothing returns boolean
	local real tuple_temp
	local real tuple_temp_1
	set Escaper_SLIDE_ADD = 3.3
	set Escaper_ANK_ITEM_ID = 1093679409
	set Escaper_TELEPORT_ITEM_ID = 1093679187
	set Escaper_JUMP_SPELL = 1093678642
	set Escaper_ORB_SPELL = 1093679169
	set Escaper_JAUNT_SPELL = 1093679172
	set Escaper_POISON_EFFECT = Abilities_poisonStingTarget
	set Escaper_LAVA_EFFECT = Abilities_flameStrikeEmbers
	set Escaper_escapers = new_LinkedList()
	set tuple_temp = unit_getPos(gg_unit_revp_0002)
	set tuple_temp_1 = unit_getPos_return_y
	set Escaper_currentRevivepoint_x = tuple_temp
	set Escaper_currentRevivepoint_y = tuple_temp_1
	call timer_startPeriodic(getTimer(), 1., ref_function_correctRegion)
	return true
endfunction

function init_EscaperClasses takes nothing returns boolean
	set EscaperClasses_REINCARNATION_ID = 1093677656
	set EscaperClasses_PORTAL_CREATE_ID = 1093679179
	set EscaperClasses_SPEEDWAVE_ID = 1093678672
	set EscaperClasses_STAGNANCYSHIELD_ID = 1093677112
	set EscaperClasses_SLOWWAVE_ID = 1093679160
	set EscaperClasses_TEMP_REV_ID = 1093678938
	set EscaperClasses_INNER_STRENGTH_ID = 1093679180
	set EscaperClasses_FIRE_RESISTANCE = 1093679185
	set Portal_Sensor_sensorListeners = new_HashMap()
	return true
endfunction

function init_EscaperKillers takes nothing returns boolean
	set EscaperKillers_COLL_SIZE_SK = 72.
	set EscaperKillers_COLL_SIZE_BK = 92.
	set EscaperKillers_COLL_SIZE_SRK = 68.
	set EscaperKillers_COLL_SIZE_BRK = 88.
	set EscaperKillers_COLL_SIZE_TANK = 80.
	set EscaperKillers_COLL_SIZE_GLAIVE = 54.
	set EscaperKillers_COLL_SIZE_AIR_Z = 78.
	set EscaperKillers_COLL_SIZE_AIR_XY = 52.
	set EscaperKillers_COLL_SIZE_FIRE = 8.
	set EscaperKillers_SMALL_RANDOM_KILLER_ID = 1936878450
	set EscaperKillers_BIG_RANDOM_KILLER_ID = 1651665778
	set EscaperKillers_GLAIVE_KILLER_ID = 1735161445
	set EscaperKillers_TANK_KILLER_ID = 1952542315
	set EscaperKillers_FIRE_KILLER_ID = 1718186597
	set EscaperKillers_AIR_KILLER_ID = 1634300523
	return true
endfunction

function init_EscaperObjects takes nothing returns boolean
	set EscaperObjects_HP_GAIN_50 = 1095577701
	set EscaperObjects_HP_GAIN_75 = 1095577702
	set EscaperObjects_HP_GAIN_100 = 1095577703
	set EscaperObjects_TOMB_DUMMY_ID = 2016424037
	return true
endfunction

function init_EscaperSensor takes nothing returns boolean
	set EscaperSensorSetup_Sensor_sensorListeners = new_HashMap()
	return true
endfunction

function init_EventHelper takes nothing returns boolean
	set EventHelper_rectMap = new_HashMap()
	set EventHelper_regionMap = new_HashMap()
	set EventHelper_triggerData = new_Table()
	return true
endfunction

function force_addPlayer takes force this_1, player whichPlayer returns nothing
	call ForceAddPlayer(this_1, whichPlayer)
endfunction

function init_Execute takes nothing returns boolean
	set Execute_executeForce = CreateForce()
	call force_addPlayer(Execute_executeForce, Player_localPlayer)
	set Execute_tempCallbacksCount = 0
	return true
endfunction

function init_Executer takes nothing returns boolean
	set Executer_LEVER_DUMMY_ID = 1146383478
	set Executer_PLATE_DUMMY_ID = 1110454321
	set Executer_EVENT_RADIUS = 42.
	set Executer_ONESHOT_ABIL = 1093678648
	set Executer_REPEATING_ABIL = 1093678649
	set Executer_LEVER_ABIL = 1093678647
	set Executer_PRESSURE_ABIL = 1093678646
	set Executer_REACTIVATE_ABIL = 1093678682
	set Executer_TERRAIN_CHANGE_ABIL = 1093677878
	set Executer_TERRAIN_WALKABLE_ABIL = 1093677365
	set Executer_TERRAIN_UNWALKABLE_ABIL = 1093677366
	set Executer_TERRAIN_ICE_ABIL = 1093677369
	set Executer_TERRAIN_UNICE_ABIL = 1093677377
	set Executer_TERRAIN_REVICE_ABIL = 1093677121
	set Executer_TERRAIN_W_O_ABIL = 1093677889
	set Executer_TERRAIN_UW_O_ABIL = 1093677881
	set Executer_TERRAIN_I_O_ABIL = 1093677880
	set Executer_TERRAIN_UI_O_ABIL = 1093677879
	set Executer_TERRAIN_RI_O_ABIL = 1093677135
	set Executer_TERRAIN_INCREASE_H_ABIL = 1093677387
	set Executer_TERRAIN_INCREASE_V_ABIL = 1093677389
	set Executer_TERRAIN_DECREASE_H_ABIL = 1093677397
	set Executer_TERRAIN_DECREASE_V_ABIL = 1093677396
	set Executer_TERRAIN_BOOK_ABIL = 1093677877
	set Executer_TERRAIN_ANTIBOOK_ABIL = 1093678658
	set Executer_DOOR_OPEN_ABIL = 1093677368
	set Executer_DOOR_CLOSE_ABIL = 1093677390
	set Executer_DOOR_TOGGLE_ABIL = 1093677393
	set Executer_MOVE_UNIT_DIRECT_ABIL = 1093678162
	set Executer_MOVE_UNIT_PATROL_ABIL = 1093678644
	set Executer_MOVE_UNIT_STOP_ABIL = 1093678645
	set Executer_MOVE_UNIT_SELECT_ABIL = 1093678657
	set Executer_TRAIN_BOOK_ABIL = 1093678130
	set Executer_SPAWN_UNIT_ID = 1093678675
	set Executer_TRAIN_BK_ABIL = 1093678133
	set Executer_TRAIN_SK_ABIL = 1093678134
	set Executer_TRAIN_BRK_ABIL = 1093678136
	set Executer_TRAIN_SRK_ABIL = 1093678146
	set Executer_TRAIN_TANK_ABIL = 1093678147
	set Executer_TRAIN_GLAIVE_ABIL = 1093678167
	set Executer_TRAIN_POINTER_ABIL = 1093678148
	set Executer_TRAIN_KNOCK_ABIL = 1093678930
	set Executer_executerUnitLeave = CreateTrigger()
	set Executer_executerUnitEnter = CreateTrigger()
	return true
endfunction

function alloc_BackIterator_1572 takes nothing returns integer
	local integer this_1
	if BackIterator_firstFree_73 == 0 then
		if BackIterator_maxIndex_76 < JASS_MAX_ARRAY_SIZE then
			set BackIterator_maxIndex_76 = BackIterator_maxIndex_76 + 1
			set this_1 = BackIterator_maxIndex_76
		else
			call error("Out of memory: Could not create BackIterator.")
			set this_1 = 0
		endif
	else
		set BackIterator_firstFree_73 = BackIterator_firstFree_73 - 1
		set this_1 = BackIterator_nextFree_79[BackIterator_firstFree_73]
	endif
	return this_1
endfunction

function BackIterator_init_28 takes integer this_1 returns nothing
endfunction

function construct_BackIterator_2119 takes integer this_1, boolean destroyOnClose returns nothing
	call BackIterator_init_28(this_1)
endfunction

function new_BackIterator_3613 takes boolean destroyOnClose returns integer
	local integer this_1 = alloc_BackIterator_1572()
	call construct_BackIterator_2119(this_1, destroyOnClose)
	return this_1
endfunction

function init_FText takes nothing returns boolean
	set FText_recylcer = new_LinkedList()
	set FText_LinkedListModule_first = 0
	set FText_LinkedListModule_last = 0
	set FText_LinkedListModule_size = 0
	call new_Iterator_3696(false)
	call new_BackIterator_3613(false)
	return true
endfunction

function init_Faceless takes nothing returns boolean
	set Faceless_KILL_RADIUS = 64.
	set Faceless_DIMENSION_SHIFTER_ID = 1684630899
	set Faceless_UP_VIS_ID = 1095577723
	set Faceless_DOWN_VIS_ID = 1095577724
	set Faceless_UP_INVIS_ID = 1095577725
	set Faceless_DOWN_INVIS_ID = 1095577726
	return true
endfunction

function ChunkedString_getUnsafeString takes integer this_1 returns string
	local string out = ""
	local integer i = 0
	local integer temp = dispatch_ChunkedString_ChunkedString_ChunkedString_getChunkCount(this_1)
	loop
		exitwhen i > temp
		set out = out + dispatch_ChunkedString_ChunkedString_ChunkedString_getChunk(this_1, i)
		set i = i + 1
	endloop
	return out
endfunction

function dispatch_ChunkedString_ChunkedString_ChunkedString_getUnsafeString takes integer this_1 returns string
	local string ChunkedString_ChunkedString_getUnsafeString_result
	if ChunkedString_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling ChunkedString.getUnsafeString")
		else
			call error("Called ChunkedString.getUnsafeString on invalid object.")
		endif
	endif
	set ChunkedString_ChunkedString_getUnsafeString_result = ChunkedString_getUnsafeString(this_1)
	return ChunkedString_ChunkedString_getUnsafeString_result
endfunction

function File_readAsString takes integer this_1, player p returns string
	local integer out = dispatch_File_FileIO_File_read(this_1, p)
	local string str = dispatch_ChunkedString_ChunkedString_ChunkedString_getUnsafeString(out)
	call dispatch_ChunkedString_destroyChunkedString(out)
	return str
endfunction

function dispatch_File_FileIO_File_readAsString takes integer this_1, player p returns string
	local string FileIO_File_readAsString_result
	if File_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling File.readAsString")
		else
			call error("Called File.readAsString on invalid object.")
		endif
	endif
	set FileIO_File_readAsString_result = File_readAsString(this_1, p)
	return FileIO_File_readAsString_result
endfunction

function File_write takes integer this_1, player p, string content returns nothing
	local integer buffer = new_ChunkedString()
	call dispatch_ChunkedString_ChunkedString_ChunkedString_append(buffer, content)
	call dispatch_File_FileIO_File_write_2900(this_1, p, buffer)
	call dispatch_ChunkedString_destroyChunkedString(buffer)
endfunction

function dispatch_File_FileIO_File_write takes integer this_1, player p, string content returns nothing
	if File_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling File.write")
		else
			call error("Called File.write on invalid object.")
		endif
	endif
	call File_write(this_1, p, content)
endfunction

function init_FileIO takes nothing returns boolean
	local integer receiver
	set FileIO_CHUNKS_PER_FILE = 64
	set FileIO_FILE_IO_ABIL_ID = 611808108
	set FileIO_FILE_IO_ABIL_ID_STR = int_toRawCode(FileIO_FILE_IO_ABIL_ID)
	set receiver = new_File("FileTester.pld")
	call dispatch_File_FileIO_File_write(receiver, Player_localPlayer, "test")
	call dispatch_File_FileIO_File_readAsString(receiver, Player_localPlayer)
	return true
endfunction

function init_Fountain takes nothing returns boolean
	set Fountain_EFFECT_ID = "Abilities\\Spells\\Human\\HolyBolt\\HolyBoltSpecialArt.mdl"
	return true
endfunction

function verifyFrameNameLength takes string name returns boolean
	if string_length(name) > Framehandle_BLZ_FRAMENAME_MAXLENGTH then
		call error("Trying to address frame with exceeding maximum frame name length (" + int_toString(Framehandle_BLZ_FRAMENAME_MAXLENGTH) + ") for: " + name)
		return false
	endif
	return true
endfunction

function createFrame takes string typeName, string name, framehandle owner, string inherits, integer createContext returns framehandle
	call verifyFrameNameLength(name)
	return BlzCreateFrameByType(typeName, name, owner, inherits, createContext)
endfunction

function framehandle_setSize takes framehandle this_1, real width, real height returns nothing
	call BlzFrameSetSize(this_1, width, height)
endfunction

function init_Framehandle takes nothing returns boolean
	local framehandle receiver
	local real tuple_temp
	local real tuple_temp_1
	local real tuple_temp_2
	local real tuple_temp_3
	set Framehandle_GAME_UI = BlzGetOriginFrame(ORIGIN_FRAME_GAME_UI, 0)
	call BlzGetOriginFrame(ORIGIN_FRAME_WORLD_FRAME, 0)
	set tuple_temp = 0.4
	set tuple_temp_1 = 0.6
	set Framehandle_SCREEN_TOP_x = tuple_temp
	set Framehandle_SCREEN_TOP_y = tuple_temp_1
	set tuple_temp_2 = 0.4
	set tuple_temp_3 = 0.0
	set Framehandle_SCREEN_BOTTOM_x = tuple_temp_2
	set Framehandle_SCREEN_BOTTOM_y = tuple_temp_3
	set Framehandle_BLZ_FRAMENAME_MAXLENGTH = 560
	set receiver = createFrame("FRAME", "SetMousePositionCage", Framehandle_GAME_UI, null, 0)
	call framehandle_setSize(receiver, 0.0001, 0.0001)
	return true
endfunction

function init_Frentity takes nothing returns boolean
	set Frentity_DYNAMIC_Z = true
	set Frentity_KILL_ACTORS = false
	set Frentity_DISABLE_TEAMATTACK = false
	set Frentity_SHOW_SQUARE = false
	return true
endfunction

function init_Fx2Entity takes nothing returns boolean
	return true
endfunction

function init_FxEntity takes nothing returns boolean
	return true
endfunction

function init_GameConstants takes nothing returns boolean
	set GameConstants_MAP_VER = "EBR v0.92"
	set GameConstants_STAFF_PLAYER = Player_players[PLAYER_NEUTRAL_PASSIVE]
	set GameConstants_names[0] = "Frotty"
	set GameConstants_names[1] = "FrottyZ"
	set GameConstants_names[2] = "Feuerblume"
	set GameConstants_names[3] = "|cff9C94E6[Tester]"
	set GameConstants_names[4] = "jkkopp"
	set GameConstants_names[5] = "fortress_na-f"
	set GameConstants_names[6] = "Kornblume"
	set GameConstants_names[7] = "Gamestargamer"
	set GameConstants_names[8] = "gamestargamer"
	set GameConstants_names[9] = "mooniii"
	set GameConstants_names[10] = "Carlor01"
	set GameConstants_names[11] = "Mo0ni[behh]"
	set GameConstants_names[12] = "metactylic"
	set GameConstants_names[13] = "nore.abfl"
	set GameConstants_names[14] = "kleinerhauck"
	set GameConstants_names[15] = "kari0003"
	set GameConstants_names[16] = "Kagu"
	set GameConstants_names[17] = "pockpoong"
	set GameConstants_names[18] = "waterknight"
	set GameConstants_names[19] = "sayack"
	set GameConstants_tags[0] = "|cffEF6B21[A]"
	set GameConstants_tags[1] = "|cffEF6B21[A]"
	set GameConstants_tags[2] = "|cff9C94E6[Tester]"
	set GameConstants_tags[3] = "|cff9C94E6[Tester]"
	set GameConstants_tags[4] = "|cff9C94E6[Tester]"
	set GameConstants_tags[5] = "|cff9C94E6[Tester]"
	set GameConstants_tags[6] = "|cff9C94E6[Tester]"
	set GameConstants_tags[7] = "|cff9C94E6[Tester]"
	set GameConstants_tags[8] = "|cff9C94E6[Tester]"
	set GameConstants_tags[9] = "|cff9C94E6[Tester]"
	set GameConstants_tags[10] = "|cff9C94E6[Tester]"
	set GameConstants_tags[11] = "|cffB5DE42[Art]"
	set GameConstants_tags[12] = "|cff9C94E6[Tester]"
	set GameConstants_tags[13] = "|cff9C94E6[Tester]"
	set GameConstants_tags[14] = "|cffFFE87C[Adept]"
	set GameConstants_tags[15] = "|cff9C94E6[Tester]"
	set GameConstants_tags[16] = "|cff9C94E6[Tester]"
	set GameConstants_tags[17] = "|cffDE3121[Critter]"
	set GameConstants_tags[18] = "|cff9C94E6[Tester]"
	set GameConstants_expBounds[0] = 100
	set GameConstants_expBounds[1] = 250
	set GameConstants_expBounds[2] = 400
	set GameConstants_expBounds[3] = 1250
	set GameConstants_expBounds[4] = 2750
	set GameConstants_expBounds[5] = 5000
	set GameConstants_expBounds[6] = 9500
	set GameConstants_expBounds[7] = 15500
	set GameConstants_expBounds[8] = 20000
	set GameConstants_expBounds[9] = 25000
	set GameConstants_expBounds[10] = 40000
	set GameConstants_expBounds[11] = 75000
	set GameConstants_expBounds[12] = 150000
	set GameConstants_expBounds[13] = 200000
	set GameConstants_ranks[0] = "1:Newbie"
	set GameConstants_ranks[1] = "|cffBDBDBD2:Beginner"
	set GameConstants_ranks[2] = "|cffFFE6AD3:Novice"
	set GameConstants_ranks[3] = "|cffFFD64A4:Rookie"
	set GameConstants_ranks[4] = "|cffFFCE195:Superior"
	set GameConstants_ranks[5] = "|cffFFA53A6:Major"
	set GameConstants_ranks[6] = "7:Pro"
	set GameConstants_ranks[7] = "|cff5A8CDE8:Expert"
	set GameConstants_ranks[8] = "|cff087BD69:Craver"
	set GameConstants_ranks[9] = "|cffD6292110|r|cffB93339:|r|cff9C3D51A|r|cff7F4769d|r|cff625181d|r|cff455B99i|r|cff2865B1c|r|cff0B6FC9t|r"
	set GameConstants_ranks[10] = "|cffD629211|r|cffB743270|r|cff985D2D:|r|cff797733L|r|cff5A9139e|r|cff3BAB3Fg|r|cff26A182e|r|cff1C9BA2n|r|cff1295C2d|r"
	set GameConstants_ranks[11] = "|cffC563C512:K|r|cffD353ADo|r|cffE14395r|r|cffEF337De|r|cffFF3B43a|r|cffFF4833n|r"
	set GameConstants_ranks[12] = "|cff08B5FF13:B|r|cff16A5F4l|r|cff2495E9u|r|cff3285DEe|r|cff4075D3E|r|cff2E73CDy|r|cff1C7BD1e|r|cff0A83D5d|r"
	set GameConstants_ranks[13] = "|cff94949414: Amazing-|cff949CEF"
	return true
endfunction

function alloc_CallbackSingle_doAfter_GameInit takes nothing returns integer
	local integer this_1
	if CallbackSingle_firstFree == 0 then
		if CallbackSingle_maxIndex < JASS_MAX_ARRAY_SIZE then
			set CallbackSingle_maxIndex = CallbackSingle_maxIndex + 1
			set this_1 = CallbackSingle_maxIndex
			set CallbackSingle_typeId[this_1] = 685
		else
			call error("Out of memory: Could not create CallbackSingle_doAfter_GameInit.")
			set this_1 = 0
		endif
	else
		set CallbackSingle_firstFree = CallbackSingle_firstFree - 1
		set this_1 = CallbackSingle_nextFree[CallbackSingle_firstFree]
		set CallbackSingle_typeId[this_1] = 685
	endif
	return this_1
endfunction

function IdGenerator_isInvalid takes integer this_1, integer char_1 returns boolean
	return char_1 < 48 or (char_1 > 57 and char_1 < 97)
endfunction

function dispatch_IdGenerator_ObjectIdGenerator_IdGenerator_isInvalid takes integer this_1, integer char_1 returns boolean
	local boolean ObjectIdGenerator_IdGenerator_isInvalid_result
	if IdGenerator_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling IdGenerator.isInvalid")
		else
			call error("Called IdGenerator.isInvalid on invalid object.")
		endif
	endif
	set ObjectIdGenerator_IdGenerator_isInvalid_result = IdGenerator_isInvalid(this_1, char_1)
	return ObjectIdGenerator_IdGenerator_isInvalid_result
endfunction

function IdGenerator_next takes integer this_1 returns integer
	local integer id
	if IdGenerator_i1[this_1] < 126 then
		set IdGenerator_i1[this_1] = IdGenerator_i1[this_1] + 1
		loop
			exitwhen  not dispatch_IdGenerator_ObjectIdGenerator_IdGenerator_isInvalid(this_1, IdGenerator_i1[this_1])
			set IdGenerator_i1[this_1] = IdGenerator_i1[this_1] + 1
		endloop
	elseif IdGenerator_i2[this_1] < 126 then
		set IdGenerator_i1[this_1] = 33
		set IdGenerator_i2[this_1] = IdGenerator_i2[this_1] + 1
		loop
			exitwhen  not dispatch_IdGenerator_ObjectIdGenerator_IdGenerator_isInvalid(this_1, IdGenerator_i2[this_1])
			set IdGenerator_i2[this_1] = IdGenerator_i2[this_1] + 1
		endloop
	elseif IdGenerator_i3[this_1] < 126 then
		set IdGenerator_i1[this_1] = 33
		set IdGenerator_i2[this_1] = 33
		set IdGenerator_i3[this_1] = IdGenerator_i3[this_1] + 1
		loop
			exitwhen  not dispatch_IdGenerator_ObjectIdGenerator_IdGenerator_isInvalid(this_1, IdGenerator_i3[this_1])
			set IdGenerator_i3[this_1] = IdGenerator_i3[this_1] + 1
		endloop
	elseif IdGenerator_i4[this_1] < 126 then
		set IdGenerator_i1[this_1] = 33
		set IdGenerator_i2[this_1] = 33
		set IdGenerator_i3[this_1] = 33
		set IdGenerator_i4[this_1] = IdGenerator_i4[this_1] + 1
		loop
			exitwhen  not dispatch_IdGenerator_ObjectIdGenerator_IdGenerator_isInvalid(this_1, IdGenerator_i4[this_1])
			set IdGenerator_i4[this_1] = IdGenerator_i4[this_1] + 1
		endloop
	else
		call error("No vaild id left")
		return 0
	endif
	set id = IdGenerator_i1[this_1] + IdGenerator_i2[this_1] * 256 + IdGenerator_i3[this_1] * 65536 + IdGenerator_i4[this_1] * 16777216
	if  not MagicFunctions_compiletime then
		call preloadAbility_1(id)
	endif
	return id
endfunction

function dispatch_IdGenerator_ObjectIdGenerator_IdGenerator_next takes integer this_1 returns integer
	local integer ObjectIdGenerator_IdGenerator_next_result
	if IdGenerator_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling IdGenerator.next")
		else
			call error("Called IdGenerator.next on invalid object.")
		endif
	endif
	set ObjectIdGenerator_IdGenerator_next_result = IdGenerator_next(this_1)
	return ObjectIdGenerator_IdGenerator_next_result
endfunction

function IdGenerator_onDestroy takes integer this_1 returns nothing
endfunction

function dealloc_IdGenerator takes integer obj_1 returns nothing
	if IdGenerator_typeId[obj_1] == 0 then
		call error("Double free: object of type IdGenerator")
	else
		set IdGenerator_nextFree[IdGenerator_firstFree] = obj_1
		set IdGenerator_firstFree = IdGenerator_firstFree + 1
		set IdGenerator_typeId[obj_1] = 0
	endif
endfunction

function destroyIdGenerator takes integer this_1 returns nothing
	call IdGenerator_onDestroy(this_1)
	call dealloc_IdGenerator(this_1)
endfunction

function dispatch_IdGenerator_destroyIdGenerator takes integer this_1 returns nothing
	if IdGenerator_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling IdGenerator.IdGenerator")
		else
			call error("Called IdGenerator.IdGenerator on invalid object.")
		endif
	endif
	call destroyIdGenerator(this_1)
endfunction

function alloc_IdGenerator takes nothing returns integer
	local integer this_1
	if IdGenerator_firstFree == 0 then
		if IdGenerator_maxIndex < JASS_MAX_ARRAY_SIZE then
			set IdGenerator_maxIndex = IdGenerator_maxIndex + 1
			set this_1 = IdGenerator_maxIndex
			set IdGenerator_typeId[this_1] = 899
		else
			call error("Out of memory: Could not create IdGenerator.")
			set this_1 = 0
		endif
	else
		set IdGenerator_firstFree = IdGenerator_firstFree - 1
		set this_1 = IdGenerator_nextFree[IdGenerator_firstFree]
		set IdGenerator_typeId[this_1] = 899
	endif
	return this_1
endfunction

function IdGenerator_init takes integer this_1 returns nothing
endfunction

function construct_IdGenerator takes integer this_1, integer start returns nothing
	call IdGenerator_init(this_1)
	set IdGenerator_i1[this_1] = ModuloInteger(start, 256)
	set IdGenerator_i2[this_1] = ModuloInteger(start, 65536) / 256
	set IdGenerator_i3[this_1] = ModuloInteger(start, 16777216) / 65536
	set IdGenerator_i4[this_1] = start / 16777216
endfunction

function new_IdGenerator takes integer start returns integer
	local integer this_1 = alloc_IdGenerator()
	call construct_IdGenerator(this_1, start)
	return this_1
endfunction

function preloadUnit_1 takes integer unitIds_0 returns boolean
	local boolean valid
	local unit u_1
	if Preloader_dumg == null then
		call error("PreloadUnit: Group dumg does not exist")
	endif
	set valid = true
	set u_1 = createUnit(Basics_DUMMY_PLAYER, unitIds_0, 0., 0., 0.)
	call group_add_1(Preloader_dumg, u_1)
	set valid = valid and unit_isAlive(u_1)
	return valid
endfunction

function preload takes nothing returns nothing
	local integer abils = new_IdGenerator(1095577648)
	local integer units
	loop
		exitwhen  not preloadAbility_1(dispatch_IdGenerator_ObjectIdGenerator_IdGenerator_next(abils))
	endloop
	call dispatch_IdGenerator_destroyIdGenerator(abils)
	set units = new_IdGenerator(2016423984)
	loop
		exitwhen  not preloadUnit_1(dispatch_IdGenerator_ObjectIdGenerator_IdGenerator_next(units))
	endloop
	call dispatch_IdGenerator_destroyIdGenerator(units)
endfunction

function startEntityLoop takes nothing returns boolean
	call timer_startPeriodic(getTimer(), Basics_ANIMATION_PERIOD, ref_function_updateActiveEntities)
	call timer_startPeriodic(getTimer(), Buff_BUFF_ANIM_PERIOD, ref_function_updateBuffs)
	call timer_startPeriodic(getTimer(), 1.0, ref_function_updateInactiveEntities)
	call onUnitDeindex(ref_function_code__onUnitDeindex_EntityManagement)
	return true
endfunction

function init_GameInit takes nothing returns boolean
	local integer clVar
	call preload()
	call startEntityLoop()
	set clVar = alloc_CallbackSingle_doAfter_GameInit()
	call construct_CallbackSingle(clVar)
	call doAfter(0.01, clVar)
	return true
endfunction

function init_GameStatus takes nothing returns boolean
	local player firstPlayer
	local unit u_1
	local boolean selected
	set GameStatus_gameStatus = 0
	set firstPlayer = Player(0)
	loop
		exitwhen  not  not player_isIngame(firstPlayer)
		set firstPlayer = Player(player_getId(firstPlayer) + 1)
	endloop
	set u_1 = CreateUnit(firstPlayer, 1751543663, 0., 0., 0.)
	call SelectUnit(u_1, true)
	set selected = IsUnitSelected(u_1, firstPlayer)
	call RemoveUnit(u_1)
	if selected then
		if ReloadGameCachesFromDisk() then
			set GameStatus_gameStatus = 2
		else
			set GameStatus_gameStatus = 3
		endif
	else
		set GameStatus_gameStatus = 1
	endif
	return true
endfunction

function init_GameTimer takes nothing returns boolean
	local timer receiver = CreateTimer()
	call timer_start(receiver, 100000., null)
	set GameTimer_gameTimer = receiver
	call timer_startPeriodic(CreateTimer(), Basics_ANIMATION_PERIOD, ref_function_code__startPeriodic_GameTimer)
	return true
endfunction

function alloc_GlobalShop takes nothing returns integer
	local integer this_1
	if GlobalShop_firstFree == 0 then
		if GlobalShop_maxIndex < JASS_MAX_ARRAY_SIZE then
			set GlobalShop_maxIndex = GlobalShop_maxIndex + 1
			set this_1 = GlobalShop_maxIndex
		else
			call error("Out of memory: Could not create GlobalShop.")
			set this_1 = 0
		endif
	else
		set GlobalShop_firstFree = GlobalShop_firstFree - 1
		set this_1 = GlobalShop_nextFree[GlobalShop_firstFree]
	endif
	return this_1
endfunction

function GlobalShop_init takes integer this_1 returns nothing
endfunction

function construct_GlobalShop takes integer this_1, real x, real y, player owner returns nothing
	call GlobalShop_init(this_1)
	call CreateUnit(owner, GlobalShop_GOODS_STORE_ID, x, y, 270.)
endfunction

function new_GlobalShop takes real x, real y, player owner returns integer
	local integer this_1 = alloc_GlobalShop()
	call construct_GlobalShop(this_1, x, y, owner)
	return this_1
endfunction

function init_GlobalShop takes nothing returns boolean
	set GlobalShop_GOODS_STORE_ID = 2016424060
	call new_GlobalShop(-6630., -6150., GameConstants_STAFF_PLAYER)
	return true
endfunction

function init_Group takes nothing returns boolean
	set Group_ENUM_GROUP = CreateGroup()
	return true
endfunction

function alloc_ForForceCallback_execute_GroupUtils takes nothing returns integer
	local integer this_1
	if ForForceCallback_firstFree == 0 then
		if ForForceCallback_maxIndex < JASS_MAX_ARRAY_SIZE then
			set ForForceCallback_maxIndex = ForForceCallback_maxIndex + 1
			set this_1 = ForForceCallback_maxIndex
			set ForForceCallback_typeId[this_1] = 841
		else
			call error("Out of memory: Could not create ForForceCallback_execute_GroupUtils.")
			set this_1 = 0
		endif
	else
		set ForForceCallback_firstFree = ForForceCallback_firstFree - 1
		set this_1 = ForForceCallback_nextFree[ForForceCallback_firstFree]
		set ForForceCallback_typeId[this_1] = 841
	endif
	return this_1
endfunction

function max_2 takes integer numbers_0, integer numbers_1 returns integer
	local integer maxNumber = Integer_INT_MIN
	local integer cond_result
	if numbers_0 > maxNumber then
		set cond_result = numbers_0
	else
		set cond_result = maxNumber
	endif
	set maxNumber = cond_result
	if numbers_1 > maxNumber then
		set cond_result = numbers_1
	else
		set cond_result = maxNumber
	endif
	set maxNumber = cond_result
	return maxNumber
endfunction

function createGroups takes integer number returns nothing
	local integer maxCreatePerCycle = 256
	local integer actualLimit = max_2(JASS_MAX_ARRAY_SIZE - 1, GroupUtils_GROUP_NUMBER_LIMIT)
	local integer numTarget = GroupUtils_numTotal + number
	local integer overflow = max_2(0, numTarget - actualLimit)
	local integer toCreate = max_2(0, numTarget - overflow)
	local integer createNow_1
	local integer clVar
	loop
		exitwhen  not (toCreate > 0)
		set createNow_1 = min_2(toCreate, maxCreatePerCycle)
		set toCreate = toCreate - createNow_1
		set clVar = alloc_ForForceCallback_execute_GroupUtils()
		set createNow[clVar] = createNow_1
		call execute(clVar)
	endloop
	if GroupUtils_numTotal >= GroupUtils_GROUP_NUMBER_LIMIT and ( not GroupUtils_shownMaxError) then
		call Log_warn("Maximum number of GroupUtils groups (" + int_toString(GroupUtils_GROUP_NUMBER_LIMIT) + ") created. " + "All newly created groups will be non-recyclable.")
		set GroupUtils_shownMaxError = true
	endif
endfunction

function initialize takes nothing returns nothing
	call createGroups(GroupUtils_START_CREATE_GROUPS)
endfunction

function init_GroupUtils takes nothing returns boolean
	set GroupUtils_GROUP_NUMBER_LIMIT = 1024
	set GroupUtils_START_CREATE_GROUPS = 64
	set GroupUtils_used = new_HashMap()
	set GroupUtils_numStack = 0
	set GroupUtils_numTotal = 0
	set GroupUtils_shownMaxError = false
	call initialize()
	return true
endfunction

function init_HashList takes nothing returns boolean
	set HashList_ht = hashtable_compiletime_2517
	set HashList_occurences = hashtable_compiletime_2518
	return true
endfunction

function init_HashSet takes nothing returns boolean
	set HashSet_position = hashtable_compiletime_2520
	return true
endfunction

function alloc_ForForceCallback_execute_Heightmap takes nothing returns integer
	local integer this_1
	if ForForceCallback_firstFree == 0 then
		if ForForceCallback_maxIndex < JASS_MAX_ARRAY_SIZE then
			set ForForceCallback_maxIndex = ForForceCallback_maxIndex + 1
			set this_1 = ForForceCallback_maxIndex
			set ForForceCallback_typeId[this_1] = 842
		else
			call error("Out of memory: Could not create ForForceCallback_execute_Heightmap.")
			set this_1 = 0
		endif
	else
		set ForForceCallback_firstFree = ForForceCallback_firstFree - 1
		set this_1 = ForForceCallback_nextFree[ForForceCallback_firstFree]
		set ForForceCallback_typeId[this_1] = 842
	endif
	return this_1
endfunction

function alloc_ForForceCallback_execute_Heightmap_1765 takes nothing returns integer
	local integer this_1
	if ForForceCallback_firstFree == 0 then
		if ForForceCallback_maxIndex < JASS_MAX_ARRAY_SIZE then
			set ForForceCallback_maxIndex = ForForceCallback_maxIndex + 1
			set this_1 = ForForceCallback_maxIndex
			set ForForceCallback_typeId[this_1] = 843
		else
			call error("Out of memory: Could not create ForForceCallback_execute_Heightmap.")
			set this_1 = 0
		endif
	else
		set ForForceCallback_firstFree = ForForceCallback_firstFree - 1
		set this_1 = ForForceCallback_nextFree[ForForceCallback_firstFree]
		set ForForceCallback_typeId[this_1] = 843
	endif
	return this_1
endfunction

function Reference_onDestroy takes integer this_1 returns nothing
endfunction

function dealloc_Reference_integer_u takes integer obj_1 returns nothing
	if Reference_integer__typeId[obj_1] == 0 then
		call error("Double free: object of type Reference⟪integer⟫")
	else
		set Reference_integer__nextFree[Reference_integer__firstFree] = obj_1
		set Reference_integer__firstFree = Reference_integer__firstFree + 1
		set Reference_integer__typeId[obj_1] = 0
	endif
endfunction

function destroyReference_integer_u takes integer this_1 returns nothing
	call Reference_onDestroy(this_1)
	call dealloc_Reference_integer_u(this_1)
endfunction

function dispatch_Reference_integer__destroyReference_integer_u takes integer this_1 returns nothing
	if Reference_integer__typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling Reference⟪integer⟫.Reference")
		else
			call error("Called Reference⟪integer⟫.Reference on invalid object.")
		endif
	endif
	call destroyReference_integer_u(this_1)
endfunction

function alloc_Reference_integer_u takes nothing returns integer
	local integer this_1
	if Reference_integer__firstFree == 0 then
		if Reference_integer__maxIndex < JASS_MAX_ARRAY_SIZE then
			set Reference_integer__maxIndex = Reference_integer__maxIndex + 1
			set this_1 = Reference_integer__maxIndex
			set Reference_integer__typeId[this_1] = 1110
		else
			call error("Out of memory: Could not create Reference⟪integer⟫.")
			set this_1 = 0
		endif
	else
		set Reference_integer__firstFree = Reference_integer__firstFree - 1
		set this_1 = Reference_integer__nextFree[Reference_integer__firstFree]
		set Reference_integer__typeId[this_1] = 1110
	endif
	return this_1
endfunction

function Reference_init_integer_u takes integer this_1 returns nothing
endfunction

function construct_Reference_integer_u takes integer this_1, integer wval returns nothing
	call Reference_init_integer_u(this_1)
	set Reference_val[this_1] = wval
endfunction

function new_Reference_integer_u takes integer wval returns integer
	local integer this_1 = alloc_Reference_integer_u()
	call construct_Reference_integer_u(this_1, wval)
	return this_1
endfunction

function init_Heightmap takes nothing returns boolean
	local integer zMap_1 = new_HashMap()
	local integer xRef_1 = new_Reference_integer_u(0)
	local integer clVar
	local integer clVar_1
	loop
		exitwhen  not (Reference_val[xRef_1] < TerrainUtils_TILES_X)
		set clVar = alloc_ForForceCallback_execute_Heightmap()
		set xRef[clVar] = xRef_1
		set zMap[clVar] = zMap_1
		call execute(clVar)
	endloop
	set Reference_val[xRef_1] = 0
	loop
		exitwhen  not (Reference_val[xRef_1] < TerrainUtils_TILES_X)
		set clVar_1 = alloc_ForForceCallback_execute_Heightmap_1765()
		set xRef_3153[clVar_1] = xRef_1
		set zMap_3157[clVar_1] = zMap_1
		call execute(clVar_1)
	endloop
	call dispatch_HashMap_destroyHashMap(zMap_1)
	call dispatch_Reference_integer__destroyReference_integer_u(xRef_1)
	return true
endfunction

function init_Icons takes nothing returns boolean
	set Icons_bTNAnkh = "ReplaceableTextures\\CommandButtons\\BTNAnkh.blp"
	set Icons_bTNHuntress = "ReplaceableTextures\\CommandButtons\\BTNHuntress.blp"
	set Icons_bTNSelectHeroOn = "ReplaceableTextures\\CommandButtons\\BTNSelectHeroOn.blp"
	return true
endfunction

function init_InstantBuild takes nothing returns boolean
	call Log_debug("init buildords")
	set InstantBuild_buildorders[SerializeIds_JUMPER_INDEX] = BuilderConstants_JUMPER_ID
	set InstantBuild_buildorders[SerializeIds_REVIVE_INDEX] = BuilderConstants_REVIVE_POINT_ID
	set InstantBuild_buildorders[SerializeIds_TEXTER_INDEX] = BuilderConstants_TEXTER_ID
	set InstantBuild_buildorders[SerializeIds_BOMBTOWER_INDEX] = BuilderConstants_BOMB_TOWER_ID
	set InstantBuild_buildorders[SerializeIds_VORTEX_INDEX] = BuilderConstants_VORTEX_ID
	set InstantBuild_buildorders[SerializeIds_EXECUTER_INDEX] = BuilderConstants_EXECUTER_ID
	set InstantBuild_buildorders[SerializeIds_BOOSTER_INDEX] = BuilderConstants_BOOSTER_ID
	set InstantBuild_buildorders[SerializeIds_UNITREMOVER_INDEX] = BuilderConstants_UNIT_REMOVER_ID
	set InstantBuild_buildorders[SerializeIds_WAYPOINT_INDEX] = BuilderConstants_WAYPOINT_ID
	set InstantBuild_buildorders[SerializeIds_TELEPORTER_INDEX] = BuilderConstants_TELEPORTER_ID
	set InstantBuild_buildorders[SerializeIds_DOOR_INDEX] = BuilderConstants_DOORDUMMY_ID
	set InstantBuild_buildorders[SerializeIds_SMALLOBS_INDEX] = BuilderConstants_SOBS_DUMMY_ID
	set InstantBuild_buildorders[SerializeIds_BIGOBS_INDEX] = BuilderConstants_BOBS_DUMMY_ID
	set InstantBuild_buildorders[SerializeIds_HIGH_OBS_INDEX] = BuilderConstants_HOBS_DUMMY_ID
	set InstantBuild_buildorders[SerializeIds_TREE_INDEX] = BuilderConstants_TREE_DUMMY_ID
	set InstantBuild_buildorders[SerializeIds_SPINNER_INDEX] = BuilderConstants_SPINNER_ID
	set InstantBuild_buildorders[SerializeIds_UNITCREATOR_INDEX] = BuilderConstants_UNIT_CREATOR_ID
	set InstantBuild_buildorders[SerializeIds_TRACKS_INDEX] = BuilderConstants_BUILD_TRACKS_ID
	set InstantBuild_buildorders[SerializeIds_FOUNTAIN_INDEX] = BuilderConstants_FOUNTAIN_BOTH_ID
	set InstantBuild_buildorders[SerializeIds_POWERNODE_INDEX] = BuilderConstants_POWER_NODE_ID
	set InstantBuild_buildorders[SerializeIds_TRAP_INDEX] = BuilderConstants_TRAP_ID
	set InstantBuild_buildorders[SerializeIds_CONGA_INDEX] = BuilderConstants_CONGA_LINE_HEAD_ID
	set InstantBuild_buildorders[SerializeIds_TBLOCKER_INDEX] = BuilderConstants_TC_BLOCKER_ID
	set InstantBuild_buildorders[SerializeIds_VOLCANO_INDEX] = BuilderConstants_VOLCANO_ID
	set InstantBuild_buildorders[SerializeIds_WALL_INDEX] = BuilderConstants_WALL_ID
	set InstantBuild_buildorders[SerializeIds_HWALL_INDEX] = BuilderConstants_HOR_WALL_ID
	set InstantBuild_buildorders[SerializeIds_VWALL_INDEX] = BuilderConstants_VER_WALL_ID
	set InstantBuild_buildorders[SerializeIds_ARCANERY_INDEX] = BuilderConstants_ARCANERY_ID
	set InstantBuild_buildorders[SerializeIds_SMALLKILL_INDEX] = 1093678411
	set InstantBuild_buildorders[SerializeIds_BIGKILL_INDEX] = 1093678406
	set InstantBuild_buildorders[SerializeIds_BOMBER_INDEX] = 1093678415
	set InstantBuild_buildorders[SerializeIds_KEY_INDEX] = 1848651826
	set InstantBuild_buildorders[SerializeIds_BIGRANDKILL_INDEX] = 1093678407
	set InstantBuild_buildorders[SerializeIds_SMALLRANDKILL_INDEX] = 1093678410
	set InstantBuild_buildorders[SerializeIds_TANKKILL_INDEX] = 1093678413
	set InstantBuild_buildorders[SerializeIds_GLAIVEKILL_INDEX] = 1093678408
	set InstantBuild_buildorders[SerializeIds_AIRKILL_INDEX] = 1093678937
	set InstantBuild_buildorders[SerializeIds_FIREKILL_INDEX] = 1097232997
	set InstantBuild_buildorders[SerializeIds_FACELESS_INDEX] = 1093678933
	set InstantBuild_buildorders[SerializeIds_KNOCKBACKER_INDEX] = 1093678915
	set InstantBuild_buildorders[SerializeIds_POINTER_INDEX] = 1093678409
	set InstantBuild_buildorders[SerializeIds_OBJ_TARGET_INDEX] = 1093678414
	set InstantBuild_buildorders[SerializeIds_TC_INDEX] = 1093678412
	set InstantBuild_buildorders[139] = 1718969195
	set InstantBuild_buildorders[140] = BuilderConstants_POST_LANTERN_ID
	set InstantBuild_buildorders[141] = BuilderConstants_MUSHROOM_ID
	set InstantBuild_buildorders[142] = BuilderConstants_TORCH_ID
	set InstantBuild_buildorders[143] = BuilderConstants_RUNE_ID
	set InstantBuild_buildorders[144] = BuilderConstants_SUPERLIGHT_ID
	set InstantBuild_buildorders[145] = BuilderConstants_LANTERN_ID
	set InstantBuild_buildorders[146] = BuilderConstants_FARM_ID
	set InstantBuild_buildorders[147] = BuilderConstants_ICE_CRYSTAL_ID
	set InstantBuild_buildorders[148] = BuilderConstants_OBELISK_ID
	set InstantBuild_buildorders[149] = BuilderConstants_POISON_EGGS_ID
	set InstantBuild_buildorders[150] = BuilderConstants_REMAINS_ID
	set InstantBuild_buildorders[151] = BuilderConstants_PED_ID
	set InstantBuild_buildorders[32] = 1
	return true
endfunction

function init_InstantDummyCaster takes nothing returns boolean
	local unit receiver
	local unit receiver_1
	local unit receiver_2
	local unit receiver_3
	local unit receiver_4
	set InstantDummyCaster_DUMMY_CASTER_UNIT_ID = 2016424053
	set InstantDummyCaster_DUMMY_ROOT_ABIL_ID = 1095577977
	set receiver = createUnit(Basics_DUMMY_PLAYER, InstantDummyCaster_DUMMY_CASTER_UNIT_ID, MapBounds_boundMax_x, MapBounds_boundMax_y, 0.)
	call unit_setPathing(receiver, false)
	set receiver_1 = receiver
	call unit_addAbility(receiver_1, Basics_HEIGHT_ENABLER)
	set receiver_2 = receiver_1
	call unit_removeAbility(receiver_2, Basics_HEIGHT_ENABLER)
	set receiver_3 = receiver_2
	call unit_addAbility(receiver_3, InstantDummyCaster_DUMMY_ROOT_ABIL_ID)
	set receiver_4 = receiver_3
	call unit_removeAbility(receiver_4, InstantDummyCaster_DUMMY_ROOT_ABIL_ID)
	set InstantDummyCaster_caster = receiver_4
	return true
endfunction

function init_Integer takes nothing returns boolean
	set Integer_INT_MAX = 2147483647
	set Integer_INT_MIN = -2147483648
	return true
endfunction

function alloc_EventListener_add_Invisible takes nothing returns integer
	local integer this_1
	if EventListener_firstFree == 0 then
		if EventListener_maxIndex < JASS_MAX_ARRAY_SIZE then
			set EventListener_maxIndex = EventListener_maxIndex + 1
			set this_1 = EventListener_maxIndex
			set EventListener_typeId[this_1] = 792
		else
			call error("Out of memory: Could not create EventListener_add_Invisible.")
			set this_1 = 0
		endif
	else
		set EventListener_firstFree = EventListener_firstFree - 1
		set this_1 = EventListener_nextFree[EventListener_firstFree]
		set EventListener_typeId[this_1] = 792
	endif
	return this_1
endfunction

function init_Invisible takes nothing returns boolean
	local playerunitevent temp = EVENT_PLAYER_UNIT_SPELL_CAST
	local integer clVar = alloc_EventListener_add_Invisible()
	call construct_EventListener(clVar)
	call EventListener_add(temp, clVar)
	return true
endfunction

function init_ItemIds takes nothing returns boolean
	return true
endfunction

function alloc_Delimiter takes nothing returns integer
	local integer this_1
	if Delimiter_firstFree == 0 then
		if Delimiter_maxIndex < JASS_MAX_ARRAY_SIZE then
			set Delimiter_maxIndex = Delimiter_maxIndex + 1
			set this_1 = Delimiter_maxIndex
		else
			call error("Out of memory: Could not create Delimiter.")
			set this_1 = 0
		endif
	else
		set Delimiter_firstFree = Delimiter_firstFree - 1
		set this_1 = Delimiter_nextFree[Delimiter_firstFree]
	endif
	return this_1
endfunction

function Delimiter_init takes integer this_1 returns nothing
endfunction

function construct_Delimiter takes integer this_1, string token returns nothing
	call Delimiter_init(this_1)
	set Delimiter_token[this_1] = token
	call string_length(token)
endfunction

function new_Delimiter takes string token returns integer
	local integer this_1 = alloc_Delimiter()
	call construct_Delimiter(this_1, token)
	return this_1
endfunction

function init_Json takes nothing returns boolean
	call new_Delimiter("=")
	set Json_JSON_SIGN_COMMA = new_Delimiter("_")
	call new_Delimiter("(")
	call new_Delimiter(")")
	set Json_JSON_OPEN_ARRAY = new_Delimiter("[")
	set Json_JSON_CLOSE_ARRAY = new_Delimiter("]")
	call new_Delimiter("J")
	return true
endfunction

function init_JsonParser takes nothing returns boolean
	set JsonParser_numbermap = "-0123456789"
	set JsonParser_lettermap = "abcdefghijklmnopqrstuvwxyz"
	return true
endfunction

function alloc_CallbackSingle_doAfter_JukeBox takes nothing returns integer
	local integer this_1
	if CallbackSingle_firstFree == 0 then
		if CallbackSingle_maxIndex < JASS_MAX_ARRAY_SIZE then
			set CallbackSingle_maxIndex = CallbackSingle_maxIndex + 1
			set this_1 = CallbackSingle_maxIndex
			set CallbackSingle_typeId[this_1] = 689
		else
			call error("Out of memory: Could not create CallbackSingle_doAfter_JukeBox.")
			set this_1 = 0
		endif
	else
		set CallbackSingle_firstFree = CallbackSingle_firstFree - 1
		set this_1 = CallbackSingle_nextFree[CallbackSingle_firstFree]
		set CallbackSingle_typeId[this_1] = 689
	endif
	return this_1
endfunction

function init_JukeBox takes nothing returns boolean
	local integer clVar
	set JukeBox_musics = new_LinkedList()
	set clVar = alloc_CallbackSingle_doAfter_JukeBox()
	call construct_CallbackSingle(clVar)
	call doAfter(0.1, clVar)
	return true
endfunction

function init_Jumper takes nothing returns boolean
	set Jumper_DECREASE_FORCE_ID = 1095578222
	set Jumper_INCREASE_FORCE_ID = 1095578223
	set Jumper_MODE_FORCED_ID = 1095578224
	set Jumper_MODE_UNFORCED_ID = 1095578225
	set Jumper_EFFECT_STRING = "Abilities\\Spells\\Human\\FlakCannons\\FlakTarget.mdl"
	set Jumper_SPECIAL_ID = 1093678927
	set Jumper_snd = new_SoundDefinition("Units\\Human\\Priest\\PriestPissed3.wav", false)
	return true
endfunction

function init_Key takes nothing returns boolean
	set Key_KEY_DUMMY_ID = 2016424039
	set Key_keyIds[0] = 1227894841
	set Key_keyIds[1] = 1227894851
	set Key_keyIds[2] = 1227894836
	set Key_keyIds[3] = 1227894840
	set Key_keyIds[4] = 1227894858
	set Key_keyIds[5] = 1227894837
	set Key_keyIds[6] = 1227894863
	set Key_keyIds[7] = 1227894850
	set Key_keyIds[8] = 1227894838
	set Key_DYN_ID = 1093677133
	set Key_STATIC_ID = 1093677391
	set Key_INFINITE_ID = 1095577706
	set Key_KEY_COLOR = "c"
	return true
endfunction

function alloc_EventListener_add_KeyUtils takes nothing returns integer
	local integer this_1
	if EventListener_firstFree == 0 then
		if EventListener_maxIndex < JASS_MAX_ARRAY_SIZE then
			set EventListener_maxIndex = EventListener_maxIndex + 1
			set this_1 = EventListener_maxIndex
			set EventListener_typeId[this_1] = 793
		else
			call error("Out of memory: Could not create EventListener_add_KeyUtils.")
			set this_1 = 0
		endif
	else
		set EventListener_firstFree = EventListener_firstFree - 1
		set this_1 = EventListener_nextFree[EventListener_firstFree]
		set EventListener_typeId[this_1] = 793
	endif
	return this_1
endfunction

function alloc_EventListener_add_KeyUtils_1712 takes nothing returns integer
	local integer this_1
	if EventListener_firstFree == 0 then
		if EventListener_maxIndex < JASS_MAX_ARRAY_SIZE then
			set EventListener_maxIndex = EventListener_maxIndex + 1
			set this_1 = EventListener_maxIndex
			set EventListener_typeId[this_1] = 794
		else
			call error("Out of memory: Could not create EventListener_add_KeyUtils.")
			set this_1 = 0
		endif
	else
		set EventListener_firstFree = EventListener_firstFree - 1
		set this_1 = EventListener_nextFree[EventListener_firstFree]
		set EventListener_typeId[this_1] = 794
	endif
	return this_1
endfunction

function alloc_EventListener_add_KeyUtils_1713 takes nothing returns integer
	local integer this_1
	if EventListener_firstFree == 0 then
		if EventListener_maxIndex < JASS_MAX_ARRAY_SIZE then
			set EventListener_maxIndex = EventListener_maxIndex + 1
			set this_1 = EventListener_maxIndex
			set EventListener_typeId[this_1] = 795
		else
			call error("Out of memory: Could not create EventListener_add_KeyUtils.")
			set this_1 = 0
		endif
	else
		set EventListener_firstFree = EventListener_firstFree - 1
		set this_1 = EventListener_nextFree[EventListener_firstFree]
		set EventListener_typeId[this_1] = 795
	endif
	return this_1
endfunction

function alloc_EventListener_add_KeyUtils_1714 takes nothing returns integer
	local integer this_1
	if EventListener_firstFree == 0 then
		if EventListener_maxIndex < JASS_MAX_ARRAY_SIZE then
			set EventListener_maxIndex = EventListener_maxIndex + 1
			set this_1 = EventListener_maxIndex
			set EventListener_typeId[this_1] = 796
		else
			call error("Out of memory: Could not create EventListener_add_KeyUtils.")
			set this_1 = 0
		endif
	else
		set EventListener_firstFree = EventListener_firstFree - 1
		set this_1 = EventListener_nextFree[EventListener_firstFree]
		set EventListener_typeId[this_1] = 796
	endif
	return this_1
endfunction

function alloc_EventListener_add_KeyUtils_1715 takes nothing returns integer
	local integer this_1
	if EventListener_firstFree == 0 then
		if EventListener_maxIndex < JASS_MAX_ARRAY_SIZE then
			set EventListener_maxIndex = EventListener_maxIndex + 1
			set this_1 = EventListener_maxIndex
			set EventListener_typeId[this_1] = 797
		else
			call error("Out of memory: Could not create EventListener_add_KeyUtils.")
			set this_1 = 0
		endif
	else
		set EventListener_firstFree = EventListener_firstFree - 1
		set this_1 = EventListener_nextFree[EventListener_firstFree]
		set EventListener_typeId[this_1] = 797
	endif
	return this_1
endfunction

function alloc_EventListener_add_KeyUtils_1716 takes nothing returns integer
	local integer this_1
	if EventListener_firstFree == 0 then
		if EventListener_maxIndex < JASS_MAX_ARRAY_SIZE then
			set EventListener_maxIndex = EventListener_maxIndex + 1
			set this_1 = EventListener_maxIndex
			set EventListener_typeId[this_1] = 798
		else
			call error("Out of memory: Could not create EventListener_add_KeyUtils.")
			set this_1 = 0
		endif
	else
		set EventListener_firstFree = EventListener_firstFree - 1
		set this_1 = EventListener_nextFree[EventListener_firstFree]
		set EventListener_typeId[this_1] = 798
	endif
	return this_1
endfunction

function alloc_EventListener_add_KeyUtils_1717 takes nothing returns integer
	local integer this_1
	if EventListener_firstFree == 0 then
		if EventListener_maxIndex < JASS_MAX_ARRAY_SIZE then
			set EventListener_maxIndex = EventListener_maxIndex + 1
			set this_1 = EventListener_maxIndex
			set EventListener_typeId[this_1] = 799
		else
			call error("Out of memory: Could not create EventListener_add_KeyUtils.")
			set this_1 = 0
		endif
	else
		set EventListener_firstFree = EventListener_firstFree - 1
		set this_1 = EventListener_nextFree[EventListener_firstFree]
		set EventListener_typeId[this_1] = 799
	endif
	return this_1
endfunction

function alloc_EventListener_add_KeyUtils_1718 takes nothing returns integer
	local integer this_1
	if EventListener_firstFree == 0 then
		if EventListener_maxIndex < JASS_MAX_ARRAY_SIZE then
			set EventListener_maxIndex = EventListener_maxIndex + 1
			set this_1 = EventListener_maxIndex
			set EventListener_typeId[this_1] = 800
		else
			call error("Out of memory: Could not create EventListener_add_KeyUtils.")
			set this_1 = 0
		endif
	else
		set EventListener_firstFree = EventListener_firstFree - 1
		set this_1 = EventListener_nextFree[EventListener_firstFree]
		set EventListener_typeId[this_1] = 800
	endif
	return this_1
endfunction

function init_KeyUtils takes nothing returns boolean
	local integer i
	local integer clVar
	local integer clVar_1
	local integer clVar_2
	local integer clVar_3
	local integer clVar_4
	local integer clVar_5
	local integer clVar_6
	local integer clVar_7
	local playerevent temp
	local playerevent temp_1
	local playerevent temp_2
	local playerevent temp_3
	local playerevent temp_4
	local playerevent temp_5
	local playerevent temp_6
	local playerevent temp_7
	local boolean tuple_temp
	local boolean tuple_temp_1
	local boolean tuple_temp_2
	local boolean tuple_temp_3
	set KeyUtils_firstKeyListener = 0
	set i = 0
	loop
		exitwhen i > 11
		set tuple_temp = false
		set tuple_temp_1 = false
		set tuple_temp_2 = false
		set tuple_temp_3 = false
		set KeyUtils_keyStatuses_up[i] = tuple_temp
		set KeyUtils_keyStatuses_down[i] = tuple_temp_1
		set KeyUtils_keyStatuses_left[i] = tuple_temp_2
		set KeyUtils_keyStatuses_right[i] = tuple_temp_3
		set i = i + 1
	endloop
	set temp = EVENT_PLAYER_ARROW_DOWN_DOWN
	set clVar = alloc_EventListener_add_KeyUtils()
	call construct_EventListener(clVar)
	call EventListener_add(temp, clVar)
	set temp_1 = EVENT_PLAYER_ARROW_DOWN_UP
	set clVar_1 = alloc_EventListener_add_KeyUtils_1712()
	call construct_EventListener(clVar_1)
	call EventListener_add(temp_1, clVar_1)
	set temp_2 = EVENT_PLAYER_ARROW_UP_DOWN
	set clVar_2 = alloc_EventListener_add_KeyUtils_1713()
	call construct_EventListener(clVar_2)
	call EventListener_add(temp_2, clVar_2)
	set temp_3 = EVENT_PLAYER_ARROW_UP_UP
	set clVar_3 = alloc_EventListener_add_KeyUtils_1714()
	call construct_EventListener(clVar_3)
	call EventListener_add(temp_3, clVar_3)
	set temp_4 = EVENT_PLAYER_ARROW_LEFT_DOWN
	set clVar_4 = alloc_EventListener_add_KeyUtils_1715()
	call construct_EventListener(clVar_4)
	call EventListener_add(temp_4, clVar_4)
	set temp_5 = EVENT_PLAYER_ARROW_LEFT_UP
	set clVar_5 = alloc_EventListener_add_KeyUtils_1716()
	call construct_EventListener(clVar_5)
	call EventListener_add(temp_5, clVar_5)
	set temp_6 = EVENT_PLAYER_ARROW_RIGHT_DOWN
	set clVar_6 = alloc_EventListener_add_KeyUtils_1717()
	call construct_EventListener(clVar_6)
	call EventListener_add(temp_6, clVar_6)
	set temp_7 = EVENT_PLAYER_ARROW_RIGHT_UP
	set clVar_7 = alloc_EventListener_add_KeyUtils_1718()
	call construct_EventListener(clVar_7)
	call EventListener_add(temp_7, clVar_7)
	return true
endfunction

function init_Knockbacker takes nothing returns boolean
	set Knockbacker_KNOCKBACKER_ID = 1802396523
	set Knockbacker_KNOCK_INC_ID = 1095577719
	set Knockbacker_KNOCK_DEC_ID = 1095577720
	set Knockbacker_DMG_INC_ID = 1095577721
	set Knockbacker_DMG_DEC_ID = 1095577722
	return true
endfunction

function init_LZW takes nothing returns boolean
	set LZW_maxDictSize = 5000
	set LZW_DICT_INIT = "_0123456789abcdefghijklmnopqrstuvwxyz-[]"
	set LZW_ALLOWED_PLAYER_CHARS = "0aUb1GLwR2kHvP3CQIM4npFs5iSW6tzAr7TNxo8JXVjy9OcdEfBKgqeuYDhmlZ"
	set LZW_dictionary = new_HashMap()
	set LZW_dictSize = 0
	return true
endfunction

function init_Lightning takes nothing returns boolean
	return true
endfunction

function alloc_Comparator_LinkedList takes nothing returns integer
	local integer this_1
	if Comparator_firstFree == 0 then
		if Comparator_maxIndex < JASS_MAX_ARRAY_SIZE then
			set Comparator_maxIndex = Comparator_maxIndex + 1
			set this_1 = Comparator_maxIndex
		else
			call error("Out of memory: Could not create Comparator_LinkedList.")
			set this_1 = 0
		endif
	else
		set Comparator_firstFree = Comparator_firstFree - 1
		set this_1 = Comparator_nextFree[Comparator_firstFree]
	endif
	return this_1
endfunction

function alloc_Comparator_LinkedList_1652 takes nothing returns integer
	local integer this_1
	if Comparator_firstFree == 0 then
		if Comparator_maxIndex < JASS_MAX_ARRAY_SIZE then
			set Comparator_maxIndex = Comparator_maxIndex + 1
			set this_1 = Comparator_maxIndex
		else
			call error("Out of memory: Could not create Comparator_LinkedList.")
			set this_1 = 0
		endif
	else
		set Comparator_firstFree = Comparator_firstFree - 1
		set this_1 = Comparator_nextFree[Comparator_firstFree]
	endif
	return this_1
endfunction

function alloc_Comparator_LinkedList_1653 takes nothing returns integer
	local integer this_1
	if Comparator_firstFree == 0 then
		if Comparator_maxIndex < JASS_MAX_ARRAY_SIZE then
			set Comparator_maxIndex = Comparator_maxIndex + 1
			set this_1 = Comparator_maxIndex
		else
			call error("Out of memory: Could not create Comparator_LinkedList.")
			set this_1 = 0
		endif
	else
		set Comparator_firstFree = Comparator_firstFree - 1
		set this_1 = Comparator_nextFree[Comparator_firstFree]
	endif
	return this_1
endfunction

function init_LinkedList takes nothing returns boolean
	call alloc_Comparator_LinkedList()
	call alloc_Comparator_LinkedList_1652()
	call alloc_Comparator_LinkedList_1653()
	call realToIndex(0.)
	return true
endfunction

function init_LobbyTeleporter takes nothing returns boolean
	set LobbyTeleporter_EFFECT_STRING = "Abilities\\Spells\\NightElf\\Blink\\BlinkCaster.mdl"
	set LobbyTeleporter_ESC_ID = 1093677113
	set LobbyTeleporter_EVENT_RADIUS = 38.
	return true
endfunction

function alloc_MGAgar takes nothing returns integer
	local integer this_1
	if Minigame_firstFree == 0 then
		if Minigame_maxIndex < JASS_MAX_ARRAY_SIZE then
			set Minigame_maxIndex = Minigame_maxIndex + 1
			set this_1 = Minigame_maxIndex
			set Minigame_typeId[this_1] = 1012
		else
			call error("Out of memory: Could not create MGAgar.")
			set this_1 = 0
		endif
	else
		set Minigame_firstFree = Minigame_firstFree - 1
		set this_1 = Minigame_nextFree[Minigame_firstFree]
		set Minigame_typeId[this_1] = 1012
	endif
	return this_1
endfunction

function MGAgar_init takes integer this_1 returns nothing
	set MGAgar_cbs[this_1] = 0
	set MGAgar_flist[this_1] = new_LinkedList()
endfunction

function Minigame_init takes integer this_1 returns nothing
endfunction

function construct_Minigame takes integer this_1 returns nothing
	call Minigame_init(this_1)
endfunction

function construct_MGAgar takes integer this_1 returns nothing
	call construct_Minigame(this_1)
	call MGAgar_init(this_1)
endfunction

function new_MGAgar takes nothing returns integer
	local integer this_1 = alloc_MGAgar()
	call construct_MGAgar(this_1)
	return this_1
endfunction

function init_MGAgar takes nothing returns boolean
	local real tuple_temp = 640.
	local real tuple_temp_1 = 7550.
	set MGAgar_RIGHT_SPOT_x = tuple_temp
	set MGAgar_RIGHT_SPOT_y = tuple_temp_1
	set MGAgar_map = new_HashMap()
	call dispatch_LinkedList_LinkedList_LinkedList_add_1(Minigame_minigames, new_MGAgar())
	return true
endfunction

function alloc_MGRandKill takes nothing returns integer
	local integer this_1
	if Minigame_firstFree == 0 then
		if Minigame_maxIndex < JASS_MAX_ARRAY_SIZE then
			set Minigame_maxIndex = Minigame_maxIndex + 1
			set this_1 = Minigame_maxIndex
			set Minigame_typeId[this_1] = 1013
		else
			call error("Out of memory: Could not create MGRandKill.")
			set this_1 = 0
		endif
	else
		set Minigame_firstFree = Minigame_firstFree - 1
		set this_1 = Minigame_nextFree[Minigame_firstFree]
		set Minigame_typeId[this_1] = 1013
	endif
	return this_1
endfunction

function MGRandKill_init takes integer this_1 returns nothing
	set MGRandKill_chickenTimer[this_1] = 0
	set MGRandKill_bunnyTimer[this_1] = 0
	set MGRandKill_coinTimer[this_1] = 0
endfunction

function construct_MGRandKill takes integer this_1 returns nothing
	call construct_Minigame(this_1)
	call MGRandKill_init(this_1)
endfunction

function new_MGRandKill takes nothing returns integer
	local integer this_1 = alloc_MGRandKill()
	call construct_MGRandKill(this_1)
	return this_1
endfunction

function init_MGRandKill takes nothing returns boolean
	call dispatch_LinkedList_LinkedList_LinkedList_add_1(Minigame_minigames, new_MGRandKill())
	return true
endfunction

function alloc_MGSlide takes nothing returns integer
	local integer this_1
	if Minigame_firstFree == 0 then
		if Minigame_maxIndex < JASS_MAX_ARRAY_SIZE then
			set Minigame_maxIndex = Minigame_maxIndex + 1
			set this_1 = Minigame_maxIndex
			set Minigame_typeId[this_1] = 1014
		else
			call error("Out of memory: Could not create MGSlide.")
			set this_1 = 0
		endif
	else
		set Minigame_firstFree = Minigame_firstFree - 1
		set this_1 = Minigame_nextFree[Minigame_firstFree]
		set Minigame_typeId[this_1] = 1014
	endif
	return this_1
endfunction

function MGSlide_init takes integer this_1 returns nothing
	set MGSlide_goRight[this_1] = true
	set MGSlide_bcount[this_1] = 0
endfunction

function construct_MGSlide takes integer this_1 returns nothing
	call construct_Minigame(this_1)
	call MGSlide_init(this_1)
endfunction

function new_MGSlide takes nothing returns integer
	local integer this_1 = alloc_MGSlide()
	call construct_MGSlide(this_1)
	return this_1
endfunction

function init_MGSlide takes nothing returns boolean
	local real tuple_temp = -1540.
	local real tuple_temp_1 = 7550.
	local real tuple_temp_2
	local real tuple_temp_3
	set MGSlide_LEFT_SPOT_x = tuple_temp
	set MGSlide_LEFT_SPOT_y = tuple_temp_1
	set tuple_temp_2 = 640.
	set tuple_temp_3 = 7550.
	set MGSlide_RIGHT_SPOT_x = tuple_temp_2
	set MGSlide_RIGHT_SPOT_y = tuple_temp_3
	call dispatch_LinkedList_LinkedList_LinkedList_add_1(Minigame_minigames, new_MGSlide())
	return true
endfunction

function alloc_MGSpacey takes nothing returns integer
	local integer this_1
	if Minigame_firstFree == 0 then
		if Minigame_maxIndex < JASS_MAX_ARRAY_SIZE then
			set Minigame_maxIndex = Minigame_maxIndex + 1
			set this_1 = Minigame_maxIndex
			set Minigame_typeId[this_1] = 1015
		else
			call error("Out of memory: Could not create MGSpacey.")
			set this_1 = 0
		endif
	else
		set Minigame_firstFree = Minigame_firstFree - 1
		set this_1 = Minigame_nextFree[Minigame_firstFree]
		set Minigame_typeId[this_1] = 1015
	endif
	return this_1
endfunction

function MGSpacey_init takes integer this_1 returns nothing
endfunction

function construct_MGSpacey takes integer this_1 returns nothing
	call construct_Minigame(this_1)
	call MGSpacey_init(this_1)
endfunction

function new_MGSpacey takes nothing returns integer
	local integer this_1 = alloc_MGSpacey()
	call construct_MGSpacey(this_1)
	return this_1
endfunction

function init_MGSpacey takes nothing returns boolean
	local real tuple_temp = -2700.
	local real tuple_temp_1 = 7500.
	set MGSpacey_ARENA_POS_x = tuple_temp
	set MGSpacey_ARENA_POS_y = tuple_temp_1
	set MGSpacey_ships = new_LinkedList()
	set MGSpacey_rocks = new_LinkedList()
	set MGSpacey_minigame = new_MGSpacey()
	call dispatch_LinkedList_LinkedList_LinkedList_add_1(Minigame_minigames, MGSpacey_minigame)
	set MGSpacey_SHIP_ID = 2016424049
	return true
endfunction

function alloc_MGWarlock takes nothing returns integer
	local integer this_1
	if Minigame_firstFree == 0 then
		if Minigame_maxIndex < JASS_MAX_ARRAY_SIZE then
			set Minigame_maxIndex = Minigame_maxIndex + 1
			set this_1 = Minigame_maxIndex
			set Minigame_typeId[this_1] = 1016
		else
			call error("Out of memory: Could not create MGWarlock.")
			set this_1 = 0
		endif
	else
		set Minigame_firstFree = Minigame_firstFree - 1
		set this_1 = Minigame_nextFree[Minigame_firstFree]
		set Minigame_typeId[this_1] = 1016
	endif
	return this_1
endfunction

function MGWarlock_init takes integer this_1 returns nothing
endfunction

function construct_MGWarlock takes integer this_1 returns nothing
	call construct_Minigame(this_1)
	call MGWarlock_init(this_1)
endfunction

function new_MGWarlock takes nothing returns integer
	local integer this_1 = alloc_MGWarlock()
	call construct_MGWarlock(this_1)
	return this_1
endfunction

function init_MGWarlock takes nothing returns boolean
	local real tuple_temp = 3200.
	local real tuple_temp_1 = 7500.
	set MGWarlock_ARENA_POS_x = tuple_temp
	set MGWarlock_ARENA_POS_y = tuple_temp_1
	set MGWarlock_warlocks = new_LinkedList()
	set MGWarlock_minigame = new_MGWarlock()
	call dispatch_LinkedList_LinkedList_LinkedList_add_1(Minigame_minigames, MGWarlock_minigame)
	set MGWarlock_WARLOCK_ID = 2016424050
	set MGWarlock_FIREBALL_ID = 1095577975
	return true
endfunction

function init_MagicFunctions takes nothing returns boolean
	set MagicFunctions_compiletime = false
	return true
endfunction

function initMapBounds takes nothing returns nothing
	local rect cond_result
	local region receiver
	local rect cond_result_1
	local region receiver_1
	local real tuple_temp
	local real tuple_temp_1
	local real tuple_temp_2
	local real tuple_temp_3
	local real tuple_temp_4
	local real tuple_temp_5
	local real tuple_temp_6
	local real tuple_temp_7
	if MagicFunctions_compiletime then
		set cond_result = Rect(-1024., -1024., 1024., 1024.)
	else
		set cond_result = GetPlayableMapRect()
	endif
	set MapBounds_playableMapRect = cond_result
	set receiver = CreateRegion()
	call region_addRect(receiver, MapBounds_playableMapRect)
	if MagicFunctions_compiletime then
		set cond_result_1 = Rect(-1536., -1536., 1536., 1536.)
	else
		set cond_result_1 = GetWorldBounds()
	endif
	set MapBounds_boundRect = cond_result_1
	set receiver_1 = CreateRegion()
	call region_addRect(receiver_1, MapBounds_boundRect)
	set MapBounds_boundRegion = receiver_1
	set tuple_temp = rect_getMinX(MapBounds_playableMapRect)
	set tuple_temp_1 = rect_getMinY(MapBounds_playableMapRect)
	set MapBounds_playableMin_x = tuple_temp
	set MapBounds_playableMin_y = tuple_temp_1
	set tuple_temp_2 = rect_getMaxX(MapBounds_playableMapRect)
	set tuple_temp_3 = rect_getMaxY(MapBounds_playableMapRect)
	set MapBounds_playableMax_x = tuple_temp_2
	set MapBounds_playableMax_y = tuple_temp_3
	set tuple_temp_4 = rect_getMinX(MapBounds_boundRect)
	set tuple_temp_5 = rect_getMinY(MapBounds_boundRect)
	set MapBounds_boundMin_x = tuple_temp_4
	set MapBounds_boundMin_y = tuple_temp_5
	set tuple_temp_6 = rect_getMaxX(MapBounds_boundRect)
	set tuple_temp_7 = rect_getMaxY(MapBounds_boundRect)
	set MapBounds_boundMax_x = tuple_temp_6
	set MapBounds_boundMax_y = tuple_temp_7
	call vec2_op_mult(vec2_op_plus(MapBounds_playableMin_x, MapBounds_playableMin_y, MapBounds_playableMax_x, MapBounds_playableMax_y), vec2_op_plus_return_y, .5)
	call vec2_op_mult(vec2_op_plus(MapBounds_boundMin_x, MapBounds_boundMin_y, MapBounds_boundMax_x, MapBounds_boundMax_y), vec2_op_plus_return_y, .5)
endfunction

function init_MapBounds takes nothing returns boolean
	call initMapBounds()
	return true
endfunction

function init_Maths takes nothing returns boolean
	set Maths_PI = 3.141592654
	return true
endfunction

function init_Matrices takes nothing returns boolean
	local real tuple_temp = 0.
	local real tuple_temp_1 = 0.
	local real tuple_temp_2 = 0.
	local real tuple_temp_3 = 0.
	local real tuple_temp_4 = 0.
	local real tuple_temp_5 = 0.
	local real tuple_temp_6 = 0.
	local real tuple_temp_7 = 0.
	local real tuple_temp_8 = 0.
	local real tuple_temp_9 = 0.
	local real tuple_temp_10 = 0.
	local real tuple_temp_11 = 0.
	local real tuple_temp_12 = 0.
	local real tuple_temp_13 = 0.
	local real tuple_temp_14 = 0.
	local real tuple_temp_15 = 0.
	set Matrices_ZERO44_m00 = tuple_temp
	set Matrices_ZERO44_m01 = tuple_temp_1
	set Matrices_ZERO44_m02 = tuple_temp_2
	set Matrices_ZERO44_m03 = tuple_temp_3
	set Matrices_ZERO44_m10 = tuple_temp_4
	set Matrices_ZERO44_m11 = tuple_temp_5
	set Matrices_ZERO44_m12 = tuple_temp_6
	set Matrices_ZERO44_m13 = tuple_temp_7
	set Matrices_ZERO44_m20 = tuple_temp_8
	set Matrices_ZERO44_m21 = tuple_temp_9
	set Matrices_ZERO44_m22 = tuple_temp_10
	set Matrices_ZERO44_m23 = tuple_temp_11
	set Matrices_ZERO44_m30 = tuple_temp_12
	set Matrices_ZERO44_m31 = tuple_temp_13
	set Matrices_ZERO44_m32 = tuple_temp_14
	set Matrices_ZERO44_m33 = tuple_temp_15
	return true
endfunction

function init_Minigame takes nothing returns boolean
	set Minigame_minigames = new_LinkedList()
	set Minigame_minigames_live = new_LinkedList()
	set Minigame_MAX_TIME = 1.75 * 60.
	set Minigame_BEGIN_SOUND = new_SoundDefinition(Sounds_arrangedTeamInvitation, false)
	return true
endfunction

function init_MinigameTeleporter takes nothing returns boolean
	set MinigameTeleporter_ESC_ID = 1093677113
	set MinigameTeleporter_EVENT_RADIUS = 38.
	return true
endfunction

function init_Minion takes nothing returns boolean
	set Minion_COLL_SIZE_MINION = 0.
	set Minion_ATTACK_DISTANCE = 70.
	set Minion_ATTACK_RANGE = 150.
	set Minion_ATTACK_DAMAGE = 100.
	set Minion_FOLLOW_RANGE = 1000.
	return true
endfunction

function alloc_EventListener_add_MoveSpeed takes nothing returns integer
	local integer this_1
	if EventListener_firstFree == 0 then
		if EventListener_maxIndex < JASS_MAX_ARRAY_SIZE then
			set EventListener_maxIndex = EventListener_maxIndex + 1
			set this_1 = EventListener_maxIndex
			set EventListener_typeId[this_1] = 805
		else
			call error("Out of memory: Could not create EventListener_add_MoveSpeed.")
			set this_1 = 0
		endif
	else
		set EventListener_firstFree = EventListener_firstFree - 1
		set this_1 = EventListener_nextFree[EventListener_firstFree]
		set EventListener_typeId[this_1] = 805
	endif
	return this_1
endfunction

function init_MoveSpeed takes nothing returns boolean
	local integer clVar
	local playerunitevent temp
	set MoveSpeed_INC_SPEED_ID = 1093677381
	set MoveSpeed_DEC_SPEED_ID = 1093677384
	set temp = EVENT_PLAYER_UNIT_SPELL_CAST
	set clVar = alloc_EventListener_add_MoveSpeed()
	call construct_EventListener(clVar)
	call EventListener_add(temp, clVar)
	return true
endfunction

function init_MultiboardClass takes nothing returns boolean
	set MultiboardClass_counter = 0
	return true
endfunction

function init_ObjectIdGenerator takes nothing returns boolean
	call new_IdGenerator(2016423984)
	call new_IdGenerator(1213018160)
	call new_IdGenerator(1095577648)
	call new_IdGenerator(1112354864)
	call new_IdGenerator(1229795376)
	call new_IdGenerator(1380790320)
	return true
endfunction

function init_ObjectIds takes nothing returns boolean
	set ObjectIds_CHARMAP = ".................................!.#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[.]^_`abcdefghijklmnopqrstuvwxyz{|}~................................................................................................................................."
	return true
endfunction

function init_ObjectTarget takes nothing returns boolean
	set ObjectTarget_OBJECT_TARGET_ID = 2003399536
	return true
endfunction

function init_Objects takes nothing returns boolean
	set Objects_impaleTargetDust = "Objects\\Spawnmodels\\Undead\\ImpaleTargetDust\\ImpaleTargetDust.mdx"
	set Objects_questionMark1 = "Objects\\InventoryItems\\QuestionMark\\QuestionMark.mdx"
	return true
endfunction

function init_Obstacle takes nothing returns boolean
	set Obstacle_EVENT_RADIUS_SMALL = 34.
	set Obstacle_EVENT_RADIUS_BIG = 64.
	set Obstacle_EVENT_RADIUS_HIGH = 52.
	set Obstacle_EVENT_HEIGHT_HIGH = 256.
	set Obstacle_EVENT_RADIUS_V = 256.
	return true
endfunction

function init_ObstacleObjects takes nothing returns boolean
	set ObstacleObjects_SOBS_CITADEL_ID = 1936679796
	set ObstacleObjects_BOBS_CITADEL_ID = 1651467124
	set ObstacleObjects_HOBS_CITADEL_ID = 1752130420
	set ObstacleObjects_SOBS_ICE_ID = 1936681315
	set ObstacleObjects_BOBS_ICE_ID = 1651468643
	set ObstacleObjects_HOBS_ICE_ID = 1752131939
	set ObstacleObjects_SOBS_GRASS_ID = 1936680818
	set ObstacleObjects_BOBS_GRASS_ID = 1651468146
	set ObstacleObjects_HOBS_GRASS_ID = 1752131442
	set ObstacleObjects_SOBS_DESERT_ID = 1936680037
	set ObstacleObjects_BOBS_DESERT_ID = 1651467365
	set ObstacleObjects_HOBS_DESERT_ID = 1752130661
	set ObstacleObjects_SOBS_SUNKEN_ID = 1936683893
	set ObstacleObjects_BOBS_SUNKEN_ID = 1651471221
	set ObstacleObjects_HOBS_SUNKEN_ID = 1752134517
	return true
endfunction

function alloc_CallbackSingle_nullTimer_OnUnitEnterLeave takes nothing returns integer
	local integer this_1
	if CallbackSingle_firstFree == 0 then
		if CallbackSingle_maxIndex < JASS_MAX_ARRAY_SIZE then
			set CallbackSingle_maxIndex = CallbackSingle_maxIndex + 1
			set this_1 = CallbackSingle_maxIndex
			set CallbackSingle_typeId[this_1] = 714
		else
			call error("Out of memory: Could not create CallbackSingle_nullTimer_OnUnitEnterLeave.")
			set this_1 = 0
		endif
	else
		set CallbackSingle_firstFree = CallbackSingle_firstFree - 1
		set this_1 = CallbackSingle_nextFree[CallbackSingle_firstFree]
		set CallbackSingle_typeId[this_1] = 714
	endif
	return this_1
endfunction

function player_setAbilityAvailable takes player this_1, integer abilityId, boolean avail returns nothing
	call SetPlayerAbilityAvailable(this_1, abilityId, avail)
endfunction

function init_OnUnitEnterLeave takes nothing returns boolean
	local integer i
	local integer temp
	local integer clVar
	set OnUnitEnterLeave_eventTrigger = CreateTrigger()
	set OnUnitEnterLeave_preplacedUnits = CreateGroup()
	set OnUnitEnterLeave_tempUnitsCount = 0
	set OnUnitEnterLeave_ABILITY_ID = 1095577649
	set i = 0
	set temp = bj_MAX_PLAYER_SLOTS - 1
	loop
		exitwhen i > temp
		call player_setAbilityAvailable(Player_players[i], OnUnitEnterLeave_ABILITY_ID, false)
		set i = i + 1
	endloop
	set clVar = alloc_CallbackSingle_nullTimer_OnUnitEnterLeave()
	call construct_CallbackSingle(clVar)
	call nullTimer(clVar)
	return true
endfunction

function init_Orders takes nothing returns boolean
	set OrderIds_patrol = 851990
	set OrderIds_soulburn = 852668
	set OrderIds_undefend = 852056
	return true
endfunction

function init_Pedestal takes nothing returns boolean
	set MemoryAccessPedestal_ENTITIES_KEY = "e"
	set MemoryAccessPedestal_TILES_KEY = "t"
	return true
endfunction

function init_PedestalObjects takes nothing returns boolean
	set PedestalObjects_AOE_PICK_RANGE = 256.
	set PedestalObjects_SELECT_SINGLE_ID = 1095578480
	set PedestalObjects_SELECT_AOE_ID = 1095578482
	set PedestalObjects_SELECT_AOE_TILE_ID = 1095578483
	set PedestalObjects_SELECT_TILE_ID = 1095578481
	set PedestalObjects_SAVE1_ID = 1095578484
	set PedestalObjects_SAVE2_ID = 1095578485
	set PedestalObjects_SAVE3_ID = 1095578486
	set PedestalObjects_SAVE4_ID = 1095578487
	set PedestalObjects_LOAD1_ID = 1095578488
	set PedestalObjects_LOAD2_ID = 1095578489
	set PedestalObjects_LOAD3_ID = 1095578490
	set PedestalObjects_LOAD4_ID = 1095578491
	return true
endfunction

function init_PhysicsConstants takes nothing returns boolean
	set PhysicsConstants_defaultGravity =  - 0.8
	return true
endfunction

function init_PhysicsEntity takes nothing returns boolean
	return true
endfunction

function alloc_EscaperClsr_setCallback_PickSystem takes nothing returns integer
	local integer this_1
	if EscaperClsr_firstFree == 0 then
		if EscaperClsr_maxIndex < JASS_MAX_ARRAY_SIZE then
			set EscaperClsr_maxIndex = EscaperClsr_maxIndex + 1
			set this_1 = EscaperClsr_maxIndex
			set EscaperClsr_typeId[this_1] = 746
		else
			call error("Out of memory: Could not create EscaperClsr_setCallback_PickSystem.")
			set this_1 = 0
		endif
	else
		set EscaperClsr_firstFree = EscaperClsr_firstFree - 1
		set this_1 = EscaperClsr_nextFree[EscaperClsr_firstFree]
		set EscaperClsr_typeId[this_1] = 746
	endif
	return this_1
endfunction

function alloc_EscaperClsr_setCallback_PickSystem_1667 takes nothing returns integer
	local integer this_1
	if EscaperClsr_firstFree == 0 then
		if EscaperClsr_maxIndex < JASS_MAX_ARRAY_SIZE then
			set EscaperClsr_maxIndex = EscaperClsr_maxIndex + 1
			set this_1 = EscaperClsr_maxIndex
			set EscaperClsr_typeId[this_1] = 747
		else
			call error("Out of memory: Could not create EscaperClsr_setCallback_PickSystem.")
			set this_1 = 0
		endif
	else
		set EscaperClsr_firstFree = EscaperClsr_firstFree - 1
		set this_1 = EscaperClsr_nextFree[EscaperClsr_firstFree]
		set EscaperClsr_typeId[this_1] = 747
	endif
	return this_1
endfunction

function alloc_EscaperClsr_setCallback_PickSystem_1668 takes nothing returns integer
	local integer this_1
	if EscaperClsr_firstFree == 0 then
		if EscaperClsr_maxIndex < JASS_MAX_ARRAY_SIZE then
			set EscaperClsr_maxIndex = EscaperClsr_maxIndex + 1
			set this_1 = EscaperClsr_maxIndex
			set EscaperClsr_typeId[this_1] = 748
		else
			call error("Out of memory: Could not create EscaperClsr_setCallback_PickSystem.")
			set this_1 = 0
		endif
	else
		set EscaperClsr_firstFree = EscaperClsr_firstFree - 1
		set this_1 = EscaperClsr_nextFree[EscaperClsr_firstFree]
		set EscaperClsr_typeId[this_1] = 748
	endif
	return this_1
endfunction

function alloc_EscaperClsr_setCallback_PickSystem_1669 takes nothing returns integer
	local integer this_1
	if EscaperClsr_firstFree == 0 then
		if EscaperClsr_maxIndex < JASS_MAX_ARRAY_SIZE then
			set EscaperClsr_maxIndex = EscaperClsr_maxIndex + 1
			set this_1 = EscaperClsr_maxIndex
			set EscaperClsr_typeId[this_1] = 749
		else
			call error("Out of memory: Could not create EscaperClsr_setCallback_PickSystem.")
			set this_1 = 0
		endif
	else
		set EscaperClsr_firstFree = EscaperClsr_firstFree - 1
		set this_1 = EscaperClsr_nextFree[EscaperClsr_firstFree]
		set EscaperClsr_typeId[this_1] = 749
	endif
	return this_1
endfunction

function alloc_EscaperClsr_setCallback_PickSystem_1670 takes nothing returns integer
	local integer this_1
	if EscaperClsr_firstFree == 0 then
		if EscaperClsr_maxIndex < JASS_MAX_ARRAY_SIZE then
			set EscaperClsr_maxIndex = EscaperClsr_maxIndex + 1
			set this_1 = EscaperClsr_maxIndex
			set EscaperClsr_typeId[this_1] = 750
		else
			call error("Out of memory: Could not create EscaperClsr_setCallback_PickSystem.")
			set this_1 = 0
		endif
	else
		set EscaperClsr_firstFree = EscaperClsr_firstFree - 1
		set this_1 = EscaperClsr_nextFree[EscaperClsr_firstFree]
		set EscaperClsr_typeId[this_1] = 750
	endif
	return this_1
endfunction

function EscaperDefinition_setCallback takes integer this_1, integer closure returns nothing
	set EscaperDefinition_cb[this_1] = closure
endfunction

function dispatch_EscaperDefinition_PickSystem_EscaperDefinition_setCallback takes integer this_1, integer closure returns nothing
	if EscaperDefinition_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling EscaperDefinition.setCallback")
		else
			call error("Called EscaperDefinition.setCallback on invalid object.")
		endif
	endif
	call EscaperDefinition_setCallback(this_1, closure)
endfunction

function EscaperDefinition_setIcon takes integer this_1, string path returns nothing
	set EscaperDefinition_mbicon[this_1] = path
endfunction

function dispatch_EscaperDefinition_PickSystem_EscaperDefinition_setIcon takes integer this_1, string path returns nothing
	if EscaperDefinition_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling EscaperDefinition.setIcon")
		else
			call error("Called EscaperDefinition.setIcon on invalid object.")
		endif
	endif
	call EscaperDefinition_setIcon(this_1, path)
endfunction

function EscaperDefinition_setName takes integer this_1, string name returns nothing
	local texttag receiver = FText_tt[EscaperDefinition_nameTt[this_1]]
	call texttag_setText(receiver, name, 12.)
endfunction

function dispatch_EscaperDefinition_PickSystem_EscaperDefinition_setName takes integer this_1, string name returns nothing
	if EscaperDefinition_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling EscaperDefinition.setName")
		else
			call error("Called EscaperDefinition.setName on invalid object.")
		endif
	endif
	call EscaperDefinition_setName(this_1, name)
endfunction

function alloc_BackIterator_1573 takes nothing returns integer
	local integer this_1
	if BackIterator_firstFree_74 == 0 then
		if BackIterator_maxIndex_77 < JASS_MAX_ARRAY_SIZE then
			set BackIterator_maxIndex_77 = BackIterator_maxIndex_77 + 1
			set this_1 = BackIterator_maxIndex_77
		else
			call error("Out of memory: Could not create BackIterator.")
			set this_1 = 0
		endif
	else
		set BackIterator_firstFree_74 = BackIterator_firstFree_74 - 1
		set this_1 = BackIterator_nextFree_80[BackIterator_firstFree_74]
	endif
	return this_1
endfunction

function BackIterator_init_29 takes integer this_1 returns nothing
endfunction

function construct_BackIterator_2120 takes integer this_1, boolean destroyOnClose returns nothing
	call BackIterator_init_29(this_1)
endfunction

function new_BackIterator_3614 takes boolean destroyOnClose returns integer
	local integer this_1 = alloc_BackIterator_1573()
	call construct_BackIterator_2120(this_1, destroyOnClose)
	return this_1
endfunction

function alloc_EscaperDefinition takes nothing returns integer
	local integer this_1
	if EscaperDefinition_firstFree == 0 then
		if EscaperDefinition_maxIndex < JASS_MAX_ARRAY_SIZE then
			set EscaperDefinition_maxIndex = EscaperDefinition_maxIndex + 1
			set this_1 = EscaperDefinition_maxIndex
			set EscaperDefinition_typeId[this_1] = 751
		else
			call error("Out of memory: Could not create EscaperDefinition.")
			set this_1 = 0
		endif
	else
		set EscaperDefinition_firstFree = EscaperDefinition_firstFree - 1
		set this_1 = EscaperDefinition_nextFree[EscaperDefinition_firstFree]
		set EscaperDefinition_typeId[this_1] = 751
	endif
	return this_1
endfunction

function construct_EscaperDefinition_LinkedListModule takes integer this_1 returns nothing
	set EscaperDefinition_LinkedListModule_size = EscaperDefinition_LinkedListModule_size + 1
	if EscaperDefinition_LinkedListModule_size == 1 then
		set EscaperDefinition_LinkedListModule_first = this_1
		set EscaperDefinition_LinkedListModule_prev[this_1] = 0
	else
		set EscaperDefinition_LinkedListModule_prev[this_1] = EscaperDefinition_LinkedListModule_last
		set EscaperDefinition_LinkedListModule_next[EscaperDefinition_LinkedListModule_last] = this_1
		set EscaperDefinition_LinkedListModule_prev[EscaperDefinition_LinkedListModule_first] = this_1
	endif
	set EscaperDefinition_LinkedListModule_next[this_1] = 0
	set EscaperDefinition_LinkedListModule_last = this_1
endfunction

function EscaperDefinition_init takes integer this_1 returns nothing
	call construct_EscaperDefinition_LinkedListModule(this_1)
endfunction

function construct_EscaperDefinition takes integer this_1, integer escaperId returns nothing
	local unit receiver
	local unit receiver_1
	call EscaperDefinition_init(this_1)
	set EscaperDefinition_nameTt[this_1] = createFText(vec3_op_minus_4281(PickSystem_PICK_x, PickSystem_PICK_y, PickSystem_PICK_z, 64., 64.), vec3_op_minus_return_y_3125, vec3_op_minus_return_z_3127, "", 12.)
	call texttag_setVisibility(FText_tt[EscaperDefinition_nameTt[this_1]], false)
	set EscaperDefinition_escaper[this_1] = createUnit_2356(Basics_DUMMY_PLAYER, escaperId, PickSystem_PICK_x, PickSystem_PICK_y, PickSystem_PICK_z, real_fromDeg(315.))
	set receiver = EscaperDefinition_escaper[this_1]
	call unit_addAbility(receiver, Basics_LOCUST_ID)
	set receiver_1 = receiver
	call unit_setVertexColor_4206(receiver_1, Colors_COLOR_BLACK_red, Colors_COLOR_BLACK_green, Colors_COLOR_BLACK_blue, Colors_COLOR_BLACK_alpha)
endfunction

function new_EscaperDefinition takes integer escaperId returns integer
	local integer this_1 = alloc_EscaperDefinition()
	call construct_EscaperDefinition(this_1, escaperId)
	return this_1
endfunction

function alloc_Iterator_1822 takes nothing returns integer
	local integer this_1
	if Iterator_firstFree_1037 == 0 then
		if Iterator_maxIndex_1041 < JASS_MAX_ARRAY_SIZE then
			set Iterator_maxIndex_1041 = Iterator_maxIndex_1041 + 1
			set this_1 = Iterator_maxIndex_1041
		else
			call error("Out of memory: Could not create Iterator.")
			set this_1 = 0
		endif
	else
		set Iterator_firstFree_1037 = Iterator_firstFree_1037 - 1
		set this_1 = Iterator_nextFree_1045[Iterator_firstFree_1037]
	endif
	return this_1
endfunction

function Iterator_init_804 takes integer this_1 returns nothing
endfunction

function construct_Iterator_2228 takes integer this_1, boolean destroyOnClose returns nothing
	call Iterator_init_804(this_1)
endfunction

function new_Iterator_3697 takes boolean destroyOnClose returns integer
	local integer this_1 = alloc_Iterator_1822()
	call construct_Iterator_2228(this_1, destroyOnClose)
	return this_1
endfunction

function init_PickSystem takes nothing returns boolean
	local real tuple_temp = unit_getPos3Real(gg_unit_revp_0002)
	local real tuple_temp_1 = unit_getPos3Real_return_y
	local integer receiver
	local integer receiver_1
	local integer clVar
	local integer receiver_2
	local integer receiver_3
	local integer receiver_4
	local integer clVar_1
	local integer receiver_5
	local integer receiver_6
	local integer receiver_7
	local integer clVar_2
	local integer receiver_8
	local integer receiver_9
	local integer receiver_10
	local integer clVar_3
	local integer receiver_11
	local integer receiver_12
	local integer receiver_13
	local integer clVar_4
	local integer receiver_14
	local integer temp
	local integer temp_1
	local integer temp_2
	local integer temp_3
	local integer temp_4
	local real tuple_temp_2
	local real tuple_temp_3
	local real tuple_temp_4
	set PickSystem_START_x = tuple_temp
	set PickSystem_START_y = tuple_temp_1
	set tuple_temp_2 = -6743.
	set tuple_temp_3 = 6616.
	set tuple_temp_4 = 100.
	set PickSystem_PICK_x = tuple_temp_2
	set PickSystem_PICK_y = tuple_temp_3
	set PickSystem_PICK_z = tuple_temp_4
	set PickSystem_BLINK_ID = 1093677105
	set PickSystem_PICK_DUMMY_ID = 2016424040
	set PickSystem_PREV_ID = 1095577707
	set PickSystem_NEXT_ID = 1095577708
	set PickSystem_PICK_ID = 1095577709
	set EscaperDefinition_LinkedListModule_first = 0
	set EscaperDefinition_LinkedListModule_last = 0
	set EscaperDefinition_LinkedListModule_size = 0
	call new_Iterator_3697(false)
	call new_BackIterator_3614(false)
	set PickSystem_hastStartedYet = false
	set receiver = new_EscaperDefinition(BuilderConstants_ESC_HOLY_ID)
	call dispatch_EscaperDefinition_PickSystem_EscaperDefinition_setName(receiver, "|cffFFC521Holy Escaper|r\nIn years of studies this priest mastered the art of healing and reincarnation.")
	set receiver_1 = receiver
	call dispatch_EscaperDefinition_PickSystem_EscaperDefinition_setIcon(receiver_1, "ReplaceableTextures\\CommandButtons\\BTNPriest.blp")
	set receiver_2 = receiver_1
	set temp = receiver_2
	set clVar = alloc_EscaperClsr_setCallback_PickSystem()
	call dispatch_EscaperDefinition_PickSystem_EscaperDefinition_setCallback(temp, clVar)
	set receiver_3 = new_EscaperDefinition(BuilderConstants_ESC_STRONG_ID)
	call dispatch_EscaperDefinition_PickSystem_EscaperDefinition_setName(receiver_3, "|cffAD4208Strong Escaper|r\nThis brave baronet perfected his defense abilites and will never retreat.")
	set receiver_4 = receiver_3
	call dispatch_EscaperDefinition_PickSystem_EscaperDefinition_setIcon(receiver_4, "ReplaceableTextures\\CommandButtons\\BTNFootman.blp")
	set receiver_5 = receiver_4
	set temp_1 = receiver_5
	set clVar_1 = alloc_EscaperClsr_setCallback_PickSystem_1667()
	call dispatch_EscaperDefinition_PickSystem_EscaperDefinition_setCallback(temp_1, clVar_1)
	set receiver_6 = new_EscaperDefinition(BuilderConstants_ESC_FAST_ID)
	call dispatch_EscaperDefinition_PickSystem_EscaperDefinition_setName(receiver_6, "|cff08CEEFFast Escaper|r\nThis blazing fast hero inceases the movementspeed of himself and his mates and can create a portal.")
	set receiver_7 = receiver_6
	call dispatch_EscaperDefinition_PickSystem_EscaperDefinition_setIcon(receiver_7, "ReplaceableTextures\\CommandButtons\\BTNPeasant.blp")
	set receiver_8 = receiver_7
	set temp_2 = receiver_8
	set clVar_2 = alloc_EscaperClsr_setCallback_PickSystem_1668()
	call dispatch_EscaperDefinition_PickSystem_EscaperDefinition_setCallback(temp_2, clVar_2)
	set receiver_9 = new_EscaperDefinition(BuilderConstants_ESC_ICE_ID)
	call dispatch_EscaperDefinition_PickSystem_EscaperDefinition_setName(receiver_9, "|cff08D6FFIce Escaper|r\nBy living in the arctic snows for so long, this escaper knows how to handle sliding on ice.")
	set receiver_10 = receiver_9
	call dispatch_EscaperDefinition_PickSystem_EscaperDefinition_setIcon(receiver_10, "ReplaceableTextures\\CommandButtons\\BTNIceTrollBeserker.blp")
	set receiver_11 = receiver_10
	set temp_3 = receiver_11
	set clVar_3 = alloc_EscaperClsr_setCallback_PickSystem_1669()
	call dispatch_EscaperDefinition_PickSystem_EscaperDefinition_setCallback(temp_3, clVar_3)
	set receiver_12 = new_EscaperDefinition(BuilderConstants_ESC_BLIND_ID)
	call dispatch_EscaperDefinition_PickSystem_EscaperDefinition_setName(receiver_12, "|cff6B6BCEFemale Escaper|r\nA cold heart and years of bitching grant her some protection from lava.")
	set receiver_13 = receiver_12
	call dispatch_EscaperDefinition_PickSystem_EscaperDefinition_setIcon(receiver_13, Icons_bTNHuntress)
	set receiver_14 = receiver_13
	set temp_4 = receiver_14
	set clVar_4 = alloc_EscaperClsr_setCallback_PickSystem_1670()
	call dispatch_EscaperDefinition_PickSystem_EscaperDefinition_setCallback(temp_4, clVar_4)
	return true
endfunction

function initPlayerArray takes nothing returns nothing
	local integer i = 0
	local integer temp = bj_MAX_PLAYER_SLOTS - 1
	loop
		exitwhen i > temp
		set Player_players[i] = Player(i)
		set i = i + 1
	endloop
endfunction

function init_Player takes nothing returns boolean
	set Player_localPlayer = GetLocalPlayer()
	call initPlayerArray()
	return true
endfunction

function init_PlayerData takes nothing returns boolean
	set PlayerData_allPlayers = new_LinkedList()
	set PlayerData_escaperPlayers = new_LinkedList()
	set PlayerData_builderPlayers = new_LinkedList()
	set PlayerData_questFailedSound = new_SoundDefinition(Sounds_questFailed, false)
	set PlayerData_minutes = 0
	set PlayerData_seconds = 0
	return true
endfunction

function init_Playercolor takes nothing returns boolean
	set Playercolor_PLAYER_COLOR_BLACK_AGGRESSIVE = ConvertPlayerColor(24)
	set Playercolor_PLAYER_COLOR_UNKNOWN1 = ConvertPlayerColor(25)
	set Playercolor_PLAYER_COLOR_UNKNOWN2 = ConvertPlayerColor(26)
	set Playercolor_PLAYER_COLOR_BLACK_PASSIVE = ConvertPlayerColor(27)
	set Playercolor_LOOKUP[0] = PLAYER_COLOR_RED
	set Playercolor_LOOKUP[1] = PLAYER_COLOR_BLUE
	set Playercolor_LOOKUP[2] = PLAYER_COLOR_CYAN
	set Playercolor_LOOKUP[3] = PLAYER_COLOR_PURPLE
	set Playercolor_LOOKUP[4] = PLAYER_COLOR_YELLOW
	set Playercolor_LOOKUP[5] = PLAYER_COLOR_ORANGE
	set Playercolor_LOOKUP[6] = PLAYER_COLOR_GREEN
	set Playercolor_LOOKUP[7] = PLAYER_COLOR_PINK
	set Playercolor_LOOKUP[8] = PLAYER_COLOR_LIGHT_GRAY
	set Playercolor_LOOKUP[9] = PLAYER_COLOR_LIGHT_BLUE
	set Playercolor_LOOKUP[10] = PLAYER_COLOR_AQUA
	set Playercolor_LOOKUP[11] = PLAYER_COLOR_BROWN
	set Playercolor_LOOKUP[12] = PLAYER_COLOR_MAROON
	set Playercolor_LOOKUP[13] = PLAYER_COLOR_NAVY
	set Playercolor_LOOKUP[14] = PLAYER_COLOR_TURQUOISE
	set Playercolor_LOOKUP[15] = PLAYER_COLOR_VIOLET
	set Playercolor_LOOKUP[16] = PLAYER_COLOR_WHEAT
	set Playercolor_LOOKUP[17] = PLAYER_COLOR_PEACH
	set Playercolor_LOOKUP[18] = PLAYER_COLOR_MINT
	set Playercolor_LOOKUP[19] = PLAYER_COLOR_LAVENDER
	set Playercolor_LOOKUP[20] = PLAYER_COLOR_COAL
	set Playercolor_LOOKUP[21] = PLAYER_COLOR_SNOW
	set Playercolor_LOOKUP[22] = PLAYER_COLOR_EMERALD
	set Playercolor_LOOKUP[23] = PLAYER_COLOR_PEANUT
	set Playercolor_LOOKUP[24] = Playercolor_PLAYER_COLOR_BLACK_AGGRESSIVE
	set Playercolor_LOOKUP[25] = Playercolor_PLAYER_COLOR_UNKNOWN1
	set Playercolor_LOOKUP[26] = Playercolor_PLAYER_COLOR_UNKNOWN2
	set Playercolor_LOOKUP[27] = Playercolor_PLAYER_COLOR_BLACK_PASSIVE
	return true
endfunction

function alloc_CallbackSingle_nullTimer_Players takes nothing returns integer
	local integer this_1
	if CallbackSingle_firstFree == 0 then
		if CallbackSingle_maxIndex < JASS_MAX_ARRAY_SIZE then
			set CallbackSingle_maxIndex = CallbackSingle_maxIndex + 1
			set this_1 = CallbackSingle_maxIndex
			set CallbackSingle_typeId[this_1] = 715
		else
			call error("Out of memory: Could not create CallbackSingle_nullTimer_Players.")
			set this_1 = 0
		endif
	else
		set CallbackSingle_firstFree = CallbackSingle_firstFree - 1
		set this_1 = CallbackSingle_nextFree[CallbackSingle_firstFree]
		set CallbackSingle_typeId[this_1] = 715
	endif
	return this_1
endfunction

function init_Players takes nothing returns boolean
	local integer clVar
	set Players_ALL_PLAYERS = new_LinkedList()
	set clVar = alloc_CallbackSingle_nullTimer_Players()
	call construct_CallbackSingle(clVar)
	call nullTimer(clVar)
	return true
endfunction

function alloc_EventListener_add_Pointer takes nothing returns integer
	local integer this_1
	if EventListener_firstFree == 0 then
		if EventListener_maxIndex < JASS_MAX_ARRAY_SIZE then
			set EventListener_maxIndex = EventListener_maxIndex + 1
			set this_1 = EventListener_maxIndex
			set EventListener_typeId[this_1] = 806
		else
			call error("Out of memory: Could not create EventListener_add_Pointer.")
			set this_1 = 0
		endif
	else
		set EventListener_firstFree = EventListener_firstFree - 1
		set this_1 = EventListener_nextFree[EventListener_firstFree]
		set EventListener_typeId[this_1] = 806
	endif
	return this_1
endfunction

function init_Pointer takes nothing returns boolean
	local integer clVar
	local playerevent temp
	set Pointer_POINTER_ID = 1886286962
	set Pointer_POINTER_RADIUS = 64.
	set Pointer_INC_ID = 1093677382
	set Pointer_DEC_ID = 1093677383
	set Pointer_START_ID = 1093677873
	set Pointer_STOP_ID = 1093677874
	set temp = ClosureEvents_EVENT_PLAYER_CHAT_FILTER
	set clVar = alloc_EventListener_add_Pointer()
	call construct_EventListener(clVar)
	call EventListener_add(temp, clVar)
	call preloadAbility_1(Pointer_START_ID)
	call preloadAbility_1(Pointer_STOP_ID)
	call preloadAbility_1(Pointer_INC_ID)
	call preloadAbility_1(Pointer_DEC_ID)
	return true
endfunction

function init_Powernode takes nothing returns boolean
	set Powernode_EFFECT_STRING = "DRAM"
	set Powernode_EFFECT_BOUNCE_STRING = "LGRO"
	set Powernode_EFFECT_DIODE_STRING = "LONE"
	set Powernode_EFFECT_TETHER_BOTH_STRING = "LBOT"
	set Powernode_EFFECT_TETHER_AIR_STRING = "BAIR"
	set Powernode_EFFECT_ORB_STRING = "LORB"
	set Powernode_KILL_EFFECT = "Abilities\\Spells\\Human\\ManaFlare\\ManaFlareBoltImpact.mdl"
	set Powernode_ACTIVATION_DIST = 22.
	set Powernode_INCREASE_BOUNCE_ID = 1095578232
	set Powernode_DECREASE_BOUNCE_ID = 1095578233
	set Powernode_LINK_B_GROUND_ID = 1095578236
	set Powernode_LINK_B_AIR_ID = 1095578234
	set Powernode_LINK_B_BOTH_ID = 1095578401
	set Powernode_LINK_KILL_ID = 1095578235
	set Powernode_LINK_SPELLBOOK_ID = 1095578416
	set Powernode_LINK_DIODE_GROUND_ID = 1095578237
	set Powernode_LINK_ORB_ID = 1095578238
	return true
endfunction

function alloc_CallbackSingle_nullTimer_Preloader takes nothing returns integer
	local integer this_1
	if CallbackSingle_firstFree == 0 then
		if CallbackSingle_maxIndex < JASS_MAX_ARRAY_SIZE then
			set CallbackSingle_maxIndex = CallbackSingle_maxIndex + 1
			set this_1 = CallbackSingle_maxIndex
			set CallbackSingle_typeId[this_1] = 716
		else
			call error("Out of memory: Could not create CallbackSingle_nullTimer_Preloader.")
			set this_1 = 0
		endif
	else
		set CallbackSingle_firstFree = CallbackSingle_firstFree - 1
		set this_1 = CallbackSingle_nextFree[CallbackSingle_firstFree]
		set CallbackSingle_typeId[this_1] = 716
	endif
	return this_1
endfunction

function unit_setInvulnerable takes unit this_1, boolean flag returns nothing
	call SetUnitInvulnerable(this_1, flag)
endfunction

function init_Preloader takes nothing returns boolean
	local integer clVar
	set Preloader_autoFinish = true
	set Preloader_dumg = CreateGroup()
	set Preloader_dum = createUnit(Basics_DUMMY_PLAYER, UnitIds_shade, MapBounds_playableMin_x, MapBounds_playableMin_y, 0.)
	call unit_setInvulnerable(Preloader_dum, true)
	if Preloader_dum == null then
		call error("DUMMY_UNITID not added correctly to the map.")
	endif
	if Preloader_autoFinish then
		set clVar = alloc_CallbackSingle_nullTimer_Preloader()
		call construct_CallbackSingle(clVar)
		call nullTimer(clVar)
	endif
	return true
endfunction

function init_Printing takes nothing returns boolean
	set Printing_DEBUG_MSG_DURATION = 45.
	return true
endfunction

function init_Printing_config takes nothing returns boolean
	set Printing_config_DEBUG_LEVEL = 2
	return true
endfunction

function init_Quaternion takes nothing returns boolean
	local real tuple_temp = 0.
	local real tuple_temp_1 = 0.
	local real tuple_temp_2 = 0.
	local real tuple_temp_3 = 1.
	set Quaternion_IDENTITYQ_x = tuple_temp
	set Quaternion_IDENTITYQ_y = tuple_temp_1
	set Quaternion_IDENTITYQ_z = tuple_temp_2
	set Quaternion_IDENTITYQ_w = tuple_temp_3
	set Quaternion_EPSILON = 0.001
	return true
endfunction

function init_Questlog takes nothing returns boolean
	local quest q = CreateQuest()
	call QuestSetTitle(q, "|cffFFD700Commands")
	call QuestSetIconPath(q, "ReplaceableTextures\\CommandButtons\\BTNOrcCaptureFlag.blp")
	call QuestSetDescription(q, "|cff4d50ddJoin our discord|r: discord.gg/yr3ZyYQ\n\n" + "|cff787888Available Commands:|r\n" + "-|cffFFD700clear|r (clears textmessages)\n" + "-|cffFFD700smode|r (Toggles revive selection, also effects camera pan)\n" + "-|cffFFD700cam |r[|cffFFD700select|r | |cffFFD700cam|r | |cffFFD700both|r] (sets camera distance)\n" + "-|cffFFD700cam lock|r (locks the camera onto your escaper)\n" + "-|cffFFD700cam unlock|r (unlocks the camera)\n" + "-|cffFFD700frev|r (revives your escaper, in case of bugs)\n" + "-|cffFFD700info|r (shows basic information about the current Area)\n")
	set q = CreateQuest()
	call QuestSetTitle(q, "|cff0084ffCredits")
	call QuestSetRequired(q, false)
	call QuestSetIconPath(q, "ReplaceableTextures\\CommandButtons\\BTNtemp.blp")
	call QuestSetDescription(q, "|cff4d50ddJoin our discord|r: discord.gg/yr3ZyYQ\n\n" + "|cff787888Special thanks in unsorted manner|r:\n" + "-kari0003\n" + "-menag\n" + "-Crigges\n" + "-WaterKnight\n" + "-Hiveworkshop ppl\n" + "-old b.net friends whose names I forgot ;( good ol' times\n" + "-Geronimo\n" + "-The koreans: pockpoong, kagu, sayack\n" + "-Gamestargamer" + "-Garfield1337\n" + "-Masterstryke\n" + "-SFan042\n")
	return true
endfunction

function init_Real takes nothing returns boolean
	set Real_REAL_MAX = 340282366920938000000000000000000000000.
	set Real_REAL_MIN =  - 340282366920938000000000000000000000000.
	return true
endfunction

function RegionData_createSetup takes integer this_1 returns nothing
	call createUnit(GameConstants_STAFF_PLAYER, BuilderConstants_REGION_ADMIN_ID, rect_getCenter(RegionData_theRect[this_1]), rect_getCenter_return_y, real_asAngleDegrees(270.))
endfunction

function dispatch_RegionData_RegionData_RegionData_createSetup takes integer this_1 returns nothing
	if RegionData_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling RegionData.createSetup")
		else
			call error("Called RegionData.createSetup on invalid object.")
		endif
	endif
	call RegionData_createSetup(this_1)
endfunction

function alloc_RegionData takes nothing returns integer
	local integer this_1
	if RegionData_firstFree == 0 then
		if RegionData_maxIndex < JASS_MAX_ARRAY_SIZE then
			set RegionData_maxIndex = RegionData_maxIndex + 1
			set this_1 = RegionData_maxIndex
			set RegionData_typeId[this_1] = 1111
		else
			call error("Out of memory: Could not create RegionData.")
			set this_1 = 0
		endif
	else
		set RegionData_firstFree = RegionData_firstFree - 1
		set this_1 = RegionData_nextFree[RegionData_firstFree]
		set RegionData_typeId[this_1] = 1111
	endif
	return this_1
endfunction

function RegionData_init takes integer this_1 returns nothing
	set RegionData_escapers[this_1] = new_LinkedList()
	set RegionData_permissions[this_1] = new_HashMap()
	set RegionData_rtype[this_1] = 0
	set RegionData_slidespeed[this_1] = 3.
	set RegionData_poisonDmg[this_1] = 1.
	set RegionData_lavaDmg[this_1] = 1.
	set RegionData_turnSpeed[this_1] = 2.55
	set RegionData_gravity[this_1] =  - 0.8
	set RegionData_easyMode[this_1] = false
	set RegionData_specialAbil[this_1] = 0
	set RegionData_bossRegion[this_1] = false
	set RegionData_allowCut[this_1] = false
	set RegionData_boss[this_1] = 0
endfunction

function trigger_registerRectEnterEventSource takes trigger this_1, rect r returns nothing
	call TriggerRegisterEnterRectSimple(this_1, r)
	call dispatch_HashMap_HashMap_HashMap_put(EventHelper_rectMap, triggerToIndex(this_1), rectToIndex(r))
endfunction

function construct_RegionData takes integer this_1, rect r returns nothing
	local trigger receiver
	local trigger receiver_1
	call RegionData_init(this_1)
	set RegionData_theRect[this_1] = r
	if r != null then
		set receiver = CreateTrigger()
		call trigger_registerRectEnterEventSource(receiver, r)
		set receiver_1 = receiver
		call trigger_addAction(receiver_1, ref_function_code__addAction_RegionData_RegionData)
		call dispatch_HashMap_HashMap_HashMap_put(RegionData_regionMap, rectToIndex(r), this_1)
		call dispatch_RegionData_RegionData_RegionData_setBossRegion(this_1)
	endif
endfunction

function new_RegionData takes rect r returns integer
	local integer this_1 = alloc_RegionData()
	call construct_RegionData(this_1, r)
	return this_1
endfunction

function trigger_registerRectLeaveEventSource takes trigger this_1, rect r returns nothing
	call TriggerRegisterLeaveRectSimple(this_1, r)
	call dispatch_HashMap_HashMap_HashMap_put(EventHelper_rectMap, triggerToIndex(this_1), rectToIndex(r))
endfunction

function init_RegionData takes nothing returns boolean
	local real tuple_temp = unit_getPos(gg_unit_revp_0322)
	local real tuple_temp_1 = unit_getPos_return_y
	local integer receiver
	local integer receiver_1
	local integer receiver_2
	local integer receiver_3
	local integer receiver_4
	local integer receiver_5
	local integer receiver_6
	local integer receiver_7
	local integer receiver_8
	local integer receiver_9
	local integer receiver_10
	local integer receiver_11
	local integer receiver_12
	local integer receiver_13
	local integer receiver_14
	local integer receiver_15
	local integer receiver_16
	local integer receiver_17
	local trigger receiver_18
	local trigger receiver_19
	set RegionData_LOUNGE_x = tuple_temp
	set RegionData_LOUNGE_y = tuple_temp_1
	set RegionData_regionMap = new_HashMap()
	set RegionData_EMPTY_REGION = new_RegionData(null)
	set RegionData_x = 0.
	set RegionData_y = 0.
	set RegionData_regions[0] = new_RegionData(gg_rct_Region_024)
	call dispatch_RegionData_RegionData_RegionData_setType(RegionData_regions[0], getRegionTypeFromItem(1227894852), false)
	call dispatch_RegionData_RegionData_RegionData_setOwner(RegionData_regions[0], GameConstants_STAFF_PLAYER)
	set RegionData_regions[1] = new_RegionData(gg_rct_Region_018)
	call dispatch_RegionData_RegionData_RegionData_setType(RegionData_regions[1], getRegionTypeFromItem(1227894855), false)
	call dispatch_RegionData_RegionData_RegionData_setOwner(RegionData_regions[1], GameConstants_STAFF_PLAYER)
	set RegionData_regions[2] = new_RegionData(gg_rct_Region_000)
	call dispatch_RegionData_RegionData_RegionData_setType(RegionData_regions[2], getRegionTypeFromItem(1227894853), false)
	call dispatch_RegionData_RegionData_RegionData_setOwner(RegionData_regions[2], GameConstants_STAFF_PLAYER)
	set RegionData_regions[3] = new_RegionData(gg_rct_Region_001)
	call dispatch_RegionData_RegionData_RegionData_setType(RegionData_regions[3], getRegionTypeFromItem(1227894856), false)
	call dispatch_RegionData_RegionData_RegionData_setOwner(RegionData_regions[3], GameConstants_STAFF_PLAYER)
	set receiver = new_RegionData(gg_rct_Region_004)
	call dispatch_RegionData_RegionData_RegionData_createSetup(receiver)
	set RegionData_regions[4] = receiver
	set receiver_1 = new_RegionData(gg_rct_Region_005)
	call dispatch_RegionData_RegionData_RegionData_createSetup(receiver_1)
	set RegionData_regions[5] = receiver_1
	set receiver_2 = new_RegionData(gg_rct_Region_006)
	call dispatch_RegionData_RegionData_RegionData_createSetup(receiver_2)
	set RegionData_regions[6] = receiver_2
	set receiver_3 = new_RegionData(gg_rct_Region_007)
	call dispatch_RegionData_RegionData_RegionData_createSetup(receiver_3)
	set RegionData_regions[7] = receiver_3
	set receiver_4 = new_RegionData(gg_rct_Region_008)
	call dispatch_RegionData_RegionData_RegionData_createSetup(receiver_4)
	set RegionData_regions[8] = receiver_4
	set receiver_5 = new_RegionData(gg_rct_Region_009)
	call dispatch_RegionData_RegionData_RegionData_createSetup(receiver_5)
	set RegionData_regions[9] = receiver_5
	set receiver_6 = new_RegionData(gg_rct_Region_010)
	call dispatch_RegionData_RegionData_RegionData_createSetup(receiver_6)
	set RegionData_regions[10] = receiver_6
	set receiver_7 = new_RegionData(gg_rct_Region_011)
	call dispatch_RegionData_RegionData_RegionData_createSetup(receiver_7)
	set RegionData_regions[11] = receiver_7
	set receiver_8 = new_RegionData(gg_rct_Region_012)
	call dispatch_RegionData_RegionData_RegionData_createSetup(receiver_8)
	set RegionData_regions[12] = receiver_8
	set receiver_9 = new_RegionData(gg_rct_Region_013)
	call dispatch_RegionData_RegionData_RegionData_createSetup(receiver_9)
	set RegionData_regions[13] = receiver_9
	set receiver_10 = new_RegionData(gg_rct_Region_014)
	call dispatch_RegionData_RegionData_RegionData_createSetup(receiver_10)
	set RegionData_regions[14] = receiver_10
	set receiver_11 = new_RegionData(gg_rct_Region_015)
	call dispatch_RegionData_RegionData_RegionData_createSetup(receiver_11)
	set RegionData_regions[15] = receiver_11
	set receiver_12 = new_RegionData(gg_rct_Region_016)
	call dispatch_RegionData_RegionData_RegionData_createSetup(receiver_12)
	set RegionData_regions[16] = receiver_12
	set receiver_13 = new_RegionData(gg_rct_Region_017)
	call dispatch_RegionData_RegionData_RegionData_createSetup(receiver_13)
	set RegionData_regions[17] = receiver_13
	set receiver_14 = new_RegionData(gg_rct_Region_002)
	call dispatch_RegionData_RegionData_RegionData_createSetup(receiver_14)
	set RegionData_regions[18] = receiver_14
	set receiver_15 = new_RegionData(gg_rct_Region_003)
	call dispatch_RegionData_RegionData_RegionData_createSetup(receiver_15)
	set RegionData_regions[19] = receiver_15
	set receiver_16 = new_RegionData(gg_rct_Region_026)
	call dispatch_RegionData_RegionData_RegionData_createSetup(receiver_16)
	set RegionData_regions[20] = receiver_16
	set RegionData_regions[21] = new_RegionData(gg_rct_Start)
	call dispatch_RegionData_RegionData_RegionData_setOwner(RegionData_regions[21], GameConstants_STAFF_PLAYER)
	call dispatch_RegionData_RegionData_RegionData_setType(RegionData_regions[21], getRegionTypeFromItem(1227894852), false)
	set RegionData_regions[22] = new_RegionData(gg_rct_Choose)
	call dispatch_RegionData_RegionData_RegionData_setType(RegionData_regions[22], getRegionTypeFromItem(1227894852), false)
	call dispatch_RegionData_RegionData_RegionData_setOwner(RegionData_regions[22], GameConstants_STAFF_PLAYER)
	set RegionData_regions[23] = new_RegionData(gg_rct_coingamearea)
	call dispatch_RegionData_RegionData_RegionData_setType(RegionData_regions[23], getRegionTypeFromItem(1227894855), false)
	call dispatch_RegionData_RegionData_RegionData_setOwner(RegionData_regions[23], GameConstants_STAFF_PLAYER)
	set RegionData_easyMode[RegionData_regions[23]] = true
	set RegionData_regions[24] = new_RegionData(gg_rct_spaceygamearea)
	call dispatch_RegionData_RegionData_RegionData_setType(RegionData_regions[24], getRegionTypeFromItem(1227894855), false)
	call dispatch_RegionData_RegionData_RegionData_setOwner(RegionData_regions[24], GameConstants_STAFF_PLAYER)
	set RegionData_regions[25] = new_RegionData(gg_rct_slidegamearea)
	call dispatch_RegionData_RegionData_RegionData_setType(RegionData_regions[25], getRegionTypeFromItem(1227894852), false)
	call dispatch_RegionData_RegionData_RegionData_setOwner(RegionData_regions[25], GameConstants_STAFF_PLAYER)
	set receiver_17 = new_RegionData(gg_rct_Region_027)
	call dispatch_RegionData_RegionData_RegionData_createSetup(receiver_17)
	set RegionData_regions[26] = receiver_17
	set RegionData_regions[27] = new_RegionData(gg_rct_agargamearea)
	call dispatch_RegionData_RegionData_RegionData_setType(RegionData_regions[27], getRegionTypeFromItem(1227894853), false)
	call dispatch_RegionData_RegionData_RegionData_setOwner(RegionData_regions[27], GameConstants_STAFF_PLAYER)
	set RegionData_regions[28] = new_RegionData(gg_rct_warlockgamearea)
	call dispatch_RegionData_RegionData_RegionData_setType(RegionData_regions[28], getRegionTypeFromItem(1227894853), false)
	call dispatch_RegionData_RegionData_RegionData_setOwner(RegionData_regions[28], GameConstants_STAFF_PLAYER)
	set receiver_18 = CreateTrigger()
	call trigger_registerRectLeaveEventSource(receiver_18, gg_rct_Region_023)
	set receiver_19 = receiver_18
	call trigger_addAction(receiver_19, ref_function_code__addAction_RegionData)
	return true
endfunction

function init_RegisterEvents takes nothing returns boolean
	set RegisterEvents_onCastMap = new_HashMap()
	call registerPlayerUnitEvent(EVENT_PLAYER_UNIT_SPELL_EFFECT, ref_function_code__registerPlayerUnitEvent_RegisterEvents)
	return true
endfunction

function alloc_EventListener_add_Remove takes nothing returns integer
	local integer this_1
	if EventListener_firstFree == 0 then
		if EventListener_maxIndex < JASS_MAX_ARRAY_SIZE then
			set EventListener_maxIndex = EventListener_maxIndex + 1
			set this_1 = EventListener_maxIndex
			set EventListener_typeId[this_1] = 809
		else
			call error("Out of memory: Could not create EventListener_add_Remove.")
			set this_1 = 0
		endif
	else
		set EventListener_firstFree = EventListener_firstFree - 1
		set this_1 = EventListener_nextFree[EventListener_firstFree]
		set EventListener_typeId[this_1] = 809
	endif
	return this_1
endfunction

function init_Remove takes nothing returns boolean
	local playerunitevent temp = EVENT_PLAYER_UNIT_SPELL_EFFECT
	local integer clVar = alloc_EventListener_add_Remove()
	call construct_EventListener(clVar)
	call EventListener_add(temp, clVar)
	return true
endfunction

function init_ReviveManager takes nothing returns boolean
	set ReviveManager_TIMER_PERIOD = 0.1
	set ReviveManager_revMode = 0
	set ReviveManager_waitForCount = 0
	call timer_startPeriodic(CreateTimer(), ReviveManager_TIMER_PERIOD, ref_function_code__startPeriodic_ReviveManager)
	return true
endfunction

function init_RevivePointModifier takes nothing returns boolean
	set RevivePointModifier_REV_MODIFIER_DUMMY_ID = 2016424036
	set RevivePointModifier_CREATE_REV_MOD_ID = 1093678925
	set RevivePointModifier_REMOVE_REV_MOD_ID = 1093678926
	return true
endfunction

function init_Revivepoint takes nothing returns boolean
	set Revivepoint_EVENT_RADIUS = 90.
	set Revivepoint_rescueSound = new_SoundDefinition("Sound\\Interface\\Rescue.wav", false)
	set Revivepoint_currentRevive = 0
	return true
endfunction

function init_SafetyChecks takes nothing returns boolean
	set SafetyChecks_SAFETY_CHECKS_ENABLED = true
	return true
endfunction

function init_SaveLoadData takes nothing returns boolean
	set SaveLoadData_READ_FILES_IN_REPLAYS = false
	return true
endfunction

function init_SerializeIds takes nothing returns boolean
	set SerializeIds_JUMPER_INDEX = 1
	set SerializeIds_REVIVE_INDEX = 2
	set SerializeIds_TEXTER_INDEX = 3
	set SerializeIds_BOMBTOWER_INDEX = 4
	set SerializeIds_VORTEX_INDEX = 5
	set SerializeIds_EXECUTER_INDEX = 6
	set SerializeIds_BOOSTER_INDEX = 7
	set SerializeIds_UNITREMOVER_INDEX = 8
	set SerializeIds_WAYPOINT_INDEX = 9
	set SerializeIds_TELEPORTER_INDEX = 10
	set SerializeIds_DOOR_INDEX = 11
	set SerializeIds_SMALLOBS_INDEX = 12
	set SerializeIds_BIGOBS_INDEX = 13
	set SerializeIds_TREE_INDEX = 14
	set SerializeIds_SPINNER_INDEX = 15
	set SerializeIds_UNITCREATOR_INDEX = 16
	set SerializeIds_TRACKS_INDEX = 17
	set SerializeIds_FOUNTAIN_INDEX = 18
	set SerializeIds_POWERNODE_INDEX = 19
	set SerializeIds_TRAP_INDEX = 20
	set SerializeIds_CONGA_INDEX = 21
	set SerializeIds_TBLOCKER_INDEX = 22
	set SerializeIds_VOLCANO_INDEX = 23
	set SerializeIds_WALL_INDEX = 24
	set SerializeIds_HWALL_INDEX = 25
	set SerializeIds_VWALL_INDEX = 26
	set SerializeIds_ARCANERY_INDEX = 27
	set SerializeIds_SMALLKILL_INDEX = 28
	set SerializeIds_BIGKILL_INDEX = 29
	set SerializeIds_BOMBER_INDEX = 30
	set SerializeIds_KEY_INDEX = 31
	set SerializeIds_BIGRANDKILL_INDEX = 33
	set SerializeIds_SMALLRANDKILL_INDEX = 34
	set SerializeIds_TANKKILL_INDEX = 35
	set SerializeIds_GLAIVEKILL_INDEX = 36
	set SerializeIds_AIRKILL_INDEX = 37
	set SerializeIds_FIREKILL_INDEX = 38
	set SerializeIds_FACELESS_INDEX = 39
	set SerializeIds_KNOCKBACKER_INDEX = 40
	set SerializeIds_POINTER_INDEX = 41
	set SerializeIds_OBJ_TARGET_INDEX = 42
	set SerializeIds_TC_INDEX = 43
	set SerializeIds_HIGH_OBS_INDEX = 44
	set SerializeIds_COIN_INDEX = 48
	set SerializeIds_TOME_INDEX = 49
	set SerializeIds_BOOTS_INDEX = 50
	return true
endfunction

function init_SetupBox takes nothing returns boolean
	set SetupBox_SETUP_BOX_ID = 2016424054
	set SetupBox_EASY_ENABLE = 1095578161
	set SetupBox_EASY_DISABLE = 1095578162
	set SetupBox_ICEI_ID = 1093678391
	set SetupBox_ICED_ID = 1093677110
	set SetupBox_PI_ID = 1093677361
	set SetupBox_PD_ID = 1093678393
	set SetupBox_LI_ID = 1093678392
	set SetupBox_LD_ID = 1093678401
	set SetupBox_TURND_ID = 1093679158
	set SetupBox_TURNI_ID = 1093679159
	set SetupBox_ALLOW_ID = 1093677400
	set SetupBox_CLEAR_ID = 1093677616
	set SetupBox_BOSS_MODE_ID = 1093677893
	set SetupBox_JUMP_TOGGLE_ID = 1093678931
	set SetupBox_JUMP_SPELL_ID = 1093678642
	set SetupBox_FIRST_PAGE = 1093678914
	set SetupBox_SECOND_PAGE = 1093678913
	set SetupBox_INC_GRAVITY = 1093678936
	set SetupBox_DEC_GRAVITY = 1093678935
	set SetupBox_ABIL_WIZARD = 1093678671
	set SetupBox_ORB_TOGGLE_ID = 1093679170
	set SetupBox_ORB_SPELL_ID = 1093679169
	set SetupBox_CANCEL_TOGGLE_ID = 1093679171
	set SetupBox_CUT_ALLOW = 1093679174
	set SetupBox_CUT_DISABLE = 1093679175
	set SetupBox_MAX_SLIDESPEED = 15.
	set SetupBox_MAX_DOT_DMG = 20.
	set SetupBox_BOSS_SOUND = new_SoundDefinition("Sound\\Dialogue\\Extra\\MuradinTaunt1.mp3", false)
	call registerPlayerUnitEvent(EVENT_PLAYER_UNIT_SELL_ITEM, ref_function_code__registerPlayerUnitEvent_SetupBox)
	call preloadAbility_1(SetupBox_ICEI_ID)
	call preloadAbility_1(SetupBox_ICED_ID)
	call preloadAbility_1(SetupBox_PI_ID)
	call preloadAbility_1(SetupBox_PD_ID)
	call preloadAbility_1(SetupBox_LI_ID)
	call preloadAbility_1(SetupBox_LD_ID)
	call preloadAbility_1(SetupBox_TURND_ID)
	call preloadAbility_1(SetupBox_TURNI_ID)
	call preloadAbility_1(SetupBox_ALLOW_ID)
	call preloadAbility_1(SetupBox_CLEAR_ID)
	call preloadAbility_1(SetupBox_BOSS_MODE_ID)
	call preloadAbility_1(SetupBox_JUMP_TOGGLE_ID)
	call preloadAbility_1(SetupBox_JUMP_SPELL_ID)
	call preloadAbility_1(SetupBox_FIRST_PAGE)
	call preloadAbility_1(SetupBox_SECOND_PAGE)
	call preloadAbility_1(SetupBox_INC_GRAVITY)
	call preloadAbility_1(SetupBox_DEC_GRAVITY)
	call preloadAbility_1(SetupBox_ABIL_WIZARD)
	call preloadAbility_1(SetupBox_ORB_TOGGLE_ID)
	call preloadAbility_1(SetupBox_ORB_SPELL_ID)
	call preloadAbility_1(SetupBox_CANCEL_TOGGLE_ID)
	call preloadAbility_1(SetupBox_CUT_ALLOW)
	call preloadAbility_1(SetupBox_CUT_DISABLE)
	return true
endfunction

function init_SetupObject takes nothing returns boolean
	local real tuple_temp
	local real tuple_temp_1
	local real tuple_temp_2
	local real tuple_temp_3
	local real tuple_temp_4
	local real tuple_temp_5
	local real tuple_temp_6
	local real tuple_temp_7
	local real tuple_temp_8
	local real tuple_temp_9
	local real tuple_temp_10
	local real tuple_temp_11
	local real tuple_temp_12
	local real tuple_temp_13
	local real tuple_temp_14
	local real tuple_temp_15
	local real tuple_temp_16
	local real tuple_temp_17
	local real tuple_temp_18
	local real tuple_temp_19
	local real tuple_temp_20
	local real tuple_temp_21
	local real tuple_temp_22
	local real tuple_temp_23
	local real tuple_temp_24
	local real tuple_temp_25
	local real tuple_temp_26
	local real tuple_temp_27
	local real tuple_temp_28
	local real tuple_temp_29
	local real tuple_temp_30
	local real tuple_temp_31
	local real tuple_temp_32
	local real tuple_temp_33
	local real tuple_temp_34
	local real tuple_temp_35
	local real tuple_temp_36
	local real tuple_temp_37
	local real tuple_temp_38
	local real tuple_temp_39
	local real tuple_temp_40
	local real tuple_temp_41
	local real tuple_temp_42
	local real tuple_temp_43
	local real tuple_temp_44
	local real tuple_temp_45
	local real tuple_temp_46
	local real tuple_temp_47
	local real tuple_temp_48
	local real tuple_temp_49
	local real tuple_temp_50
	local real tuple_temp_51
	local real tuple_temp_52
	local real tuple_temp_53
	local real tuple_temp_54
	local real tuple_temp_55
	local real tuple_temp_56
	local real tuple_temp_57
	local real tuple_temp_58
	local real tuple_temp_59
	local real tuple_temp_60
	local real tuple_temp_61
	local real tuple_temp_62
	local real tuple_temp_63
	local real tuple_temp_64
	local real tuple_temp_65
	local real tuple_temp_66
	local real tuple_temp_67
	local real tuple_temp_68
	local real tuple_temp_69
	local real tuple_temp_70
	local real tuple_temp_71
	local real tuple_temp_72
	local real tuple_temp_73
	local real tuple_temp_74
	local real tuple_temp_75
	local real tuple_temp_76
	local real tuple_temp_77
	local real tuple_temp_78
	local real tuple_temp_79
	local real tuple_temp_80
	local real tuple_temp_81
	local real tuple_temp_82
	local real tuple_temp_83
	local real tuple_temp_84
	local real tuple_temp_85
	local real tuple_temp_86
	local real tuple_temp_87
	local real tuple_temp_88
	local real tuple_temp_89
	local real tuple_temp_90
	local real tuple_temp_91
	local real tuple_temp_92
	local real tuple_temp_93
	local real tuple_temp_94
	local real tuple_temp_95
	local real tuple_temp_96
	local real tuple_temp_97
	local real tuple_temp_98
	local real tuple_temp_99
	local real tuple_temp_100
	local real tuple_temp_101
	local real tuple_temp_102
	local real tuple_temp_103
	local real tuple_temp_104
	local real tuple_temp_105
	local real tuple_temp_106
	local real tuple_temp_107
	local real tuple_temp_108
	local real tuple_temp_109
	local real tuple_temp_110
	local real tuple_temp_111
	local real tuple_temp_112
	local real tuple_temp_113
	local real tuple_temp_114
	local real tuple_temp_115
	local real tuple_temp_116
	local real tuple_temp_117
	local real tuple_temp_118
	local real tuple_temp_119
	call CreateTimer()
	set SetupObject_count = -1
	set tuple_temp = 0.049
	set tuple_temp_1 = 0.001
	set SetupObject_offsets_x[0] = tuple_temp
	set SetupObject_offsets_y[0] = tuple_temp_1
	set tuple_temp_2 = 0.048
	set tuple_temp_3 = 0.002
	set SetupObject_offsets_x[1] = tuple_temp_2
	set SetupObject_offsets_y[1] = tuple_temp_3
	set tuple_temp_4 = 0.047
	set tuple_temp_5 = 0.003
	set SetupObject_offsets_x[2] = tuple_temp_4
	set SetupObject_offsets_y[2] = tuple_temp_5
	set tuple_temp_6 = 0.046
	set tuple_temp_7 = 0.004
	set SetupObject_offsets_x[3] = tuple_temp_6
	set SetupObject_offsets_y[3] = tuple_temp_7
	set tuple_temp_8 = 0.045
	set tuple_temp_9 = 0.005
	set SetupObject_offsets_x[4] = tuple_temp_8
	set SetupObject_offsets_y[4] = tuple_temp_9
	set tuple_temp_10 = 0.044
	set tuple_temp_11 = 0.006
	set SetupObject_offsets_x[5] = tuple_temp_10
	set SetupObject_offsets_y[5] = tuple_temp_11
	set tuple_temp_12 = 0.043
	set tuple_temp_13 = 0.007
	set SetupObject_offsets_x[6] = tuple_temp_12
	set SetupObject_offsets_y[6] = tuple_temp_13
	set tuple_temp_14 = 0.041
	set tuple_temp_15 = 0.008
	set SetupObject_offsets_x[7] = tuple_temp_14
	set SetupObject_offsets_y[7] = tuple_temp_15
	set tuple_temp_16 = 0.040
	set tuple_temp_17 = 0.009
	set SetupObject_offsets_x[8] = tuple_temp_16
	set SetupObject_offsets_y[8] = tuple_temp_17
	set tuple_temp_18 = 0.039
	set tuple_temp_19 = 0.008
	set SetupObject_offsets_x[9] = tuple_temp_18
	set SetupObject_offsets_y[9] = tuple_temp_19
	set tuple_temp_20 = 0.038
	set tuple_temp_21 = 0.007
	set SetupObject_offsets_x[10] = tuple_temp_20
	set SetupObject_offsets_y[10] = tuple_temp_21
	set tuple_temp_22 = 0.037
	set tuple_temp_23 = 0.006
	set SetupObject_offsets_x[11] = tuple_temp_22
	set SetupObject_offsets_y[11] = tuple_temp_23
	set tuple_temp_24 = 0.036
	set tuple_temp_25 = 0.005
	set SetupObject_offsets_x[12] = tuple_temp_24
	set SetupObject_offsets_y[12] = tuple_temp_25
	set tuple_temp_26 = 0.035
	set tuple_temp_27 = 0.004
	set SetupObject_offsets_x[13] = tuple_temp_26
	set SetupObject_offsets_y[13] = tuple_temp_27
	set tuple_temp_28 = 0.034
	set tuple_temp_29 = 0.003
	set SetupObject_offsets_x[14] = tuple_temp_28
	set SetupObject_offsets_y[14] = tuple_temp_29
	set tuple_temp_30 = 0.033
	set tuple_temp_31 = 0.002
	set SetupObject_offsets_x[15] = tuple_temp_30
	set SetupObject_offsets_y[15] = tuple_temp_31
	set tuple_temp_32 = 0.032
	set tuple_temp_33 = 0.001
	set SetupObject_offsets_x[16] = tuple_temp_32
	set SetupObject_offsets_y[16] = tuple_temp_33
	set tuple_temp_34 = 0.031
	set tuple_temp_35 = 0.002
	set SetupObject_offsets_x[17] = tuple_temp_34
	set SetupObject_offsets_y[17] = tuple_temp_35
	set tuple_temp_36 = 0.030
	set tuple_temp_37 = 0.003
	set SetupObject_offsets_x[18] = tuple_temp_36
	set SetupObject_offsets_y[18] = tuple_temp_37
	set tuple_temp_38 = 0.029
	set tuple_temp_39 = 0.004
	set SetupObject_offsets_x[19] = tuple_temp_38
	set SetupObject_offsets_y[19] = tuple_temp_39
	set tuple_temp_40 = 0.028
	set tuple_temp_41 = 0.005
	set SetupObject_offsets_x[20] = tuple_temp_40
	set SetupObject_offsets_y[20] = tuple_temp_41
	set tuple_temp_42 = 0.027
	set tuple_temp_43 = 0.006
	set SetupObject_offsets_x[21] = tuple_temp_42
	set SetupObject_offsets_y[21] = tuple_temp_43
	set tuple_temp_44 = 0.026
	set tuple_temp_45 = 0.007
	set SetupObject_offsets_x[22] = tuple_temp_44
	set SetupObject_offsets_y[22] = tuple_temp_45
	set tuple_temp_46 = 0.025
	set tuple_temp_47 = 0.008
	set SetupObject_offsets_x[23] = tuple_temp_46
	set SetupObject_offsets_y[23] = tuple_temp_47
	set tuple_temp_48 = 0.024
	set tuple_temp_49 = 0.009
	set SetupObject_offsets_x[24] = tuple_temp_48
	set SetupObject_offsets_y[24] = tuple_temp_49
	set tuple_temp_50 = 0.023
	set tuple_temp_51 = 0.008
	set SetupObject_offsets_x[25] = tuple_temp_50
	set SetupObject_offsets_y[25] = tuple_temp_51
	set tuple_temp_52 = 0.022
	set tuple_temp_53 = 0.007
	set SetupObject_offsets_x[26] = tuple_temp_52
	set SetupObject_offsets_y[26] = tuple_temp_53
	set tuple_temp_54 = 0.021
	set tuple_temp_55 = 0.006
	set SetupObject_offsets_x[27] = tuple_temp_54
	set SetupObject_offsets_y[27] = tuple_temp_55
	set tuple_temp_56 = 0.020
	set tuple_temp_57 = 0.005
	set SetupObject_offsets_x[28] = tuple_temp_56
	set SetupObject_offsets_y[28] = tuple_temp_57
	set tuple_temp_58 = 0.019
	set tuple_temp_59 = 0.004
	set SetupObject_offsets_x[29] = tuple_temp_58
	set SetupObject_offsets_y[29] = tuple_temp_59
	set tuple_temp_60 =  - 0.049
	set tuple_temp_61 = 0.003
	set SetupObject_offsets_x[30] = tuple_temp_60
	set SetupObject_offsets_y[30] = tuple_temp_61
	set tuple_temp_62 =  - 0.048
	set tuple_temp_63 = 0.002
	set SetupObject_offsets_x[31] = tuple_temp_62
	set SetupObject_offsets_y[31] = tuple_temp_63
	set tuple_temp_64 =  - 0.047
	set tuple_temp_65 = 0.001
	set SetupObject_offsets_x[32] = tuple_temp_64
	set SetupObject_offsets_y[32] = tuple_temp_65
	set tuple_temp_66 =  - 0.046
	set tuple_temp_67 = 0.002
	set SetupObject_offsets_x[33] = tuple_temp_66
	set SetupObject_offsets_y[33] = tuple_temp_67
	set tuple_temp_68 =  - 0.045
	set tuple_temp_69 = 0.003
	set SetupObject_offsets_x[34] = tuple_temp_68
	set SetupObject_offsets_y[34] = tuple_temp_69
	set tuple_temp_70 =  - 0.044
	set tuple_temp_71 = 0.004
	set SetupObject_offsets_x[35] = tuple_temp_70
	set SetupObject_offsets_y[35] = tuple_temp_71
	set tuple_temp_72 =  - 0.043
	set tuple_temp_73 = 0.005
	set SetupObject_offsets_x[36] = tuple_temp_72
	set SetupObject_offsets_y[36] = tuple_temp_73
	set tuple_temp_74 =  - 0.041
	set tuple_temp_75 = 0.006
	set SetupObject_offsets_x[37] = tuple_temp_74
	set SetupObject_offsets_y[37] = tuple_temp_75
	set tuple_temp_76 =  - 0.040
	set tuple_temp_77 = 0.007
	set SetupObject_offsets_x[38] = tuple_temp_76
	set SetupObject_offsets_y[38] = tuple_temp_77
	set tuple_temp_78 =  - 0.039
	set tuple_temp_79 = 0.008
	set SetupObject_offsets_x[39] = tuple_temp_78
	set SetupObject_offsets_y[39] = tuple_temp_79
	set tuple_temp_80 =  - 0.038
	set tuple_temp_81 = 0.009
	set SetupObject_offsets_x[40] = tuple_temp_80
	set SetupObject_offsets_y[40] = tuple_temp_81
	set tuple_temp_82 =  - 0.037
	set tuple_temp_83 = 0.008
	set SetupObject_offsets_x[41] = tuple_temp_82
	set SetupObject_offsets_y[41] = tuple_temp_83
	set tuple_temp_84 =  - 0.036
	set tuple_temp_85 = 0.007
	set SetupObject_offsets_x[42] = tuple_temp_84
	set SetupObject_offsets_y[42] = tuple_temp_85
	set tuple_temp_86 =  - 0.035
	set tuple_temp_87 = 0.006
	set SetupObject_offsets_x[43] = tuple_temp_86
	set SetupObject_offsets_y[43] = tuple_temp_87
	set tuple_temp_88 =  - 0.034
	set tuple_temp_89 = 0.005
	set SetupObject_offsets_x[44] = tuple_temp_88
	set SetupObject_offsets_y[44] = tuple_temp_89
	set tuple_temp_90 =  - 0.033
	set tuple_temp_91 = 0.004
	set SetupObject_offsets_x[45] = tuple_temp_90
	set SetupObject_offsets_y[45] = tuple_temp_91
	set tuple_temp_92 =  - 0.032
	set tuple_temp_93 = 0.003
	set SetupObject_offsets_x[46] = tuple_temp_92
	set SetupObject_offsets_y[46] = tuple_temp_93
	set tuple_temp_94 =  - 0.031
	set tuple_temp_95 = 0.002
	set SetupObject_offsets_x[47] = tuple_temp_94
	set SetupObject_offsets_y[47] = tuple_temp_95
	set tuple_temp_96 =  - 0.030
	set tuple_temp_97 = 0.001
	set SetupObject_offsets_x[48] = tuple_temp_96
	set SetupObject_offsets_y[48] = tuple_temp_97
	set tuple_temp_98 =  - 0.029
	set tuple_temp_99 = 0.002
	set SetupObject_offsets_x[49] = tuple_temp_98
	set SetupObject_offsets_y[49] = tuple_temp_99
	set tuple_temp_100 =  - 0.028
	set tuple_temp_101 = 0.003
	set SetupObject_offsets_x[50] = tuple_temp_100
	set SetupObject_offsets_y[50] = tuple_temp_101
	set tuple_temp_102 =  - 0.027
	set tuple_temp_103 = 0.004
	set SetupObject_offsets_x[51] = tuple_temp_102
	set SetupObject_offsets_y[51] = tuple_temp_103
	set tuple_temp_104 =  - 0.026
	set tuple_temp_105 = 0.005
	set SetupObject_offsets_x[52] = tuple_temp_104
	set SetupObject_offsets_y[52] = tuple_temp_105
	set tuple_temp_106 =  - 0.025
	set tuple_temp_107 = 0.006
	set SetupObject_offsets_x[53] = tuple_temp_106
	set SetupObject_offsets_y[53] = tuple_temp_107
	set tuple_temp_108 =  - 0.024
	set tuple_temp_109 = 0.007
	set SetupObject_offsets_x[54] = tuple_temp_108
	set SetupObject_offsets_y[54] = tuple_temp_109
	set tuple_temp_110 =  - 0.023
	set tuple_temp_111 = 0.008
	set SetupObject_offsets_x[55] = tuple_temp_110
	set SetupObject_offsets_y[55] = tuple_temp_111
	set tuple_temp_112 =  - 0.022
	set tuple_temp_113 = 0.009
	set SetupObject_offsets_x[56] = tuple_temp_112
	set SetupObject_offsets_y[56] = tuple_temp_113
	set tuple_temp_114 =  - 0.021
	set tuple_temp_115 = 0.000
	set SetupObject_offsets_x[57] = tuple_temp_114
	set SetupObject_offsets_y[57] = tuple_temp_115
	set tuple_temp_116 =  - 0.020
	set tuple_temp_117 = 0.009
	set SetupObject_offsets_x[58] = tuple_temp_116
	set SetupObject_offsets_y[58] = tuple_temp_117
	set tuple_temp_118 =  - 0.019
	set tuple_temp_119 = 0.008
	set SetupObject_offsets_x[59] = tuple_temp_118
	set SetupObject_offsets_y[59] = tuple_temp_119
	return true
endfunction

function init_Simulate3dSound takes nothing returns boolean
	return true
endfunction

function init_SoundUtils takes nothing returns boolean
	set SoundUtils_DEFAULT_SOUND_STOPS_ON_LEAVE_RANGE = true
	set SoundUtils_DEFAULT_SOUND_FADE_IN_RATE = 10
	set SoundUtils_DEFAULT_SOUND_FADE_OUT_RATE = 10
	set SoundUtils_DEFAULT_SOUND_EAX_SETTINGS = "CombatSoundsEAX"
	set SoundUtils_DEFAULT_SOUND_VOLUME = 127
	set SoundUtils_DEFAULT_SOUND_PITCH = 1.
	set SoundUtils_DEFAULT_SOUND_DURATION = 10000
	set SoundUtils_SOUND_CHANNEL = 5
	set SoundUtils_SOUND_MIN_DIST = 600.
	set SoundUtils_SOUND_MAX_DIST = 8000.
	set SoundUtils_SOUND_DIST_CUT = 1500.
	return true
endfunction

function init_Sounds takes nothing returns boolean
	set Sounds_arrangedTeamInvitation = "Sound\\Interface\\ArrangedTeamInvitation.wav"
	set Sounds_questFailed = "Sound\\Interface\\QuestFailed.wav"
	return true
endfunction

function init_Soundsets takes nothing returns boolean
	return true
endfunction

function init_SpinnerObjects takes nothing returns boolean
	set SpinnerObjects_SPIN_ADD_SINGLE_ID = 1095577913
	set SpinnerObjects_SPIN_ADD_GROUP_ID = 1095577953
	set SpinnerObjects_SPIN_INC_SPEED_ID = 1095577955
	set SpinnerObjects_SPIN_DEC_SPEED_ID = 1095577956
	set SpinnerObjects_SPIN_COS_INC_ID = 1095577957
	set SpinnerObjects_SPIN_COS_DEC_ID = 1095577958
	set SpinnerObjects_SPIN_SIN_INC_ID = 1095577959
	set SpinnerObjects_SPIN_SIN_DEC_ID = 1095577960
	return true
endfunction

function init_Squares takes nothing returns boolean
	set Squares_squares[0] = "Asshat!"
	set Squares_squares[1] = "gtfo"
	set Squares_squares[2] = "wtf?"
	set Squares_squares[3] = "really?"
	set Squares_squares[4] = "Dumbass!"
	set Squares_squares[5] = "STOP"
	set Squares_squares[6] = "Are you serious?"
	set Squares_squares[7] = "u wot m8"
	set Squares_squares[8] = "*poke*"
	set Squares_squares[9] = "wake up!"
	set Squares_squares[10] = "Heyyyy"
	set Squares_squares[11] = ":^)"
	set Squares_squares[12] = "^)^"
	set Squares_squares[13] = "Juicebag"
	set Squares_squares[14] = "whoopsie"
	set Squares_squares[15] = "monkey!"
	set Squares_squares[16] = "get shrekt"
	set Squares_squares[17] = "nou"
	set Squares_squares[18] = "reported!"
	set Squares_squares[19] = "Bengel.."
	set Squares_squares[20] = "calm down"
	return true
endfunction

function init_Startmaze takes nothing returns boolean
	call Condition(ref_function_code__Condition_Startmaze)
	return true
endfunction

function init_Startmazes takes nothing returns boolean
	set Startmazes_currentMaze = -1
	return true
endfunction

function init_String takes nothing returns boolean
	set String_ENABLE_MULTIBYTE_SUPPORT = false
	set String_charset = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
	set String_numberset = "0123456789"
	call string_length(String_numberset)
	call string_length(String_charset)
	return true
endfunction

function c2sInit takes nothing returns nothing
	set StringUtils_c2s[0] = ""
	set StringUtils_c2s[1] = ""
	set StringUtils_c2s[2] = ""
	set StringUtils_c2s[3] = ""
	set StringUtils_c2s[4] = ""
	set StringUtils_c2s[5] = ""
	set StringUtils_c2s[6] = ""
	set StringUtils_c2s[7] = ""
	set StringUtils_c2s[8] = ""
	set StringUtils_c2s[9] = "\t"
	set StringUtils_c2s[10] = "\n"
	set StringUtils_c2s[11] = ""
	set StringUtils_c2s[12] = ""
	set StringUtils_c2s[13] = "\r"
	set StringUtils_c2s[14] = ""
	set StringUtils_c2s[15] = ""
	set StringUtils_c2s[16] = ""
	set StringUtils_c2s[17] = ""
	set StringUtils_c2s[18] = ""
	set StringUtils_c2s[19] = ""
	set StringUtils_c2s[20] = ""
	set StringUtils_c2s[21] = ""
	set StringUtils_c2s[22] = ""
	set StringUtils_c2s[23] = ""
	set StringUtils_c2s[24] = ""
	set StringUtils_c2s[25] = ""
	set StringUtils_c2s[26] = ""
	set StringUtils_c2s[27] = ""
	set StringUtils_c2s[28] = ""
	set StringUtils_c2s[29] = ""
	set StringUtils_c2s[30] = ""
	set StringUtils_c2s[31] = ""
	set StringUtils_c2s[32] = " "
	set StringUtils_c2s[33] = "!"
	set StringUtils_c2s[34] = "\""
	set StringUtils_c2s[35] = "#"
	set StringUtils_c2s[36] = "$"
	set StringUtils_c2s[37] = "%"
	set StringUtils_c2s[38] = "&"
	set StringUtils_c2s[39] = "'"
	set StringUtils_c2s[40] = "("
	set StringUtils_c2s[41] = ")"
	set StringUtils_c2s[42] = "*"
	set StringUtils_c2s[43] = "+"
	set StringUtils_c2s[44] = ","
	set StringUtils_c2s[45] = "-"
	set StringUtils_c2s[46] = "."
	set StringUtils_c2s[47] = "/"
	set StringUtils_c2s[48] = "0"
	set StringUtils_c2s[49] = "1"
	set StringUtils_c2s[50] = "2"
	set StringUtils_c2s[51] = "3"
	set StringUtils_c2s[52] = "4"
	set StringUtils_c2s[53] = "5"
	set StringUtils_c2s[54] = "6"
	set StringUtils_c2s[55] = "7"
	set StringUtils_c2s[56] = "8"
	set StringUtils_c2s[57] = "9"
	set StringUtils_c2s[58] = ":"
	set StringUtils_c2s[59] = ";"
	set StringUtils_c2s[60] = "<"
	set StringUtils_c2s[61] = "="
	set StringUtils_c2s[62] = ">"
	set StringUtils_c2s[63] = "?"
	set StringUtils_c2s[64] = "@"
	set StringUtils_c2s[65] = "A"
	set StringUtils_c2s[66] = "B"
	set StringUtils_c2s[67] = "C"
	set StringUtils_c2s[68] = "D"
	set StringUtils_c2s[69] = "E"
	set StringUtils_c2s[70] = "F"
	set StringUtils_c2s[71] = "G"
	set StringUtils_c2s[72] = "H"
	set StringUtils_c2s[73] = "I"
	set StringUtils_c2s[74] = "J"
	set StringUtils_c2s[75] = "K"
	set StringUtils_c2s[76] = "L"
	set StringUtils_c2s[77] = "M"
	set StringUtils_c2s[78] = "N"
	set StringUtils_c2s[79] = "O"
	set StringUtils_c2s[80] = "P"
	set StringUtils_c2s[81] = "Q"
	set StringUtils_c2s[82] = "R"
	set StringUtils_c2s[83] = "S"
	set StringUtils_c2s[84] = "T"
	set StringUtils_c2s[85] = "U"
	set StringUtils_c2s[86] = "V"
	set StringUtils_c2s[87] = "W"
	set StringUtils_c2s[88] = "X"
	set StringUtils_c2s[89] = "Y"
	set StringUtils_c2s[90] = "Z"
	set StringUtils_c2s[91] = "["
	set StringUtils_c2s[92] = "\\"
	set StringUtils_c2s[93] = "]"
	set StringUtils_c2s[94] = "^"
	set StringUtils_c2s[95] = "_"
	set StringUtils_c2s[96] = "`"
	set StringUtils_c2s[97] = "a"
	set StringUtils_c2s[98] = "b"
	set StringUtils_c2s[99] = "c"
	set StringUtils_c2s[100] = "d"
	set StringUtils_c2s[101] = "e"
	set StringUtils_c2s[102] = "f"
	set StringUtils_c2s[103] = "g"
	set StringUtils_c2s[104] = "h"
	set StringUtils_c2s[105] = "i"
	set StringUtils_c2s[106] = "j"
	set StringUtils_c2s[107] = "k"
	set StringUtils_c2s[108] = "l"
	set StringUtils_c2s[109] = "m"
	set StringUtils_c2s[110] = "n"
	set StringUtils_c2s[111] = "o"
	set StringUtils_c2s[112] = "p"
	set StringUtils_c2s[113] = "q"
	set StringUtils_c2s[114] = "r"
	set StringUtils_c2s[115] = "s"
	set StringUtils_c2s[116] = "t"
	set StringUtils_c2s[117] = "u"
	set StringUtils_c2s[118] = "v"
	set StringUtils_c2s[119] = "w"
	set StringUtils_c2s[120] = "x"
	set StringUtils_c2s[121] = "y"
	set StringUtils_c2s[122] = "z"
	set StringUtils_c2s[123] = "{"
	set StringUtils_c2s[124] = "|"
	set StringUtils_c2s[125] = "}"
	set StringUtils_c2s[126] = "~"
	set StringUtils_c2s[127] = ""
endfunction

function string_toUpperCase takes string this_1 returns string
	return StringCase(this_1, true)
endfunction

function s2cInit takes nothing returns nothing
	local integer i = 0
	local integer temp = StringUtils_MAX_INDEX
	loop
		exitwhen i > temp
		if string_toUpperCase(StringUtils_c2s[i]) == StringUtils_c2s[i] then
			set StringUtils_s2c[StringHash(StringUtils_c2s[i]) / 2033480 + 1002] = i
		endif
		set i = i + 1
	endloop
endfunction

function widthInit takes nothing returns nothing
	set StringUtils_width[0] = 0
	set StringUtils_width[1] = 0
	set StringUtils_width[2] = 0
	set StringUtils_width[3] = 0
	set StringUtils_width[4] = 0
	set StringUtils_width[5] = 0
	set StringUtils_width[6] = 0
	set StringUtils_width[7] = 0
	set StringUtils_width[8] = 0
	set StringUtils_width[9] = 0
	set StringUtils_width[10] = 1000000000
	set StringUtils_width[11] = 0
	set StringUtils_width[12] = 0
	set StringUtils_width[13] = 0
	set StringUtils_width[14] = 0
	set StringUtils_width[15] = 0
	set StringUtils_width[16] = 0
	set StringUtils_width[17] = 0
	set StringUtils_width[18] = 0
	set StringUtils_width[19] = 0
	set StringUtils_width[20] = 0
	set StringUtils_width[21] = 0
	set StringUtils_width[22] = 0
	set StringUtils_width[23] = 0
	set StringUtils_width[24] = 0
	set StringUtils_width[25] = 0
	set StringUtils_width[26] = 0
	set StringUtils_width[27] = 0
	set StringUtils_width[28] = 0
	set StringUtils_width[29] = 0
	set StringUtils_width[30] = 0
	set StringUtils_width[31] = 0
	set StringUtils_width[32] = 70
	set StringUtils_width[33] = 60
	set StringUtils_width[34] = 80
	set StringUtils_width[35] = 180
	set StringUtils_width[36] = 140
	set StringUtils_width[37] = 199
	set StringUtils_width[38] = 219
	set StringUtils_width[39] = 40
	set StringUtils_width[40] = 80
	set StringUtils_width[41] = 80
	set StringUtils_width[42] = 121
	set StringUtils_width[43] = 140
	set StringUtils_width[44] = 55
	set StringUtils_width[45] = 104
	set StringUtils_width[46] = 51
	set StringUtils_width[47] = 121
	set StringUtils_width[48] = 160
	set StringUtils_width[49] = 60
	set StringUtils_width[50] = 160
	set StringUtils_width[51] = 160
	set StringUtils_width[52] = 180
	set StringUtils_width[53] = 160
	set StringUtils_width[54] = 160
	set StringUtils_width[55] = 140
	set StringUtils_width[56] = 160
	set StringUtils_width[57] = 160
	set StringUtils_width[58] = 60
	set StringUtils_width[59] = 60
	set StringUtils_width[60] = 140
	set StringUtils_width[61] = 140
	set StringUtils_width[62] = 140
	set StringUtils_width[63] = 140
	set StringUtils_width[64] = 199
	set StringUtils_width[65] = 206
	set StringUtils_width[66] = 162
	set StringUtils_width[67] = 183
	set StringUtils_width[68] = 193
	set StringUtils_width[69] = 153
	set StringUtils_width[70] = 122
	set StringUtils_width[71] = 204
	set StringUtils_width[72] = 200
	set StringUtils_width[73] = 77
	set StringUtils_width[74] = 80
	set StringUtils_width[75] = 183
	set StringUtils_width[76] = 148
	set StringUtils_width[77] = 264
	set StringUtils_width[78] = 200
	set StringUtils_width[79] = 225
	set StringUtils_width[80] = 156
	set StringUtils_width[81] = 237
	set StringUtils_width[82] = 179
	set StringUtils_width[83] = 156
	set StringUtils_width[84] = 151
	set StringUtils_width[85] = 187
	set StringUtils_width[86] = 183
	set StringUtils_width[87] = 282
	set StringUtils_width[88] = 204
	set StringUtils_width[89] = 179
	set StringUtils_width[90] = 179
	set StringUtils_width[91] = 80
	set StringUtils_width[92] = 100
	set StringUtils_width[93] = 80
	set StringUtils_width[94] = 140
	set StringUtils_width[95] = 140
	set StringUtils_width[96] = 100
	set StringUtils_width[97] = 151
	set StringUtils_width[98] = 159
	set StringUtils_width[99] = 147
	set StringUtils_width[100] = 162
	set StringUtils_width[101] = 159
	set StringUtils_width[102] = 98
	set StringUtils_width[103] = 176
	set StringUtils_width[104] = 159
	set StringUtils_width[105] = 65
	set StringUtils_width[106] = 77
	set StringUtils_width[107] = 147
	set StringUtils_width[108] = 68
	set StringUtils_width[109] = 227
	set StringUtils_width[110] = 156
	set StringUtils_width[111] = 166
	set StringUtils_width[112] = 162
	set StringUtils_width[113] = 162
	set StringUtils_width[114] = 98
	set StringUtils_width[115] = 126
	set StringUtils_width[116] = 100
	set StringUtils_width[117] = 159
	set StringUtils_width[118] = 159
	set StringUtils_width[119] = 229
	set StringUtils_width[120] = 159
	set StringUtils_width[121] = 159
	set StringUtils_width[122] = 147
	set StringUtils_width[123] = 80
	set StringUtils_width[124] = 60
	set StringUtils_width[125] = 80
	set StringUtils_width[126] = 140
	set StringUtils_width[127] = 0
endfunction

function initialize_3550 takes nothing returns nothing
	call c2sInit()
	call s2cInit()
	call widthInit()
endfunction

function init_StringUtils takes nothing returns boolean
	set StringUtils_MAX_INDEX = 126 + 1
	set StringUtils_DEFAULT_WIDTH = 0
	call initialize_3550()
	call stringToIndex("")
	return true
endfunction

function init_SyncSimple takes nothing returns boolean
	local trigger trig
	local integer i
	local integer temp
	set SyncSimple_DEFAULT_PREFIX = "S"
	set SyncSimple_LAST_CHUNK_PREFIX = "T"
	set SyncSimple_SYNC_IN_REPLAYS = false
	set SyncSimple_syncQueue = new_LinkedList()
	set trig = CreateTrigger()
	set i = 0
	set temp = bj_MAX_PLAYER_SLOTS - 1
	loop
		exitwhen i > temp
		call BlzTriggerRegisterPlayerSyncEvent(trig, Player_players[i], SyncSimple_DEFAULT_PREFIX, false)
		call BlzTriggerRegisterPlayerSyncEvent(trig, Player_players[i], SyncSimple_LAST_CHUNK_PREFIX, false)
		set i = i + 1
	endloop
	call trigger_addAction(trig, ref_function_code__addAction_SyncSimple)
	return true
endfunction

function init_Table takes nothing returns boolean
	set Table_ht = hashtable_compiletime_2519
	return true
endfunction

function init_TargetsAllowed takes nothing returns boolean
	return true
endfunction

function init_Teleporter takes nothing returns boolean
	set Teleporter_EFFECT_STRING = "Abilities\\Spells\\NightElf\\Blink\\BlinkCaster.mdl"
	set Teleporter_EVENT_RADIUS = 38.
	return true
endfunction

function init_TerrainBlocker takes nothing returns boolean
	return true
endfunction

function init_TerrainChanger takes nothing returns boolean
	set TerrainChanger_TERRAIN_CHANGER_ID = 1953657443
	set TerrainChanger_TERRAIN_O_WALKABLE_ID = 1093677639
	set TerrainChanger_TERRAIN_O_UNWALKABLE_ID = 1093677635
	set TerrainChanger_TERRAIN_O_ICE_ID = 1093677634
	set TerrainChanger_TERRAIN_O_UNICE_ID = 1093677637
	set TerrainChanger_TERRAIN_I_WALKABLE_ID = 1093677640
	set TerrainChanger_TERRAIN_I_UNWALKABLE_ID = 1093677638
	set TerrainChanger_TERRAIN_I_ICE_ID = 1093677633
	set TerrainChanger_TERRAIN_I_UNICE_ID = 1093677636
	set TerrainChanger_TERRAIN_INC_H_ID = 1093677387
	set TerrainChanger_TERRAIN_INC_V_ID = 1093677389
	set TerrainChanger_TERRAIN_DEC_H_ID = 1093677397
	set TerrainChanger_TERRAIN_DEC_V_ID = 1093677396
	call preloadAbility_1(TerrainChanger_TERRAIN_O_WALKABLE_ID)
	call preloadAbility_1(TerrainChanger_TERRAIN_O_UNWALKABLE_ID)
	call preloadAbility_1(TerrainChanger_TERRAIN_O_ICE_ID)
	call preloadAbility_1(TerrainChanger_TERRAIN_O_UNICE_ID)
	call preloadAbility_1(TerrainChanger_TERRAIN_I_WALKABLE_ID)
	call preloadAbility_1(TerrainChanger_TERRAIN_I_UNWALKABLE_ID)
	call preloadAbility_1(TerrainChanger_TERRAIN_I_ICE_ID)
	call preloadAbility_1(TerrainChanger_TERRAIN_I_UNICE_ID)
	call preloadAbility_1(TerrainChanger_TERRAIN_INC_H_ID)
	call preloadAbility_1(TerrainChanger_TERRAIN_INC_V_ID)
	call preloadAbility_1(TerrainChanger_TERRAIN_DEC_H_ID)
	call preloadAbility_1(TerrainChanger_TERRAIN_DEC_V_ID)
	return true
endfunction

function alloc_ForForceCallback_execute_TerrainData takes nothing returns integer
	local integer this_1
	if ForForceCallback_firstFree == 0 then
		if ForForceCallback_maxIndex < JASS_MAX_ARRAY_SIZE then
			set ForForceCallback_maxIndex = ForForceCallback_maxIndex + 1
			set this_1 = ForForceCallback_maxIndex
			set ForForceCallback_typeId[this_1] = 849
		else
			call error("Out of memory: Could not create ForForceCallback_execute_TerrainData.")
			set this_1 = 0
		endif
	else
		set ForForceCallback_firstFree = ForForceCallback_firstFree - 1
		set this_1 = ForForceCallback_nextFree[ForForceCallback_firstFree]
		set ForForceCallback_typeId[this_1] = 849
	endif
	return this_1
endfunction

function init_TerrainData takes nothing returns boolean
	local real realPos_x_1
	local real realPos_y_1
	local integer clVar
	local real tuple_temp
	local real tuple_temp_1
	local real tuple_temp_2
	local real tuple_temp_3
	set TerrainData_xCells = real_round(real_abs(MapBounds_playableMin_x - MapBounds_playableMax_x) / 128.)
	call real_round(real_abs(MapBounds_playableMin_y - MapBounds_playableMax_y) / 128.)
	set TerrainData_tileMap = InitHashtable()
	set tuple_temp = MapBounds_playableMin_x
	set tuple_temp_1 = MapBounds_playableMin_y
	set realPos_x_1 = tuple_temp
	set realPos_y_1 = tuple_temp_1
	loop
		exitwhen  not (realPos_x_1 < MapBounds_playableMax_x)
		set clVar = alloc_ForForceCallback_execute_TerrainData()
		set tuple_temp_2 = realPos_x_1
		set tuple_temp_3 = realPos_y_1
		set realPos_x[clVar] = tuple_temp_2
		set realPos_y[clVar] = tuple_temp_3
		call execute(clVar)
		set realPos_x_1 = realPos_x_1 + 128.
	endloop
	return true
endfunction

function init_TerrainModder takes nothing returns boolean
	set TerrainModder_WALKABLE_ID = 1213018168
	set TerrainModder_UNWALKABLE_ID = 1213018169
	set TerrainModder_SLIDEABLE_ICE_ID = 1213018209
	set TerrainModder_SLIDEABLE_UNC_ICE_ID = 1213018210
	set TerrainModder_ICE_ABILITY = 1093678643
	set TerrainModder_REVICE_ABILITY = 1093677123
	set TerrainModder_UNWALKABLE_MOD_ABILITY_ID[0] = 1093678170
	set TerrainModder_UNWALKABLE_MOD_ABILITY_ID[1] = 1093678169
	set TerrainModder_UNWALKABLE_MOD_ABILITY_ID[2] = 1093678168
	set TerrainModder_BRUSH_1_IDLE_ABILITY = 1095577967
	set TerrainModder_BRUSH_1_ACTIVE_ABILITY = 1095577968
	set TerrainModder_BRUSH_3_IDLE_ABILITY = 1095577969
	set TerrainModder_BRUSH_3_ACTIVE_ABILITY = 1095577970
	set TerrainModder_BRUSH_5_IDLE_ABILITY = 1095577971
	set TerrainModder_BRUSH_5_ACTIVE_ABILITY = 1095577972
	set TerrainModder_BRUSH_CIRCLE_ID = 1095577973
	set TerrainModder_BRUSH_RECT_ID = 1095577974
	return true
endfunction

function init_TerrainUtils takes nothing returns boolean
	local item receiver
	set TerrainUtils_MAX_RANGE_SQ = real_squared(10.)
	set TerrainUtils_DUMMY_ITEM_ID = 2003790951
	set receiver = createItem(TerrainUtils_DUMMY_ITEM_ID, Vectors_ZERO2_x, Vectors_ZERO2_y)
	call item_setVisible(receiver, false)
	set TerrainUtils_dummyItem = receiver
	set TerrainUtils_itemSearchRect = Rect(0., 0., 128., 128.)
	set TerrainUtils_hiddenItemsCount = 0
	set TerrainUtils_TILES_X = real_toInt(MapBounds_boundMax_x - MapBounds_boundMin_x) / 128 + 1
	set TerrainUtils_TILES_Y = real_toInt(MapBounds_boundMax_y - MapBounds_boundMin_y) / 128 + 1
	return true
endfunction

function alloc_EventListener_add_Texter takes nothing returns integer
	local integer this_1
	if EventListener_firstFree == 0 then
		if EventListener_maxIndex < JASS_MAX_ARRAY_SIZE then
			set EventListener_maxIndex = EventListener_maxIndex + 1
			set this_1 = EventListener_maxIndex
			set EventListener_typeId[this_1] = 826
		else
			call error("Out of memory: Could not create EventListener_add_Texter.")
			set this_1 = 0
		endif
	else
		set EventListener_firstFree = EventListener_firstFree - 1
		set this_1 = EventListener_nextFree[EventListener_firstFree]
		set EventListener_typeId[this_1] = 826
	endif
	return this_1
endfunction

function init_Texter takes nothing returns boolean
	local integer clVar
	local playerevent temp
	set Texter_EVENT_RADIUS = 32.
	set Texter_stdcolors[0] = "white"
	set Texter_stdcolors[1] = "red"
	set Texter_stdcolors[2] = "blue"
	set Texter_stdcolors[3] = "teal"
	set Texter_stdcolors[4] = "purple"
	set Texter_stdcolors[5] = "yellow"
	set Texter_stdcolors[6] = "orange"
	set Texter_stdcolors[7] = "green"
	set Texter_stdcolors[8] = "pink"
	set Texter_stdcolors[9] = "gray"
	set Texter_stdcolors[10] = "lightblue"
	set Texter_stdcolors[11] = "darkgreen"
	set Texter_stdcolors[12] = "brown"
	set temp = ClosureEvents_EVENT_PLAYER_CHAT_FILTER
	set clVar = alloc_EventListener_add_Texter()
	call construct_EventListener(clVar)
	call EventListener_add(temp, clVar)
	return true
endfunction

function init_Textures takes nothing returns boolean
	set Textures_black_mask = "ReplaceableTextures\\CameraMasks\\Black_mask.blp"
	return true
endfunction

function init_TimerUtils takes nothing returns boolean
	set TimerUtils_freeTimersCount = 0
	set TimerUtils_timerData = new_Table()
	set TimerUtils_HELD = 679645218
	call new_HashMap()
	return true
endfunction

function init_Tome takes nothing returns boolean
	set Tome_TOME_DUMMY_ID = 2016424041
	return true
endfunction

function init_Tracks takes nothing returns boolean
	set Tracks_TRACKS_ID = 2016424055
	set Tracks_TRACKS_1_ID = 2016424056
	set Tracks_TRACKS_2_ID = 2016424057
	set Tracks_TRACKS_3_ID = 2016424058
	set Tracks_INC_ID = 1093678163
	set Tracks_DEC_ID = 1093678164
	set Tracks_LEFT_ID = 1093678156
	set Tracks_RIGHT_ID = 1093678165
	set Tracks_INCLENGTH_ID = 1093678152
	set Tracks_DECLENGTH_ID = 1093678384
	set Tracks_TRACKS[0] = Tracks_TRACKS_1_ID
	set Tracks_TRACKS[1] = Tracks_TRACKS_2_ID
	set Tracks_TRACKS[2] = Tracks_TRACKS_3_ID
	return true
endfunction

function init_Trap takes nothing returns boolean
	set Trap_DECREASE_DURATION_ID = 1095578417
	set Trap_INCREASE_DURATION_ID = 1095578418
	set Trap_DECREASE_INTERVAL_ID = 1095578419
	set Trap_INCREASE_INTERVAL_ID = 1095578420
	set Trap_DECREASE_VALUE_ID = 1095578421
	set Trap_INCREASE_VALUE_ID = 1095578422
	set Trap_POISON_ID = 1095578423
	set Trap_SHAKE_ID = 1095578424
	set Trap_SPEED_ID = 1095578425
	set Trap_INSTANT_KILL_ID = 1095578469
	set Trap_STUN_ID = 1095578465
	set Trap_KNOCKBACK_ID = 1095578466
	set Trap_KNOCKBACK_PULL_ID = 1095578468
	set Trap_KNOCKBACK_PUSH_ID = 1095578467
	set Trap_NEXT_EFFECT_ID = 1095578472
	set Trap_PREVIOUS_EFFECT_ID = 1095578473
	set Trap_START_ID = 1095578470
	set Trap_STOP_ID = 1095578471
	set Trap_EVENT_RADIUS = 65.
	set Trap_SPECIAL_ID = 1093678934
	set Trap_STUN_BUFF = 1093678666
	set Trap_SPEED_BUFF_NEG = 1093677898
	set Trap_SPEED_BUFF_POS = 1093677897
	set Trap_SFX_COUNT = 9
	set Trap_SFX_STRINGS[0] = "Abilities\\Spells\\Undead\\AnimateDead\\AnimateDeadTarget.mdl"
	set Trap_SFX_STRINGS[1] = "Abilities\\Spells\\Undead\\FrostNova\\FrostNovaTarget.mdl"
	set Trap_SFX_STRINGS[2] = "Abilities\\Spells\\Undead\\Impale\\ImpaleMissTarget.mdl"
	set Trap_SFX_STRINGS[3] = "Abilities\\Spells\\Other\\Doom\\DoomDeath.mdl"
	set Trap_SFX_STRINGS[4] = "Abilities\\Spells\\Human\\ManaFlare\\ManaFlareBoltImpact.mdl"
	set Trap_SFX_STRINGS[5] = "Abilities\\Spells\\Other\\Monsoon\\MonsoonBoltTarget.mdl"
	set Trap_SFX_STRINGS[6] = "Abilities\\Spells\\Other\\Volcano\\VolcanoDeath.mdl"
	set Trap_SFX_STRINGS[7] = "Abilities\\Spells\\Demon\\DarkPortal\\DarkPortalTarget.mdl"
	set Trap_SFX_STRINGS[8] = "Objects\\Spawnmodels\\NightElf\\NEDeathSmall\\NEDeathSmall.mdl"
	set Trap_SFX_STRINGS[9] = ""
	return true
endfunction

function init_Tree takes nothing returns boolean
	set Tree_TREE_ID = 2016424059
	return true
endfunction

function initTypecastData takes nothing returns nothing
	call dispatch_Table_Table_Table_saveString(TypeCasting_typecastdata, 0, "")
endfunction

function init_TypeCasting takes nothing returns boolean
	set TypeCasting_typecastdata = new_Table()
	set TypeCasting_R2I_PRECISION = 1000.
	call InitHashtable()
	call initTypecastData()
	return true
endfunction

function init_UI takes nothing returns boolean
	set UI_confirmation = "UI\\Feedback\\Confirmation\\Confirmation.mdx"
	set UI_goldCredit = "UI\\Feedback\\GoldCredit\\GoldCredit.mdx"
	return true
endfunction

function init_UnitIds takes nothing returns boolean
	set UnitIds_shade = 1970497636
	return true
endfunction

function onEnter takes code c returns nothing
	call trigger_addCondition(OnUnitEnterLeave_eventTrigger, Filter(c))
endfunction

function onLeave takes code c returns nothing
	call trigger_addAction(OnUnitEnterLeave_eventTrigger, c)
endfunction

function init_UnitIndexer takes nothing returns boolean
	set UnitIndexer_onIndexTrigger = CreateTrigger()
	set UnitIndexer_onDeindexTrigger = CreateTrigger()
	set UnitIndexer_tempUnitsCount = 0
	call onEnter(ref_function_code__onEnter_UnitIndexer)
	call onLeave(ref_function_code__onLeave_UnitIndexer)
	return true
endfunction

function init_UnitProducer takes nothing returns boolean
	set UnitProducer_UNIT_PRODUCER_ID = 1213018167
	set UnitProducer_FIRST_PAGE = 1093678914
	set UnitProducer_SECOND_PAGE = 1093678913
	set UnitProducer_AIR_KILLER = 1093678937
	set UnitProducer_BIG_KILLER = 1093678406
	set UnitProducer_SMALL_KILLER = 1093678411
	set UnitProducer_BR_KILLER = 1093678407
	set UnitProducer_SR_KILLER = 1093678410
	set UnitProducer_TANK_KILLER = 1093678413
	set UnitProducer_OBJ_TARGET = 1093678414
	set UnitProducer_GLAIVE_KILLER = 1093678408
	set UnitProducer_T_CHANGER = 1093678412
	set UnitProducer_POINTER = 1093678409
	set UnitProducer_BOMBER = 1093678415
	set UnitProducer_KNOCKBACK = 1093678915
	set UnitProducer_FACELESS = 1093678933
	set UnitProducer_FIRE = 1097232997
	call preloadAbility_1(UnitProducer_FIRST_PAGE)
	call preloadAbility_1(UnitProducer_SECOND_PAGE)
	call preloadAbility_1(UnitProducer_AIR_KILLER)
	call preloadAbility_1(UnitProducer_BIG_KILLER)
	call preloadAbility_1(UnitProducer_SMALL_KILLER)
	call preloadAbility_1(UnitProducer_BR_KILLER)
	call preloadAbility_1(UnitProducer_SR_KILLER)
	call preloadAbility_1(UnitProducer_TANK_KILLER)
	call preloadAbility_1(UnitProducer_OBJ_TARGET)
	call preloadAbility_1(UnitProducer_GLAIVE_KILLER)
	call preloadAbility_1(UnitProducer_T_CHANGER)
	call preloadAbility_1(UnitProducer_POINTER)
	call preloadAbility_1(UnitProducer_BOMBER)
	call preloadAbility_1(UnitProducer_KNOCKBACK)
	call preloadAbility_1(UnitProducer_FACELESS)
	return true
endfunction

function init_UnitRemover takes nothing returns boolean
	return true
endfunction

function init_Unitcreator takes nothing returns boolean
	set Unitcreator_INCREASE_INTERVAL_ID = 1095578164
	set Unitcreator_DECREASE_INTERVAL_ID = 1095578165
	set Unitcreator_FIXED_ID = 1095578166
	set Unitcreator_RANDOM_ID = 1095578167
	set Unitcreator_UTYPE_TANK = 1095578168
	set Unitcreator_UTYPE_SK = 1095578169
	set Unitcreator_UTYPE_BK = 1095578209
	set Unitcreator_UTYPE_SRK = 1095578210
	set Unitcreator_UTYPE_BRK = 1095578211
	set Unitcreator_UTYPE_POINTER = 1095578212
	set Unitcreator_UTYPE_KNOCKER = 1095578213
	set Unitcreator_UTYPE_GLAIVE = 1095578214
	set Unitcreator_KEY_SPAWN = "s"
	return true
endfunction

function init_Units takes nothing returns boolean
	return true
endfunction

function init_Vectors takes nothing returns boolean
	local real tuple_temp = 0.
	local real tuple_temp_1 = 0.
	local real tuple_temp_2
	local real tuple_temp_3
	local real tuple_temp_4
	local real tuple_temp_5
	local real tuple_temp_6
	local real tuple_temp_7
	local real tuple_temp_8
	local real tuple_temp_9
	local real tuple_temp_10
	local real tuple_temp_11
	local real tuple_temp_12
	set Vectors_ZERO2_x = tuple_temp
	set Vectors_ZERO2_y = tuple_temp_1
	set tuple_temp_2 = 0.
	set tuple_temp_3 = 0.
	set tuple_temp_4 = 0.
	set Vectors_ZERO3_x = tuple_temp_2
	set Vectors_ZERO3_y = tuple_temp_3
	set Vectors_ZERO3_z = tuple_temp_4
	set tuple_temp_5 = 1.
	set tuple_temp_6 = 0.
	set Vectors_RIGHT_x = tuple_temp_5
	set Vectors_RIGHT_y = tuple_temp_6
	set tuple_temp_7 = 0.
	set tuple_temp_8 = 1.
	set Vectors_UP_x = tuple_temp_7
	set Vectors_UP_y = tuple_temp_8
	set tuple_temp_9 = -1.
	set tuple_temp_10 = 0.
	set Vectors_LEFT_x = tuple_temp_9
	set Vectors_LEFT_y = tuple_temp_10
	set tuple_temp_11 = 0.
	set tuple_temp_12 = -1.
	set Vectors_DOWN_x = tuple_temp_11
	set Vectors_DOWN_y = tuple_temp_12
	set Vectors_tempLoc = Location(0., 0.)
	return true
endfunction

function init_Vortex takes nothing returns boolean
	set Vortex_INC_GRAV_ID = 1093678154
	set Vortex_DEC_GRAV_ID = 1093678155
	set Vortex_GRAV_RADIUS_BIG = 415. * 415.
	set Vortex_GRAV_RADIUS_MEDIUM = 207. * 207.
	set Vortex_GRAV_RADIUS_SMALL = 103. * 103.
	set Vortex_ZMODE_NONE = 1095578226
	set Vortex_ZMODE_CYLI = 1095578227
	set Vortex_ZMODE_HEMI = 1095578228
	set Vortex_SIZE_SMALL = 1095578229
	set Vortex_SIZE_MED = 1095578230
	set Vortex_SIZE_BIG = 1095578231
	return true
endfunction

function init_Waypoint takes nothing returns boolean
	set Waypoint_INCREMENT = .25
	set Waypoint_EVENT_RADIUS = 32.
	return true
endfunction

function init_WaypointObjects takes nothing returns boolean
	set WaypointObjects_AND_CONNECTION_ID = 1095577962
	set WaypointObjects_CLEAR_CONNECTION_ID = 1095577963
	set WaypointObjects_DECREASE_DELAY_ID = 1095577964
	set WaypointObjects_INCREASE_DELAY_ID = 1095577965
	set WaypointObjects_NO_WISPS_ID = 1095577966
	return true
endfunction

function init_Weapon takes nothing returns boolean
	set Weapon_ATTACK_MELEE = 1093678919
	set Weapon_ATTACK_RANGED = 1093678920
	return true
endfunction

function alloc_WeaponListener_WeaponType_WeaponTypes takes nothing returns integer
	local integer this_1
	if WeaponListener_firstFree == 0 then
		if WeaponListener_maxIndex < JASS_MAX_ARRAY_SIZE then
			set WeaponListener_maxIndex = WeaponListener_maxIndex + 1
			set this_1 = WeaponListener_maxIndex
		else
			call error("Out of memory: Could not create WeaponListener_WeaponType_WeaponTypes.")
			set this_1 = 0
		endif
	else
		set WeaponListener_firstFree = WeaponListener_firstFree - 1
		set this_1 = WeaponListener_nextFree[WeaponListener_firstFree]
	endif
	return this_1
endfunction

function alloc_WeaponListener_WeaponType_WeaponTypes_1947 takes nothing returns integer
	local integer this_1
	if WeaponListener_firstFree == 0 then
		if WeaponListener_maxIndex < JASS_MAX_ARRAY_SIZE then
			set WeaponListener_maxIndex = WeaponListener_maxIndex + 1
			set this_1 = WeaponListener_maxIndex
		else
			call error("Out of memory: Could not create WeaponListener_WeaponType_WeaponTypes.")
			set this_1 = 0
		endif
	else
		set WeaponListener_firstFree = WeaponListener_firstFree - 1
		set this_1 = WeaponListener_nextFree[WeaponListener_firstFree]
	endif
	return this_1
endfunction

function alloc_WeaponListener_WeaponType_WeaponTypes_1948 takes nothing returns integer
	local integer this_1
	if WeaponListener_firstFree == 0 then
		if WeaponListener_maxIndex < JASS_MAX_ARRAY_SIZE then
			set WeaponListener_maxIndex = WeaponListener_maxIndex + 1
			set this_1 = WeaponListener_maxIndex
		else
			call error("Out of memory: Could not create WeaponListener_WeaponType_WeaponTypes.")
			set this_1 = 0
		endif
	else
		set WeaponListener_firstFree = WeaponListener_firstFree - 1
		set this_1 = WeaponListener_nextFree[WeaponListener_firstFree]
	endif
	return this_1
endfunction

function alloc_WeaponListener_WeaponType_WeaponTypes_1949 takes nothing returns integer
	local integer this_1
	if WeaponListener_firstFree == 0 then
		if WeaponListener_maxIndex < JASS_MAX_ARRAY_SIZE then
			set WeaponListener_maxIndex = WeaponListener_maxIndex + 1
			set this_1 = WeaponListener_maxIndex
		else
			call error("Out of memory: Could not create WeaponListener_WeaponType_WeaponTypes.")
			set this_1 = 0
		endif
	else
		set WeaponListener_firstFree = WeaponListener_firstFree - 1
		set this_1 = WeaponListener_nextFree[WeaponListener_firstFree]
	endif
	return this_1
endfunction

function init_WeaponTypes takes nothing returns boolean
	local integer clVar = alloc_WeaponListener_WeaponType_WeaponTypes()
	local integer clVar_1 = alloc_WeaponListener_WeaponType_WeaponTypes_1947()
	local integer clVar_2 = alloc_WeaponListener_WeaponType_WeaponTypes_1948()
	local integer clVar_3 = alloc_WeaponListener_WeaponType_WeaponTypes_1949()
	return true
endfunction

function init_WeatherEffects takes nothing returns boolean
	return true
endfunction

function killD takes nothing returns nothing
	call RemoveDestructable(GetEnumDestructable())
endfunction

function loopPerPlayer takes nothing returns nothing
	local player p = GetEnumPlayer()
	local integer i = GetPlayerId(p)
	local real richter = Camerashakes_playerCurrentShake[i]
	local real temprichter
	if richter > Camerashakes_RICHTER_MAX then
		set richter = Camerashakes_RICHTER_MAX
	endif
	if richter < Camerashakes_RICHTER_MIN then
		set richter = Camerashakes_RICHTER_MIN
	endif
	if Player_localPlayer == p then
		set temprichter = Camerashakes_playerCurrentShake[i] * Pow(10., richter)
		call CameraSetTargetNoiseEx(Camerashakes_playerCurrentShake[i] * 2.0, temprichter, true)
		call CameraSetSourceNoiseEx(Camerashakes_playerCurrentShake[i] * 2.0, temprichter, true)
		set Camerashakes_playerCurrentShake[i] = Camerashakes_playerCurrentShake[i] - Camerashakes_playerCurrentShake[i] * Camerashakes_SHAKE_REDUCE_PERCENT
		set Camerashakes_playerCurrentShake[i] = Camerashakes_playerCurrentShake[i] - Camerashakes_SHAKE_REDUCE_FLAT
	endif
	if Camerashakes_playerCurrentShake[i] < Camerashakes_SHAKE_THRESHOLD then
		if Player_localPlayer == p then
			call CameraSetSourceNoise(0., 0.)
			call CameraSetTargetNoise(0., 0.)
		endif
		call ForceRemovePlayer(Camerashakes_shakingPlayers, p)
	endif
endfunction

function onLoop takes nothing returns nothing
	call ForForce(Camerashakes_shakingPlayers, ref_function_loopPerPlayer)
endfunction

function Iterator_hasNext takes integer this_1 returns boolean
	return Iterator_current[this_1] != 0
endfunction

function Iterator_next takes integer this_1 returns integer
	local integer res = Iterator_current[this_1]
	set Iterator_current[this_1] = Entity_DupletListModule_next[Iterator_current[this_1]]
	return res
endfunction

function Fx2Entity_update takes integer this_1 returns nothing
	if vec3_inPlayable(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1]) then
		call Entity_update(this_1)
		call effect_setPos(Fx2_eff[Fx2Entity_fx[this_1]], Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1])
	else
		call cyc_RevivePoint_terminate(18, this_1)
	endif
endfunction

function alloc_ForGroupCallback_forUnitsInRange_Projectile_Projectile takes nothing returns integer
	local integer this_1
	if ForGroupCallback_firstFree == 0 then
		if ForGroupCallback_maxIndex < JASS_MAX_ARRAY_SIZE then
			set ForGroupCallback_maxIndex = ForGroupCallback_maxIndex + 1
			set this_1 = ForGroupCallback_maxIndex
			set ForGroupCallback_typeId[this_1] = 864
		else
			call error("Out of memory: Could not create ForGroupCallback_forUnitsInRange_Projectile_Projectile.")
			set this_1 = 0
		endif
	else
		set ForGroupCallback_firstFree = ForGroupCallback_firstFree - 1
		set this_1 = ForGroupCallback_nextFree[ForGroupCallback_firstFree]
		set ForGroupCallback_typeId[this_1] = 864
	endif
	return this_1
endfunction

function vec3_distanceToSq takes real this_x, real this_y, real this_z, real v_x, real v_y, real v_z returns real
	return real_squared(v_x - this_x) + real_squared(v_y - this_y) + real_squared(v_z - this_z)
endfunction

function Projectile_update takes integer this_1 returns nothing
	local real tuple_temp = vec3_op_mult(Entity_vel_x[this_1], Entity_vel_y[this_1], Entity_vel_z[this_1], Projectile_acc[this_1])
	local real tuple_temp_1 = vec3_op_mult_return_y
	local real tuple_temp_2 = vec3_op_mult_return_z
	local integer clVar
	local real cond_result
	local real cond_result_1
	local real temp_x
	local real temp_y
	local real temp
	local real tuple_temp_3
	local real tuple_temp_4
	set Entity_vel_x[this_1] = tuple_temp
	set Entity_vel_y[this_1] = tuple_temp_1
	set Entity_vel_z[this_1] = tuple_temp_2
	call Fx2Entity_update(this_1)
	if  not Entity_done[this_1] then
		if Projectile_onHit[this_1] != 0 then
			set tuple_temp_3 = vec3_toVec2(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1])
			set tuple_temp_4 = vec3_toVec2_return_y
			set temp_x = tuple_temp_3
			set temp_y = tuple_temp_4
			set temp = Entity_radius[this_1]
			set clVar = alloc_ForGroupCallback_forUnitsInRange_Projectile_Projectile()
			set this[clVar] = this_1
			call forUnitsInRange(temp_x, temp_y, temp, clVar)
		endif
		if Projectile_isPointTarget[this_1] then
			if Projectile_use3DDistance[this_1] then
				set cond_result = vec3_distanceToSq(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1], Projectile_targetPoint_x[this_1], Projectile_targetPoint_y[this_1], Projectile_targetPoint_z[this_1])
			else
				set cond_result = vec2_distanceToSq(vec3_toVec2(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1]), vec3_toVec2_return_y, vec3_toVec2(Projectile_targetPoint_x[this_1], Projectile_targetPoint_y[this_1], Projectile_targetPoint_z[this_1]), vec3_toVec2_return_y)
			endif
			if cond_result < Entity_radius2[this_1] then
				call dispatch_Projectile_Projectile_Projectile_terminate(this_1)
			endif
		endif
		if ( not Entity_done[this_1]) and Entity_vel_z[this_1] < 0. and Projectile_killZ[this_1] and Entity_pos_z[this_1] <= Projectile_killBelowZ[this_1] then
			call dispatch_Projectile_Projectile_Projectile_terminate(this_1)
		endif
		if ( not Entity_done[this_1]) and Projectile_timed[this_1] then
			set Projectile_time[this_1] = Projectile_time[this_1] + Basics_ANIMATION_PERIOD
			if Projectile_time[this_1] >= Projectile_maxTime[this_1] then
				call dispatch_Projectile_Projectile_Projectile_terminate(this_1)
			endif
		endif
		if ( not Entity_done[this_1]) and Projectile_ranged[this_1] then
			if Projectile_use3DDistance[this_1] then
				set cond_result_1 = vec3_distanceToSq(Projectile_startpos_x[this_1], Projectile_startpos_y[this_1], Projectile_startpos_z[this_1], Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1])
			else
				set cond_result_1 = vec2_distanceToSq(vec3_toVec2(Projectile_startpos_x[this_1], Projectile_startpos_y[this_1], Projectile_startpos_z[this_1]), vec3_toVec2_return_y, vec3_toVec2(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1]), vec3_toVec2_return_y)
			endif
			if cond_result_1 > Projectile_maxDist[this_1] then
				call dispatch_Projectile_Projectile_Projectile_terminate(this_1)
			endif
		endif
		if ( not Entity_done[this_1]) and Projectile_target[this_1] != 0 then
			if vec2_distanceToSq(vec3_toVec2(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1]), vec3_toVec2_return_y, vec3_toVec2(dispatch_Entity_Entity_Entity_getPos(Projectile_target[this_1]), dispatch_Entity_Entity_Entity_getPos_return_y, dispatch_Entity_Entity_Entity_getPos_return_z), vec3_toVec2_return_y) < Entity_radius2[this_1] then
				call dispatch_Projectile_Projectile_Projectile_terminate(this_1)
			endif
		endif
	endif
endfunction

function Entity_scaleVel takes integer this_1, real factor returns nothing
	local real tuple_temp = vec3_op_mult(Entity_vel_x[this_1], Entity_vel_y[this_1], Entity_vel_z[this_1], factor)
	local real tuple_temp_1 = vec3_op_mult_return_y
	local real tuple_temp_2 = vec3_op_mult_return_z
	set Entity_vel_x[this_1] = tuple_temp
	set Entity_vel_y[this_1] = tuple_temp_1
	set Entity_vel_z[this_1] = tuple_temp_2
endfunction

function dispatch_Entity_Entity_Entity_scaleVel takes integer this_1, real factor returns nothing
	if Serializable_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling Entity.scaleVel")
		else
			call error("Called Entity.scaleVel on invalid object.")
		endif
	endif
	call Entity_scaleVel(this_1, factor)
endfunction

function AirPhysicsProjectile_AirPhysicsModule_inAir takes integer this_1, integer e_1 returns nothing
	local real coef = bezier3(0.930, 0.985, 1., AirPhysicsProjectile_AirPhysicsModule_mass[this_1] / AirPhysicsModule_MAX_MASS)
	local real gcoef = bezier3(0.1, 0.875, 1., AirPhysicsProjectile_AirPhysicsModule_mass[this_1] / AirPhysicsModule_MAX_MASS)
	if AirPhysicsProjectile_AirPhysicsModule_affectedByGravity[this_1] then
		call dispatch_Entity_Entity_Entity_addVel(e_1, 0., 0., Entity_gravity[e_1] * gcoef)
	endif
	call dispatch_Entity_Entity_Entity_scaleVel(e_1, coef)
endfunction

function dispatch_AirPhysicsProjectile_PhysicsProjectile_AirPhysicsProjectile_AirPhysicsModule_inAir takes integer this_1, integer e_1 returns nothing
	if Serializable_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling AirPhysicsProjectile.inAir")
		else
			call error("Called AirPhysicsProjectile.inAir on invalid object.")
		endif
	endif
	call AirPhysicsProjectile_AirPhysicsModule_inAir(this_1, e_1)
endfunction

function Entity_getVel takes integer this_1 returns real
	set Entity_getVel_return_x = Entity_vel_x[this_1]
	set Entity_getVel_return_y = Entity_vel_y[this_1]
	set Entity_getVel_return_z = Entity_vel_z[this_1]
	return Entity_getVel_return_x
endfunction

function dispatch_Entity_Entity_Entity_getVel takes integer this_1 returns real
	local real Entity_Entity_getVel_result_x
	local real Entity_Entity_getVel_result_y
	local real Entity_Entity_getVel_result_z
	local real tuple_temp
	local real tuple_temp_1
	local real tuple_temp_2
	if Serializable_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling Entity.getVel")
		else
			call error("Called Entity.getVel on invalid object.")
		endif
	endif
	set tuple_temp = Entity_getVel(this_1)
	set tuple_temp_1 = Entity_getVel_return_y
	set tuple_temp_2 = Entity_getVel_return_z
	set Entity_Entity_getVel_result_x = tuple_temp
	set Entity_Entity_getVel_result_y = tuple_temp_1
	set Entity_Entity_getVel_result_z = tuple_temp_2
	set dispatch_Entity_Entity_Entity_getVel_return_x = Entity_Entity_getVel_result_x
	set dispatch_Entity_Entity_Entity_getVel_return_y = Entity_Entity_getVel_result_y
	set dispatch_Entity_Entity_Entity_getVel_return_z = Entity_Entity_getVel_result_z
	return dispatch_Entity_Entity_Entity_getVel_return_x
endfunction

function vec2_add takes real this_x, real this_y, real x, real y returns real
	set vec2_add_return_x = this_x + x
	set vec2_add_return_y = this_y + y
	return vec2_add_return_x
endfunction

function vec2_getTerrainNormal takes real this_x, real this_y, real sampleRadius returns real
	set vec2_getTerrainNormal_return_x = real_op_mult_3965(2. * sampleRadius, vec2_getTerrainZ(vec2_add(this_x, this_y,  - sampleRadius, 0.), vec2_add_return_y) - vec2_getTerrainZ(vec2_add(this_x, this_y, sampleRadius, 0.), vec2_add_return_y), vec2_getTerrainZ(vec2_add(this_x, this_y,  - sampleRadius, 0.), vec2_add_return_y) - vec2_getTerrainZ(vec2_add(this_x, this_y, sampleRadius, 0.), vec2_add_return_y), 2. * sampleRadius)
	set vec2_getTerrainNormal_return_y = real_op_mult_return_y_2603
	set vec2_getTerrainNormal_return_z = real_op_mult_return_z
	return vec2_getTerrainNormal_return_x
endfunction

function vec3_dot takes real this_x, real this_y, real this_z, real v_x, real v_y, real v_z returns real
	return this_x * v_x + this_y * v_y + this_z * v_z
endfunction

function vec3_project takes real this_x, real this_y, real this_z, real direction_x, real direction_y, real direction_z returns real
	local real l = vec3_lengthSquared(direction_x, direction_y, direction_z)
	if l == 0.0 then
		set vec3_project_return_x = 0.
		set vec3_project_return_y = 0.
		set vec3_project_return_z = 0.
		return vec3_project_return_x
	endif
	set l = vec3_dot(this_x, this_y, this_z, direction_x, direction_y, direction_z) / l
	set vec3_project_return_x = direction_x * l
	set vec3_project_return_y = direction_y * l
	set vec3_project_return_z = direction_z * l
	return vec3_project_return_x
endfunction

function AirPhysicsProjectile_AirPhysicsModule_onGround takes integer this_1, integer e_1 returns nothing
	local real tuple_temp = dispatch_Entity_Entity_Entity_getPos(e_1)
	local real tuple_temp_1 = dispatch_Entity_Entity_Entity_getPos_return_y
	local real tuple_temp_2 = dispatch_Entity_Entity_Entity_getPos_return_z
	local real pos_x_1 = tuple_temp
	local real pos_y_1 = tuple_temp_1
	local real pos_z = tuple_temp_2
	local real tuple_temp_3 = vec3_norm(vec2_getTerrainNormal(vec3_toVec2(pos_x_1, pos_y_1, pos_z), vec3_toVec2_return_y, 2.), vec2_getTerrainNormal_return_y, vec2_getTerrainNormal_return_z)
	local real tuple_temp_4 = vec3_norm_return_y
	local real tuple_temp_5 = vec3_norm_return_z
	local real normal_x = tuple_temp_3
	local real normal_y = tuple_temp_4
	local real normal_z = tuple_temp_5
	local real pv_x
	local real pv_y
	local real pv_z
	local real tuple_temp_6
	local real tuple_temp_7
	local real tuple_temp_8
	local real tuple_temp_9
	local real tuple_temp_10
	local real tuple_temp_11
	if vec3_dot(dispatch_Entity_Entity_Entity_getVel(e_1), dispatch_Entity_Entity_Entity_getVel_return_y, dispatch_Entity_Entity_Entity_getVel_return_z, normal_x, normal_y, normal_z) > 0. then
		return
	endif
	set tuple_temp_6 = vec3_project(dispatch_Entity_Entity_Entity_getVel(e_1), dispatch_Entity_Entity_Entity_getVel_return_y, dispatch_Entity_Entity_Entity_getVel_return_z, normal_x, normal_y, normal_z)
	set tuple_temp_7 = vec3_project_return_y
	set tuple_temp_8 = vec3_project_return_z
	set pv_x = tuple_temp_6
	set pv_y = tuple_temp_7
	set pv_z = tuple_temp_8
	set tuple_temp_9 = vec3_op_mult(pv_x, pv_y, pv_z, ( - 1.) - AirPhysicsProjectile_AirPhysicsModule_restitution[this_1])
	set tuple_temp_10 = vec3_op_mult_return_y
	set tuple_temp_11 = vec3_op_mult_return_z
	set pv_x = tuple_temp_9
	set pv_y = tuple_temp_10
	set pv_z = tuple_temp_11
	if pv_z > 4. then
		call dispatch_Entity_Entity_Entity_addVel(e_1, pv_x, pv_y, pv_z)
	else
		call dispatch_Entity_Entity_Entity_scaleVel(e_1, AirPhysicsProjectile_AirPhysicsModule_surfaceFriction[this_1] * bezier3(1., 0.85, 0., AirPhysicsProjectile_AirPhysicsModule_mass[this_1] / AirPhysicsModule_MAX_MASS))
	endif
endfunction

function dispatch_AirPhysicsProjectile_PhysicsProjectile_AirPhysicsProjectile_AirPhysicsModule_onGround takes integer this_1, integer e_1 returns nothing
	if Serializable_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling AirPhysicsProjectile.onGround")
		else
			call error("Called AirPhysicsProjectile.onGround on invalid object.")
		endif
	endif
	call AirPhysicsProjectile_AirPhysicsModule_onGround(this_1, e_1)
endfunction

function AirPhysicsProjectile_AirPhysicsModule_physicsUpdate takes integer this_1, integer e_1 returns nothing
	local real tuple_temp = dispatch_Entity_Entity_Entity_getPos(e_1)
	local real tuple_temp_1 = dispatch_Entity_Entity_Entity_getPos_return_y
	local real tuple_temp_2 = dispatch_Entity_Entity_Entity_getPos_return_z
	local real pos_x_1 = tuple_temp
	local real pos_y_1 = tuple_temp_1
	local real pos_z = tuple_temp_2
	set AirPhysicsProjectile_AirPhysicsModule_terrainZ[this_1] = vec3_getTerrainZ(pos_x_1, pos_y_1, pos_z)
	if pos_z <= AirPhysicsProjectile_AirPhysicsModule_terrainZ[this_1] + .2 then
		call dispatch_AirPhysicsProjectile_PhysicsProjectile_AirPhysicsProjectile_AirPhysicsModule_onGround(this_1, e_1)
	else
		call dispatch_AirPhysicsProjectile_PhysicsProjectile_AirPhysicsProjectile_AirPhysicsModule_inAir(this_1, e_1)
	endif
endfunction

function dispatch_AirPhysicsProjectile_PhysicsProjectile_AirPhysicsProjectile_AirPhysicsModule_physicsUpdate takes integer this_1, integer e_1 returns nothing
	if Serializable_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling AirPhysicsProjectile.physicsUpdate")
		else
			call error("Called AirPhysicsProjectile.physicsUpdate on invalid object.")
		endif
	endif
	call AirPhysicsProjectile_AirPhysicsModule_physicsUpdate(this_1, e_1)
endfunction

function effect_setPitch takes effect this_1, real pitch_radians returns nothing
	call BlzSetSpecialEffectPitch(this_1, angle_radians_1(pitch_radians))
endfunction

function Projectile_setZAngle takes integer this_1, real zA_radians returns nothing
	call effect_setPitch(Fx2_eff[Fx2Entity_fx[this_1]], zA_radians)
endfunction

function dispatch_Projectile_Projectile_Projectile_setZAngle takes integer this_1, real zA_radians returns nothing
	if Serializable_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling Projectile.setZAngle")
		else
			call error("Called Projectile.setZAngle on invalid object.")
		endif
	endif
	call Projectile_setZAngle(this_1, zA_radians)
endfunction

function getSlopeAngle takes real z1, real z2, real dist returns real
	set getSlopeAngle_return_radians = Atan2(z2 - z1, dist)
	return getSlopeAngle_return_radians
endfunction

function AirPhysicsProjectile_update takes integer this_1 returns nothing
	call Projectile_update(this_1)
	call dispatch_AirPhysicsProjectile_PhysicsProjectile_AirPhysicsProjectile_AirPhysicsModule_physicsUpdate(this_1, this_1)
	call dispatch_Projectile_Projectile_Projectile_setXYAngle(this_1, vec3_angleTo2d_4263(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1], vec3_op_plus(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1], Entity_vel_x[this_1], Entity_vel_y[this_1], Entity_vel_z[this_1]), vec3_op_plus_return_y, vec3_op_plus_return_z))
	call dispatch_Projectile_Projectile_Projectile_setZAngle(this_1, getSlopeAngle(Entity_pos_z[this_1], Entity_pos_z[this_1] + Entity_vel_z[this_1], 2.))
endfunction

function BallItem_update takes integer this_1 returns nothing
endfunction

function alloc_CallbackSingle_nullTimer_BallItem_Ball_1635 takes nothing returns integer
	local integer this_1
	if CallbackSingle_firstFree == 0 then
		if CallbackSingle_maxIndex < JASS_MAX_ARRAY_SIZE then
			set CallbackSingle_maxIndex = CallbackSingle_maxIndex + 1
			set this_1 = CallbackSingle_maxIndex
			set CallbackSingle_typeId[this_1] = 708
		else
			call error("Out of memory: Could not create CallbackSingle_nullTimer_BallItem_Ball.")
			set this_1 = 0
		endif
	else
		set CallbackSingle_firstFree = CallbackSingle_firstFree - 1
		set this_1 = CallbackSingle_nextFree[CallbackSingle_firstFree]
		set CallbackSingle_typeId[this_1] = 708
	endif
	return this_1
endfunction

function BallItem_onIdle takes integer this_1, real pos_x_1, real pos_y_1 returns nothing
	local real tuple_temp = vec2_toVec3(pos_x_1, pos_y_1)
	local real tuple_temp_1 = vec2_toVec3_return_y
	local real tuple_temp_2 = vec2_toVec3_return_z
	local integer clVar
	local real tuple_temp_3
	local real tuple_temp_4
	set Entity_pos_x[this_1] = tuple_temp
	set Entity_pos_y[this_1] = tuple_temp_1
	set Entity_pos_z[this_1] = tuple_temp_2
	call item_setVisible(ItemEntity_actor[this_1], true)
	call dispatch_UnitEntity_Entity_UnitEntity_setXY(ItemObject_setup[this_1], vec2_toVec3(pos_x_1, pos_y_1), vec2_toVec3_return_y, vec2_toVec3_return_z)
	call unit_show(UnitEntity_actor[ItemObject_setup[this_1]])
	set clVar = alloc_CallbackSingle_nullTimer_BallItem_Ball_1635()
	call construct_CallbackSingle(clVar)
	set this_2965[clVar] = this_1
	set tuple_temp_3 = pos_x_1
	set tuple_temp_4 = pos_y_1
	set pos_x[clVar] = tuple_temp_3
	set pos_y[clVar] = tuple_temp_4
	call nullTimer(clVar)
endfunction

function dispatch_BallItem_Ball_BallItem_onIdle takes integer this_1, real pos_x_1, real pos_y_1 returns nothing
	if Serializable_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling BallItem.onIdle")
		else
			call error("Called BallItem.onIdle on invalid object.")
		endif
	endif
	call BallItem_onIdle(this_1, pos_x_1, pos_y_1)
endfunction

function BallProjectile_update takes integer this_1 returns nothing
	local real lensq
	call AirPhysicsProjectile_update(this_1)
	set lensq = vec3_lengthSquared(Entity_vel_x[this_1], Entity_vel_y[this_1], Entity_vel_z[this_1])
	if lensq < 1. then
		call dispatch_BallItem_Ball_BallItem_onIdle(BallProjectile_ballitem[this_1], vec3_toVec2(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1]), vec3_toVec2_return_y)
		set Fx2Entity_silent[this_1] = true
		call dispatch_Projectile_Projectile_Projectile_terminate(this_1)
	endif
endfunction

function Fx2Entity_setPos takes integer this_1, real tpos_x_1, real tpos_y_1, real tpos_z returns nothing
	local real tuple_temp = tpos_x_1
	local real tuple_temp_1 = tpos_y_1
	local real tuple_temp_2 = tpos_z
	set Entity_pos_x[this_1] = tuple_temp
	set Entity_pos_y[this_1] = tuple_temp_1
	set Entity_pos_z[this_1] = tuple_temp_2
	call effect_setPos(Fx2_eff[Fx2Entity_fx[this_1]], tpos_x_1, tpos_y_1, tpos_z)
endfunction

function dispatch_Fx2Entity_Fx2Entity_Fx2Entity_setPos takes integer this_1, real tpos_x_1, real tpos_y_1, real tpos_z returns nothing
	if Serializable_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling Fx2Entity.setPos")
		else
			call error("Called Fx2Entity.setPos on invalid object.")
		endif
	endif
	call Fx2Entity_setPos(this_1, tpos_x_1, tpos_y_1, tpos_z)
endfunction

function vec2_bezier3 takes real this_x, real this_y, real mid_x, real mid_y, real stop_x, real stop_y, real p returns real
	set vec2_bezier3_return_x = bezier3(this_x, mid_x, stop_x, p)
	set vec2_bezier3_return_y = bezier3(this_y, mid_y, stop_y, p)
	return vec2_bezier3_return_x
endfunction

function Boomerang_update takes integer this_1 returns nothing
	if Projectile_time[this_1] > 2. then
		call dispatch_Projectile_Projectile_Projectile_terminate(this_1)
	elseif Projectile_time[this_1] >= 1. then
		call dispatch_Fx2Entity_Fx2Entity_Fx2Entity_setPos(this_1, vec2_toVec3(vec2_bezier3(Boomerang_target_x[this_1], Boomerang_target_y[this_1], Boomerang_middletwo_x[this_1], Boomerang_middletwo_y[this_1], vec3_toVec2(dispatch_UnitEntity_Entity_UnitEntity_getPos(Boomerang_caster[this_1]), dispatch_UnitEntity_Entity_UnitEntity_getPos_return_y, dispatch_UnitEntity_Entity_UnitEntity_getPos_return_z), vec3_toVec2_return_y, Projectile_time[this_1] - 1.), vec2_bezier3_return_y), vec2_toVec3_return_y, vec2_toVec3_return_z)
		set Projectile_time[this_1] = real_lerp(Projectile_time[this_1], 2.3, 0.040)
	else
		set Projectile_time[this_1] = real_lerp(Projectile_time[this_1], 1.2, 0.035)
		call dispatch_Fx2Entity_Fx2Entity_Fx2Entity_setPos(this_1, vec2_toVec3(vec2_bezier3(Boomerang_initialPos_x[this_1], Boomerang_initialPos_y[this_1], Boomerang_middleone_x[this_1], Boomerang_middleone_y[this_1], Boomerang_target_x[this_1], Boomerang_target_y[this_1], Projectile_time[this_1]), vec2_bezier3_return_y), vec2_toVec3_return_y, vec2_toVec3_return_z)
	endif
endfunction

function Boots_update takes integer this_1 returns nothing
endfunction

function HomingProjectile_update takes integer this_1 returns nothing
	call Projectile_update(this_1)
endfunction

function BossMissile_update takes integer this_1 returns nothing
	local integer iterator
	local integer e_1
	call HomingProjectile_update(this_1)
	set Entity_sleeps[this_1] = false
	if Entity_getCurrentRegion(this_1) != getRegionData_3304(unit_getPos(BossMissile_caster[this_1]), unit_getPos_return_y) then
		call dispatch_Projectile_Projectile_Projectile_terminate(this_1)
	endif
	set iterator = LinkedList_iterator(Escaper_escapers)
	loop
		exitwhen  not LLIterator_hasNext(iterator)
		set e_1 = LLIterator_next(iterator)
		if vec3_distanceToSq(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1], Entity_pos_x[e_1], Entity_pos_y[e_1], Entity_pos_z[e_1]) < Entity_radius[this_1] * Entity_radius[this_1] then
			call unit_damageTarget_4137(BossMissile_caster[this_1], UnitEntity_actor[e_1], 100.)
			call dispatch_Projectile_Projectile_Projectile_terminate(this_1)
			call LLIterator_close(iterator)
			return
		endif
	endloop
	call LLIterator_close(iterator)
endfunction

function CustomBar_setPosXY takes integer this_1, real x, real y returns nothing
	set CustomBar_position_x[this_1] = x
	set CustomBar_position_y[this_1] = y
	if CustomBar_t[this_1] != null and ( not CustomBar_locked[this_1]) then
		call texttag_setPos(CustomBar_t[this_1], CustomBar_position_x[this_1], CustomBar_position_y[this_1], CustomBar_position_z[this_1])
	endif
endfunction

function dispatch_CustomBar_CustomBar_CustomBar_setPosXY takes integer this_1, real x, real y returns nothing
	if CustomBar_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling CustomBar.setPosXY")
		else
			call error("Called CustomBar.setPosXY on invalid object.")
		endif
	endif
	call CustomBar_setPosXY(this_1, x, y)
endfunction

function Boss_update takes integer this_1 returns nothing
	call SetupObject_update(this_1)
	call dispatch_CustomBar_CustomBar_CustomBar_setPosXY(Boss_hpBar[this_1], Entity_pos_x[this_1] - 100., Entity_pos_y[this_1] + 100.)
	call dispatch_CustomBar_CustomBar_CustomBar_setValue(Boss_hpBar[this_1], Boss_currentHP[this_1] / Boss_maxHp[this_1] * 100.0)
endfunction

function UnitEntity_setNewPosA takes integer this_1, real tpos_x_1, real tpos_y_1, real angl_radians returns nothing
	local integer instanceOfTemp = Serializable_typeId[this_1]
	if instanceOfTemp >= 1172 and instanceOfTemp <= 1192 then
		call dispatch_SetupObject_SetupObject_SetupObject_setXY(this_1, vec2_toVec3(tpos_x_1, tpos_y_1), vec2_toVec3_return_y, vec2_toVec3_return_z)
		call dispatch_SetupObject_SetupObject_SetupObject_setFacing(this_1, angl_radians)
	elseif Serializable_typeId[this_1] == 1191 then
		call dispatch_SetupObject_SetupObject_SetupObject_setXY(this_1, vec2_toVec3(tpos_x_1, tpos_y_1), vec2_toVec3_return_y, vec2_toVec3_return_z)
		call unit_setFacing(UnitEntity_actor[this_1], angl_radians)
	endif
endfunction

function calculateSegmentPos takes real pos1_x, real pos1_y, real pos2_x, real pos2_y, real segLength returns real
	local real tuple_temp = vec2_angleTo(pos2_x, pos2_y, pos1_x, pos1_y)
	local real angl_radians = tuple_temp
	set calculateSegmentPos_return_x = pos1_x - Cos(angle_radians_1(angl_radians)) * segLength
	set calculateSegmentPos_return_y = pos1_y - Sin(angle_radians_1(angl_radians)) * segLength
	return calculateSegmentPos_return_x
endfunction

function vec2_lerp takes real this_x, real this_y, real target_x, real target_y, real alpha returns real
	set vec2_lerp_return_x = real_lerp(this_x, target_x, alpha)
	set vec2_lerp_return_y = real_lerp(this_y, target_y, alpha)
	return vec2_lerp_return_x
endfunction

function CongaSegment_calcPos takes integer this_1 returns nothing
	if CongaLineHead_cmode[CongaSegment_head[this_1]] == 0 then
		if CongaSegment_prev[this_1] == 0 then
			call UnitEntity_setNewPosA(CongaSegment_target[this_1], calculateSegmentPos(vec3_toVec2(Entity_pos_x[CongaSegment_head[this_1]], Entity_pos_y[CongaSegment_head[this_1]], Entity_pos_z[CongaSegment_head[this_1]]), vec3_toVec2_return_y, vec3_toVec2(Entity_pos_x[CongaSegment_target[this_1]], Entity_pos_y[CongaSegment_target[this_1]], Entity_pos_z[CongaSegment_target[this_1]]), vec3_toVec2_return_y, 75.), calculateSegmentPos_return_y, vec3_angleTo2d_4263(Entity_pos_x[CongaSegment_target[this_1]], Entity_pos_y[CongaSegment_target[this_1]], Entity_pos_z[CongaSegment_target[this_1]], Entity_pos_x[CongaSegment_head[this_1]], Entity_pos_y[CongaSegment_head[this_1]], Entity_pos_z[CongaSegment_head[this_1]]))
		else
			call UnitEntity_setNewPosA(CongaSegment_target[this_1], calculateSegmentPos(vec3_toVec2(Entity_pos_x[CongaSegment_target[CongaSegment_prev[this_1]]], Entity_pos_y[CongaSegment_target[CongaSegment_prev[this_1]]], Entity_pos_z[CongaSegment_target[CongaSegment_prev[this_1]]]), vec3_toVec2_return_y, vec3_toVec2(Entity_pos_x[CongaSegment_target[this_1]], Entity_pos_y[CongaSegment_target[this_1]], Entity_pos_z[CongaSegment_target[this_1]]), vec3_toVec2_return_y, CongaLineHead_segLength[CongaSegment_head[this_1]]), calculateSegmentPos_return_y, vec3_angleTo2d_4263(Entity_pos_x[CongaSegment_target[this_1]], Entity_pos_y[CongaSegment_target[this_1]], Entity_pos_z[CongaSegment_target[this_1]], Entity_pos_x[CongaSegment_target[CongaSegment_prev[this_1]]], Entity_pos_y[CongaSegment_target[CongaSegment_prev[this_1]]], Entity_pos_z[CongaSegment_target[CongaSegment_prev[this_1]]]))
		endif
	elseif CongaLineHead_cmode[CongaSegment_head[this_1]] == 1 then
		if CongaSegment_prev[this_1] == 0 then
			if vec3_distanceTo2dSq(Entity_pos_x[CongaSegment_target[this_1]], Entity_pos_y[CongaSegment_target[this_1]], Entity_pos_z[CongaSegment_target[this_1]], vec3_toVec2(dispatch_UnitEntity_Entity_UnitEntity_getPos(CongaSegment_head[this_1]), dispatch_UnitEntity_Entity_UnitEntity_getPos_return_y, dispatch_UnitEntity_Entity_UnitEntity_getPos_return_z), vec3_toVec2_return_y) > 32 * 32 then
				call UnitEntity_setNewPosA(CongaSegment_target[this_1], vec2_lerp(vec3_toVec2(Entity_pos_x[CongaSegment_target[this_1]], Entity_pos_y[CongaSegment_target[this_1]], Entity_pos_z[CongaSegment_target[this_1]]), vec3_toVec2_return_y, vec3_toVec2(Entity_pos_x[CongaSegment_head[this_1]], Entity_pos_y[CongaSegment_head[this_1]], Entity_pos_z[CongaSegment_head[this_1]]), vec3_toVec2_return_y, CongaLineHead_segLength[CongaSegment_head[this_1]] * 0.001), vec2_lerp_return_y, vec3_angleTo2d_4263(Entity_pos_x[CongaSegment_target[this_1]], Entity_pos_y[CongaSegment_target[this_1]], Entity_pos_z[CongaSegment_target[this_1]], Entity_pos_x[CongaSegment_head[this_1]], Entity_pos_y[CongaSegment_head[this_1]], Entity_pos_z[CongaSegment_head[this_1]]))
			endif
		elseif vec3_distanceTo2dSq(Entity_pos_x[CongaSegment_target[this_1]], Entity_pos_y[CongaSegment_target[this_1]], Entity_pos_z[CongaSegment_target[this_1]], vec3_toVec2(Entity_pos_x[CongaSegment_target[CongaSegment_prev[this_1]]], Entity_pos_y[CongaSegment_target[CongaSegment_prev[this_1]]], Entity_pos_z[CongaSegment_target[CongaSegment_prev[this_1]]]), vec3_toVec2_return_y) > 24 * 24 then
			call UnitEntity_setNewPosA(CongaSegment_target[this_1], vec2_lerp(vec3_toVec2(Entity_pos_x[CongaSegment_target[this_1]], Entity_pos_y[CongaSegment_target[this_1]], Entity_pos_z[CongaSegment_target[this_1]]), vec3_toVec2_return_y, vec3_toVec2(Entity_pos_x[CongaSegment_target[CongaSegment_prev[this_1]]], Entity_pos_y[CongaSegment_target[CongaSegment_prev[this_1]]], Entity_pos_z[CongaSegment_target[CongaSegment_prev[this_1]]]), vec3_toVec2_return_y, CongaLineHead_segLength[CongaSegment_head[this_1]] * 0.001), vec2_lerp_return_y, vec3_angleTo2d_4263(Entity_pos_x[CongaSegment_target[this_1]], Entity_pos_y[CongaSegment_target[this_1]], Entity_pos_z[CongaSegment_target[this_1]], Entity_pos_x[CongaSegment_target[CongaSegment_prev[this_1]]], Entity_pos_y[CongaSegment_target[CongaSegment_prev[this_1]]], Entity_pos_z[CongaSegment_target[CongaSegment_prev[this_1]]]))
		endif
	endif
endfunction

function dispatch_CongaSegment_CongaLineHead_CongaSegment_calcPos takes integer this_1 returns nothing
	if CongaSegment_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling CongaSegment.calcPos")
		else
			call error("Called CongaSegment.calcPos on invalid object.")
		endif
	endif
	call CongaSegment_calcPos(this_1)
endfunction

function CongaLineHead_update takes integer this_1 returns nothing
	local integer segment
	call SetupObject_update(this_1)
	set segment = CongaLineHead_firstSegment[this_1]
	loop
		exitwhen  not (segment != 0)
		call dispatch_CongaSegment_CongaLineHead_CongaSegment_calcPos(segment)
		set segment = CongaSegment_next[segment]
	endloop
endfunction

function Escaper_onEscapeGround takes integer this_1 returns nothing
	call unit_setPropWindow(UnitEntity_actor[this_1], real_fromDeg(0.))
	set Escaper_sliding[this_1] = false
endfunction

function dispatch_Escaper_Escaper_Escaper_onEscapeGround takes integer this_1 returns nothing
	if Serializable_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling Escaper.onEscapeGround")
		else
			call error("Called Escaper.onEscapeGround on invalid object.")
		endif
	endif
	call Escaper_onEscapeGround(this_1)
endfunction

function Escaper_inAir takes integer this_1, integer e_1 returns nothing
	if  not Entity_flying[e_1] then
		set Entity_flying[e_1] = true
		call dispatch_Escaper_Escaper_Escaper_onEscapeGround(this_1)
	endif
	call dispatch_Entity_Entity_Entity_addVel(e_1, 0., 0., Entity_gravity[this_1])
endfunction

function dispatch_Escaper_Escaper_Escaper_inAir takes integer this_1, integer e_1 returns nothing
	if Serializable_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling Escaper.inAir")
		else
			call error("Called Escaper.inAir on invalid object.")
		endif
	endif
	call Escaper_inAir(this_1, e_1)
endfunction

function unit_getState takes unit this_1, unitstate state returns real
	return GetUnitState(this_1, state)
endfunction

function unit_getHP takes unit this_1 returns real
	return unit_getState(this_1, UNIT_STATE_LIFE)
endfunction

function BlindEscaper_doLavaDamage takes integer this_1 returns nothing
	local real hp = unit_getHP(UnitEntity_actor[this_1])
	local real bias = 1. - unit_getAbilityLevel(UnitEntity_actor[this_1], EscaperClasses_FIRE_RESISTANCE) * 0.1
	if hp > .405 then
		call unit_setHP(UnitEntity_actor[this_1], hp - RegionData_lavaDmg[Entity_getCurrentRegion(this_1)] * bias)
	elseif Escaper_alive[this_1] then
		call dispatch_Escaper_Escaper_Escaper_kill(this_1, 0)
	endif
endfunction

function Escaper_doLavaDamage takes integer this_1 returns nothing
	local real hp = unit_getHP(UnitEntity_actor[this_1])
	if hp > .405 then
		call unit_setHP(UnitEntity_actor[this_1], hp - RegionData_lavaDmg[Entity_getCurrentRegion(this_1)])
	elseif Escaper_alive[this_1] then
		call dispatch_Escaper_Escaper_Escaper_kill(this_1, 0)
	endif
endfunction

function dispatch_Escaper_Escaper_Escaper_doLavaDamage takes integer this_1 returns nothing
	if Serializable_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling Escaper.doLavaDamage")
		else
			call error("Called Escaper.doLavaDamage on invalid object.")
		endif
	endif
	if Serializable_typeId[this_1] <= 1164 then
		if Serializable_typeId[this_1] <= 1163 then
			call Escaper_doLavaDamage(this_1)
		else
			call BlindEscaper_doLavaDamage(this_1)
		endif
	else
		call Escaper_doLavaDamage(this_1)
	endif
endfunction

function Escaper_onGroundHit takes integer this_1 returns nothing
	local integer temp_tuple_modifiers_val
	local integer ttype_1
	local real angl_radians
	local real length
	local integer temp_tuple_unwalkableId
	local integer temp
	local integer tuple_temp
	local real tuple_temp_1
	local real tuple_temp_2
	local real tuple_temp_3
	local real tuple_temp_4
	local real tuple_temp_5
	local real tuple_temp_6
	local real tuple_temp_7
	local integer tuple_temp_8
	call vec3_getEBRTile(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1])
	set tuple_temp = vec3_getEBRTile_return_modifiers_val
	set temp_tuple_modifiers_val = tuple_temp
	if bitset_get(temp_tuple_modifiers_val, 2) and real_abs(Entity_vel_z[this_1]) > 2. then
		set ttype_1 = GetTerrainType(Entity_pos_x[this_1], Entity_pos_y[this_1])
		set tuple_temp_1 = unit_getFacingAngle(UnitEntity_actor[this_1])
		set angl_radians = tuple_temp_1
		if ttype_1 == BuilderConstants_CONTROLLABLEICE then
			set length = vec3_length(Entity_vel_x[this_1], Entity_vel_y[this_1], Entity_vel_z[this_1])
			set tuple_temp_2 = vec2_withZ(angle_toVec(angl_radians, length), angle_toVec_return_y, Entity_vel_z[this_1])
			set tuple_temp_3 = vec2_withZ_return_y
			set tuple_temp_4 = vec2_withZ_return_z
			set Entity_vel_x[this_1] = tuple_temp_2
			set Entity_vel_y[this_1] = tuple_temp_3
			set Entity_vel_z[this_1] = tuple_temp_4
		endif
		set Entity_vel_z[this_1] =  - (Entity_vel_z[this_1] * 1.25)
	else
		set Entity_pos_z[this_1] = 0.
		set tuple_temp_5 = vec3_op_mult(Entity_vel_x[this_1], Entity_vel_y[this_1], Entity_vel_z[this_1], 0.175)
		set tuple_temp_6 = vec3_op_mult_return_y
		set tuple_temp_7 = vec3_op_mult_return_z
		set Entity_vel_x[this_1] = tuple_temp_5
		set Entity_vel_y[this_1] = tuple_temp_6
		set Entity_vel_z[this_1] = tuple_temp_7
		set Entity_vel_z[this_1] = 0.
		set temp = GetTerrainType(Entity_pos_x[this_1], Entity_pos_y[this_1])
		call dispatch_RegionData_RegionData_RegionData_getTypeSet(Entity_getCurrentRegion(this_1))
		set tuple_temp_8 = dispatch_RegionData_RegionData_RegionData_getTypeSet_return_unwalkableId
		set temp_tuple_unwalkableId = tuple_temp_8
		if temp == temp_tuple_unwalkableId then
			call unit_damageTarget_4137(UnitEntity_actor[this_1], UnitEntity_actor[this_1], 1000.)
			call dispatch_Escaper_Escaper_Escaper_kill_2854(this_1, 0, 1)
		endif
	endif
	call unit_setPropWindow(UnitEntity_actor[this_1], real_fromDeg(60.))
endfunction

function dispatch_Escaper_Escaper_Escaper_onGroundHit takes integer this_1 returns nothing
	if Serializable_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling Escaper.onGroundHit")
		else
			call error("Called Escaper.onGroundHit on invalid object.")
		endif
	endif
	call Escaper_onGroundHit(this_1)
endfunction

function Escaper_onGround takes integer this_1, integer e_1 returns nothing
	local real rv_x
	local real rv_y
	local real rv_z
	local real lpos_x
	local real lpos_y
	local real rpos_x
	local real rpos_y
	local integer ttype1
	local integer ttype2
	local integer rdata
	local integer ttype_1
	local integer newval
	local integer temp_tuple_unwalkableId
	local integer temp_tuple_unwalkableId_1
	local integer temp_tuple_unwalkableId_2
	local integer temp_tuple_unwalkableId_3
	local integer temp_tuple_unwalkableId_4
	local integer temp_tuple_unwalkableId_5
	local real fpos_x
	local real fpos_y
	local real bpos_x
	local real bpos_y
	local integer t1type
	local integer t2type
	local integer temp_tuple_unwalkableId_6
	local integer temp_tuple_unwalkableId_7
	local real angl_radians
	local real hp2
	local integer temp
	local integer temp_1
	local integer temp_2
	local integer temp_3
	local integer temp_4
	local integer temp_5
	local boolean andLeft
	local real tuple_temp
	local real tuple_temp_1
	local real tuple_temp_2
	local real tuple_temp_3
	local real tuple_temp_4
	local real tuple_temp_5
	local real tuple_temp_6
	local integer tuple_temp_7
	local integer tuple_temp_8
	local integer tuple_temp_9
	local integer tuple_temp_10
	local integer tuple_temp_11
	local real tuple_temp_12
	local real tuple_temp_13
	local integer tuple_temp_14
	local real tuple_temp_15
	local real tuple_temp_16
	local real tuple_temp_17
	local real tuple_temp_18
	local integer tuple_temp_19
	local integer tuple_temp_20
	local real tuple_temp_21
	local real tuple_temp_22
	local real tuple_temp_23
	local real tuple_temp_24
	local real tuple_temp_25
	local real tuple_temp_26
	local real tuple_temp_27
	local real tuple_temp_28
	local real tuple_temp_29
	local real tuple_temp_30
	local real tuple_temp_31
	local real tuple_temp_32
	local real tuple_temp_33
	local real tuple_temp_34
	if Entity_flying[e_1] then
		set Entity_flying[e_1] = false
		call dispatch_Escaper_Escaper_Escaper_onGroundHit(this_1)
	endif
	call dispatch_Entity_Entity_Entity_scaleVel(e_1, Escaper_PhysicsModule_surfaceFriction[this_1])
	set tuple_temp = dispatch_Escaper_Escaper_Escaper_getRealVel(this_1)
	set tuple_temp_1 = dispatch_Escaper_Escaper_Escaper_getRealVel_return_y
	set tuple_temp_2 = dispatch_Escaper_Escaper_Escaper_getRealVel_return_z
	set rv_x = tuple_temp
	set rv_y = tuple_temp_1
	set rv_z = tuple_temp_2
	set tuple_temp_3 = vec2_polarOffset(vec3_toVec2(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1]), vec3_toVec2_return_y, angle_op_minus(vec2_getAngle(vec3_toVec2(rv_x, rv_y, rv_z), vec3_toVec2_return_y), real_asAngleDegrees(90.)), 16.50)
	set tuple_temp_4 = vec2_polarOffset_return_y
	set lpos_x = tuple_temp_3
	set lpos_y = tuple_temp_4
	set tuple_temp_5 = vec2_polarOffset(vec3_toVec2(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1]), vec3_toVec2_return_y, angle_op_plus(vec2_getAngle(vec3_toVec2(rv_x, rv_y, rv_z), vec3_toVec2_return_y), real_asAngleDegrees(90.)), 16.50)
	set tuple_temp_6 = vec2_polarOffset_return_y
	set rpos_x = tuple_temp_5
	set rpos_y = tuple_temp_6
	set ttype1 = GetTerrainType(lpos_x, lpos_y)
	set ttype2 = GetTerrainType(rpos_x, rpos_y)
	set rdata = Entity_getCurrentRegion(this_1)
	set newval = -1
	set temp = ttype1
	call dispatch_RegionData_RegionData_RegionData_getTypeSet(rdata)
	set tuple_temp_7 = dispatch_RegionData_RegionData_RegionData_getTypeSet_return_unwalkableId
	set temp_tuple_unwalkableId = tuple_temp_7
	if temp == temp_tuple_unwalkableId then
		set temp_1 = ttype2
		call dispatch_RegionData_RegionData_RegionData_getTypeSet(rdata)
		set tuple_temp_8 = dispatch_RegionData_RegionData_RegionData_getTypeSet_return_unwalkableId
		set temp_tuple_unwalkableId_1 = tuple_temp_8
		if temp_1 == temp_tuple_unwalkableId_1 then
			call dispatch_RegionData_RegionData_RegionData_getTypeSet(rdata)
			set tuple_temp_9 = dispatch_RegionData_RegionData_RegionData_getTypeSet_return_unwalkableId
			set temp_tuple_unwalkableId_2 = tuple_temp_9
			set ttype_1 = temp_tuple_unwalkableId_2
		else
			set ttype_1 = GetTerrainType(Entity_pos_x[this_1], Entity_pos_y[this_1])
			set newval = 2
		endif
	else
		set temp_2 = ttype2
		call dispatch_RegionData_RegionData_RegionData_getTypeSet(rdata)
		set tuple_temp_10 = dispatch_RegionData_RegionData_RegionData_getTypeSet_return_unwalkableId
		set temp_tuple_unwalkableId_3 = tuple_temp_10
		if temp_2 == temp_tuple_unwalkableId_3 then
			set ttype_1 = ttype1
			set newval = 1
		else
			set ttype_1 = GetTerrainType(Entity_pos_x[this_1], Entity_pos_y[this_1])
			set newval = 3
		endif
	endif
	if (Escaper_lastVal[this_1] == 1 and newval == 2) or (Escaper_lastVal[this_1] == 2 and newval == 1) then
		set Escaper_threshold[this_1] = Escaper_threshold[this_1] + 1
		if Escaper_threshold[this_1] > 2 then
			call dispatch_RegionData_RegionData_RegionData_getTypeSet(rdata)
			set tuple_temp_11 = dispatch_RegionData_RegionData_RegionData_getTypeSet_return_unwalkableId
			set temp_tuple_unwalkableId_4 = tuple_temp_11
			set ttype_1 = temp_tuple_unwalkableId_4
		else
			set ttype_1 = GetTerrainType(Entity_pos_x[this_1], Entity_pos_y[this_1])
		endif
	elseif Escaper_threshold[this_1] > 0 then
		set Escaper_threshold[this_1] = Escaper_threshold[this_1] - 1
	endif
	set Escaper_lastVal[this_1] = newval
	set tuple_temp_12 = vec2_op_mult(Escaper_slideVelocity_x[this_1], Escaper_slideVelocity_y[this_1], 0.99)
	set tuple_temp_13 = vec2_op_mult_return_y
	set Escaper_slideVelocity_x[this_1] = tuple_temp_12
	set Escaper_slideVelocity_y[this_1] = tuple_temp_13
	set temp_3 = ttype_1
	call dispatch_RegionData_RegionData_RegionData_getTypeSet(rdata)
	set tuple_temp_14 = dispatch_RegionData_RegionData_RegionData_getTypeSet_return_unwalkableId
	set temp_tuple_unwalkableId_5 = tuple_temp_14
	if temp_3 == temp_tuple_unwalkableId_5 or ttype_1 == 1231186786 or ttype_1 == BuilderConstants_RUNES then
		if Escaper_alive[this_1] then
			if RegionData_allowCut[rdata] then
				set tuple_temp_15 = vec2_polarOffset(vec3_toVec2(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1]), vec3_toVec2_return_y, vec2_getAngle(vec3_toVec2(rv_x, rv_y, rv_z), vec3_toVec2_return_y), 18.)
				set tuple_temp_16 = vec2_polarOffset_return_y
				set fpos_x = tuple_temp_15
				set fpos_y = tuple_temp_16
				set tuple_temp_17 = vec2_polarOffset(vec3_toVec2(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1]), vec3_toVec2_return_y, vec2_getAngle(vec3_toVec2(rv_x, rv_y, rv_z), vec3_toVec2_return_y), -18.)
				set tuple_temp_18 = vec2_polarOffset_return_y
				set bpos_x = tuple_temp_17
				set bpos_y = tuple_temp_18
				set t1type = GetTerrainType(fpos_x, fpos_y)
				set t2type = GetTerrainType(bpos_x, bpos_y)
				set temp_4 = t2type
				call dispatch_RegionData_RegionData_RegionData_getTypeSet(rdata)
				set tuple_temp_19 = dispatch_RegionData_RegionData_RegionData_getTypeSet_return_unwalkableId
				set temp_tuple_unwalkableId_6 = tuple_temp_19
				if temp_4 == temp_tuple_unwalkableId_6 or t2type == 1231186786 or t2type == BuilderConstants_RUNES then
					set temp_5 = t1type
					call dispatch_RegionData_RegionData_RegionData_getTypeSet(rdata)
					set tuple_temp_20 = dispatch_RegionData_RegionData_RegionData_getTypeSet_return_unwalkableId
					set temp_tuple_unwalkableId_7 = tuple_temp_20
					set andLeft = temp_5 == temp_tuple_unwalkableId_7 or t1type == 1231186786 or t1type == BuilderConstants_RUNES
				else
					set andLeft = false
				endif
				if andLeft then
					call dispatch_Escaper_Escaper_Escaper_kill(this_1, 0)
				endif
			else
				call dispatch_Escaper_Escaper_Escaper_kill_2854(this_1, 0, 0)
			endif
		endif
	elseif Escaper_alive[this_1] and ttype_1 == BuilderConstants_CONTROLLABLEICE or ttype_1 == BuilderConstants_UNCONTROLLABLEICE or ttype_1 == BuilderConstants_REVICE then
		set tuple_temp_21 = unit_getFacingAngle(UnitEntity_actor[this_1])
		set angl_radians = tuple_temp_21
		set tuple_temp_22 = angle_cos(angl_radians) * RegionData_slidespeed[rdata] * Escaper_SLIDE_ADD
		set tuple_temp_23 = angle_sin(angl_radians) * RegionData_slidespeed[rdata] * Escaper_SLIDE_ADD
		set Escaper_slideVelocity_x[this_1] = tuple_temp_22
		set Escaper_slideVelocity_y[this_1] = tuple_temp_23
		if  not Escaper_sliding[this_1] then
			set Entity_speedFactor[this_1] = 1.
			set Escaper_sliding[this_1] = true
		endif
		call dispatch_Escaper_Escaper_Escaper_setLava(this_1, false)
	else
		if ebrtile_hasModifier(vec3_getEBRTile(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1]), vec3_getEBRTile_return_y, vec3_getEBRTile_return_key, vec3_getEBRTile_return_currentType, vec3_getEBRTile_return_lastType, vec3_getEBRTile_return_modifiers_val, 3) then
			if vec3_lengthSquared(Entity_vel_x[this_1], Entity_vel_y[this_1], Entity_vel_z[this_1]) < 1. then
				set tuple_temp_24 = vec2_toVec3(Escaper_walkVel_x[this_1], Escaper_walkVel_y[this_1])
				set tuple_temp_25 = vec2_toVec3_return_y
				set tuple_temp_26 = vec2_toVec3_return_z
				set Entity_vel_x[this_1] = tuple_temp_24
				set Entity_vel_y[this_1] = tuple_temp_25
				set Entity_vel_z[this_1] = tuple_temp_26
			endif
			set tuple_temp_27 = vec3_op_mult(Entity_vel_x[this_1], Entity_vel_y[this_1], Entity_vel_z[this_1], 1.0075)
			set tuple_temp_28 = vec3_op_mult_return_y
			set tuple_temp_29 = vec3_op_mult_return_z
			set Entity_vel_x[this_1] = tuple_temp_27
			set Entity_vel_y[this_1] = tuple_temp_28
			set Entity_vel_z[this_1] = tuple_temp_29
		endif
		set tuple_temp_30 = vec3_op_mult(Entity_vel_x[this_1], Entity_vel_y[this_1], Entity_vel_z[this_1], 0.96)
		set tuple_temp_31 = vec3_op_mult_return_y
		set tuple_temp_32 = vec3_op_mult_return_z
		set Entity_vel_x[this_1] = tuple_temp_30
		set Entity_vel_y[this_1] = tuple_temp_31
		set Entity_vel_z[this_1] = tuple_temp_32
		set Escaper_sliding[this_1] = false
		call dispatch_Escaper_Escaper_Escaper_setLava(this_1, false)
		if ttype_1 == 1147958883 and ( not Escaper_onLava[this_1]) then
			call dispatch_Escaper_Escaper_Escaper_setLava(this_1, true)
		elseif ttype_1 == BuilderConstants_POISON then
			if  not Escaper_poisoned[this_1] then
				call dispatch_Escaper_Escaper_Escaper_setPoison(this_1, true)
			endif
		endif
	endif
	if Escaper_sliding[this_1] then
		set Entity_speedFactor[this_1] = Entity_speedFactor[this_1] * 0.9
	else
		set tuple_temp_33 = vec2_op_mult(Escaper_slideVelocity_x[this_1], Escaper_slideVelocity_y[this_1], 0.8)
		set tuple_temp_34 = vec2_op_mult_return_y
		set Escaper_slideVelocity_x[this_1] = tuple_temp_33
		set Escaper_slideVelocity_y[this_1] = tuple_temp_34
	endif
	if Escaper_onLava[this_1] then
		call dispatch_Escaper_Escaper_Escaper_doLavaDamage(this_1)
	endif
	if Escaper_poisoned[this_1] then
		set hp2 = unit_getHP(UnitEntity_actor[this_1])
		if hp2 > .405 then
			call unit_setHP(UnitEntity_actor[this_1], hp2 - RegionData_poisonDmg[Entity_getCurrentRegion(this_1)])
		elseif Escaper_alive[this_1] then
			call dispatch_Escaper_Escaper_Escaper_kill(this_1, 0)
		endif
	endif
endfunction

function dispatch_Escaper_Escaper_Escaper_onGround takes integer this_1, integer e_1 returns nothing
	if Serializable_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling Escaper.onGround")
		else
			call error("Called Escaper.onGround on invalid object.")
		endif
	endif
	call Escaper_onGround(this_1, e_1)
endfunction

function Escaper_PhysicsModule_physicsUpdate takes integer this_1, integer e_1 returns nothing
	local real pos_x_1
	local real pos_y_1
	local real pos_z
	local real tuple_temp
	local real tuple_temp_1
	local real tuple_temp_2
	if ( not Entity_done[e_1]) and Entity_DupletListModule_active[e_1] then
		set tuple_temp = dispatch_Entity_Entity_Entity_getPos(e_1)
		set tuple_temp_1 = dispatch_Entity_Entity_Entity_getPos_return_y
		set tuple_temp_2 = dispatch_Entity_Entity_Entity_getPos_return_z
		set pos_x_1 = tuple_temp
		set pos_y_1 = tuple_temp_1
		set pos_z = tuple_temp_2
		if Frentity_DYNAMIC_Z then
			set Escaper_PhysicsModule_terrainZ[this_1] = vec3_getHeightMap(pos_x_1, pos_y_1, pos_z)
		endif
		if pos_z > Escaper_PhysicsModule_terrainZ[this_1] then
			call dispatch_Escaper_Escaper_Escaper_inAir(this_1, e_1)
		else
			call dispatch_Escaper_Escaper_Escaper_onGround(this_1, e_1)
		endif
	endif
endfunction

function dispatch_Escaper_Escaper_Escaper_PhysicsModule_physicsUpdate takes integer this_1, integer e_1 returns nothing
	if Serializable_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling Escaper.physicsUpdate")
		else
			call error("Called Escaper.physicsUpdate on invalid object.")
		endif
	endif
	call Escaper_PhysicsModule_physicsUpdate(this_1, e_1)
endfunction

function Escaper_update takes integer this_1 returns nothing
	local real tuple_temp = unit_getPos(UnitEntity_actor[this_1])
	local real tuple_temp_1 = unit_getPos_return_y
	local real newPos_x = tuple_temp
	local real newPos_y = tuple_temp_1
	local real tuple_temp_2 = vec2_op_minus(newPos_x, newPos_y, vec3_toVec2(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1]), vec3_toVec2_return_y)
	local real tuple_temp_3 = vec2_op_minus_return_y
	local real tuple_temp_4
	local real tuple_temp_5
	local real tuple_temp_6
	local real tuple_temp_7
	local real tuple_temp_8
	local real tuple_temp_9
	local real tuple_temp_10
	local real tuple_temp_11
	local real tuple_temp_12
	local real tuple_temp_13
	local real tuple_temp_14
	local real tuple_temp_15
	local real tuple_temp_16
	local real tuple_temp_17
	set Escaper_walkVel_x[this_1] = tuple_temp_2
	set Escaper_walkVel_y[this_1] = tuple_temp_3
	set tuple_temp_4 = vec2_withZ(newPos_x, newPos_y, Entity_pos_z[this_1])
	set tuple_temp_5 = vec2_withZ_return_y
	set tuple_temp_6 = vec2_withZ_return_z
	set Entity_pos_x[this_1] = tuple_temp_4
	set Entity_pos_y[this_1] = tuple_temp_5
	set Entity_pos_z[this_1] = tuple_temp_6
	call dispatch_Escaper_Escaper_Escaper_PhysicsModule_physicsUpdate(this_1, this_1)
	set tuple_temp_7 = vec3_op_plus(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1], Entity_vel_x[this_1], Entity_vel_y[this_1], Entity_vel_z[this_1])
	set tuple_temp_8 = vec3_op_plus_return_y
	set tuple_temp_9 = vec3_op_plus_return_z
	set Entity_pos_x[this_1] = tuple_temp_7
	set Entity_pos_y[this_1] = tuple_temp_8
	set Entity_pos_z[this_1] = tuple_temp_9
	set tuple_temp_10 = vec3_op_plus_4284(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1], vec2_op_mult(Escaper_slideVelocity_x[this_1], Escaper_slideVelocity_y[this_1], 1. - Entity_speedFactor[this_1]), vec2_op_mult_return_y)
	set tuple_temp_11 = vec3_op_plus_return_y_3134
	set tuple_temp_12 = vec3_op_plus_return_z_3136
	set Entity_pos_x[this_1] = tuple_temp_10
	set Entity_pos_y[this_1] = tuple_temp_11
	set Entity_pos_z[this_1] = tuple_temp_12
	set tuple_temp_13 = vec3_op_plus_4284(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1], Escaper_otherVel_x[this_1], Escaper_otherVel_y[this_1])
	set tuple_temp_14 = vec3_op_plus_return_y_3134
	set tuple_temp_15 = vec3_op_plus_return_z_3136
	set Entity_pos_x[this_1] = tuple_temp_13
	set Entity_pos_y[this_1] = tuple_temp_14
	set Entity_pos_z[this_1] = tuple_temp_15
	set tuple_temp_16 = 0.
	set tuple_temp_17 = 0.
	set Escaper_otherVel_x[this_1] = tuple_temp_16
	set Escaper_otherVel_y[this_1] = tuple_temp_17
	if Escaper_sliding[this_1] then
		call dispatch_UnitEntity_Entity_UnitEntity_setPos(this_1, Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1])
	else
		call dispatch_Escaper_Escaper_Escaper_setXY(this_1, Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1])
	endif
endfunction

function colorA_mix takes integer this_red, integer this_green, integer this_blue, integer this_alpha, integer c2_red, integer c2_green, integer c2_blue, integer c2_alpha, real s returns integer
	set colorA_mix_return_red = R2I(c2_red * s + this_red * (1. - s) + 0.5)
	set colorA_mix_return_green = R2I(c2_green * s + this_green * (1. - s) + 0.5)
	set colorA_mix_return_blue = R2I(c2_blue * s + this_blue * (1. - s) + 0.5)
	set colorA_mix_return_alpha = R2I(c2_alpha * s + this_alpha * (1. - s) + 0.5)
	return colorA_mix_return_red
endfunction

function Faceless_update takes integer this_1 returns nothing
	local integer temp
	local integer tuple_temp
	local integer tuple_temp_1
	local integer tuple_temp_2
	local integer tuple_temp_3
	local integer tuple_temp_4
	local integer tuple_temp_5
	local integer tuple_temp_6
	local integer tuple_temp_7
	local integer tuple_temp_8
	local integer tuple_temp_9
	local integer tuple_temp_10
	local integer tuple_temp_11
	local integer tuple_temp_12
	local integer tuple_temp_13
	local integer tuple_temp_14
	local integer tuple_temp_15
	call SetupObject_update(this_1)
	set temp = Faceless_mode[this_1]
	if temp == 0 then
		set Faceless_dur[this_1] = Faceless_dur[this_1] - Basics_ANIMATION_PERIOD
		if Faceless_dur[this_1] <= 0. then
			set Faceless_mode[this_1] = 3
			set Faceless_dur[this_1] = Faceless_fadeDur[this_1]
		endif
	elseif temp == 1 then
		set Faceless_dur[this_1] = Faceless_dur[this_1] - Basics_ANIMATION_PERIOD
		if Faceless_dur[this_1] <= 0. then
			set Faceless_mode[this_1] = 2
			set Faceless_dur[this_1] = Faceless_fadeDur[this_1]
		endif
	elseif temp == 3 then
		set Faceless_dur[this_1] = Faceless_dur[this_1] - Basics_ANIMATION_PERIOD
		set tuple_temp = colorA_mix(Faceless_color_red[this_1], Faceless_color_green[this_1], Faceless_color_blue[this_1], Faceless_color_alpha[this_1], Colors_COLOR_BLACK_red, Colors_COLOR_BLACK_green, Colors_COLOR_BLACK_blue, Colors_COLOR_BLACK_alpha, (Faceless_fadeDur[this_1] - Faceless_dur[this_1]) / 3.)
		set tuple_temp_1 = colorA_mix_return_green
		set tuple_temp_2 = colorA_mix_return_blue
		set tuple_temp_3 = colorA_mix_return_alpha
		set Faceless_color_red[this_1] = tuple_temp
		set Faceless_color_green[this_1] = tuple_temp_1
		set Faceless_color_blue[this_1] = tuple_temp_2
		set Faceless_color_alpha[this_1] = tuple_temp_3
		if Faceless_dur[this_1] <= 0. then
			set tuple_temp_4 = Colors_COLOR_BLACK_red
			set tuple_temp_5 = Colors_COLOR_BLACK_green
			set tuple_temp_6 = Colors_COLOR_BLACK_blue
			set tuple_temp_7 = Colors_COLOR_BLACK_alpha
			set Faceless_color_red[this_1] = tuple_temp_4
			set Faceless_color_green[this_1] = tuple_temp_5
			set Faceless_color_blue[this_1] = tuple_temp_6
			set Faceless_color_alpha[this_1] = tuple_temp_7
			set Faceless_mode[this_1] = 1
			set Faceless_dur[this_1] = dispatch_ConfigValue_ConfigValue_ConfigValue_get(Faceless_invisDur[this_1])
		endif
	else
		set Faceless_dur[this_1] = Faceless_dur[this_1] - Basics_ANIMATION_PERIOD
		set tuple_temp_8 = colorA_mix(Faceless_color_red[this_1], Faceless_color_green[this_1], Faceless_color_blue[this_1], Faceless_color_alpha[this_1], Colors_COLOR_WHITE_red, Colors_COLOR_WHITE_green, Colors_COLOR_WHITE_blue, Colors_COLOR_WHITE_alpha, (Faceless_fadeDur[this_1] - Faceless_dur[this_1]) / 3.)
		set tuple_temp_9 = colorA_mix_return_green
		set tuple_temp_10 = colorA_mix_return_blue
		set tuple_temp_11 = colorA_mix_return_alpha
		set Faceless_color_red[this_1] = tuple_temp_8
		set Faceless_color_green[this_1] = tuple_temp_9
		set Faceless_color_blue[this_1] = tuple_temp_10
		set Faceless_color_alpha[this_1] = tuple_temp_11
		if Faceless_dur[this_1] <= 0. then
			set tuple_temp_12 = Colors_COLOR_WHITE_red
			set tuple_temp_13 = Colors_COLOR_WHITE_green
			set tuple_temp_14 = Colors_COLOR_WHITE_blue
			set tuple_temp_15 = Colors_COLOR_WHITE_alpha
			set Faceless_color_red[this_1] = tuple_temp_12
			set Faceless_color_green[this_1] = tuple_temp_13
			set Faceless_color_blue[this_1] = tuple_temp_14
			set Faceless_color_alpha[this_1] = tuple_temp_15
			set Faceless_mode[this_1] = 0
			set Faceless_dur[this_1] = dispatch_ConfigValue_ConfigValue_ConfigValue_get(Faceless_visibleDur[this_1])
		endif
	endif
	call unit_setVertexColor_4206(UnitEntity_actor[this_1], Faceless_color_red[this_1], Faceless_color_green[this_1], Faceless_color_blue[this_1], Faceless_color_alpha[this_1])
endfunction

function alloc_LLItrClosure_forEach_Fireball_MGWarlock takes nothing returns integer
	local integer this_1
	if LLItrClosure_firstFree == 0 then
		if LLItrClosure_maxIndex < JASS_MAX_ARRAY_SIZE then
			set LLItrClosure_maxIndex = LLItrClosure_maxIndex + 1
			set this_1 = LLItrClosure_maxIndex
			set LLItrClosure_typeId[this_1] = 990
		else
			call error("Out of memory: Could not create LLItrClosure_forEach_Fireball_MGWarlock.")
			set this_1 = 0
		endif
	else
		set LLItrClosure_firstFree = LLItrClosure_firstFree - 1
		set this_1 = LLItrClosure_nextFree[LLItrClosure_firstFree]
		set LLItrClosure_typeId[this_1] = 990
	endif
	return this_1
endfunction

function Fireball_update takes integer this_1 returns nothing
	local integer clVar
	local integer temp
	call Projectile_update(this_1)
	set temp = MGWarlock_warlocks
	set clVar = alloc_LLItrClosure_forEach_Fireball_MGWarlock()
	set this_2950[clVar] = this_1
	call dispatch_LinkedList_LinkedList_LinkedList_forEach(temp, clVar)
endfunction

function FxEntity_update takes integer this_1 returns nothing
	if vec3_inPlayable(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1]) then
		call Entity_update(this_1)
		call dispatch_Fx_Fx_Fx_setXYZ(FxEntity_fx[this_1], Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1])
	else
		call cyc_RevivePoint_terminate(18, this_1)
	endif
endfunction

function Key_update takes integer this_1 returns nothing
	local integer escaper
	local integer instanceOfTemp
	local boolean andLeft
	local real tuple_temp
	local real tuple_temp_1
	local real tuple_temp_2
	if Key_followWalkable[this_1] and Key_picked[this_1] then
		set instanceOfTemp = Serializable_typeId[ItemObject_holder[this_1]]
		set andLeft = instanceOfTemp >= 1163 and instanceOfTemp <= 1168
	else
		set andLeft = false
	endif
	if andLeft then
		set escaper = ItemObject_holder[this_1]
		if ( not Entity_flying[ItemObject_holder[this_1]]) and ( not Escaper_sliding[escaper]) and Escaper_alive[escaper] then
			set tuple_temp = dispatch_UnitEntity_Entity_UnitEntity_getPos(ItemObject_holder[this_1])
			set tuple_temp_1 = dispatch_UnitEntity_Entity_UnitEntity_getPos_return_y
			set tuple_temp_2 = dispatch_UnitEntity_Entity_UnitEntity_getPos_return_z
			set Entity_pos_x[this_1] = tuple_temp
			set Entity_pos_y[this_1] = tuple_temp_1
			set Entity_pos_z[this_1] = tuple_temp_2
		endif
	else
		call Entity_update(this_1)
	endif
endfunction

function alloc_CallbackSingle_doAfter_Minion_Minion_1623 takes nothing returns integer
	local integer this_1
	if CallbackSingle_firstFree == 0 then
		if CallbackSingle_maxIndex < JASS_MAX_ARRAY_SIZE then
			set CallbackSingle_maxIndex = CallbackSingle_maxIndex + 1
			set this_1 = CallbackSingle_maxIndex
			set CallbackSingle_typeId[this_1] = 696
		else
			call error("Out of memory: Could not create CallbackSingle_doAfter_Minion_Minion.")
			set this_1 = 0
		endif
	else
		set CallbackSingle_firstFree = CallbackSingle_firstFree - 1
		set this_1 = CallbackSingle_nextFree[CallbackSingle_firstFree]
		set CallbackSingle_typeId[this_1] = 696
	endif
	return this_1
endfunction

function alloc_CallbackSingle_doAfter_Minion_Minion_1624 takes nothing returns integer
	local integer this_1
	if CallbackSingle_firstFree == 0 then
		if CallbackSingle_maxIndex < JASS_MAX_ARRAY_SIZE then
			set CallbackSingle_maxIndex = CallbackSingle_maxIndex + 1
			set this_1 = CallbackSingle_maxIndex
			set CallbackSingle_typeId[this_1] = 697
		else
			call error("Out of memory: Could not create CallbackSingle_doAfter_Minion_Minion.")
			set this_1 = 0
		endif
	else
		set CallbackSingle_firstFree = CallbackSingle_firstFree - 1
		set this_1 = CallbackSingle_nextFree[CallbackSingle_firstFree]
		set CallbackSingle_typeId[this_1] = 697
	endif
	return this_1
endfunction

function Minion_attack takes integer this_1 returns nothing
	local integer clVar
	set Minion_state[this_1] = 2
	call unit_setAnimation(UnitEntity_actor[this_1], "attack")
	set clVar = alloc_CallbackSingle_doAfter_Minion_Minion_1624()
	call construct_CallbackSingle(clVar)
	set this_2918[clVar] = this_1
	call doAfter(0.7, clVar)
endfunction

function dispatch_Minion_Minion_Minion_attack takes integer this_1 returns nothing
	if Serializable_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling Minion.attack")
		else
			call error("Called Minion.attack on invalid object.")
		endif
	endif
	call Minion_attack(this_1)
endfunction

function Minion_update takes integer this_1 returns nothing
	local integer receiver
	local integer receiver_1
	local boolean targetInvalid
	local effect fearEffect_1
	local integer clVar
	call SetupObject_update(this_1)
	set receiver = Minion_hpBar[this_1]
	call dispatch_CustomBar_CustomBar_CustomBar_setPosXY(receiver, Entity_pos_x[this_1] - 15., Entity_pos_y[this_1] + 30.)
	set receiver_1 = receiver
	call dispatch_CustomBar_CustomBar_CustomBar_setValue(receiver_1, Minion_currentHP[this_1] / Minion_maxHp[this_1] * 100.0)
	set targetInvalid = Minion_target[this_1] == 0 or ( not Escaper_alive[Minion_target[this_1]]) or Entity_getCurrentRegion(Minion_target[this_1]) != Entity_getCurrentRegion(this_1) or vec3_distanceTo2d_4266(Entity_pos_x[Minion_target[this_1]], Entity_pos_y[Minion_target[this_1]], Entity_pos_z[Minion_target[this_1]], Minion_spawnPoint_x[this_1], Minion_spawnPoint_y[this_1]) > Minion_FOLLOW_RANGE
	if targetInvalid then
		if Minion_state[this_1] == 2 or Minion_state[this_1] == 1 then
			set Minion_state[this_1] = 3
			set fearEffect_1 = widget_addEffect(UnitEntity_actor[this_1], Abilities_creepSleepTarget, "overhead")
			set Minion_target[this_1] = 0
			call unit_issuePointOrder(SetupObject_setup[this_1], "move", Minion_spawnPoint_x[this_1], Minion_spawnPoint_y[this_1])
			set clVar = alloc_CallbackSingle_doAfter_Minion_Minion_1623()
			call construct_CallbackSingle(clVar)
			set fearEffect[clVar] = fearEffect_1
			set this_2917[clVar] = this_1
			call doAfter(4., clVar)
		elseif  not (Minion_state[this_1] == 3) then
			set Minion_state[this_1] = 0
			call dispatch_Minion_Minion_Minion_selectTarget(this_1)
		endif
	else
		if Minion_state[this_1] == 2 then
			call unit_setFacing(UnitEntity_actor[this_1], vec3_angleTo2d_4263(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1], Entity_pos_x[Minion_target[this_1]], Entity_pos_y[Minion_target[this_1]], Entity_pos_z[Minion_target[this_1]]))
		endif
		if ( not (Minion_state[this_1] == 2)) and vec3_distanceTo(Entity_pos_x[Minion_target[this_1]], Entity_pos_y[Minion_target[this_1]], Entity_pos_z[Minion_target[this_1]], Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1]) < Minion_ATTACK_DISTANCE then
			call dispatch_Minion_Minion_Minion_attack(this_1)
		elseif  not (Minion_state[this_1] == 2) then
			call unit_issuePointOrder(SetupObject_setup[this_1], "move", vec3_toVec2(Entity_pos_x[Minion_target[this_1]], Entity_pos_y[Minion_target[this_1]], Entity_pos_z[Minion_target[this_1]]), vec3_toVec2_return_y)
		endif
	endif
endfunction

function OrbProjectile_update takes integer this_1 returns nothing
	call Projectile_update(this_1)
	if ( not Entity_done[this_1]) and OrbProjectile_rdata[this_1] != Entity_setCurrentRegion(this_1) then
		call dispatch_Escaper_Escaper_Escaper_kill(OrbProjectile_e[this_1], 0)
		call dispatch_Projectile_Projectile_Projectile_terminate(this_1)
	endif
endfunction

function Pointer_update takes integer this_1 returns nothing
	local unit receiver
	local unit receiver_1
	local real tuple_temp
	local real tuple_temp_1
	if Pointer_turning[this_1] then
		set tuple_temp = angle_op_plus(Pointer_angl_radians[this_1], real_asAngleDegrees(Pointer_turnspeed[this_1]))
		set Pointer_angl_radians[this_1] = tuple_temp
		set tuple_temp_1 = real_asAngleDegrees(ModuloReal(angle_degrees(Pointer_angl_radians[this_1]), 360.))
		set Pointer_angl_radians[this_1] = tuple_temp_1
		set receiver = UnitEntity_actor[this_1]
		call unit_setXY(receiver, unit_getPos(SetupObject_setup[this_1]), unit_getPos_return_y)
		set receiver_1 = receiver
		call unit_setFacing(receiver_1, Pointer_angl_radians[this_1])
	else
		call SetupObject_update(this_1)
	endif
endfunction

function Fx_getColor takes integer this_1 returns integer
	set Fx_getColor_return_red = Fx_col_red[this_1]
	set Fx_getColor_return_green = Fx_col_green[this_1]
	set Fx_getColor_return_blue = Fx_col_blue[this_1]
	set Fx_getColor_return_alpha = Fx_col_alpha[this_1]
	return Fx_getColor_return_red
endfunction

function dispatch_Fx_Fx_Fx_getColor takes integer this_1 returns integer
	local integer Fx_Fx_getColor_result_red
	local integer Fx_Fx_getColor_result_green
	local integer Fx_Fx_getColor_result_blue
	local integer Fx_Fx_getColor_result_alpha
	local integer tuple_temp
	local integer tuple_temp_1
	local integer tuple_temp_2
	local integer tuple_temp_3
	if Fx_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling Fx.getColor")
		else
			call error("Called Fx.getColor on invalid object.")
		endif
	endif
	set tuple_temp = Fx_getColor(this_1)
	set tuple_temp_1 = Fx_getColor_return_green
	set tuple_temp_2 = Fx_getColor_return_blue
	set tuple_temp_3 = Fx_getColor_return_alpha
	set Fx_Fx_getColor_result_red = tuple_temp
	set Fx_Fx_getColor_result_green = tuple_temp_1
	set Fx_Fx_getColor_result_blue = tuple_temp_2
	set Fx_Fx_getColor_result_alpha = tuple_temp_3
	set dispatch_Fx_Fx_Fx_getColor_return_red = Fx_Fx_getColor_result_red
	set dispatch_Fx_Fx_Fx_getColor_return_green = Fx_Fx_getColor_result_green
	set dispatch_Fx_Fx_Fx_getColor_return_blue = Fx_Fx_getColor_result_blue
	set dispatch_Fx_Fx_Fx_getColor_return_alpha = Fx_Fx_getColor_result_alpha
	return dispatch_Fx_Fx_Fx_getColor_return_red
endfunction

function Portal_update takes integer this_1 returns nothing
	if Portal_destiny_x[this_1] != Vectors_ZERO2_x or Portal_destiny_y[this_1] != Vectors_ZERO2_y and dispatch_Fx_Fx_Fx_getColor(FxEntity_fx[this_1]) != Colors_COLOR_WHITE_red or dispatch_Fx_Fx_Fx_getColor_return_green != Colors_COLOR_WHITE_green or dispatch_Fx_Fx_Fx_getColor_return_blue != Colors_COLOR_WHITE_blue or dispatch_Fx_Fx_Fx_getColor_return_alpha != Colors_COLOR_WHITE_alpha then
		set Portal_lerpy[this_1] = real_lerp(Portal_lerpy[this_1], 1.05, 0.045)
		call dispatch_Fx_Fx_Fx_setColor(FxEntity_fx[this_1], colorA_mix(145, 145, 145, 145, Colors_COLOR_WHITE_red, Colors_COLOR_WHITE_green, Colors_COLOR_WHITE_blue, Colors_COLOR_WHITE_alpha, Portal_lerpy[this_1]), colorA_mix_return_green, colorA_mix_return_blue, colorA_mix_return_alpha)
	else
		call dispatch_Entity_Entity_Entity_DupletListModule_deactivate(this_1)
	endif
endfunction

function Powernode_getBounceVec takes integer this_1, real vel3_x, real vel3_y, real vel3_z, real nor2_x, real nor2_y, real bounceFactor returns real
	local real tuple_temp = vec2_toVec3(nor2_x, nor2_y)
	local real tuple_temp_1 = vec2_toVec3_return_y
	local real tuple_temp_2 = vec2_toVec3_return_z
	local real nor3_x = tuple_temp
	local real nor3_y = tuple_temp_1
	local real nor3_z = tuple_temp_2
	local real dotProduct = vec3_dot(vel3_x, vel3_y, vel3_z, nor3_x, nor3_y, nor3_z)
	local real tuple_temp_3 = vec3_op_minus(vel3_x, vel3_y, vel3_z, real_op_mult_3965(2. * dotProduct, nor3_x, nor3_y, nor3_z), real_op_mult_return_y_2603, real_op_mult_return_z)
	local real tuple_temp_4 = vec3_op_minus_return_y
	local real tuple_temp_5 = vec3_op_minus_return_z
	local real reflection_x = tuple_temp_3
	local real reflection_y = tuple_temp_4
	local real reflection_z = tuple_temp_5
	local real tuple_temp_6 = vec3_op_mult(reflection_x, reflection_y, reflection_z, bounceFactor)
	local real tuple_temp_7 = vec3_op_mult_return_y
	local real tuple_temp_8 = vec3_op_mult_return_z
	set reflection_x = tuple_temp_6
	set reflection_y = tuple_temp_7
	set reflection_z = tuple_temp_8
	set Powernode_getBounceVec_return_x = reflection_x
	set Powernode_getBounceVec_return_y = reflection_y
	set Powernode_getBounceVec_return_z = reflection_z
	return Powernode_getBounceVec_return_x
endfunction

function dispatch_Powernode_Powernode_Powernode_getBounceVec takes integer this_1, real vel3_x, real vel3_y, real vel3_z, real nor2_x, real nor2_y, real bounceFactor returns real
	local real Powernode_Powernode_getBounceVec_result_x
	local real Powernode_Powernode_getBounceVec_result_y
	local real Powernode_Powernode_getBounceVec_result_z
	local real tuple_temp
	local real tuple_temp_1
	local real tuple_temp_2
	if Serializable_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling Powernode.getBounceVec")
		else
			call error("Called Powernode.getBounceVec on invalid object.")
		endif
	endif
	set tuple_temp = Powernode_getBounceVec(this_1, vel3_x, vel3_y, vel3_z, nor2_x, nor2_y, bounceFactor)
	set tuple_temp_1 = Powernode_getBounceVec_return_y
	set tuple_temp_2 = Powernode_getBounceVec_return_z
	set Powernode_Powernode_getBounceVec_result_x = tuple_temp
	set Powernode_Powernode_getBounceVec_result_y = tuple_temp_1
	set Powernode_Powernode_getBounceVec_result_z = tuple_temp_2
	set dispatch_Powernode_Powernode_Powernode_getBounceVec_return_x = Powernode_Powernode_getBounceVec_result_x
	set dispatch_Powernode_Powernode_Powernode_getBounceVec_return_y = Powernode_Powernode_getBounceVec_result_y
	set dispatch_Powernode_Powernode_Powernode_getBounceVec_return_z = Powernode_Powernode_getBounceVec_result_z
	return dispatch_Powernode_Powernode_Powernode_getBounceVec_return_x
endfunction

function Powernode_calBounceDiode takes integer this_1, real lpos_x, real lpos_y, real lpos_z, integer e_1, real bounceFactor returns nothing
	local real dx = lpos_x - Entity_pos_x[e_1]
	local real dy = lpos_y - Entity_pos_y[e_1]
	local real tuple_temp = vec2_toVec3(vec2_norm( - dy, dx), vec2_norm_return_y)
	local real tuple_temp_1 = vec2_toVec3_return_y
	local real tuple_temp_2 = vec2_toVec3_return_z
	local real normal_x = tuple_temp
	local real normal_y = tuple_temp_1
	local real normal_z = tuple_temp_2
	local real tuple_temp_3 = vec3_op_mult(dispatch_Powernode_Powernode_Powernode_getBounceVec(this_1, normal_x, normal_y, normal_z, vec3_toVec2(normal_x, normal_y, normal_z), vec3_toVec2_return_y,  - bounceFactor), dispatch_Powernode_Powernode_Powernode_getBounceVec_return_y, dispatch_Powernode_Powernode_Powernode_getBounceVec_return_z, 3)
	local real tuple_temp_4 = vec3_op_mult_return_y
	local real tuple_temp_5 = vec3_op_mult_return_z
	local real b_x = tuple_temp_3
	local real b_y = tuple_temp_4
	local real b_z = tuple_temp_5
	local real tuple_temp_6
	local real tuple_temp_7
	call dispatch_UnitEntity_Entity_UnitEntity_setPos(e_1, vec3_op_plus(Entity_pos_x[e_1], Entity_pos_y[e_1], Entity_pos_z[e_1], b_x, b_y, b_z), vec3_op_plus_return_y, vec3_op_plus_return_z)
	call dispatch_Entity_Entity_Entity_setVel(e_1, b_x, b_y, b_z)
	set tuple_temp_6 = Vectors_ZERO2_x
	set tuple_temp_7 = Vectors_ZERO2_y
	set Escaper_slideVelocity_x[e_1] = tuple_temp_6
	set Escaper_slideVelocity_y[e_1] = tuple_temp_7
endfunction

function dispatch_Powernode_Powernode_Powernode_calBounceDiode takes integer this_1, real lpos_x, real lpos_y, real lpos_z, integer e_1, real bounceFactor returns nothing
	if Serializable_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling Powernode.calBounceDiode")
		else
			call error("Called Powernode.calBounceDiode on invalid object.")
		endif
	endif
	call Powernode_calBounceDiode(this_1, lpos_x, lpos_y, lpos_z, e_1, bounceFactor)
endfunction

function calculateNormal takes real pointA_x, real pointA_y, real pointB_x, real pointB_y, real pointC_x, real pointC_y returns real
	local real tuple_temp = vec2_op_minus(pointB_x, pointB_y, pointA_x, pointA_y)
	local real tuple_temp_1 = vec2_op_minus_return_y
	local real vectorAB_x = tuple_temp
	local real vectorAB_y = tuple_temp_1
	local real tuple_temp_2 = vec2_op_minus(pointC_x, pointC_y, pointA_x, pointA_y)
	local real tuple_temp_3 = vec2_op_minus_return_y
	local real vectorAC_x = tuple_temp_2
	local real vectorAC_y = tuple_temp_3
	local real crossProductZ = vectorAB_x * vectorAC_y - vectorAB_y * vectorAC_x
	local real normal_x
	local real normal_y
	local real tuple_temp_4
	local real tuple_temp_5
	local real tuple_temp_6
	local real tuple_temp_7
	if crossProductZ > 0. then
		set tuple_temp_4 =  - vectorAB_y
		set tuple_temp_5 = vectorAB_x
		set normal_x = tuple_temp_4
		set normal_y = tuple_temp_5
	else
		set tuple_temp_6 = vectorAB_y
		set tuple_temp_7 =  - vectorAB_x
		set normal_x = tuple_temp_6
		set normal_y = tuple_temp_7
	endif
	set calculateNormal_return_x = vec2_norm(normal_x, normal_y)
	set calculateNormal_return_y = vec2_norm_return_y
	return calculateNormal_return_x
endfunction

function real_op_mult takes real this_1, real vec_x, real vec_y returns real
	set real_op_mult_return_x = vec_x * this_1
	set real_op_mult_return_y = vec_y * this_1
	return real_op_mult_return_x
endfunction

function vec2_dot takes real this_x, real this_y, real v_x, real v_y returns real
	return this_x * v_x + this_y * v_y
endfunction

function reflectVelocity takes real velocity_x, real velocity_y, real normal_x, real normal_y, real reboundFactor returns real
	local real dotProduct = vec2_dot(velocity_x, velocity_y, normal_x, normal_y)
	local real tuple_temp = vec2_op_minus(velocity_x, velocity_y, real_op_mult(2. * dotProduct, normal_x, normal_y), real_op_mult_return_y)
	local real tuple_temp_1 = vec2_op_minus_return_y
	local real reflection_x = tuple_temp
	local real reflection_y = tuple_temp_1
	local real tuple_temp_2 = vec2_op_mult(reflection_x, reflection_y, reboundFactor)
	local real tuple_temp_3 = vec2_op_mult_return_y
	local real reflectedVelocity_x = tuple_temp_2
	local real reflectedVelocity_y = tuple_temp_3
	set reflectVelocity_return_x = reflectedVelocity_x
	set reflectVelocity_return_y = reflectedVelocity_y
	return reflectVelocity_return_x
endfunction

function Powernode_calBounceSimple takes integer this_1, real lpos_x, real lpos_y, real lpos_z, integer e_1, real bounceFactor returns nothing
	local real tuple_temp = calculateNormal(vec3_toVec2(lpos_x, lpos_y, lpos_z), vec3_toVec2_return_y, vec3_toVec2(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1]), vec3_toVec2_return_y, vec3_toVec2(Entity_pos_x[e_1], Entity_pos_y[e_1], Entity_pos_z[e_1]), vec3_toVec2_return_y)
	local real tuple_temp_1 = calculateNormal_return_y
	local real normal_x = tuple_temp
	local real normal_y = tuple_temp_1
	local real refVel_x
	local real refVel_y
	local real temp_tuple_z
	local real temp_x
	local real temp_y
	local integer temp
	local real tuple_temp_2
	local real tuple_temp_3
	local real tuple_temp_4
	local real tuple_temp_5
	local real tuple_temp_6
	local real tuple_temp_7
	local real tuple_temp_8
	if Entity_flying[e_1] then
		set tuple_temp_2 = reflectVelocity(vec2_op_plus(vec2_op_plus(vec2_op_plus(vec3_toVec2(Entity_vel_x[e_1], Entity_vel_y[e_1], Entity_vel_z[e_1]), vec3_toVec2_return_y, Escaper_walkVel_x[e_1], Escaper_walkVel_y[e_1]), vec2_op_plus_return_y, Escaper_slideVelocity_x[e_1], Escaper_slideVelocity_y[e_1]), vec2_op_plus_return_y, Escaper_otherVel_x[e_1], Escaper_otherVel_y[e_1]), vec2_op_plus_return_y, normal_x, normal_y, bounceFactor)
		set tuple_temp_3 = reflectVelocity_return_y
		set refVel_x = tuple_temp_2
		set refVel_y = tuple_temp_3
		call dispatch_Escaper_Escaper_Escaper_setXY(e_1, vec3_op_plus_4284(vec3_op_plus_4284(Entity_pos_x[e_1], Entity_pos_y[e_1], Entity_pos_z[e_1], normal_x, normal_y), vec3_op_plus_return_y_3134, vec3_op_plus_return_z_3136, refVel_x, refVel_y), vec3_op_plus_return_y_3134, vec3_op_plus_return_z_3136)
		set temp = e_1
		set tuple_temp_4 = refVel_x
		set tuple_temp_5 = refVel_y
		set temp_x = tuple_temp_4
		set temp_y = tuple_temp_5
		call dispatch_Entity_Entity_Entity_getVel(e_1)
		set tuple_temp_6 = dispatch_Entity_Entity_Entity_getVel_return_z
		set temp_tuple_z = tuple_temp_6
		call dispatch_Entity_Entity_Entity_setVel(temp, vec2_withZ(temp_x, temp_y, temp_tuple_z), vec2_withZ_return_y, vec2_withZ_return_z)
	else
		call dispatch_Escaper_Escaper_Escaper_setXY(e_1, vec3_op_plus_4284(vec3_op_minus_4281(vec3_op_minus_4281(Entity_pos_x[e_1], Entity_pos_y[e_1], Entity_pos_z[e_1], Escaper_walkVel_x[e_1], Escaper_walkVel_y[e_1]), vec3_op_minus_return_y_3125, vec3_op_minus_return_z_3127, Escaper_slideVelocity_x[e_1], Escaper_slideVelocity_y[e_1]), vec3_op_minus_return_y_3125, vec3_op_minus_return_z_3127, vec2_op_mult(normal_x, normal_y, 2), vec2_op_mult_return_y), vec3_op_plus_return_y_3134, vec3_op_plus_return_z_3136)
	endif
	set tuple_temp_7 = Vectors_ZERO2_x
	set tuple_temp_8 = Vectors_ZERO2_y
	set Escaper_slideVelocity_x[e_1] = tuple_temp_7
	set Escaper_slideVelocity_y[e_1] = tuple_temp_8
endfunction

function dispatch_Powernode_Powernode_Powernode_calBounceSimple takes integer this_1, real lpos_x, real lpos_y, real lpos_z, integer e_1, real bounceFactor returns nothing
	if Serializable_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling Powernode.calBounceSimple")
		else
			call error("Called Powernode.calBounceSimple on invalid object.")
		endif
	endif
	call Powernode_calBounceSimple(this_1, lpos_x, lpos_y, lpos_z, e_1, bounceFactor)
endfunction

function vec2_distanceToSegmentSq takes real this_x, real this_y, real v1_x, real v1_y, real v2_x, real v2_y returns real
	local real l2 = vec2_distanceToSq(v1_x, v1_y, v2_x, v2_y)
	local real t
	if l2 == 0. then
		return vec2_distanceToSq(this_x, this_y, v1_x, v1_y)
	endif
	set t = ((this_x - v1_x) * (v2_x - v1_x) + (this_y - v1_y) * (v2_y - v1_y)) / l2
	if t < 0. then
		return vec2_distanceToSq(this_x, this_y, v1_x, v1_y)
	endif
	if t > 1. then
		return vec2_distanceToSq(this_x, this_y, v2_x, v2_y)
	endif
	return vec2_distanceToSq(this_x, this_y, v1_x + t * (v2_x - v1_x), v1_y + t * (v2_y - v1_y))
endfunction

function Powernode_update takes integer this_1 returns nothing
	local integer link
	local integer tmp
	local integer e_1
	local integer from
	local integer temp
	call SetupObject_update(this_1)
	set link = Powernode_firstLink[this_1]
	loop
		exitwhen  not (link != 0)
		if Entity_done[Link_target[link]] then
			set tmp = link
			set link = Link_next[link]
			call dispatch_Link_destroyLink(tmp)
		else
			call MoveLightning(Link_sfx[link], false, Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_x[Link_target[link]], Entity_pos_y[Link_target[link]])
			set from = dispatch_RegionData_RegionData_RegionData_getEscapers(Entity_getCurrentRegion(this_1))
			loop
				exitwhen  not LLIterator_hasNext(from)
				set e_1 = LLIterator_next(from)
				if Link_ltype[link] == 5 then
					if Escaper_orb[e_1] != 0 and vec2_distanceToSegmentSq(vec3_toVec2(Entity_pos_x[Escaper_orb[e_1]], Entity_pos_y[Escaper_orb[e_1]], Entity_pos_z[Escaper_orb[e_1]]), vec3_toVec2_return_y, vec3_toVec2(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1]), vec3_toVec2_return_y, vec3_toVec2(Entity_pos_x[Link_target[link]], Entity_pos_y[Link_target[link]], Entity_pos_z[Link_target[link]]), vec3_toVec2_return_y) < real_squared(Powernode_ACTIVATION_DIST) then
						call flashEffect(Abilities_spellBreakerAttack, Entity_pos_x[Escaper_orb[e_1]], Entity_pos_y[Escaper_orb[e_1]], Entity_pos_z[Escaper_orb[e_1]])
						call Log_debug("Orb P Terminate")
						call dispatch_Projectile_Projectile_Projectile_terminate(Escaper_orb[e_1])
					endif
				elseif Escaper_alive[e_1] and vec2_distanceToSegmentSq(vec3_toVec2(Entity_pos_x[e_1], Entity_pos_y[e_1], Entity_pos_z[e_1]), vec3_toVec2_return_y, vec3_toVec2(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1]), vec3_toVec2_return_y, vec3_toVec2(Entity_pos_x[Link_target[link]], Entity_pos_y[Link_target[link]], Entity_pos_z[Link_target[link]]), vec3_toVec2_return_y) < real_squared(Powernode_ACTIVATION_DIST) then
					if Entity_pos_z[e_1] < 24. or Link_ltype[link] == 2 or Link_ltype[link] == 3 then
						set temp = Link_ltype[link]
						if temp == 0 then
							call effect_destr(AddSpecialEffect(Powernode_KILL_EFFECT, Entity_pos_x[e_1], Entity_pos_y[e_1]))
							call dispatch_Escaper_Escaper_Escaper_kill(e_1, this_1)
						elseif temp == 1 then
							call dispatch_Powernode_Powernode_Powernode_calBounceSimple(this_1, Entity_pos_x[Link_target[link]], Entity_pos_y[Link_target[link]], Entity_pos_z[Link_target[link]], e_1, dispatch_ConfigValue_ConfigValue_ConfigValue_get(Powernode_bounciness[this_1]))
						elseif temp == 4 then
							call dispatch_Powernode_Powernode_Powernode_calBounceDiode(this_1, Entity_pos_x[Link_target[link]], Entity_pos_y[Link_target[link]], Entity_pos_z[Link_target[link]], e_1, dispatch_ConfigValue_ConfigValue_ConfigValue_get(Powernode_bounciness[this_1]))
						elseif temp == 2 then
							if Entity_pos_z[e_1] > 10. then
								call effect_destr(addEffect_1565(Abilities_dispelMagicTarget, dispatch_UnitEntity_Entity_UnitEntity_getPos(e_1), dispatch_UnitEntity_Entity_UnitEntity_getPos_return_y, dispatch_UnitEntity_Entity_UnitEntity_getPos_return_z))
								call dispatch_Powernode_Powernode_Powernode_calBounceSimple(this_1, Entity_pos_x[Link_target[link]], Entity_pos_y[Link_target[link]], Entity_pos_z[Link_target[link]], e_1, dispatch_ConfigValue_ConfigValue_ConfigValue_get(Powernode_bounciness[this_1]))
							endif
						elseif temp == 3 then
							if Entity_pos_z[e_1] > 20. then
								call effect_destr(addEffect_1565(Abilities_dispelMagicTarget, dispatch_UnitEntity_Entity_UnitEntity_getPos(e_1), dispatch_UnitEntity_Entity_UnitEntity_getPos_return_y, dispatch_UnitEntity_Entity_UnitEntity_getPos_return_z))
							endif
							call dispatch_Powernode_Powernode_Powernode_calBounceSimple(this_1, Entity_pos_x[Link_target[link]], Entity_pos_y[Link_target[link]], Entity_pos_z[Link_target[link]], e_1, dispatch_ConfigValue_ConfigValue_ConfigValue_get(Powernode_bounciness[this_1]))
						endif
					endif
				endif
			endloop
			set link = Link_next[link]
		endif
	endloop
endfunction

function ShipProjectile_update takes integer this_1 returns nothing
	local integer itr_1
	local integer rock
	local integer from
	call Projectile_update(this_1)
	if  not rect_contains(gg_rct_spaceygamearea, vec3_toVec2(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1]), vec3_toVec2_return_y) then
		call dispatch_Projectile_Projectile_Projectile_terminate(this_1)
	else
		set itr_1 = dispatch_LinkedList_LinkedList_LinkedList_staticItr(MGSpacey_rocks)
		set from = itr_1
		loop
			exitwhen  not LLIterator_hasNext(from)
			set rock = LLIterator_next(from)
			if vec3_distanceTo2dSq(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1], vec3_toVec2(Entity_pos_x[rock], Entity_pos_y[rock], Entity_pos_z[rock]), vec3_toVec2_return_y) < real_squared(21.) + SpaceRock_radiusSq[rock] then
				set SpaceRock_hp[rock] = SpaceRock_hp[rock] - 1
				if SpaceRock_hp[rock] <= 0 then
					call cyc_RevivePoint_terminate(18, rock)
					call dispatch_LLIterator_LinkedList_LLIterator_remove(itr_1)
					call player_addGold(Entity_owner[this_1], SpaceRock_level[rock] / 2)
				endif
				call flashEffect(Abilities_manaBurnTarget, dispatch_Entity_Entity_Entity_getPos(this_1), dispatch_Entity_Entity_Entity_getPos_return_y, dispatch_Entity_Entity_Entity_getPos_return_z)
				call dispatch_Projectile_Projectile_Projectile_terminate(this_1)
				exitwhen true
			endif
		endloop
	endif
endfunction

function SpaceRock_update takes integer this_1 returns nothing
	local real tuple_temp = vec3_op_plus(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1], vec3_op_mult(Entity_vel_x[this_1], Entity_vel_y[this_1], Entity_vel_z[this_1], 6.), vec3_op_mult_return_y, vec3_op_mult_return_z)
	local real tuple_temp_1 = vec3_op_plus_return_y
	local real tpos_x_1 = tuple_temp
	local real tpos_y_1 = tuple_temp_1
	local real tuple_temp_2
	local real tuple_temp_3
	local real tuple_temp_4
	local real tuple_temp_5
	local real tuple_temp_6
	local real tuple_temp_7
	local real tuple_temp_8
	local real tuple_temp_9
	local real tuple_temp_10
	local real tuple_temp_11
	local real tuple_temp_12
	local real tuple_temp_13
	local real tuple_temp_14
	local real tuple_temp_15
	local real tuple_temp_16
	if tpos_x_1 < rect_getMinX(gg_rct_spaceygamearea) then
		set Entity_vel_x[this_1] =  - Entity_vel_x[this_1]
		set tuple_temp_2 = vec3_op_mult(Entity_vel_x[this_1], Entity_vel_y[this_1], Entity_vel_z[this_1], 0.95)
		set tuple_temp_3 = vec3_op_mult_return_y
		set tuple_temp_4 = vec3_op_mult_return_z
		set Entity_vel_x[this_1] = tuple_temp_2
		set Entity_vel_y[this_1] = tuple_temp_3
		set Entity_vel_z[this_1] = tuple_temp_4
	elseif tpos_x_1 > rect_getMaxX(gg_rct_spaceygamearea) then
		set Entity_vel_x[this_1] =  - Entity_vel_x[this_1]
		set tuple_temp_5 = vec3_op_mult(Entity_vel_x[this_1], Entity_vel_y[this_1], Entity_vel_z[this_1], 0.95)
		set tuple_temp_6 = vec3_op_mult_return_y
		set tuple_temp_7 = vec3_op_mult_return_z
		set Entity_vel_x[this_1] = tuple_temp_5
		set Entity_vel_y[this_1] = tuple_temp_6
		set Entity_vel_z[this_1] = tuple_temp_7
	endif
	if tpos_y_1 < rect_getMinY(gg_rct_spaceygamearea) then
		set Entity_vel_y[this_1] =  - Entity_vel_y[this_1]
		set tuple_temp_8 = vec3_op_mult(Entity_vel_x[this_1], Entity_vel_y[this_1], Entity_vel_z[this_1], 0.95)
		set tuple_temp_9 = vec3_op_mult_return_y
		set tuple_temp_10 = vec3_op_mult_return_z
		set Entity_vel_x[this_1] = tuple_temp_8
		set Entity_vel_y[this_1] = tuple_temp_9
		set Entity_vel_z[this_1] = tuple_temp_10
	elseif tpos_y_1 > rect_getMaxY(gg_rct_spaceygamearea) then
		set Entity_vel_y[this_1] =  - Entity_vel_y[this_1]
		set tuple_temp_11 = vec3_op_mult(Entity_vel_x[this_1], Entity_vel_y[this_1], Entity_vel_z[this_1], 0.95)
		set tuple_temp_12 = vec3_op_mult_return_y
		set tuple_temp_13 = vec3_op_mult_return_z
		set Entity_vel_x[this_1] = tuple_temp_11
		set Entity_vel_y[this_1] = tuple_temp_12
		set Entity_vel_z[this_1] = tuple_temp_13
	endif
	set tuple_temp_14 = vec3_op_plus(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1], Entity_vel_x[this_1], Entity_vel_y[this_1], Entity_vel_z[this_1])
	set tuple_temp_15 = vec3_op_plus_return_y
	set tuple_temp_16 = vec3_op_plus_return_z
	set Entity_pos_x[this_1] = tuple_temp_14
	set Entity_pos_y[this_1] = tuple_temp_15
	set Entity_pos_z[this_1] = tuple_temp_16
	call dispatch_Fx2_Fx2_Fx2_setOrientation(Fx2Entity_fx[this_1], angle_toQuat(vec2_getAngle(vec3_toVec2(Entity_vel_x[this_1], Entity_vel_y[this_1], Entity_vel_z[this_1]), vec3_toVec2_return_y), 0., 0., 1.), angle_toQuat_return_y, angle_toQuat_return_z, angle_toQuat_return_w)
	call Fx2Entity_update(this_1)
endfunction

function superformulaRadius takes real t, real a, real b, real m, real n1, real n2, real n3 returns real
	local real part1 = 1. / a * Cos(m * t / 4.)
	local real part2 = 1. / b * Sin(m * t / 4.)
	local real absPart1PowN2 = Pow(real_abs(part1), n2)
	local real absPart2PowN3 = Pow(real_abs(part2), n3)
	local real r = Pow(absPart1PowN2 + absPart2PowN3,  - (1. / n1))
	return r
endfunction

function Spinner_update takes integer this_1 returns nothing
	local real speed
	local integer node
	local real a
	local real b
	local real m
	local real n1
	local real n2
	local real n3
	local real r
	local integer tmp
	call SetupObject_update(this_1)
	set speed = dispatch_ConfigValue_ConfigValue_ConfigValue_get(Spinner_spinSpeed[this_1])
	set node = Spinner_firstNode[this_1]
	loop
		exitwhen  not (node != 0)
		if ( not Entity_done[SpinNode_obj[node]]) and UnitEntity_actor[SpinNode_obj[node]] != null then
			if Spinner_useSuperFormula[this_1] then
				set a = 1.0
				set b = 1.0
				set m = 4.0
				set n1 = 30.0
				set n2 = 15.0
				set n3 = 15.0
				set r = superformulaRadius(SpinNode_angl[node], a, b, m, n1, n2, n3)
				call dispatch_SetupObject_SetupObject_SetupObject_setXY(SpinNode_obj[node], Entity_pos_x[this_1] + r * SpinNode_dist[node] * Cos(SpinNode_angl[node]) * dispatch_ConfigValue_ConfigValue_ConfigValue_get(Spinner_cosFactor[this_1]), Entity_pos_y[this_1] + r * SpinNode_dist[node] * Sin(SpinNode_angl[node]) * dispatch_ConfigValue_ConfigValue_ConfigValue_get(Spinner_sinFactor[this_1]), 0.)
			else
				call dispatch_SetupObject_SetupObject_SetupObject_setXY(SpinNode_obj[node], Entity_pos_x[this_1] + SpinNode_dist[node] * Cos(SpinNode_angl[node]) * dispatch_ConfigValue_ConfigValue_ConfigValue_get(Spinner_cosFactor[this_1]), Entity_pos_y[this_1] + SpinNode_dist[node] * Sin(SpinNode_angl[node]) * dispatch_ConfigValue_ConfigValue_ConfigValue_get(Spinner_sinFactor[this_1]), 0.)
			endif
			if SetupObject_enabled[this_1] then
				set SpinNode_angl[node] = SpinNode_angl[node] + speed
			endif
		else
			set tmp = node
			if node == Spinner_firstNode[this_1] then
				set Spinner_firstNode[this_1] = SpinNode_next[node]
			endif
			call dispatch_SpinNode_destroySpinNode(tmp)
		endif
		set node = SpinNode_next[node]
	endloop
endfunction

function StaticSetupObject_update takes integer this_1 returns nothing
endfunction

function StrongEscaper_update takes integer this_1 returns nothing
	local integer temp_tuple_currentType
	local integer temp_tuple_unwalkableId
	local integer temp
	local boolean andLeft
	local integer tuple_temp
	local integer tuple_temp_1
	call Escaper_update(this_1)
	if StrongEscaper_invulnerable[this_1] then
		set StrongEscaper_shieldtimer[this_1] = StrongEscaper_shieldtimer[this_1] - Basics_ANIMATION_PERIOD
		if vec3_distanceTo2dSq(dispatch_UnitEntity_Entity_UnitEntity_getPos(this_1), dispatch_UnitEntity_Entity_UnitEntity_getPos_return_y, dispatch_UnitEntity_Entity_UnitEntity_getPos_return_z, StrongEscaper_shieldPos_x[this_1], StrongEscaper_shieldPos_y[this_1]) > 16 * 16 or StrongEscaper_shieldtimer[this_1] <= 0. then
			set andLeft = true
		else
			call vec3_getEBRTile(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1])
			set tuple_temp = vec3_getEBRTile_return_currentType
			set temp_tuple_currentType = tuple_temp
			set temp = temp_tuple_currentType
			call dispatch_RegionData_RegionData_RegionData_getTypeSet(Entity_getCurrentRegion(this_1))
			set tuple_temp_1 = dispatch_RegionData_RegionData_RegionData_getTypeSet_return_unwalkableId
			set temp_tuple_unwalkableId = tuple_temp_1
			set andLeft = temp == temp_tuple_unwalkableId
		endif
		if andLeft then
			if StrongEscaper_shieldtimer[this_1] > 0. then
				call createFText_2346(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1], 0., .08, "canceled!", 8.5, 2., 255, 0, 0, 255, Entity_owner[this_1])
			endif
			set StrongEscaper_shieldtimer[this_1] = 0.
			call unit_removeAbility(UnitEntity_actor[this_1], 1098282348)
			set StrongEscaper_invulnerable[this_1] = false
			call effect_destr(StrongEscaper_shieldeffect[this_1])
		endif
	endif
endfunction

function TextTagEntity_update takes integer this_1 returns nothing
	local real tuple_temp
	local real tuple_temp_1
	local real tuple_temp_2
	set Entity_vel_z[this_1] = Entity_vel_z[this_1] + Entity_gravity[this_1]
	set tuple_temp = vec3_op_plus(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1], vec3_op_mult(Entity_vel_x[this_1], Entity_vel_y[this_1], Entity_vel_z[this_1], Entity_speedFactor[this_1]), vec3_op_mult_return_y, vec3_op_mult_return_z)
	set tuple_temp_1 = vec3_op_plus_return_y
	set tuple_temp_2 = vec3_op_plus_return_z
	set Entity_pos_x[this_1] = tuple_temp
	set Entity_pos_y[this_1] = tuple_temp_1
	set Entity_pos_z[this_1] = tuple_temp_2
	call texttag_setPos(FText_tt[TextTagEntity_ftext[this_1]], Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1])
	call texttag_setColor_4081(FText_tt[TextTagEntity_ftext[this_1]], TextTagEntity_col_red[this_1], TextTagEntity_col_green[this_1], TextTagEntity_col_blue[this_1], TextTagEntity_col_alpha[this_1])
	set TextTagEntity_dur[this_1] = TextTagEntity_dur[this_1] - Basics_ANIMATION_PERIOD
	if TextTagEntity_dur[this_1] <= 0. then
		call cyc_RevivePoint_terminate(18, this_1)
	endif
endfunction

function rectangle_contains takes real this_min_x, real this_min_y, real this_max_x, real this_max_y, real point_x, real point_y returns boolean
	return point_x > this_min_x and point_x < this_max_x and point_y > this_min_y and point_y < this_max_y
endfunction

function Tracks_update takes integer this_1 returns nothing
	local integer from = dispatch_RegionData_RegionData_RegionData_getEscapers(Entity_getCurrentRegion(this_1))
	local integer escaper
	local real tuple_temp
	local real tuple_temp_1
	loop
		exitwhen  not LLIterator_hasNext(from)
		set escaper = LLIterator_next(from)
		if Entity_pos_z[escaper] < 22. and rectangle_contains(Tracks_rct_min_x[this_1], Tracks_rct_min_y[this_1], Tracks_rct_max_x[this_1], Tracks_rct_max_y[this_1], vec3_toVec2(Entity_pos_x[escaper], Entity_pos_y[escaper], Entity_pos_z[escaper]), vec3_toVec2_return_y) then
			set tuple_temp = vec2_op_plus(Escaper_otherVel_x[escaper], Escaper_otherVel_y[escaper], vec2_op_mult(Tracks_dir_x[this_1], Tracks_dir_y[this_1], dispatch_ConfigValue_ConfigValue_ConfigValue_get(Tracks_trackSpeed[this_1])), vec2_op_mult_return_y)
			set tuple_temp_1 = vec2_op_plus_return_y
			set Escaper_otherVel_x[escaper] = tuple_temp
			set Escaper_otherVel_y[escaper] = tuple_temp_1
		endif
	endloop
endfunction

function alloc_ForGroupCallback_forUnitsInRange_Trap_Trap takes nothing returns integer
	local integer this_1
	if ForGroupCallback_firstFree == 0 then
		if ForGroupCallback_maxIndex < JASS_MAX_ARRAY_SIZE then
			set ForGroupCallback_maxIndex = ForGroupCallback_maxIndex + 1
			set this_1 = ForGroupCallback_maxIndex
			set ForGroupCallback_typeId[this_1] = 866
		else
			call error("Out of memory: Could not create ForGroupCallback_forUnitsInRange_Trap_Trap.")
			set this_1 = 0
		endif
	else
		set ForGroupCallback_firstFree = ForGroupCallback_firstFree - 1
		set this_1 = ForGroupCallback_nextFree[ForGroupCallback_firstFree]
		set ForGroupCallback_typeId[this_1] = 866
	endif
	return this_1
endfunction

function Trap_update takes integer this_1 returns nothing
	local integer clVar
	local real temp_x
	local real temp_y
	local real temp
	local real tuple_temp
	local real tuple_temp_1
	if Trap_timerreal[this_1] <= 0.0 then
		call flashEffect_3282(Trap_SFX_STRINGS[Trap_sfxid[this_1]], unit_getPos(UnitEntity_actor[this_1]), unit_getPos_return_y)
		set tuple_temp = vec3_toVec2(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1])
		set tuple_temp_1 = vec3_toVec2_return_y
		set temp_x = tuple_temp
		set temp_y = tuple_temp_1
		set temp = Trap_EVENT_RADIUS
		set clVar = alloc_ForGroupCallback_forUnitsInRange_Trap_Trap()
		set this_2960[clVar] = this_1
		call forUnitsInRange(temp_x, temp_y, temp, clVar)
		set Trap_timerreal[this_1] = Trap_interval[this_1]
	else
		set Trap_timerreal[this_1] = Trap_timerreal[this_1] - Basics_ANIMATION_PERIOD
	endif
endfunction

function UnitCreator_create takes integer this_1 returns nothing
	local real tuple_temp = vec2_op_plus(vec3_toVec2(dispatch_StaticBaseObject_BaseObject_StaticBaseObject_getRallyPoint(this_1), dispatch_StaticBaseObject_BaseObject_StaticBaseObject_getRallyPoint_return_y, dispatch_StaticBaseObject_BaseObject_StaticBaseObject_getRallyPoint_return_z), vec3_toVec2_return_y, 0.001, 0.001)
	local real tuple_temp_1 = vec2_op_plus_return_y
	local real rPos_x = tuple_temp
	local real rPos_y = tuple_temp_1
	local real tuple_temp_2 = vec2_op_plus(vec3_toVec2(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1]), vec3_toVec2_return_y, 0.001, 0.001)
	local real tuple_temp_3 = vec2_op_plus_return_y
	local real cpos_x = tuple_temp_2
	local real cpos_y = tuple_temp_3
	local integer ek = 0
	local integer temp = UnitCreator_spawnUnitType[this_1]
	if temp == 1112098635 then
		set ek = new_BigKiller(cpos_x, cpos_y, Entity_owner[this_1], dispatch_StaticBaseObject_BaseObject_StaticBaseObject_getRallyAngle(this_1))
	elseif temp == 1397571916 then
		set ek = new_SmallKiller(cpos_x, cpos_y, Entity_owner[this_1], dispatch_StaticBaseObject_BaseObject_StaticBaseObject_getRallyAngle(this_1))
	elseif temp == EscaperKillers_GLAIVE_KILLER_ID then
		set ek = new_GlaiveKiller(cpos_x, cpos_y, Entity_owner[this_1], dispatch_StaticBaseObject_BaseObject_StaticBaseObject_getRallyAngle(this_1))
	elseif temp == EscaperKillers_TANK_KILLER_ID then
		set ek = new_TankKiller(cpos_x, cpos_y, Entity_owner[this_1], dispatch_StaticBaseObject_BaseObject_StaticBaseObject_getRallyAngle(this_1))
	elseif temp == EscaperKillers_BIG_RANDOM_KILLER_ID then
		set ek = new_BigRandomKiller(cpos_x, cpos_y, Entity_owner[this_1], dispatch_StaticBaseObject_BaseObject_StaticBaseObject_getRallyAngle(this_1))
	elseif temp == EscaperKillers_SMALL_RANDOM_KILLER_ID then
		set ek = new_SmallRandomKiller(cpos_x, cpos_y, Entity_owner[this_1], dispatch_StaticBaseObject_BaseObject_StaticBaseObject_getRallyAngle(this_1))
	elseif temp == Pointer_POINTER_ID then
		set ek = new_Pointer(cpos_x, cpos_y, Entity_owner[this_1], dispatch_StaticBaseObject_BaseObject_StaticBaseObject_getRallyAngle(this_1))
	elseif temp == Knockbacker_KNOCKBACKER_ID then
		set ek = new_Knockbacker_3706(cpos_x, cpos_y, Entity_owner[this_1], dispatch_StaticBaseObject_BaseObject_StaticBaseObject_getRallyAngle(this_1))
	endif
	call unit_issuePointOrder(SetupObject_setup[ek], "move", rPos_x, rPos_y)
endfunction

function dispatch_UnitCreator_Unitcreator_UnitCreator_create takes integer this_1 returns nothing
	if Serializable_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling UnitCreator.create")
		else
			call error("Called UnitCreator.create on invalid object.")
		endif
	endif
	call UnitCreator_create(this_1)
endfunction

function UnitCreator_update takes integer this_1 returns nothing
	if UnitCreator_timerreal[this_1] <= 0.0 then
		if StaticBaseObject_noRally[this_1] == null then
			call dispatch_UnitCreator_Unitcreator_UnitCreator_create(this_1)
		endif
		if UnitCreator_tmode[this_1] == 0 then
			set UnitCreator_timerreal[this_1] = UnitCreator_interval[this_1]
		elseif UnitCreator_tmode[this_1] == 1 then
			set UnitCreator_timerreal[this_1] = realFromIndex(dispatch_LinkedList_LinkedList_LinkedList_pop(UnitCreator_delays[this_1]))
			if dispatch_LinkedList_LinkedList_LinkedList_isEmpty(UnitCreator_delays[this_1]) then
				call dispatch_UnitCreator_Unitcreator_UnitCreator_refreshDelays(this_1)
			endif
		endif
	else
		set UnitCreator_timerreal[this_1] = UnitCreator_timerreal[this_1] - Basics_ANIMATION_PERIOD
	endif
endfunction

function vec2_op_plus_4250 takes real this_x, real this_y, real v_x, real v_y, real v_z returns real
	set vec2_op_plus_return_x_3077 = this_x + v_x
	set vec2_op_plus_return_y_3079 = this_y + v_y
	return vec2_op_plus_return_x_3077
endfunction

function Vortex_update takes integer this_1 returns nothing
	local integer from = dispatch_RegionData_RegionData_RegionData_getEscapers(Entity_getCurrentRegion(this_1))
	local integer e_1
	local integer temp
	local real angl_radians
	local real angl_radians_1
	local real angl_radians_2
	local real tuple_temp
	local real tuple_temp_1
	local real tuple_temp_2
	local real tuple_temp_3
	local real tuple_temp_4
	local real tuple_temp_5
	local real tuple_temp_6
	local real tuple_temp_7
	local real tuple_temp_8
	loop
		exitwhen  not LLIterator_hasNext(from)
		set e_1 = LLIterator_next(from)
		set temp = Vortex_zMode[this_1]
		if temp == 0 then
			if vec2_distanceToSq(vec3_toVec2(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1]), vec3_toVec2_return_y, vec3_toVec2(Entity_pos_x[e_1], Entity_pos_y[e_1], Entity_pos_z[e_1]), vec3_toVec2_return_y) < Vortex_radiusSq[this_1] and ( not Entity_flying[e_1]) then
				set tuple_temp = vec2_angleTo(vec3_toVec2(Entity_pos_x[e_1], Entity_pos_y[e_1], Entity_pos_z[e_1]), vec3_toVec2_return_y, vec3_toVec2(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1]), vec3_toVec2_return_y)
				set angl_radians = tuple_temp
				set tuple_temp_1 = vec2_op_plus_4250(Escaper_otherVel_x[e_1], Escaper_otherVel_y[e_1], Cos(angl_radians) * Vortex_vgravity[this_1], Sin(angl_radians) * Vortex_vgravity[this_1], 0.)
				set tuple_temp_2 = vec2_op_plus_return_y_3079
				set Escaper_otherVel_x[e_1] = tuple_temp_1
				set Escaper_otherVel_y[e_1] = tuple_temp_2
			endif
		elseif temp == 1 then
			if vec2_distanceToSq(vec3_toVec2(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1]), vec3_toVec2_return_y, vec3_toVec2(Entity_pos_x[e_1], Entity_pos_y[e_1], Entity_pos_z[e_1]), vec3_toVec2_return_y) < Vortex_radiusSq[this_1] then
				set tuple_temp_3 = vec2_angleTo(vec3_toVec2(Entity_pos_x[e_1], Entity_pos_y[e_1], Entity_pos_z[e_1]), vec3_toVec2_return_y, vec3_toVec2(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1]), vec3_toVec2_return_y)
				set angl_radians_1 = tuple_temp_3
				set tuple_temp_4 = vec2_op_plus_4250(Escaper_otherVel_x[e_1], Escaper_otherVel_y[e_1], Cos(angl_radians_1) * Vortex_vgravity[this_1], Sin(angl_radians_1) * Vortex_vgravity[this_1], 0.)
				set tuple_temp_5 = vec2_op_plus_return_y_3079
				set Escaper_otherVel_x[e_1] = tuple_temp_4
				set Escaper_otherVel_y[e_1] = tuple_temp_5
			endif
		elseif vec3_distanceToSq(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1], Entity_pos_x[e_1], Entity_pos_y[e_1], Entity_pos_z[e_1]) < Vortex_radiusSq[this_1] then
			set tuple_temp_6 = vec2_angleTo(vec3_toVec2(Entity_pos_x[e_1], Entity_pos_y[e_1], Entity_pos_z[e_1]), vec3_toVec2_return_y, vec3_toVec2(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1]), vec3_toVec2_return_y)
			set angl_radians_2 = tuple_temp_6
			set tuple_temp_7 = vec2_op_plus_4250(Escaper_otherVel_x[e_1], Escaper_otherVel_y[e_1], Cos(angl_radians_2) * Vortex_vgravity[this_1], Sin(angl_radians_2) * Vortex_vgravity[this_1], 0.)
			set tuple_temp_8 = vec2_op_plus_return_y_3079
			set Escaper_otherVel_x[e_1] = tuple_temp_7
			set Escaper_otherVel_y[e_1] = tuple_temp_8
		endif
	endloop
endfunction

function vec2_getTerrainType takes real this_x, real this_y returns integer
	return GetTerrainType(this_x, this_y)
endfunction

function Warlock_update takes integer this_1 returns nothing
	local integer receiver
	local integer receiver_1
	local real tpos_x_1
	local real tpos_y_1
	local real tuple_temp
	local real tuple_temp_1
	local real tuple_temp_2
	local real tuple_temp_3
	local real tuple_temp_4
	call UnitEntity_update(this_1)
	set tuple_temp = vec3_op_mult(Entity_vel_x[this_1], Entity_vel_y[this_1], Entity_vel_z[this_1], 0.9175)
	set tuple_temp_1 = vec3_op_mult_return_y
	set tuple_temp_2 = vec3_op_mult_return_z
	set Entity_vel_x[this_1] = tuple_temp
	set Entity_vel_y[this_1] = tuple_temp_1
	set Entity_vel_z[this_1] = tuple_temp_2
	if  not IsUnitSelected(UnitEntity_actor[this_1], Entity_owner[Warlock_mounter[this_1]]) then
		call player_selectSingle(Entity_owner[Warlock_mounter[this_1]], UnitEntity_actor[this_1])
	endif
	if vec2_getTerrainType(vec3_toVec2(dispatch_UnitEntity_Entity_UnitEntity_getPos(this_1), dispatch_UnitEntity_Entity_UnitEntity_getPos_return_y, dispatch_UnitEntity_Entity_UnitEntity_getPos_return_z), vec3_toVec2_return_y) == 1147958883 then
		set receiver = new_DummyDamage()
		call dispatch_DummyDamage_DummyDamage_DummyDamage_target(receiver, UnitEntity_actor[this_1])
		set receiver_1 = receiver
		call dispatch_DummyDamage_DummyDamage_DummyDamage_amount(receiver_1, 0.5)
		call dispatch_DummyDamage_DummyDamage_DummyDamage_apply(receiver_1, true)
		call flashEffect(Abilities_flameStrikeEmbers, dispatch_UnitEntity_Entity_UnitEntity_getPos(this_1), dispatch_UnitEntity_Entity_UnitEntity_getPos_return_y, dispatch_UnitEntity_Entity_UnitEntity_getPos_return_z)
		if  not widget_isAliveTrick(UnitEntity_actor[this_1]) then
			call dispatch_Escaper_Escaper_Escaper_kill_2854(Warlock_mounter[this_1], 0, 0)
		endif
	endif
	set tuple_temp_3 = vec3_op_plus(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1], vec3_op_mult(Entity_vel_x[this_1], Entity_vel_y[this_1], Entity_vel_z[this_1], 2.), vec3_op_mult_return_y, vec3_op_mult_return_z)
	set tuple_temp_4 = vec3_op_plus_return_y
	set tpos_x_1 = tuple_temp_3
	set tpos_y_1 = tuple_temp_4
	if tpos_x_1 < rect_getMinX(gg_rct_warlockgamearea) then
		set Entity_vel_x[this_1] =  - (0.5 * Entity_vel_x[this_1])
	elseif tpos_x_1 > rect_getMaxX(gg_rct_warlockgamearea) then
		set Entity_vel_x[this_1] =  - (0.5 * Entity_vel_x[this_1])
	endif
	if tpos_y_1 < rect_getMinY(gg_rct_warlockgamearea) then
		set Entity_vel_y[this_1] =  - (0.5 * Entity_vel_y[this_1])
	elseif tpos_y_1 > rect_getMaxY(gg_rct_warlockgamearea) then
		set Entity_vel_y[this_1] =  - (0.5 * Entity_vel_y[this_1])
	endif
endfunction

function dispatch_Entity_Entity_Entity_update takes integer this_1 returns nothing
	if Serializable_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling Entity.update")
		else
			call error("Called Entity.update on invalid object.")
		endif
	endif
	if Serializable_typeId[this_1] <= 1171 then
		if Serializable_typeId[this_1] <= 1150 then
			if Serializable_typeId[this_1] <= 1143 then
				if Serializable_typeId[this_1] <= 1140 then
					if Serializable_typeId[this_1] <= 1138 then
						if Serializable_typeId[this_1] <= 1137 then
							call Entity_update(this_1)
						else
							call Fx2Entity_update(this_1)
						endif
					elseif Serializable_typeId[this_1] <= 1139 then
						call Projectile_update(this_1)
					else
						call AirPhysicsProjectile_update(this_1)
					endif
				elseif Serializable_typeId[this_1] <= 1142 then
					if Serializable_typeId[this_1] <= 1141 then
						call BallProjectile_update(this_1)
					else
						call Boomerang_update(this_1)
					endif
				else
					call Fireball_update(this_1)
				endif
			elseif Serializable_typeId[this_1] <= 1146 then
				if Serializable_typeId[this_1] <= 1145 then
					if Serializable_typeId[this_1] <= 1144 then
						call HomingProjectile_update(this_1)
					else
						call BossMissile_update(this_1)
					endif
				else
					call OrbProjectile_update(this_1)
				endif
			elseif Serializable_typeId[this_1] <= 1148 then
				if Serializable_typeId[this_1] <= 1147 then
					call ShipProjectile_update(this_1)
				else
					call SpaceRock_update(this_1)
				endif
			else
				call FxEntity_update(this_1)
			endif
		elseif Serializable_typeId[this_1] <= 1157 then
			if Serializable_typeId[this_1] <= 1154 then
				if Serializable_typeId[this_1] <= 1153 then
					if Serializable_typeId[this_1] <= 1151 then
						call Portal_update(this_1)
					else
						call Entity_update(this_1)
					endif
				else
					call BallItem_update(this_1)
				endif
			elseif Serializable_typeId[this_1] <= 1156 then
				if Serializable_typeId[this_1] <= 1155 then
					call Boots_update(this_1)
				else
					call Entity_update(this_1)
				endif
			else
				call Key_update(this_1)
			endif
		elseif Serializable_typeId[this_1] <= 1162 then
			if Serializable_typeId[this_1] <= 1159 then
				if Serializable_typeId[this_1] <= 1158 then
					call Entity_update(this_1)
				else
					call TextTagEntity_update(this_1)
				endif
			else
				call UnitEntity_update(this_1)
			endif
		elseif Serializable_typeId[this_1] <= 1168 then
			if Serializable_typeId[this_1] <= 1167 then
				call Escaper_update(this_1)
			else
				call StrongEscaper_update(this_1)
			endif
		else
			call UnitEntity_update(this_1)
		endif
	elseif Serializable_typeId[this_1] <= 1191 then
		if Serializable_typeId[this_1] <= 1182 then
			if Serializable_typeId[this_1] <= 1174 then
				if Serializable_typeId[this_1] <= 1173 then
					if Serializable_typeId[this_1] <= 1172 then
						call SetupObject_update(this_1)
					else
						call Boss_update(this_1)
					endif
				else
					call CongaLineHead_update(this_1)
				endif
			elseif Serializable_typeId[this_1] <= 1179 then
				if Serializable_typeId[this_1] <= 1178 then
					call SetupObject_update(this_1)
				else
					call Faceless_update(this_1)
				endif
			else
				call SetupObject_update(this_1)
			endif
		elseif Serializable_typeId[this_1] <= 1188 then
			if Serializable_typeId[this_1] <= 1184 then
				if Serializable_typeId[this_1] <= 1183 then
					call Minion_update(this_1)
				else
					call Pointer_update(this_1)
				endif
			else
				call SetupObject_update(this_1)
			endif
		elseif Serializable_typeId[this_1] <= 1190 then
			if Serializable_typeId[this_1] <= 1189 then
				call Powernode_update(this_1)
			else
				call SetupObject_update(this_1)
			endif
		else
			call Spinner_update(this_1)
		endif
	elseif Serializable_typeId[this_1] <= 1211 then
		if Serializable_typeId[this_1] <= 1206 then
			if Serializable_typeId[this_1] <= 1193 then
				if Serializable_typeId[this_1] <= 1192 then
					call TerrainChanger_update(this_1)
				else
					call Spaceship_update(this_1)
				endif
			else
				call UnitEntity_update(this_1)
			endif
		elseif Serializable_typeId[this_1] <= 1208 then
			if Serializable_typeId[this_1] <= 1207 then
				call Trap_update(this_1)
			else
				call UnitCreator_update(this_1)
			endif
		else
			call UnitEntity_update(this_1)
		endif
	elseif Serializable_typeId[this_1] <= 1224 then
		if Serializable_typeId[this_1] <= 1223 then
			if Serializable_typeId[this_1] <= 1222 then
				call StaticSetupObject_update(this_1)
			else
				call UnitEntity_update(this_1)
			endif
		else
			call Tracks_update(this_1)
		endif
	elseif Serializable_typeId[this_1] <= 1226 then
		if Serializable_typeId[this_1] <= 1225 then
			call UnitEntity_update(this_1)
		else
			call Vortex_update(this_1)
		endif
	else
		call Warlock_update(this_1)
	endif
endfunction

function Iterator_reset takes integer this_1 returns nothing
	set Iterator_current[this_1] = Entity_DupletListModule_firstActive
endfunction

function dispatch_Iterator_Entity_Entity_DupletListModule_Iterator_reset takes integer this_1 returns nothing
	if Iterator_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling Iterator.reset")
		else
			call error("Called Iterator.reset on invalid object.")
		endif
	endif
	call Iterator_reset(this_1)
endfunction

function updateActiveEntities takes nothing returns nothing
	local integer e_1
	local integer from
	call dispatch_Iterator_Entity_Entity_DupletListModule_Iterator_reset(EntityManagement_activeItr)
	set from = EntityManagement_activeItr
	loop
		exitwhen  not Iterator_hasNext(from)
		set e_1 = Iterator_next(from)
		if  not Entity_done[e_1] then
			call dispatch_Entity_Entity_Entity_update(e_1)
		endif
	endloop
endfunction

function Iterator_hasNext_799 takes integer this_1 returns boolean
	return Iterator_current_1031[this_1] != 0
endfunction

function Iterator_next_806 takes integer this_1 returns integer
	local integer res = Iterator_current_1031[this_1]
	set Iterator_current_1031[this_1] = Buff_LinkedListModule_next[Iterator_current_1031[this_1]]
	return res
endfunction

function Buff_update takes integer this_1 returns nothing
	if Buff_duration[this_1] <= 0. then
		call cyc_NormalBuff_onDestroy(8, this_1, null, 0)
	else
		set Buff_duration[this_1] = Buff_duration[this_1] - Buff_BUFF_ANIM_PERIOD
	endif
endfunction

function ShieldBuff_update takes integer this_1 returns nothing
	call Buff_update(this_1)
	if ShieldBuff_blockAmount[this_1] <= 0. then
		call cyc_NormalBuff_onDestroy(8, this_1, null, 0)
	endif
endfunction

function SilenceBufff_update takes integer this_1 returns nothing
	local integer temp
	call Buff_update(this_1)
	set temp = Arcanery_expMode[SilenceBufff_arcanery[this_1]]
	if temp == 0 then
	elseif temp == 1 then
		if vec3_distanceTo2dSq(Entity_pos_x[SilenceBufff_arcanery[this_1]], Entity_pos_y[SilenceBufff_arcanery[this_1]], Entity_pos_z[SilenceBufff_arcanery[this_1]], unit_getPos(Buff_target[this_1]), unit_getPos_return_y) > SilenceBufff_distance[this_1] then
			call cyc_NormalBuff_onDestroy(8, this_1, null, 0)
		endif
	endif
endfunction

function dispatch_Buff_Buff_Buff_update takes integer this_1 returns nothing
	if Buff_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling Buff.update")
		else
			call error("Called Buff.update on invalid object.")
		endif
	endif
	if Buff_typeId[this_1] <= 650 then
		if Buff_typeId[this_1] <= 649 then
			call Buff_update(this_1)
		else
			call ShieldBuff_update(this_1)
		endif
	elseif Buff_typeId[this_1] <= 651 then
		call SilenceBufff_update(this_1)
	else
		call Buff_update(this_1)
	endif
endfunction

function Iterator_reset_810 takes integer this_1 returns nothing
	set Iterator_current_1031[this_1] = Buff_LinkedListModule_first
endfunction

function dispatch_Iterator_Buff_Buff_LinkedListModule_Iterator_reset takes integer this_1 returns nothing
	if Iterator_typeId_1047[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling Iterator.reset")
		else
			call error("Called Iterator.reset on invalid object.")
		endif
	endif
	call Iterator_reset_810(this_1)
endfunction

function updateBuffs takes nothing returns nothing
	local integer b
	local integer from
	call dispatch_Iterator_Buff_Buff_LinkedListModule_Iterator_reset(EntityManagement_buffItr)
	set from = EntityManagement_buffItr
	loop
		exitwhen  not Iterator_hasNext_799(from)
		set b = Iterator_next_806(from)
		if  not Buff_done[b] then
			call dispatch_Buff_Buff_Buff_update(b)
		endif
	endloop
endfunction

function Entity_slowUpdate takes integer this_1 returns nothing
	set Entity_idleSeconds[this_1] = Entity_idleSeconds[this_1] + 1
endfunction

function alloc_LinkedListPredicate_removeIf_Executer_Executer takes nothing returns integer
	local integer this_1
	if LinkedListPredicate_firstFree == 0 then
		if LinkedListPredicate_maxIndex < JASS_MAX_ARRAY_SIZE then
			set LinkedListPredicate_maxIndex = LinkedListPredicate_maxIndex + 1
			set this_1 = LinkedListPredicate_maxIndex
			set LinkedListPredicate_typeId[this_1] = 1002
		else
			call error("Out of memory: Could not create LinkedListPredicate_removeIf_Executer_Executer.")
			set this_1 = 0
		endif
	else
		set LinkedListPredicate_firstFree = LinkedListPredicate_firstFree - 1
		set this_1 = LinkedListPredicate_nextFree[LinkedListPredicate_firstFree]
		set LinkedListPredicate_typeId[this_1] = 1002
	endif
	return this_1
endfunction

function Executer_slowUpdate takes integer this_1 returns nothing
	local integer clVar
	local integer temp
	if Executer_eventMode[this_1] == 4 and Executer_actionMode[this_1] != 0 and Executer_ON[this_1] and ( not dispatch_LinkedList_LinkedList_LinkedList_isEmpty(Executer_entitiesOnPlate[this_1])) then
		set temp = Executer_entitiesOnPlate[this_1]
		set clVar = alloc_LinkedListPredicate_removeIf_Executer_Executer()
		set this_2955[clVar] = this_1
		call dispatch_LinkedList_LinkedList_LinkedList_removeIf(temp, clVar)
		if dispatch_LinkedList_LinkedList_LinkedList_isEmpty(Executer_entitiesOnPlate[this_1]) then
			call dispatch_Executer_Executer_Executer_negativeAction(this_1)
			set Executer_ON[this_1] = false
			if Executer_dummy[this_1] != null then
				call SetDestructableAnimation(Executer_dummy[this_1], "stand alternate")
			endif
		endif
	endif
endfunction

function LobbyTeleporter_slowUpdate takes integer this_1 returns nothing
	call Entity_slowUpdate(this_1)
	if Entity_owner[this_1] != GameConstants_STAFF_PLAYER and isBuilderPlayer(Entity_owner[this_1]) and ( not player_isIngame(Entity_owner[this_1])) then
		call cyc_RevivePoint_terminate(18, this_1)
	endif
endfunction

function Portal_slowUpdate takes integer this_1 returns nothing
	if Portal_destiny_x[this_1] != Vectors_ZERO2_x or Portal_destiny_y[this_1] != Vectors_ZERO2_y then
		call Entity_slowUpdate(this_1)
	endif
	if Entity_idleSeconds[this_1] >= Portal_duration[this_1] then
		call cyc_RevivePoint_terminate(18, this_1)
	endif
endfunction

function camerasetup_apply takes camerasetup this_1, boolean doPan, player whichPlayer, real duration returns nothing
	call CameraSetupApplyForPlayer(doPan, this_1, whichPlayer, duration)
endfunction

function Selector_slowUpdate takes integer this_1 returns nothing
	call SetCameraFieldForPlayer(PlayerData_p[Selector_pd[this_1]], CAMERA_FIELD_TARGET_DISTANCE, 1000.00, 0.50)
	call SetCameraFieldForPlayer(PlayerData_p[Selector_pd[this_1]], CAMERA_FIELD_ANGLE_OF_ATTACK, 343.00, 0.50)
	call SetCameraTargetControllerNoZForPlayer(PlayerData_p[Selector_pd[this_1]], EscaperDefinition_escaper[EscaperDefinition_LinkedListModule_first], 0., 0., false)
	call SetCameraFieldForPlayer(PlayerData_p[Selector_pd[this_1]], CAMERA_FIELD_ROTATION, 315. + 180., 0.50)
	call SetCameraFieldForPlayer(PlayerData_p[Selector_pd[this_1]], CAMERA_FIELD_ZOFFSET, 110., 0.5)
	call SetCameraFieldForPlayer(PlayerData_p[Selector_pd[this_1]], CAMERA_FIELD_FARZ, 15000.00, 0.5)
	call camerasetup_apply(gg_cam_Camera_001, true, PlayerData_p[Selector_pd[this_1]], 0.)
endfunction

function SetupObject_slowUpdate takes integer this_1 returns nothing
	set SetupObject_time[this_1] = SetupObject_time[this_1] - 1.0
	call dispatch_SetupObject_SetupObject_SetupObject_checkReposition(this_1)
endfunction

function TerrainModder_slowUpdate takes integer this_1 returns nothing
	local unit receiver
	local unit receiver_1
	call Entity_slowUpdate(this_1)
	if Entity_idleSeconds[this_1] > 20 and TerrainModder_brushsize[this_1] > 0 then
		set Entity_idleSeconds[this_1] = 0
		call dispatch_TerrainModder_TerrainModder_TerrainModder_removeAllActive(this_1)
		set receiver = UnitEntity_actor[this_1]
		call unit_removeAbility(receiver, TerrainModder_BRUSH_1_IDLE_ABILITY)
		set receiver_1 = receiver
		call unit_addAbility(receiver_1, TerrainModder_BRUSH_1_ACTIVE_ABILITY)
		set TerrainModder_brushsize[this_1] = 0
	endif
endfunction

function dispatch_Entity_Entity_Entity_slowUpdate takes integer this_1 returns nothing
	if Serializable_typeId[this_1] == 0 then
		if this_1 == 0 then
			call error("Nullpointer exception when calling Entity.slowUpdate")
		else
			call error("Called Entity.slowUpdate on invalid object.")
		endif
	endif
	if Serializable_typeId[this_1] <= 1198 then
		if Serializable_typeId[this_1] <= 1170 then
			if Serializable_typeId[this_1] <= 1151 then
				if Serializable_typeId[this_1] <= 1150 then
					call Entity_slowUpdate(this_1)
				else
					call Portal_slowUpdate(this_1)
				endif
			elseif Serializable_typeId[this_1] <= 1169 then
				call Entity_slowUpdate(this_1)
			else
				call Selector_slowUpdate(this_1)
			endif
		elseif Serializable_typeId[this_1] <= 1192 then
			if Serializable_typeId[this_1] <= 1171 then
				call Entity_slowUpdate(this_1)
			else
				call SetupObject_slowUpdate(this_1)
			endif
		else
			call Entity_slowUpdate(this_1)
		endif
	elseif Serializable_typeId[this_1] <= 1201 then
		if Serializable_typeId[this_1] <= 1200 then
			if Serializable_typeId[this_1] <= 1199 then
				call Executer_slowUpdate(this_1)
			else
				call Entity_slowUpdate(this_1)
			endif
		else
			call LobbyTeleporter_slowUpdate(this_1)
		endif
	elseif Serializable_typeId[this_1] <= 1223 then
		if Serializable_typeId[this_1] <= 1222 then
			call Entity_slowUpdate(this_1)
		else
			call TerrainModder_slowUpdate(this_1)
		endif
	else
		call Entity_slowUpdate(this_1)
	endif
endfunction

function updateInactiveEntities takes nothing returns nothing
	local integer e_1 = Entity_DupletListModule_firstInactive
	loop
		exitwhen  not (e_1 != 0)
		call dispatch_Entity_Entity_Entity_slowUpdate(e_1)
		set e_1 = Entity_DupletListModule_next[e_1]
	endloop
endfunction

function initGlobals takes nothing returns nothing
	set gg_rct_Choose = null
	set gg_rct_Region_002 = null
	set gg_rct_Region_014 = null
	set gg_rct_Region_015 = null
	set gg_rct_Region_000 = null
	set gg_rct_Region_001 = null
	set gg_rct_Region_003 = null
	set gg_rct_Region_004 = null
	set gg_rct_Region_005 = null
	set gg_rct_Region_006 = null
	set gg_rct_Region_007 = null
	set gg_rct_Region_008 = null
	set gg_rct_Region_009 = null
	set gg_rct_Region_010 = null
	set gg_rct_Region_011 = null
	set gg_rct_Region_012 = null
	set gg_rct_Region_013 = null
	set gg_rct_Region_016 = null
	set gg_rct_Region_017 = null
	set gg_rct_Region_018 = null
	set gg_rct_Region_024 = null
	set gg_rct_Region_026 = null
	set gg_rct_Start = null
	set gg_rct_Region_023 = null
	set gg_rct_coingamearea = null
	set gg_rct_spaceygamearea = null
	set gg_rct_coingamebounds = null
	set gg_rct_spaceygamebounds = null
	set gg_rct_slidegamearea = null
	set gg_rct_slidegamebounds = null
	set gg_rct_slidegamespawn = null
	set gg_rct_Region_027 = null
	set gg_rct_agargamearea = null
	set gg_rct_agargamefoodspawn = null
	set gg_rct_agargamebounds = null
	set gg_cam_Camera_001 = null
	set gg_cam_BuilderSetupCam = null
	set gg_cam_BuilderBuilderCam = null
	set gg_cam_BlackCam = null
	set gg_cam_StdCam = null
	set gg_cam_BuilderTilesCam = null
	set gg_cam_spaceycam = null
	set gg_snd_ArrangedTeamInvitation = null
	set gg_trg_Untitled_Trigger_005 = null
	set gg_unit_revp_0002 = null
	set gg_unit_arca_0050 = null
	set gg_unit_airk_0149 = null
	set gg_unit_tele_0150 = null
	set gg_unit_dor2_0011 = null
	set gg_unit_sick_0014 = null
	set gg_unit_bisk_0018 = null
	set gg_unit_bisk_0020 = null
	set gg_unit_tele_0324 = null
	set gg_unit_tele_0323 = null
	set gg_unit_revp_0322 = null
	set gg_unit_unre_0118 = null
	set gg_unit_revp_0059 = null
	set gg_unit_tele_0061 = null
	set gg_unit_fnt2_0067 = null
	set gg_unit_glve_0160 = null
	set gg_unit_bsak_0080 = null
	set gg_unit_bsak_0081 = null
	set gg_unit_revp_0085 = null
	set gg_unit_dor2_0087 = null
	set gg_unit_glve_0159 = null
	set gg_unit_glve_0158 = null
	set gg_unit_glve_0156 = null
	set gg_unit_bsak_0104 = null
	set gg_unit_sgrk_0153 = null
	set gg_unit_jump_0152 = null
	set gg_unit_jump_0151 = null
	set gg_unit_ssak_0120 = null
	set gg_unit_ssak_0121 = null
	set gg_unit_ssak_0122 = null
	set gg_unit_ssak_0123 = null
	set gg_unit_ssak_0124 = null
	set gg_unit_ssak_0125 = null
	set gg_unit_bsak_0127 = null
	set gg_unit_bsak_0128 = null
	set gg_unit_bgrk_0145 = null
	set gg_unit_dor2_0136 = null
	set gg_unit_tele_0141 = null
	set gg_unit_sick_0012 = null
	set gg_unit_sick_0013 = null
	set gg_unit_bcik_0280 = null
	set gg_unit_scik_0278 = null
	set gg_unit_scik_0277 = null
	set gg_unit_scik_0276 = null
	set gg_unit_scik_0275 = null
	set gg_unit_scik_0274 = null
	set gg_unit_scik_0273 = null
	set gg_unit_scik_0272 = null
	set gg_unit_scik_0271 = null
	set gg_unit_scik_0270 = null
	set gg_unit_scik_0269 = null
	set gg_unit_scik_0268 = null
	set gg_unit_scik_0267 = null
	set gg_unit_bcik_0266 = null
	set gg_unit_scik_0263 = null
	set gg_unit_bcik_0262 = null
	set gg_unit_scik_0261 = null
	set gg_unit_scik_0260 = null
	set gg_unit_dims_0100 = null
	set gg_unit_uncr_0117 = null
	set gg_unit_wayp_0116 = null
	set gg_unit_tele_0234 = null
	set gg_unit_dor2_0023 = null
	set gg_unit_scik_0210 = null
	set gg_unit_scik_0211 = null
	set gg_unit_scik_0213 = null
	set gg_unit_scik_0214 = null
	set gg_unit_scik_0215 = null
	set gg_unit_scik_0216 = null
	set gg_unit_scik_0217 = null
	set gg_unit_scik_0218 = null
	set gg_unit_scik_0219 = null
	set gg_unit_bcik_0220 = null
	set gg_unit_scik_0221 = null
	set gg_unit_scik_0222 = null
	set gg_unit_bcik_0225 = null
	set gg_unit_revp_0226 = null
	set gg_unit_revp_0022 = null
	set gg_unit_sick_0036 = null
	set gg_unit_wayp_0114 = null
	set gg_unit_knck_0033 = null
	set gg_unit_knck_0034 = null
	set gg_unit_tele_0044 = null
	set gg_unit_sgrk_0038 = null
	set gg_unit_sgrk_0039 = null
	set gg_unit_fnt2_0065 = null
	set gg_unit_spnr_0162 = null
	set gg_unit_knck_0053 = null
	set gg_unit_knck_0054 = null
	set gg_unit_tele_0058 = null
	set gg_unit_tele_0063 = null
	set gg_unit_tele_0115 = null
	set gg_unit_tele_0143 = null
	set gg_unit_fnt2_0074 = null
	set gg_unit_wayp_0066 = null
	set gg_unit_wayp_0068 = null
	set gg_unit_wayp_0078 = null
	set gg_unit_wayp_0099 = null
	set gg_unit_wayp_0101 = null
	set gg_unit_wayp_0102 = null
	set gg_unit_exec_0076 = null
	set gg_unit_spnr_0129 = null
	set gg_unit_spnr_0130 = null
	set gg_unit_spnr_0147 = null
	set gg_unit_spnr_0157 = null
	set gg_unit_spnr_0161 = null
	set gg_rct_warlockgamearea = null
	set gg_rct_warlockgamebounds = null
	set Serializable_firstFree = 0
	set Serializable_maxIndex = 0
	set OnCastListener_firstFree = 0
	set OnCastListener_maxIndex = 0
	set Buff_firstFree = 0
	set Buff_maxIndex = 0
	set CallbackSingle_firstFree = 0
	set CallbackSingle_maxIndex = 0
	set EventListener_firstFree = 0
	set EventListener_maxIndex = 0
	set BigNum_firstFree = 0
	set BigNum_maxIndex = 0
	set BigNum_l_firstFree = 0
	set BigNum_l_maxIndex = 0
	set BigString_firstFree = 0
	set BigString_maxIndex = 0
	set BigSubString_firstFree = 0
	set BigSubString_maxIndex = 0
	set ForGroupCallback_firstFree = 0
	set ForGroupCallback_maxIndex = 0
	set DamageListener_firstFree = 0
	set DamageListener_maxIndex = 0
	set BackIterator_firstFree = 0
	set BackIterator_maxIndex = 0
	set Iterator_firstFree_1035 = 0
	set Iterator_maxIndex_1039 = 0
	set ChunkedString_firstFree = 0
	set ChunkedString_maxIndex = 0
	set CallbackCounted_firstFree = 0
	set CallbackCounted_maxIndex = 0
	set Callback_firstFree = 0
	set CallbackPeriodic_firstFree = 0
	set CallbackPeriodic_maxIndex = 0
	set CollisionShape_firstFree = 0
	set CollisionShape_maxIndex = 0
	set CollisionWorld_firstFree = 0
	set CollisionWorld_maxIndex = 0
	set ConfigValue_firstFree = 0
	set ConfigValue_maxIndex = 0
	set CongaSegment_firstFree = 0
	set CongaSegment_maxIndex = 0
	set CustomBar_firstFree = 0
	set CustomBar_maxIndex = 0
	set DamageElement_firstFree = 0
	set DamageElement_maxIndex = 0
	set DamageInstance_firstFree = 0
	set DamageInstance_maxIndex = 0
	set DummyDamage_firstFree = 0
	set DummyDamage_maxIndex = 0
	set Encoder_firstFree = 0
	set Encoder_maxIndex = 0
	set SeqCallback_firstFree = 0
	set SeqCallback_maxIndex = 0
	set ForForceCallback_firstFree = 0
	set ForForceCallback_maxIndex = 0
	set PayloadCallback_firstFree = 0
	set PayloadCallback_maxIndex = 0
	set Iterator_firstFree = 0
	set Iterator_maxIndex = 0
	set SensorListener_firstFree = 0
	set SensorListener_maxIndex = 0
	set LinkedListPredicate_firstFree = 0
	set LinkedListPredicate_maxIndex = 0
	set FText_firstFree = 0
	set FText_maxIndex = 0
	set BackIterator_firstFree_73 = 0
	set BackIterator_maxIndex_76 = 0
	set Iterator_firstFree_1036 = 0
	set Iterator_maxIndex_1040 = 0
	set File_firstFree = 0
	set File_maxIndex = 0
	set Startmaze_firstFree = 0
	set Startmaze_maxIndex = 0
	set Fx2_firstFree = 0
	set Fx2_maxIndex = 0
	set Fx_firstFree = 0
	set Fx_maxIndex = 0
	set GlobalShop_firstFree = 0
	set GlobalShop_maxIndex = 0
	set HLIterator_firstFree = 0
	set HLIterator_maxIndex = 0
	set HLItrClosure_firstFree = 0
	set HLItrClosure_maxIndex = 0
	set HashList_firstFree = 0
	set HashList_maxIndex = 0
	set Table_firstFree = 0
	set Table_maxIndex = 0
	set JsonParser_firstFree = 0
	set JsonParser_maxIndex = 0
	set Json_firstFree = 0
	set Json_maxIndex = 0
	set Property_firstFree = 0
	set Property_maxIndex = 0
	set JukeBox_firstFree = 0
	set JukeBox_maxIndex = 0
	set JukeRequest_firstFree = 0
	set JukeRequest_maxIndex = 0
	set Music_firstFree = 0
	set Music_maxIndex = 0
	set Goo_firstFree = 0
	set Goo_maxIndex = 0
	set Comparator_firstFree = 0
	set Comparator_maxIndex = 0
	set LLBackIterator_firstFree = 0
	set LLEntry_firstFree = 0
	set LLEntry_maxIndex = 0
	set LLIterator_firstFree = 0
	set LLIterator_maxIndex = 0
	set LLItrClosure_firstFree = 0
	set LLItrClosure_maxIndex = 0
	set LinkedList_firstFree = 0
	set LinkedList_maxIndex = 0
	set AgarData_firstFree = 0
	set AgarData_maxIndex = 0
	set Minigame_firstFree = 0
	set Minigame_maxIndex = 0
	set ReviveListener_firstFree = 0
	set ReviveListener_maxIndex = 0
	set Board_firstFree = 0
	set Board_maxIndex = 0
	set IdGenerator_firstFree = 0
	set IdGenerator_maxIndex = 0
	set OrderStringFactory_firstFree = 0
	set OrderStringFactory_maxIndex = 0
	set LoadListener_firstFree = 0
	set LoadListener_maxIndex = 0
	set EscaperClsr_firstFree = 0
	set EscaperClsr_maxIndex = 0
	set EscaperDefinition_firstFree = 0
	set EscaperDefinition_maxIndex = 0
	set BackIterator_firstFree_74 = 0
	set BackIterator_maxIndex_77 = 0
	set Iterator_firstFree_1037 = 0
	set Iterator_maxIndex_1041 = 0
	set OnPlayerLeave_firstFree = 0
	set OnPlayerLeave_maxIndex = 0
	set PlayerData_firstFree = 0
	set PlayerData_maxIndex = 0
	set Link_firstFree = 0
	set Link_maxIndex = 0
	set OnEndListener_firstFree = 0
	set OnHitListener_firstFree = 0
	set FogData_firstFree = 0
	set FogData_maxIndex = 0
	set RegionData_firstFree = 0
	set RegionData_maxIndex = 0
	set RevivePod_firstFree = 0
	set RevivePod_maxIndex = 0
	set RevivePointModifier_firstFree = 0
	set RevivePointModifier_maxIndex = 0
	set BufferSyncListener_firstFree = 0
	set BufferSyncListener_maxIndex = 0
	set Delimiter_firstFree = 0
	set Delimiter_maxIndex = 0
	set Sim3DSound_firstFree = 0
	set SoundDefinition_firstFree = 0
	set SoundDefinition_maxIndex = 0
	set SoundInstance_firstFree = 0
	set SoundInstance_maxIndex = 0
	set SpinNode_firstFree = 0
	set SpinNode_maxIndex = 0
	set StringIterator_firstFree = 0
	set StringIterator_maxIndex = 0
	set StringSyncListener_firstFree = 0
	set BoolSyncListener_firstFree = 0
	set IntSyncListener_firstFree = 0
	set RealSyncListener_firstFree = 0
	set SyncData_firstFree = 0
	set SyncData_maxIndex = 0
	set TexterClsr_firstFree = 0
	set TexterClsr_maxIndex = 0
	set UnitIndex_firstFree = 0
	set UnitIndex_maxIndex = 0
	set InventoryIterator_firstFree = 0
	set InventoryIterator_maxIndex = 0
	set WeaponListener_firstFree = 0
	set WeaponListener_maxIndex = 0
	set Reference_integer__firstFree = 0
	set Reference_integer__maxIndex = 0
	set ref_function_Trig_Untitled_Trigger_005_Actions = function Trig_Untitled_Trigger_005_Actions
	set ref_function_init_Abilities = function init_Abilities
	set ref_function_init_AbilityIds = function init_AbilityIds
	set ref_function_init_Real = function init_Real
	set ref_function_init_Integer = function init_Integer
	set ref_function_init_BitSet = function init_BitSet
	set ref_function_init_Angle = function init_Angle
	set ref_function_init_Maths = function init_Maths
	set ref_function_init_String = function init_String
	set ref_function_init_Vectors = function init_Vectors
	set ref_function_init_Destructable = function init_Destructable
	set ref_function_init_Player = function init_Player
	set ref_function_init_Printing_config = function init_Printing_config
	set ref_function_init_Printing = function init_Printing
	set ref_function_init_MagicFunctions = function init_MagicFunctions
	set ref_function_init_Basics = function init_Basics
	set ref_function_init_GameTimer = function init_GameTimer
	set ref_function_init_ErrorHandling = function init_ErrorHandling
	set ref_function_init_Matrices = function init_Matrices
	set ref_function_init_Quaternion = function init_Quaternion
	set ref_function_init_Table = function init_Table
	set ref_function_init_Playercolor = function init_Playercolor
	set ref_function_init_Colors = function init_Colors
	set ref_function_init_Framehandle = function init_Framehandle
	set ref_function_init_Group = function init_Group
	set ref_function_init_Lightning = function init_Lightning
	set ref_function_init_WeatherEffects = function init_WeatherEffects
	set ref_function_init_TypeCasting = function init_TypeCasting
	set ref_function_init_HashList = function init_HashList
	set ref_function_init_EventHelper = function init_EventHelper
	set ref_function_init_ClosureForGroups = function init_ClosureForGroups
	set ref_function_init_LinkedList = function init_LinkedList
	set ref_function_init_ObjectIds = function init_ObjectIds
	set ref_function_init_TargetsAllowed = function init_TargetsAllowed
	set ref_function_init_AbilityObjEditing = function init_AbilityObjEditing
	set ref_function_init_TimerUtils = function init_TimerUtils
	set ref_function_init_RegisterEvents = function init_RegisterEvents
	set ref_function_init_ClosureTimers = function init_ClosureTimers
	set ref_function_init_UnitIds = function init_UnitIds
	set ref_function_init_MapBounds = function init_MapBounds
	set ref_function_init_Preloader = function init_Preloader
	set ref_function_init_ObjectIdGenerator = function init_ObjectIdGenerator
	set ref_function_init_Orders = function init_Orders
	set ref_function_init_OnUnitEnterLeave = function init_OnUnitEnterLeave
	set ref_function_init_UnitIndexer = function init_UnitIndexer
	set ref_function_init_ClosureEvents = function init_ClosureEvents
	set ref_function_init_TerrainUtils = function init_TerrainUtils
	set ref_function_init_PhysicsConstants = function init_PhysicsConstants
	set ref_function_init_StringUtils = function init_StringUtils
	set ref_function_init_FText = function init_FText
	set ref_function_init_Frentity = function init_Frentity
	set ref_function_init_Execute = function init_Execute
	set ref_function_init_Heightmap = function init_Heightmap
	set ref_function_init_Entity_config = function init_Entity_config
	set ref_function_init_Entity = function init_Entity
	set ref_function_init_AirPhysicsModule = function init_AirPhysicsModule
	set ref_function_init_BigString = function init_BigString
	set ref_function_init_BigNum = function init_BigNum
	set ref_function_init_Encoder = function init_Encoder
	set ref_function_init_LZW = function init_LZW
	set ref_function_init_Json = function init_Json
	set ref_function_init_SerializeIds = function init_SerializeIds
	set ref_function_init_BuilderConstants = function init_BuilderConstants
	set ref_function_init_SetupObject = function init_SetupObject
	set ref_function_init_Icons = function init_Icons
	set ref_function_init_ChannelAbilityPreset = function init_ChannelAbilityPreset
	set ref_function_init_BuffIds = function init_BuffIds
	set ref_function_init_Buildings = function init_Buildings
	set ref_function_init_Doodads = function init_Doodads
	set ref_function_init_Environment = function init_Environment
	set ref_function_init_ItemIds = function init_ItemIds
	set ref_function_init_Objects = function init_Objects
	set ref_function_init_Sounds = function init_Sounds
	set ref_function_init_Soundsets = function init_Soundsets
	set ref_function_init_Textures = function init_Textures
	set ref_function_init_UI = function init_UI
	set ref_function_init_Units = function init_Units
	set ref_function_init_AttachmentPoints = function init_AttachmentPoints
	set ref_function_init_BaseObject = function init_BaseObject
	set ref_function_init_GameConstants = function init_GameConstants
	set ref_function_init_TerrainData = function init_TerrainData
	set ref_function_init_PhysicsEntity = function init_PhysicsEntity
	set ref_function_init_RevivePointModifier = function init_RevivePointModifier
	set ref_function_init_TerrainBlocker = function init_TerrainBlocker
	set ref_function_init_Fx2Entity = function init_Fx2Entity
	set ref_function_init_GroupUtils = function init_GroupUtils
	set ref_function_init_Players = function init_Players
	set ref_function_init_JukeBox = function init_JukeBox
	set ref_function_init_EscaperObjects = function init_EscaperObjects
	set ref_function_init_Escaper = function init_Escaper
	set ref_function_init_InstantDummyCaster = function init_InstantDummyCaster
	set ref_function_init_DummyRecycler = function init_DummyRecycler
	set ref_function_init_DamageEvent = function init_DamageEvent
	set ref_function_init_Squares = function init_Squares
	set ref_function_init_Buff = function init_Buff
	set ref_function_init_Arcanery = function init_Arcanery
	set ref_function_init_Attackspeed = function init_Attackspeed
	set ref_function_init_AudioTaunts = function init_AudioTaunts
	set ref_function_init_BasicSpells = function init_BasicSpells
	set ref_function_init_Bomber = function init_Bomber
	set ref_function_init_Bombertower = function init_Bombertower
	set ref_function_init_Booster = function init_Booster
	set ref_function_init_Boots = function init_Boots
	set ref_function_init_MultiboardClass = function init_MultiboardClass
	set ref_function_init_Key = function init_Key
	set ref_function_init_Tome = function init_Tome
	set ref_function_init_Coin = function init_Coin
	set ref_function_init_Builder = function init_Builder
	set ref_function_init_FxEntity = function init_FxEntity
	set ref_function_init_EscaperSensor = function init_EscaperSensor
	set ref_function_init_EscaperKillers = function init_EscaperKillers
	set ref_function_init_ObjectTarget = function init_ObjectTarget
	set ref_function_init_TerrainChanger = function init_TerrainChanger
	set ref_function_init_Pointer = function init_Pointer
	set ref_function_init_Knockbacker = function init_Knockbacker
	set ref_function_init_Faceless = function init_Faceless
	set ref_function_init_UnitProducer = function init_UnitProducer
	set ref_function_init_EscaperClasses = function init_EscaperClasses
	set ref_function_init_Simulate3dSound = function init_Simulate3dSound
	set ref_function_init_SoundUtils = function init_SoundUtils
	set ref_function_init_PickSystem = function init_PickSystem
	set ref_function_init_PlayerData = function init_PlayerData
	set ref_function_init_BossSpellTarget = function init_BossSpellTarget
	set ref_function_init_CustomBar = function init_CustomBar
	set ref_function_init_Minion = function init_Minion
	set ref_function_init_Boss = function init_Boss
	set ref_function_init_BossDamager = function init_BossDamager
	set ref_function_init_Camerashakes = function init_Camerashakes
	set ref_function_init_ChunkedString = function init_ChunkedString
	set ref_function_init_CodeGenerator = function init_CodeGenerator
	set ref_function_init_Collision = function init_Collision
	set ref_function_init_SetupBox = function init_SetupBox
	set ref_function_init_ReviveManager = function init_ReviveManager
	set ref_function_init_Minigame = function init_Minigame
	set ref_function_init_KeyUtils = function init_KeyUtils
	set ref_function_init_MGSpacey = function init_MGSpacey
	set ref_function_init_Commands = function init_Commands
	set ref_function_init_MoveSpeed = function init_MoveSpeed
	set ref_function_init_CongaObjects = function init_CongaObjects
	set ref_function_init_DebugInfo = function init_DebugInfo
	set ref_function_init_Decoration = function init_Decoration
	set ref_function_init_Door = function init_Door
	set ref_function_init_EntityManagement = function init_EntityManagement
	set ref_function_init_TerrainModder = function init_TerrainModder
	set ref_function_init_Executer = function init_Executer
	set ref_function_init_SafetyChecks = function init_SafetyChecks
	set ref_function_init_FileIO = function init_FileIO
	set ref_function_init_Fountain = function init_Fountain
	set ref_function_init_Obstacle = function init_Obstacle
	set ref_function_init_LobbyTeleporter = function init_LobbyTeleporter
	set ref_function_init_MinigameTeleporter = function init_MinigameTeleporter
	set ref_function_init_Startmazes = function init_Startmazes
	set ref_function_init_GameInit = function init_GameInit
	set ref_function_init_GameStatus = function init_GameStatus
	set ref_function_init_GlobalShop = function init_GlobalShop
	set ref_function_init_HashSet = function init_HashSet
	set ref_function_init_Revivepoint = function init_Revivepoint
	set ref_function_init_Vortex = function init_Vortex
	set ref_function_init_Powernode = function init_Powernode
	set ref_function_init_Tracks = function init_Tracks
	set ref_function_init_Jumper = function init_Jumper
	set ref_function_init_Teleporter = function init_Teleporter
	set ref_function_init_WaypointObjects = function init_WaypointObjects
	set ref_function_init_Waypoint = function init_Waypoint
	set ref_function_init_SpinnerObjects = function init_SpinnerObjects
	set ref_function_init_Unitcreator = function init_Unitcreator
	set ref_function_init_Trap = function init_Trap
	set ref_function_init_ObstacleObjects = function init_ObstacleObjects
	set ref_function_init_MGWarlock = function init_MGWarlock
	set ref_function_init_RegionData = function init_RegionData
	set ref_function_init_Tree = function init_Tree
	set ref_function_init_Texter = function init_Texter
	set ref_function_init_UnitRemover = function init_UnitRemover
	set ref_function_init_PedestalObjects = function init_PedestalObjects
	set ref_function_init_JsonParser = function init_JsonParser
	set ref_function_init_SyncSimple = function init_SyncSimple
	set ref_function_init_SaveLoadData = function init_SaveLoadData
	set ref_function_init_Pedestal = function init_Pedestal
	set ref_function_init_InstantBuild = function init_InstantBuild
	set ref_function_init_Invisible = function init_Invisible
	set ref_function_init_MGAgar = function init_MGAgar
	set ref_function_init_MGRandKill = function init_MGRandKill
	set ref_function_init_MGSlide = function init_MGSlide
	set ref_function_init_Questlog = function init_Questlog
	set ref_function_init_Remove = function init_Remove
	set ref_function_init_Startmaze = function init_Startmaze
	set ref_function_init_WeaponTypes = function init_WeaponTypes
	set ref_function_init_Weapon = function init_Weapon
	set ref_function_onLoop = function onLoop
	set ref_function_loopPerPlayer = function loopPerPlayer
	set ref_function_code__onUnitIndex_ClosureEvents = function code__onUnitIndex_ClosureEvents
	set ref_function_code__onUnitDeindex_ClosureEvents = function code__onUnitDeindex_ClosureEvents
	set ref_function_EventListener_generalEventCallback = function EventListener_generalEventCallback
	set ref_function_code__Filter_ClosureForGroups = function code__Filter_ClosureForGroups
	set ref_function_code__addAction_DebugInfo = function code__addAction_DebugInfo
	set ref_function_code__startPeriodic_DebugInfo = function code__startPeriodic_DebugInfo
	set ref_function_updateActiveEntities = function updateActiveEntities
	set ref_function_updateBuffs = function updateBuffs
	set ref_function_updateInactiveEntities = function updateInactiveEntities
	set ref_function_code__onUnitDeindex_EntityManagement = function code__onUnitDeindex_EntityManagement
	set ref_function_correctRegion = function correctRegion
	set ref_function_executeCurrentCallback = function executeCurrentCallback
	set ref_function_code__startPeriodic_GameTimer = function code__startPeriodic_GameTimer
	set ref_function_code__addAction_RegionData = function code__addAction_RegionData
	set ref_function_code__registerPlayerUnitEvent_RegisterEvents = function code__registerPlayerUnitEvent_RegisterEvents
	set ref_function_code__startPeriodic_ReviveManager = function code__startPeriodic_ReviveManager
	set ref_function_code__start_SeqWorker = function code__start_SeqWorker
	set ref_function_code__start_SeqWorker_2675 = function code__start_SeqWorker_2101
	set ref_function_code__registerPlayerUnitEvent_SetupBox = function code__registerPlayerUnitEvent_SetupBox
	set ref_function_code__Condition_Startmaze = function code__Condition_Startmaze
	set ref_function_code__addAction_SyncSimple = function code__addAction_SyncSimple
	set ref_function_code__EnumItemsInRect_TerrainUtils = function code__EnumItemsInRect_TerrainUtils
	set ref_function_code__onEnter_UnitIndexer = function code__onEnter_UnitIndexer
	set ref_function_code__onLeave_UnitIndexer = function code__onLeave_UnitIndexer
	set ref_function_Arcanery_onEnterEv = function Arcanery_onEnterEv
	set ref_function_code__Arcanery_Arcanery = function code__Arcanery_Arcanery
	set ref_function_code__Arcanery_Arcanery_2635 = function code__Arcanery_Arcanery_2061
	set ref_function_StaticBaseObject_isProper = function StaticBaseObject_isProper
	set ref_function_Bomber_orderSetup = function Bomber_orderSetup
	set ref_function_Booster_orderMove = function Booster_orderMove
	set ref_function_BossDamager_onInRange = function BossDamager_onInRange
	set ref_function_code__addAction_nullTimer_ClosureEvents = function code__addAction_nullTimer_ClosureEvents
	set ref_function_code__addAction_nullTimer_ClosureEvents_2658 = function code__addAction_nullTimer_ClosureEvents_2084
	set ref_function_code__addAction_nullTimer_ClosureEvents_2659 = function code__addAction_nullTimer_ClosureEvents_2085
	set ref_function_code__registerPlayerUnitEvent_nullTimer_ClosureEvents = function code__registerPlayerUnitEvent_nullTimer_ClosureEvents
	set ref_function_CallbackCounted_staticCallback = function CallbackCounted_staticCallback
	set ref_function_CallbackPeriodic_staticCallback = function CallbackPeriodic_staticCallback
	set ref_function_code__start_CallbackSingle_ClosureTimers = function code__start_CallbackSingle_ClosureTimers
	set ref_function_CustomBar_fadeOutCallback = function CustomBar_fadeOutCallback
	set ref_function_Door_keyopen = function Door_keyopen
	set ref_function_code__addAction_Sensor_Portal_EscaperClasses = function code__addAction_Sensor_Portal_EscaperClasses
	set ref_function_code__addAction_Sensor_EscaperSensorSetup_EscaperSensor = function code__addAction_Sensor_EscaperSensorSetup_EscaperSensor
	set ref_function_code__StaticEscaperSensorSetup_EscaperSensor = function code__StaticEscaperSensorSetup_EscaperSensor
	set ref_function_code__StaticEscaperSensorSetup_EscaperSensor_2648 = function code__StaticEscaperSensorSetup_EscaperSensor_2074
	set ref_function_code__Condition_addCondition_Executer_Executer = function code__Condition_addCondition_Executer_Executer
	set ref_function_code__Condition_addCondition_Executer_Executer_2638 = function code__Condition_addCondition_Executer_Executer_2064
	set ref_function_code__Executer_Executer = function code__Executer_Executer
	set ref_function_code__Executer_Executer_2641 = function code__Executer_Executer_2067
	set ref_function_Fountain_cure = function Fountain_cure_1
	set ref_function_Jumper_onInRange = function Jumper_onInRange
	set ref_function_LobbyTeleporter_checkVote = function LobbyTeleporter_checkVote
	set ref_function_code__Filter_GroupEnumUnitsInRect_MGRandKill_MGRandKill = function code__Filter_GroupEnumUnitsInRect_MGRandKill_MGRandKill
	set ref_function_MinigameTeleporter_checkVote = function MinigameTeleporter_checkVote
	set ref_function_code__start_Minigame_Minigame = function code__start_Minigame_Minigame
	set ref_function_code__Filter_registerEnterRegion_nullTimer_OnUnitEnterLeave = function code__Filter_registerEnterRegion_nullTimer_OnUnitEnterLeave
	set ref_function_code__registerPlayerUnitEvent_nullTimer_OnUnitEnterLeave = function code__registerPlayerUnitEvent_nullTimer_OnUnitEnterLeave
	set ref_function_code__ForGroup_nullTimer_OnUnitEnterLeave = function code__ForGroup_nullTimer_OnUnitEnterLeave
	set ref_function_code__addAction_RegionData_RegionData = function code__addAction_RegionData_RegionData
	set ref_function_RevivePoint_onReach = function RevivePoint_onReach
	set ref_function_code__Filter_GroupEnumUnitsInRect_Startmaze_Startmaze = function code__Filter_GroupEnumUnitsInRect_Startmaze_Startmaze
	set ref_function_killD = function killD
	set ref_function_deleteKeys = function deleteKeys
	set ref_function_correctKeys = function correctKeys
	set ref_function_Teleporter_teleport = function Teleporter_teleport
	set ref_function_Texter_onStep = function Texter_onStep
	set ref_function_Trap_onStep = function Trap_onStep
	set ref_function_UnitRemover_removeUnit = function UnitRemover_removeUnit
	set ref_function_Waypoint_onInRange = function Waypoint_onInRange
	set ref_function_code__Waypoint_Waypoint = function code__Waypoint_Waypoint
	set ref_function_code__Waypoint_Waypoint_2650 = function code__Waypoint_Waypoint_2076
endfunction

function main takes nothing returns nothing
	local trigger initTrig
	call initGlobals()
	call initCompiletimeState()
	call SetCameraBounds(( - 7424.0) + GetCameraMargin(CAMERA_MARGIN_LEFT), ( - 7680.0) + GetCameraMargin(CAMERA_MARGIN_BOTTOM), 7424.0 - GetCameraMargin(CAMERA_MARGIN_RIGHT), 7936.0 - GetCameraMargin(CAMERA_MARGIN_TOP), ( - 7424.0) + GetCameraMargin(CAMERA_MARGIN_LEFT), 7936.0 - GetCameraMargin(CAMERA_MARGIN_TOP), 7424.0 - GetCameraMargin(CAMERA_MARGIN_RIGHT), ( - 7680.0) + GetCameraMargin(CAMERA_MARGIN_BOTTOM))
	call SetDayNightModels("Environment\\DNC\\DNCLordaeron\\DNCLordaeronTerrain\\DNCLordaeronTerrain.mdl", "Environment\\DNC\\DNCLordaeron\\DNCLordaeronUnit\\DNCLordaeronUnit.mdl")
	call NewSoundEnvironment("Default")
	call SetAmbientDaySound("IceCrownDay")
	call SetAmbientNightSound("IceCrownNight")
	call SetMapMusic("Music", true, 0)
	call InitSounds()
	call CreateRegions()
	call CreateCameras()
	call CreateAllItems()
	call CreateAllUnits()
	call InitBlizzard()
	call InitGlobals()
	call InitCustomTriggers()
	set initTrig = CreateTrigger()
	call TriggerAddCondition(initTrig, Condition(ref_function_init_Abilities))
	if  not TriggerEvaluate(initTrig) then
		call error("Could not initialize package Abilities.")
	endif
	call TriggerClearConditions(initTrig)
	call TriggerAddCondition(initTrig, Condition(ref_function_init_AbilityIds))
	if  not TriggerEvaluate(initTrig) then
		call error("Could not initialize package AbilityIds.")
	endif
	call TriggerClearConditions(initTrig)
	call TriggerAddCondition(initTrig, Condition(ref_function_init_Real))
	if  not TriggerEvaluate(initTrig) then
		call error("Could not initialize package Real.")
	endif
	call TriggerClearConditions(initTrig)
	call TriggerAddCondition(initTrig, Condition(ref_function_init_Integer))
	if  not TriggerEvaluate(initTrig) then
		call error("Could not initialize package Integer.")
	endif
	call TriggerClearConditions(initTrig)
	call TriggerAddCondition(initTrig, Condition(ref_function_init_BitSet))
	if  not TriggerEvaluate(initTrig) then
		call error("Could not initialize package BitSet.")
	endif
	call TriggerClearConditions(initTrig)
	call TriggerAddCondition(initTrig, Condition(ref_function_init_Angle))
	if  not TriggerEvaluate(initTrig) then
		call error("Could not initialize package Angle.")
	endif
	call TriggerClearConditions(initTrig)
	call TriggerAddCondition(initTrig, Condition(ref_function_init_Maths))
	if  not TriggerEvaluate(initTrig) then
		call error("Could not initialize package Maths.")
	endif
	call TriggerClearConditions(initTrig)
	call TriggerAddCondition(initTrig, Condition(ref_function_init_String))
	if  not TriggerEvaluate(initTrig) then
		call error("Could not initialize package String.")
	endif
	call TriggerClearConditions(initTrig)
	call TriggerAddCondition(initTrig, Condition(ref_function_init_Vectors))
	if  not TriggerEvaluate(initTrig) then
		call error("Could not initialize package Vectors.")
	endif
	call TriggerClearConditions(initTrig)
	call TriggerAddCondition(initTrig, Condition(ref_function_init_Destructable))
	if  not TriggerEvaluate(initTrig) then
		call error("Could not initialize package Destructable.")
	endif
	call TriggerClearConditions(initTrig)
	call TriggerAddCondition(initTrig, Condition(ref_function_init_Player))
	if  not TriggerEvaluate(initTrig) then
		call error("Could not initialize package Player.")
	endif
	call TriggerClearConditions(initTrig)
	call TriggerAddCondition(initTrig, Condition(ref_function_init_Printing_config))
	if  not TriggerEvaluate(initTrig) then
		call error("Could not initialize package Printing_config.")
	endif
	call TriggerClearConditions(initTrig)
	call TriggerAddCondition(initTrig, Condition(ref_function_init_Printing))
	if  not TriggerEvaluate(initTrig) then
		call error("Could not initialize package Printing.")
	endif
	call TriggerClearConditions(initTrig)
	call TriggerAddCondition(initTrig, Condition(ref_function_init_MagicFunctions))
	if  not TriggerEvaluate(initTrig) then
		call error("Could not initialize package MagicFunctions.")
	endif
	call TriggerClearConditions(initTrig)
	call TriggerAddCondition(initTrig, Condition(ref_function_init_Basics))
	if  not TriggerEvaluate(initTrig) then
		call error("Could not initialize package Basics.")
	endif
	call TriggerClearConditions(initTrig)
	call TriggerAddCondition(initTrig, Condition(ref_function_init_GameTimer))
	if  not TriggerEvaluate(initTrig) then
		call error("Could not initialize package GameTimer.")
	endif
	call TriggerClearConditions(initTrig)
	call TriggerAddCondition(initTrig, Condition(ref_function_init_ErrorHandling))
	if  not TriggerEvaluate(initTrig) then
		call error("Could not initialize package ErrorHandling.")
	endif
	call TriggerClearConditions(initTrig)
	call TriggerAddCondition(initTrig, Condition(ref_function_init_Matrices))
	if  not TriggerEvaluate(initTrig) then
		call error("Could not initialize package Matrices.")
	endif
	call TriggerClearConditions(initTrig)
	call TriggerAddCondition(initTrig, Condition(ref_function_init_Quaternion))
	if  not TriggerEvaluate(initTrig) then
		call error("Could not initialize package Quaternion.")
	endif
	call TriggerClearConditions(initTrig)
	call TriggerAddCondition(initTrig, Condition(ref_function_init_Table))
	if  not TriggerEvaluate(initTrig) then
		call error("Could not initialize package Table.")
	endif
	call TriggerClearConditions(initTrig)
	call TriggerAddCondition(initTrig, Condition(ref_function_init_Playercolor))
	if  not TriggerEvaluate(initTrig) then
		call error("Could not initialize package Playercolor.")
	endif
	call TriggerClearConditions(initTrig)
	call TriggerAddCondition(initTrig, Condition(ref_function_init_Colors))
	if  not TriggerEvaluate(initTrig) then
		call error("Could not initialize package Colors.")
	endif
	call TriggerClearConditions(initTrig)
	call TriggerAddCondition(initTrig, Condition(ref_function_init_Framehandle))
	if  not TriggerEvaluate(initTrig) then
		call error("Could not initialize package Framehandle.")
	endif
	call TriggerClearConditions(initTrig)
	call TriggerAddCondition(initTrig, Condition(ref_function_init_Group))
	if  not TriggerEvaluate(initTrig) then
		call error("Could not initialize package Group.")
	endif
	call TriggerClearConditions(initTrig)
	call TriggerAddCondition(initTrig, Condition(ref_function_init_Lightning))
	if  not TriggerEvaluate(initTrig) then
		call error("Could not initialize package Lightning.")
	endif
	call TriggerClearConditions(initTrig)
	call TriggerAddCondition(initTrig, Condition(ref_function_init_WeatherEffects))
	if  not TriggerEvaluate(initTrig) then
		call error("Could not initialize package WeatherEffects.")
	endif
	call TriggerClearConditions(initTrig)
	call TriggerAddCondition(initTrig, Condition(ref_function_init_TypeCasting))
	if  not TriggerEvaluate(initTrig) then
		call error("Could not initialize package TypeCasting.")
	endif
	call TriggerClearConditions(initTrig)
	call TriggerAddCondition(initTrig, Condition(ref_function_init_HashList))
	if  not TriggerEvaluate(initTrig) then
		call error("Could not initialize package HashList.")
	endif
	call TriggerClearConditions(initTrig)
	call TriggerAddCondition(initTrig, Condition(ref_function_init_EventHelper))
	if  not TriggerEvaluate(initTrig) then
		call error("Could not initialize package EventHelper.")
	endif
	call TriggerClearConditions(initTrig)
	call TriggerAddCondition(initTrig, Condition(ref_function_init_ClosureForGroups))
	if  not TriggerEvaluate(initTrig) then
		call error("Could not initialize package ClosureForGroups.")
	endif
	call TriggerClearConditions(initTrig)
	call TriggerAddCondition(initTrig, Condition(ref_function_init_LinkedList))
	if  not TriggerEvaluate(initTrig) then
		call error("Could not initialize package LinkedList.")
	endif
	call TriggerClearConditions(initTrig)
	call TriggerAddCondition(initTrig, Condition(ref_function_init_ObjectIds))
	if  not TriggerEvaluate(initTrig) then
		call error("Could not initialize package ObjectIds.")
	endif
	call TriggerClearConditions(initTrig)
	call TriggerAddCondition(initTrig, Condition(ref_function_init_TargetsAllowed))
	if  not TriggerEvaluate(initTrig) then
		call error("Could not initialize package TargetsAllowed.")
	endif
	call TriggerClearConditions(initTrig)
	call TriggerAddCondition(initTrig, Condition(ref_function_init_AbilityObjEditing))
	if  not TriggerEvaluate(initTrig) then
		call error("Could not initialize package AbilityObjEditing.")
	endif
	call TriggerClearConditions(initTrig)
	call TriggerAddCondition(initTrig, Condition(ref_function_init_TimerUtils))
	if  not TriggerEvaluate(initTrig) then
		call error("Could not initialize package TimerUtils.")
	endif
	call TriggerClearConditions(initTrig)
	call TriggerAddCondition(initTrig, Condition(ref_function_init_RegisterEvents))
	if  not TriggerEvaluate(initTrig) then
		call error("Could not initialize package RegisterEvents.")
	endif
	call TriggerClearConditions(initTrig)
	call TriggerAddCondition(initTrig, Condition(ref_function_init_ClosureTimers))
	if  not TriggerEvaluate(initTrig) then
		call error("Could not initialize package ClosureTimers.")
	endif
	call TriggerClearConditions(initTrig)
	call TriggerAddCondition(initTrig, Condition(ref_function_init_UnitIds))
	if  not TriggerEvaluate(initTrig) then
		call error("Could not initialize package UnitIds.")
	endif
	call TriggerClearConditions(initTrig)
	call TriggerAddCondition(initTrig, Condition(ref_function_init_MapBounds))
	if  not TriggerEvaluate(initTrig) then
		call error("Could not initialize package MapBounds.")
	endif
	call TriggerClearConditions(initTrig)
	call TriggerAddCondition(initTrig, Condition(ref_function_init_Preloader))
	if  not TriggerEvaluate(initTrig) then
		call error("Could not initialize package Preloader.")
	endif
	call TriggerClearConditions(initTrig)
	call TriggerAddCondition(initTrig, Condition(ref_function_init_ObjectIdGenerator))
	if  not TriggerEvaluate(initTrig) then
		call error("Could not initialize package ObjectIdGenerator.")
	endif
	call TriggerClearConditions(initTrig)
	call TriggerAddCondition(initTrig, Condition(ref_function_init_Orders))
	if  not TriggerEvaluate(initTrig) then
		call error("Could not initialize package Orders.")
	endif
	call TriggerClearConditions(initTrig)
	call TriggerAddCondition(initTrig, Condition(ref_function_init_OnUnitEnterLeave))
	if  not TriggerEvaluate(initTrig) then
		call error("Could not initialize package OnUnitEnterLeave.")
	endif
	call TriggerClearConditions(initTrig)
	call TriggerAddCondition(initTrig, Condition(ref_function_init_UnitIndexer))
	if  not TriggerEvaluate(initTrig) then
		call error("Could not initialize package UnitIndexer.")
	endif
	call TriggerClearConditions(initTrig)
	call TriggerAddCondition(initTrig, Condition(ref_function_init_ClosureEvents))
	if  not TriggerEvaluate(initTrig) then
		call error("Could not initialize package ClosureEvents.")
	endif
	call TriggerClearConditions(initTrig)
	call TriggerAddCondition(initTrig, Condition(ref_function_init_TerrainUtils))
	if  not TriggerEvaluate(initTrig) then
		call error("Could not initialize package TerrainUtils.")
	endif
	call TriggerClearConditions(initTrig)
	call TriggerAddCondition(initTrig, Condition(ref_function_init_PhysicsConstants))
	if  not TriggerEvaluate(initTrig) then
		call error("Could not initialize package PhysicsConstants.")
	endif
	call TriggerClearConditions(initTrig)
	call TriggerAddCondition(initTrig, Condition(ref_function_init_StringUtils))
	if  not TriggerEvaluate(initTrig) then
		call error("Could not initialize package StringUtils.")
	endif
	call TriggerClearConditions(initTrig)
	call TriggerAddCondition(initTrig, Condition(ref_function_init_FText))
	if  not TriggerEvaluate(initTrig) then
		call error("Could not initialize package FText.")
	endif
	call TriggerClearConditions(initTrig)
	call TriggerAddCondition(initTrig, Condition(ref_function_init_Frentity))
	if  not TriggerEvaluate(initTrig) then
		call error("Could not initialize package Frentity.")
	endif
	call TriggerClearConditions(initTrig)
	call TriggerAddCondition(initTrig, Condition(ref_function_init_Execute))
	if  not TriggerEvaluate(initTrig) then
		call error("Could not initialize package Execute.")
	endif
	call TriggerClearConditions(initTrig)
	call TriggerAddCondition(initTrig, Condition(ref_function_init_Heightmap))
	if  not TriggerEvaluate(initTrig) then
		call error("Could not initialize package Heightmap.")
	endif
	call TriggerClearConditions(initTrig)
	call TriggerAddCondition(initTrig, Condition(ref_function_init_Entity_config))
	if  not TriggerEvaluate(initTrig) then
		call error("Could not initialize package Entity_config.")
	endif
	call TriggerClearConditions(initTrig)
	call TriggerAddCondition(initTrig, Condition(ref_function_init_Entity))
	if  not TriggerEvaluate(initTrig) then
		call error("Could not initialize package Entity.")
	endif
	call TriggerClearConditions(initTrig)
	call TriggerAddCondition(initTrig, Condition(ref_function_init_AirPhysicsModule))
	if  not TriggerEvaluate(initTrig) then
		call error("Could not initialize package AirPhysicsModule.")
	endif
	call TriggerClearConditions(initTrig)
	call TriggerAddCondition(initTrig, Condition(ref_function_init_BigString))
	if  not TriggerEvaluate(initTrig) then
		call error("Could not initialize package BigString.")
	endif
	call TriggerClearConditions(initTrig)
	call TriggerAddCondition(initTrig, Condition(ref_function_init_BigNum))
	if  not TriggerEvaluate(initTrig) then
		call error("Could not initialize package BigNum.")
	endif
	call TriggerClearConditions(initTrig)
	call TriggerAddCondition(initTrig, Condition(ref_function_init_Encoder))
	if  not TriggerEvaluate(initTrig) then
		call error("Could not initialize package Encoder.")
	endif
	call TriggerClearConditions(initTrig)
	call TriggerAddCondition(initTrig, Condition(ref_function_init_LZW))
	if  not TriggerEvaluate(initTrig) then
		call error("Could not initialize package LZW.")
	endif
	call TriggerClearConditions(initTrig)
	call TriggerAddCondition(initTrig, Condition(ref_function_init_Json))
	if  not TriggerEvaluate(initTrig) then
		call error("Could not initialize package Json.")
	endif
	call TriggerClearConditions(initTrig)
	call TriggerAddCondition(initTrig, Condition(ref_function_init_SerializeIds))
	if  not TriggerEvaluate(initTrig) then
		call error("Could not initialize package SerializeIds.")
	endif
	call TriggerClearConditions(initTrig)
	call TriggerAddCondition(initTrig, Condition(ref_function_init_BuilderConstants))
	if  not TriggerEvaluate(initTrig) then
		call error("Could not initialize package BuilderConstants.")
	endif
	call TriggerClearConditions(initTrig)
	call TriggerAddCondition(initTrig, Condition(ref_function_init_SetupObject))
	if  not TriggerEvaluate(initTrig) then
		call error("Could not initialize package SetupObject.")
	endif
	call TriggerClearConditions(initTrig)
	call TriggerAddCondition(initTrig, Condition(ref_function_init_Icons))
	if  not TriggerEvaluate(initTrig) then
		call error("Could not initialize package Icons.")
	endif
	call TriggerClearConditions(initTrig)
	call TriggerAddCondition(initTrig, Condition(ref_function_init_ChannelAbilityPreset))
	if  not TriggerEvaluate(initTrig) then
		call error("Could not initialize package ChannelAbilityPreset.")
	endif
	call TriggerClearConditions(initTrig)
	call TriggerAddCondition(initTrig, Condition(ref_function_init_BuffIds))
	if  not TriggerEvaluate(initTrig) then
		call error("Could not initialize package BuffIds.")
	endif
	call TriggerClearConditions(initTrig)
	call TriggerAddCondition(initTrig, Condition(ref_function_init_Buildings))
	if  not TriggerEvaluate(initTrig) then
		call error("Could not initialize package Buildings.")
	endif
	call TriggerClearConditions(initTrig)
	call TriggerAddCondition(initTrig, Condition(ref_function_init_Doodads))
	if  not TriggerEvaluate(initTrig) then
		call error("Could not initialize package Doodads.")
	endif
	call TriggerClearConditions(initTrig)
	call TriggerAddCondition(initTrig, Condition(ref_function_init_Environment))
	if  not TriggerEvaluate(initTrig) then
		call error("Could not initialize package Environment.")
	endif
	call TriggerClearConditions(initTrig)
	call TriggerAddCondition(initTrig, Condition(ref_function_init_ItemIds))
	if  not TriggerEvaluate(initTrig) then
		call error("Could not initialize package ItemIds.")
	endif
	call TriggerClearConditions(initTrig)
	call TriggerAddCondition(initTrig, Condition(ref_function_init_Objects))
	if  not TriggerEvaluate(initTrig) then
		call error("Could not initialize package Objects.")
	endif
	call TriggerClearConditions(initTrig)
	call TriggerAddCondition(initTrig, Condition(ref_function_init_Sounds))
	if  not TriggerEvaluate(initTrig) then
		call error("Could not initialize package Sounds.")
	endif
	call TriggerClearConditions(initTrig)
	call TriggerAddCondition(initTrig, Condition(ref_function_init_Soundsets))
	if  not TriggerEvaluate(initTrig) then
		call error("Could not initialize package Soundsets.")
	endif
	call TriggerClearConditions(initTrig)
	call TriggerAddCondition(initTrig, Condition(ref_function_init_Textures))
	if  not TriggerEvaluate(initTrig) then
		call error("Could not initialize package Textures.")
	endif
	call TriggerClearConditions(initTrig)
	call TriggerAddCondition(initTrig, Condition(ref_function_init_UI))
	if  not TriggerEvaluate(initTrig) then
		call error("Could not initialize package UI.")
	endif
	call TriggerClearConditions(initTrig)
	call TriggerAddCondition(initTrig, Condition(ref_function_init_Units))
	if  not TriggerEvaluate(initTrig) then
		call error("Could not initialize package Units.")
	endif
	call TriggerClearConditions(initTrig)
	call TriggerAddCondition(initTrig, Condition(ref_function_init_AttachmentPoints))
	if  not TriggerEvaluate(initTrig) then
		call error("Could not initialize package AttachmentPoints.")
	endif
	call TriggerClearConditions(initTrig)
	call TriggerAddCondition(initTrig, Condition(ref_function_init_BaseObject))
	if  not TriggerEvaluate(initTrig) then
		call error("Could not initialize package BaseObject.")
	endif
	call TriggerClearConditions(initTrig)
	call TriggerAddCondition(initTrig, Condition(ref_function_init_GameConstants))
	if  not TriggerEvaluate(initTrig) then
		call error("Could not initialize package GameConstants.")
	endif
	call TriggerClearConditions(initTrig)
	call TriggerAddCondition(initTrig, Condition(ref_function_init_TerrainData))
	if  not TriggerEvaluate(initTrig) then
		call error("Could not initialize package TerrainData.")
	endif
	call TriggerClearConditions(initTrig)
	call TriggerAddCondition(initTrig, Condition(ref_function_init_PhysicsEntity))
	if  not TriggerEvaluate(initTrig) then
		call error("Could not initialize package PhysicsEntity.")
	endif
	call TriggerClearConditions(initTrig)
	call TriggerAddCondition(initTrig, Condition(ref_function_init_RevivePointModifier))
	if  not TriggerEvaluate(initTrig) then
		call error("Could not initialize package RevivePointModifier.")
	endif
	call TriggerClearConditions(initTrig)
	call TriggerAddCondition(initTrig, Condition(ref_function_init_TerrainBlocker))
	if  not TriggerEvaluate(initTrig) then
		call error("Could not initialize package TerrainBlocker.")
	endif
	call TriggerClearConditions(initTrig)
	call TriggerAddCondition(initTrig, Condition(ref_function_init_Fx2Entity))
	if  not TriggerEvaluate(initTrig) then
		call error("Could not initialize package Fx2Entity.")
	endif
	call TriggerClearConditions(initTrig)
	call TriggerAddCondition(initTrig, Condition(ref_function_init_GroupUtils))
	if  not TriggerEvaluate(initTrig) then
		call error("Could not initialize package GroupUtils.")
	endif
	call TriggerClearConditions(initTrig)
	call TriggerAddCondition(initTrig, Condition(ref_function_init_Players))
	if  not TriggerEvaluate(initTrig) then
		call error("Could not initialize package Players.")
	endif
	call TriggerClearConditions(initTrig)
	call TriggerAddCondition(initTrig, Condition(ref_function_init_JukeBox))
	if  not TriggerEvaluate(initTrig) then
		call error("Could not initialize package JukeBox.")
	endif
	call TriggerClearConditions(initTrig)
	call TriggerAddCondition(initTrig, Condition(ref_function_init_EscaperObjects))
	if  not TriggerEvaluate(initTrig) then
		call error("Could not initialize package EscaperObjects.")
	endif
	call TriggerClearConditions(initTrig)
	call TriggerAddCondition(initTrig, Condition(ref_function_init_Escaper))
	if  not TriggerEvaluate(initTrig) then
		call error("Could not initialize package Escaper.")
	endif
	call TriggerClearConditions(initTrig)
	call TriggerAddCondition(initTrig, Condition(ref_function_init_InstantDummyCaster))
	if  not TriggerEvaluate(initTrig) then
		call error("Could not initialize package InstantDummyCaster.")
	endif
	call TriggerClearConditions(initTrig)
	call TriggerAddCondition(initTrig, Condition(ref_function_init_DummyRecycler))
	if  not TriggerEvaluate(initTrig) then
		call error("Could not initialize package DummyRecycler.")
	endif
	call TriggerClearConditions(initTrig)
	call TriggerAddCondition(initTrig, Condition(ref_function_init_DamageEvent))
	if  not TriggerEvaluate(initTrig) then
		call error("Could not initialize package DamageEvent.")
	endif
	call TriggerClearConditions(initTrig)
	call TriggerAddCondition(initTrig, Condition(ref_function_init_Squares))
	if  not TriggerEvaluate(initTrig) then
		call error("Could not initialize package Squares.")
	endif
	call TriggerClearConditions(initTrig)
	call TriggerAddCondition(initTrig, Condition(ref_function_init_Buff))
	if  not TriggerEvaluate(initTrig) then
		call error("Could not initialize package Buff.")
	endif
	call TriggerClearConditions(initTrig)
	call TriggerAddCondition(initTrig, Condition(ref_function_init_Arcanery))
	if  not TriggerEvaluate(initTrig) then
		call error("Could not initialize package Arcanery.")
	endif
	call TriggerClearConditions(initTrig)
	call TriggerAddCondition(initTrig, Condition(ref_function_init_Attackspeed))
	if  not TriggerEvaluate(initTrig) then
		call error("Could not initialize package Attackspeed.")
	endif
	call TriggerClearConditions(initTrig)
	call TriggerAddCondition(initTrig, Condition(ref_function_init_AudioTaunts))
	if  not TriggerEvaluate(initTrig) then
		call error("Could not initialize package AudioTaunts.")
	endif
	call TriggerClearConditions(initTrig)
	call TriggerAddCondition(initTrig, Condition(ref_function_init_BasicSpells))
	if  not TriggerEvaluate(initTrig) then
		call error("Could not initialize package BasicSpells.")
	endif
	call TriggerClearConditions(initTrig)
	call TriggerAddCondition(initTrig, Condition(ref_function_init_Bomber))
	if  not TriggerEvaluate(initTrig) then
		call error("Could not initialize package Bomber.")
	endif
	call TriggerClearConditions(initTrig)
	call TriggerAddCondition(initTrig, Condition(ref_function_init_Bombertower))
	if  not TriggerEvaluate(initTrig) then
		call error("Could not initialize package Bombertower.")
	endif
	call TriggerClearConditions(initTrig)
	call TriggerAddCondition(initTrig, Condition(ref_function_init_Booster))
	if  not TriggerEvaluate(initTrig) then
		call error("Could not initialize package Booster.")
	endif
	call TriggerClearConditions(initTrig)
	call TriggerAddCondition(initTrig, Condition(ref_function_init_Boots))
	if  not TriggerEvaluate(initTrig) then
		call error("Could not initialize package Boots.")
	endif
	call TriggerClearConditions(initTrig)
	call TriggerAddCondition(initTrig, Condition(ref_function_init_MultiboardClass))
	if  not TriggerEvaluate(initTrig) then
		call error("Could not initialize package MultiboardClass.")
	endif
	call TriggerClearConditions(initTrig)
	call TriggerAddCondition(initTrig, Condition(ref_function_init_Key))
	if  not TriggerEvaluate(initTrig) then
		call error("Could not initialize package Key.")
	endif
	call TriggerClearConditions(initTrig)
	call TriggerAddCondition(initTrig, Condition(ref_function_init_Tome))
	if  not TriggerEvaluate(initTrig) then
		call error("Could not initialize package Tome.")
	endif
	call TriggerClearConditions(initTrig)
	call TriggerAddCondition(initTrig, Condition(ref_function_init_Coin))
	if  not TriggerEvaluate(initTrig) then
		call error("Could not initialize package Coin.")
	endif
	call TriggerClearConditions(initTrig)
	call TriggerAddCondition(initTrig, Condition(ref_function_init_Builder))
	if  not TriggerEvaluate(initTrig) then
		call error("Could not initialize package Builder.")
	endif
	call TriggerClearConditions(initTrig)
	call TriggerAddCondition(initTrig, Condition(ref_function_init_FxEntity))
	if  not TriggerEvaluate(initTrig) then
		call error("Could not initialize package FxEntity.")
	endif
	call TriggerClearConditions(initTrig)
	call TriggerAddCondition(initTrig, Condition(ref_function_init_EscaperSensor))
	if  not TriggerEvaluate(initTrig) then
		call error("Could not initialize package EscaperSensor.")
	endif
	call TriggerClearConditions(initTrig)
	call TriggerAddCondition(initTrig, Condition(ref_function_init_EscaperKillers))
	if  not TriggerEvaluate(initTrig) then
		call error("Could not initialize package EscaperKillers.")
	endif
	call TriggerClearConditions(initTrig)
	call TriggerAddCondition(initTrig, Condition(ref_function_init_ObjectTarget))
	if  not TriggerEvaluate(initTrig) then
		call error("Could not initialize package ObjectTarget.")
	endif
	call TriggerClearConditions(initTrig)
	call TriggerAddCondition(initTrig, Condition(ref_function_init_TerrainChanger))
	if  not TriggerEvaluate(initTrig) then
		call error("Could not initialize package TerrainChanger.")
	endif
	call TriggerClearConditions(initTrig)
	call TriggerAddCondition(initTrig, Condition(ref_function_init_Pointer))
	if  not TriggerEvaluate(initTrig) then
		call error("Could not initialize package Pointer.")
	endif
	call TriggerClearConditions(initTrig)
	call TriggerAddCondition(initTrig, Condition(ref_function_init_Knockbacker))
	if  not TriggerEvaluate(initTrig) then
		call error("Could not initialize package Knockbacker.")
	endif
	call TriggerClearConditions(initTrig)
	call TriggerAddCondition(initTrig, Condition(ref_function_init_Faceless))
	if  not TriggerEvaluate(initTrig) then
		call error("Could not initialize package Faceless.")
	endif
	call TriggerClearConditions(initTrig)
	call TriggerAddCondition(initTrig, Condition(ref_function_init_UnitProducer))
	if  not TriggerEvaluate(initTrig) then
		call error("Could not initialize package UnitProducer.")
	endif
	call TriggerClearConditions(initTrig)
	call TriggerAddCondition(initTrig, Condition(ref_function_init_EscaperClasses))
	if  not TriggerEvaluate(initTrig) then
		call error("Could not initialize package EscaperClasses.")
	endif
	call TriggerClearConditions(initTrig)
	call TriggerAddCondition(initTrig, Condition(ref_function_init_Simulate3dSound))
	if  not TriggerEvaluate(initTrig) then
		call error("Could not initialize package Simulate3dSound.")
	endif
	call TriggerClearConditions(initTrig)
	call TriggerAddCondition(initTrig, Condition(ref_function_init_SoundUtils))
	if  not TriggerEvaluate(initTrig) then
		call error("Could not initialize package SoundUtils.")
	endif
	call TriggerClearConditions(initTrig)
	call TriggerAddCondition(initTrig, Condition(ref_function_init_PickSystem))
	if  not TriggerEvaluate(initTrig) then
		call error("Could not initialize package PickSystem.")
	endif
	call TriggerClearConditions(initTrig)
	call TriggerAddCondition(initTrig, Condition(ref_function_init_PlayerData))
	if  not TriggerEvaluate(initTrig) then
		call error("Could not initialize package PlayerData.")
	endif
	call TriggerClearConditions(initTrig)
	call TriggerAddCondition(initTrig, Condition(ref_function_init_BossSpellTarget))
	if  not TriggerEvaluate(initTrig) then
		call error("Could not initialize package BossSpellTarget.")
	endif
	call TriggerClearConditions(initTrig)
	call TriggerAddCondition(initTrig, Condition(ref_function_init_CustomBar))
	if  not TriggerEvaluate(initTrig) then
		call error("Could not initialize package CustomBar.")
	endif
	call TriggerClearConditions(initTrig)
	call TriggerAddCondition(initTrig, Condition(ref_function_init_Minion))
	if  not TriggerEvaluate(initTrig) then
		call error("Could not initialize package Minion.")
	endif
	call TriggerClearConditions(initTrig)
	call TriggerAddCondition(initTrig, Condition(ref_function_init_Boss))
	if  not TriggerEvaluate(initTrig) then
		call error("Could not initialize package Boss.")
	endif
	call TriggerClearConditions(initTrig)
	call TriggerAddCondition(initTrig, Condition(ref_function_init_BossDamager))
	if  not TriggerEvaluate(initTrig) then
		call error("Could not initialize package BossDamager.")
	endif
	call TriggerClearConditions(initTrig)
	call TriggerAddCondition(initTrig, Condition(ref_function_init_Camerashakes))
	if  not TriggerEvaluate(initTrig) then
		call error("Could not initialize package Camerashakes.")
	endif
	call TriggerClearConditions(initTrig)
	call TriggerAddCondition(initTrig, Condition(ref_function_init_ChunkedString))
	if  not TriggerEvaluate(initTrig) then
		call error("Could not initialize package ChunkedString.")
	endif
	call TriggerClearConditions(initTrig)
	call TriggerAddCondition(initTrig, Condition(ref_function_init_CodeGenerator))
	if  not TriggerEvaluate(initTrig) then
		call error("Could not initialize package CodeGenerator.")
	endif
	call TriggerClearConditions(initTrig)
	call TriggerAddCondition(initTrig, Condition(ref_function_init_Collision))
	if  not TriggerEvaluate(initTrig) then
		call error("Could not initialize package Collision.")
	endif
	call TriggerClearConditions(initTrig)
	call TriggerAddCondition(initTrig, Condition(ref_function_init_SetupBox))
	if  not TriggerEvaluate(initTrig) then
		call error("Could not initialize package SetupBox.")
	endif
	call TriggerClearConditions(initTrig)
	call TriggerAddCondition(initTrig, Condition(ref_function_init_ReviveManager))
	if  not TriggerEvaluate(initTrig) then
		call error("Could not initialize package ReviveManager.")
	endif
	call TriggerClearConditions(initTrig)
	call TriggerAddCondition(initTrig, Condition(ref_function_init_Minigame))
	if  not TriggerEvaluate(initTrig) then
		call error("Could not initialize package Minigame.")
	endif
	call TriggerClearConditions(initTrig)
	call TriggerAddCondition(initTrig, Condition(ref_function_init_KeyUtils))
	if  not TriggerEvaluate(initTrig) then
		call error("Could not initialize package KeyUtils.")
	endif
	call TriggerClearConditions(initTrig)
	call TriggerAddCondition(initTrig, Condition(ref_function_init_MGSpacey))
	if  not TriggerEvaluate(initTrig) then
		call error("Could not initialize package MGSpacey.")
	endif
	call TriggerClearConditions(initTrig)
	call TriggerAddCondition(initTrig, Condition(ref_function_init_Commands))
	if  not TriggerEvaluate(initTrig) then
		call error("Could not initialize package Commands.")
	endif
	call TriggerClearConditions(initTrig)
	call TriggerAddCondition(initTrig, Condition(ref_function_init_MoveSpeed))
	if  not TriggerEvaluate(initTrig) then
		call error("Could not initialize package MoveSpeed.")
	endif
	call TriggerClearConditions(initTrig)
	call TriggerAddCondition(initTrig, Condition(ref_function_init_CongaObjects))
	if  not TriggerEvaluate(initTrig) then
		call error("Could not initialize package CongaObjects.")
	endif
	call TriggerClearConditions(initTrig)
	call TriggerAddCondition(initTrig, Condition(ref_function_init_DebugInfo))
	if  not TriggerEvaluate(initTrig) then
		call error("Could not initialize package DebugInfo.")
	endif
	call TriggerClearConditions(initTrig)
	call TriggerAddCondition(initTrig, Condition(ref_function_init_Decoration))
	if  not TriggerEvaluate(initTrig) then
		call error("Could not initialize package Decoration.")
	endif
	call TriggerClearConditions(initTrig)
	call TriggerAddCondition(initTrig, Condition(ref_function_init_Door))
	if  not TriggerEvaluate(initTrig) then
		call error("Could not initialize package Door.")
	endif
	call TriggerClearConditions(initTrig)
	call TriggerAddCondition(initTrig, Condition(ref_function_init_EntityManagement))
	if  not TriggerEvaluate(initTrig) then
		call error("Could not initialize package EntityManagement.")
	endif
	call TriggerClearConditions(initTrig)
	call TriggerAddCondition(initTrig, Condition(ref_function_init_TerrainModder))
	if  not TriggerEvaluate(initTrig) then
		call error("Could not initialize package TerrainModder.")
	endif
	call TriggerClearConditions(initTrig)
	call TriggerAddCondition(initTrig, Condition(ref_function_init_Executer))
	if  not TriggerEvaluate(initTrig) then
		call error("Could not initialize package Executer.")
	endif
	call TriggerClearConditions(initTrig)
	call TriggerAddCondition(initTrig, Condition(ref_function_init_SafetyChecks))
	if  not TriggerEvaluate(initTrig) then
		call error("Could not initialize package SafetyChecks.")
	endif
	call TriggerClearConditions(initTrig)
	call TriggerAddCondition(initTrig, Condition(ref_function_init_FileIO))
	if  not TriggerEvaluate(initTrig) then
		call error("Could not initialize package FileIO.")
	endif
	call TriggerClearConditions(initTrig)
	call TriggerAddCondition(initTrig, Condition(ref_function_init_Fountain))
	if  not TriggerEvaluate(initTrig) then
		call error("Could not initialize package Fountain.")
	endif
	call TriggerClearConditions(initTrig)
	call TriggerAddCondition(initTrig, Condition(ref_function_init_Obstacle))
	if  not TriggerEvaluate(initTrig) then
		call error("Could not initialize package Obstacle.")
	endif
	call TriggerClearConditions(initTrig)
	call TriggerAddCondition(initTrig, Condition(ref_function_init_LobbyTeleporter))
	if  not TriggerEvaluate(initTrig) then
		call error("Could not initialize package LobbyTeleporter.")
	endif
	call TriggerClearConditions(initTrig)
	call TriggerAddCondition(initTrig, Condition(ref_function_init_MinigameTeleporter))
	if  not TriggerEvaluate(initTrig) then
		call error("Could not initialize package MinigameTeleporter.")
	endif
	call TriggerClearConditions(initTrig)
	call TriggerAddCondition(initTrig, Condition(ref_function_init_Startmazes))
	if  not TriggerEvaluate(initTrig) then
		call error("Could not initialize package Startmazes.")
	endif
	call TriggerClearConditions(initTrig)
	call TriggerAddCondition(initTrig, Condition(ref_function_init_GameInit))
	if  not TriggerEvaluate(initTrig) then
		call error("Could not initialize package GameInit.")
	endif
	call TriggerClearConditions(initTrig)
	call TriggerAddCondition(initTrig, Condition(ref_function_init_GameStatus))
	if  not TriggerEvaluate(initTrig) then
		call error("Could not initialize package GameStatus.")
	endif
	call TriggerClearConditions(initTrig)
	call TriggerAddCondition(initTrig, Condition(ref_function_init_GlobalShop))
	if  not TriggerEvaluate(initTrig) then
		call error("Could not initialize package GlobalShop.")
	endif
	call TriggerClearConditions(initTrig)
	call TriggerAddCondition(initTrig, Condition(ref_function_init_HashSet))
	if  not TriggerEvaluate(initTrig) then
		call error("Could not initialize package HashSet.")
	endif
	call TriggerClearConditions(initTrig)
	call TriggerAddCondition(initTrig, Condition(ref_function_init_Revivepoint))
	if  not TriggerEvaluate(initTrig) then
		call error("Could not initialize package Revivepoint.")
	endif
	call TriggerClearConditions(initTrig)
	call TriggerAddCondition(initTrig, Condition(ref_function_init_Vortex))
	if  not TriggerEvaluate(initTrig) then
		call error("Could not initialize package Vortex.")
	endif
	call TriggerClearConditions(initTrig)
	call TriggerAddCondition(initTrig, Condition(ref_function_init_Powernode))
	if  not TriggerEvaluate(initTrig) then
		call error("Could not initialize package Powernode.")
	endif
	call TriggerClearConditions(initTrig)
	call TriggerAddCondition(initTrig, Condition(ref_function_init_Tracks))
	if  not TriggerEvaluate(initTrig) then
		call error("Could not initialize package Tracks.")
	endif
	call TriggerClearConditions(initTrig)
	call TriggerAddCondition(initTrig, Condition(ref_function_init_Jumper))
	if  not TriggerEvaluate(initTrig) then
		call error("Could not initialize package Jumper.")
	endif
	call TriggerClearConditions(initTrig)
	call TriggerAddCondition(initTrig, Condition(ref_function_init_Teleporter))
	if  not TriggerEvaluate(initTrig) then
		call error("Could not initialize package Teleporter.")
	endif
	call TriggerClearConditions(initTrig)
	call TriggerAddCondition(initTrig, Condition(ref_function_init_WaypointObjects))
	if  not TriggerEvaluate(initTrig) then
		call error("Could not initialize package WaypointObjects.")
	endif
	call TriggerClearConditions(initTrig)
	call TriggerAddCondition(initTrig, Condition(ref_function_init_Waypoint))
	if  not TriggerEvaluate(initTrig) then
		call error("Could not initialize package Waypoint.")
	endif
	call TriggerClearConditions(initTrig)
	call TriggerAddCondition(initTrig, Condition(ref_function_init_SpinnerObjects))
	if  not TriggerEvaluate(initTrig) then
		call error("Could not initialize package SpinnerObjects.")
	endif
	call TriggerClearConditions(initTrig)
	call TriggerAddCondition(initTrig, Condition(ref_function_init_Unitcreator))
	if  not TriggerEvaluate(initTrig) then
		call error("Could not initialize package Unitcreator.")
	endif
	call TriggerClearConditions(initTrig)
	call TriggerAddCondition(initTrig, Condition(ref_function_init_Trap))
	if  not TriggerEvaluate(initTrig) then
		call error("Could not initialize package Trap.")
	endif
	call TriggerClearConditions(initTrig)
	call TriggerAddCondition(initTrig, Condition(ref_function_init_ObstacleObjects))
	if  not TriggerEvaluate(initTrig) then
		call error("Could not initialize package ObstacleObjects.")
	endif
	call TriggerClearConditions(initTrig)
	call TriggerAddCondition(initTrig, Condition(ref_function_init_MGWarlock))
	if  not TriggerEvaluate(initTrig) then
		call error("Could not initialize package MGWarlock.")
	endif
	call TriggerClearConditions(initTrig)
	call TriggerAddCondition(initTrig, Condition(ref_function_init_RegionData))
	if  not TriggerEvaluate(initTrig) then
		call error("Could not initialize package RegionData.")
	endif
	call TriggerClearConditions(initTrig)
	call TriggerAddCondition(initTrig, Condition(ref_function_init_Tree))
	if  not TriggerEvaluate(initTrig) then
		call error("Could not initialize package Tree.")
	endif
	call TriggerClearConditions(initTrig)
	call TriggerAddCondition(initTrig, Condition(ref_function_init_Texter))
	if  not TriggerEvaluate(initTrig) then
		call error("Could not initialize package Texter.")
	endif
	call TriggerClearConditions(initTrig)
	call TriggerAddCondition(initTrig, Condition(ref_function_init_UnitRemover))
	if  not TriggerEvaluate(initTrig) then
		call error("Could not initialize package UnitRemover.")
	endif
	call TriggerClearConditions(initTrig)
	call TriggerAddCondition(initTrig, Condition(ref_function_init_PedestalObjects))
	if  not TriggerEvaluate(initTrig) then
		call error("Could not initialize package PedestalObjects.")
	endif
	call TriggerClearConditions(initTrig)
	call TriggerAddCondition(initTrig, Condition(ref_function_init_JsonParser))
	if  not TriggerEvaluate(initTrig) then
		call error("Could not initialize package JsonParser.")
	endif
	call TriggerClearConditions(initTrig)
	call TriggerAddCondition(initTrig, Condition(ref_function_init_SyncSimple))
	if  not TriggerEvaluate(initTrig) then
		call error("Could not initialize package SyncSimple.")
	endif
	call TriggerClearConditions(initTrig)
	call TriggerAddCondition(initTrig, Condition(ref_function_init_SaveLoadData))
	if  not TriggerEvaluate(initTrig) then
		call error("Could not initialize package SaveLoadData.")
	endif
	call TriggerClearConditions(initTrig)
	call TriggerAddCondition(initTrig, Condition(ref_function_init_Pedestal))
	if  not TriggerEvaluate(initTrig) then
		call error("Could not initialize package Pedestal.")
	endif
	call TriggerClearConditions(initTrig)
	call TriggerAddCondition(initTrig, Condition(ref_function_init_InstantBuild))
	if  not TriggerEvaluate(initTrig) then
		call error("Could not initialize package InstantBuild.")
	endif
	call TriggerClearConditions(initTrig)
	call TriggerAddCondition(initTrig, Condition(ref_function_init_Invisible))
	if  not TriggerEvaluate(initTrig) then
		call error("Could not initialize package Invisible.")
	endif
	call TriggerClearConditions(initTrig)
	call TriggerAddCondition(initTrig, Condition(ref_function_init_MGAgar))
	if  not TriggerEvaluate(initTrig) then
		call error("Could not initialize package MGAgar.")
	endif
	call TriggerClearConditions(initTrig)
	call TriggerAddCondition(initTrig, Condition(ref_function_init_MGRandKill))
	if  not TriggerEvaluate(initTrig) then
		call error("Could not initialize package MGRandKill.")
	endif
	call TriggerClearConditions(initTrig)
	call TriggerAddCondition(initTrig, Condition(ref_function_init_MGSlide))
	if  not TriggerEvaluate(initTrig) then
		call error("Could not initialize package MGSlide.")
	endif
	call TriggerClearConditions(initTrig)
	call TriggerAddCondition(initTrig, Condition(ref_function_init_Questlog))
	if  not TriggerEvaluate(initTrig) then
		call error("Could not initialize package Questlog.")
	endif
	call TriggerClearConditions(initTrig)
	call TriggerAddCondition(initTrig, Condition(ref_function_init_Remove))
	if  not TriggerEvaluate(initTrig) then
		call error("Could not initialize package Remove.")
	endif
	call TriggerClearConditions(initTrig)
	call TriggerAddCondition(initTrig, Condition(ref_function_init_Startmaze))
	if  not TriggerEvaluate(initTrig) then
		call error("Could not initialize package Startmaze.")
	endif
	call TriggerClearConditions(initTrig)
	call TriggerAddCondition(initTrig, Condition(ref_function_init_WeaponTypes))
	if  not TriggerEvaluate(initTrig) then
		call error("Could not initialize package WeaponTypes.")
	endif
	call TriggerClearConditions(initTrig)
	call TriggerAddCondition(initTrig, Condition(ref_function_init_Weapon))
	if  not TriggerEvaluate(initTrig) then
		call error("Could not initialize package Weapon.")
	endif
	call TriggerClearConditions(initTrig)
	call DestroyTrigger(initTrig)
endfunction

function InitAllyPriorities takes nothing returns nothing
	call SetStartLocPrioCount(0, 11)
	call SetStartLocPrio(0, 0, 1, MAP_LOC_PRIO_HIGH)
	call SetStartLocPrio(0, 1, 2, MAP_LOC_PRIO_HIGH)
	call SetStartLocPrio(0, 2, 3, MAP_LOC_PRIO_HIGH)
	call SetStartLocPrio(0, 3, 4, MAP_LOC_PRIO_HIGH)
	call SetStartLocPrio(0, 4, 5, MAP_LOC_PRIO_HIGH)
	call SetStartLocPrio(0, 5, 6, MAP_LOC_PRIO_HIGH)
	call SetStartLocPrio(0, 6, 7, MAP_LOC_PRIO_HIGH)
	call SetStartLocPrio(0, 7, 8, MAP_LOC_PRIO_HIGH)
	call SetStartLocPrio(0, 8, 9, MAP_LOC_PRIO_HIGH)
	call SetStartLocPrio(0, 9, 10, MAP_LOC_PRIO_HIGH)
	call SetStartLocPrio(0, 10, 11, MAP_LOC_PRIO_HIGH)
	call SetStartLocPrioCount(1, 11)
	call SetStartLocPrio(1, 0, 0, MAP_LOC_PRIO_HIGH)
	call SetStartLocPrio(1, 1, 2, MAP_LOC_PRIO_HIGH)
	call SetStartLocPrio(1, 2, 3, MAP_LOC_PRIO_HIGH)
	call SetStartLocPrio(1, 3, 4, MAP_LOC_PRIO_HIGH)
	call SetStartLocPrio(1, 4, 5, MAP_LOC_PRIO_HIGH)
	call SetStartLocPrio(1, 5, 6, MAP_LOC_PRIO_HIGH)
	call SetStartLocPrio(1, 6, 7, MAP_LOC_PRIO_HIGH)
	call SetStartLocPrio(1, 7, 8, MAP_LOC_PRIO_HIGH)
	call SetStartLocPrio(1, 8, 9, MAP_LOC_PRIO_HIGH)
	call SetStartLocPrio(1, 9, 10, MAP_LOC_PRIO_HIGH)
	call SetStartLocPrio(1, 10, 11, MAP_LOC_PRIO_HIGH)
	call SetStartLocPrioCount(2, 11)
	call SetStartLocPrio(2, 0, 0, MAP_LOC_PRIO_HIGH)
	call SetStartLocPrio(2, 1, 1, MAP_LOC_PRIO_HIGH)
	call SetStartLocPrio(2, 2, 3, MAP_LOC_PRIO_HIGH)
	call SetStartLocPrio(2, 3, 4, MAP_LOC_PRIO_HIGH)
	call SetStartLocPrio(2, 4, 5, MAP_LOC_PRIO_HIGH)
	call SetStartLocPrio(2, 5, 6, MAP_LOC_PRIO_HIGH)
	call SetStartLocPrio(2, 6, 7, MAP_LOC_PRIO_HIGH)
	call SetStartLocPrio(2, 7, 8, MAP_LOC_PRIO_HIGH)
	call SetStartLocPrio(2, 8, 9, MAP_LOC_PRIO_HIGH)
	call SetStartLocPrio(2, 9, 10, MAP_LOC_PRIO_HIGH)
	call SetStartLocPrio(2, 10, 11, MAP_LOC_PRIO_HIGH)
	call SetStartLocPrioCount(3, 11)
	call SetStartLocPrio(3, 0, 0, MAP_LOC_PRIO_HIGH)
	call SetStartLocPrio(3, 1, 1, MAP_LOC_PRIO_HIGH)
	call SetStartLocPrio(3, 2, 2, MAP_LOC_PRIO_HIGH)
	call SetStartLocPrio(3, 3, 4, MAP_LOC_PRIO_HIGH)
	call SetStartLocPrio(3, 4, 5, MAP_LOC_PRIO_HIGH)
	call SetStartLocPrio(3, 5, 6, MAP_LOC_PRIO_HIGH)
	call SetStartLocPrio(3, 6, 7, MAP_LOC_PRIO_HIGH)
	call SetStartLocPrio(3, 7, 8, MAP_LOC_PRIO_HIGH)
	call SetStartLocPrio(3, 8, 9, MAP_LOC_PRIO_HIGH)
	call SetStartLocPrio(3, 9, 10, MAP_LOC_PRIO_HIGH)
	call SetStartLocPrio(3, 10, 11, MAP_LOC_PRIO_HIGH)
	call SetStartLocPrioCount(4, 11)
	call SetStartLocPrio(4, 0, 0, MAP_LOC_PRIO_HIGH)
	call SetStartLocPrio(4, 1, 1, MAP_LOC_PRIO_HIGH)
	call SetStartLocPrio(4, 2, 2, MAP_LOC_PRIO_HIGH)
	call SetStartLocPrio(4, 3, 3, MAP_LOC_PRIO_HIGH)
	call SetStartLocPrio(4, 4, 5, MAP_LOC_PRIO_HIGH)
	call SetStartLocPrio(4, 5, 6, MAP_LOC_PRIO_HIGH)
	call SetStartLocPrio(4, 6, 7, MAP_LOC_PRIO_HIGH)
	call SetStartLocPrio(4, 7, 8, MAP_LOC_PRIO_HIGH)
	call SetStartLocPrio(4, 8, 9, MAP_LOC_PRIO_HIGH)
	call SetStartLocPrio(4, 9, 10, MAP_LOC_PRIO_HIGH)
	call SetStartLocPrio(4, 10, 11, MAP_LOC_PRIO_HIGH)
	call SetStartLocPrioCount(5, 11)
	call SetStartLocPrio(5, 0, 0, MAP_LOC_PRIO_HIGH)
	call SetStartLocPrio(5, 1, 1, MAP_LOC_PRIO_HIGH)
	call SetStartLocPrio(5, 2, 2, MAP_LOC_PRIO_HIGH)
	call SetStartLocPrio(5, 3, 3, MAP_LOC_PRIO_HIGH)
	call SetStartLocPrio(5, 4, 4, MAP_LOC_PRIO_HIGH)
	call SetStartLocPrio(5, 5, 6, MAP_LOC_PRIO_HIGH)
	call SetStartLocPrio(5, 6, 7, MAP_LOC_PRIO_HIGH)
	call SetStartLocPrio(5, 7, 8, MAP_LOC_PRIO_HIGH)
	call SetStartLocPrio(5, 8, 9, MAP_LOC_PRIO_HIGH)
	call SetStartLocPrio(5, 9, 10, MAP_LOC_PRIO_HIGH)
	call SetStartLocPrio(5, 10, 11, MAP_LOC_PRIO_HIGH)
	call SetStartLocPrioCount(6, 11)
	call SetStartLocPrio(6, 0, 0, MAP_LOC_PRIO_HIGH)
	call SetStartLocPrio(6, 1, 1, MAP_LOC_PRIO_HIGH)
	call SetStartLocPrio(6, 2, 2, MAP_LOC_PRIO_HIGH)
	call SetStartLocPrio(6, 3, 3, MAP_LOC_PRIO_HIGH)
	call SetStartLocPrio(6, 4, 4, MAP_LOC_PRIO_HIGH)
	call SetStartLocPrio(6, 5, 5, MAP_LOC_PRIO_HIGH)
	call SetStartLocPrio(6, 6, 7, MAP_LOC_PRIO_HIGH)
	call SetStartLocPrio(6, 7, 8, MAP_LOC_PRIO_HIGH)
	call SetStartLocPrio(6, 8, 9, MAP_LOC_PRIO_HIGH)
	call SetStartLocPrio(6, 9, 10, MAP_LOC_PRIO_HIGH)
	call SetStartLocPrio(6, 10, 11, MAP_LOC_PRIO_HIGH)
	call SetStartLocPrioCount(7, 11)
	call SetStartLocPrio(7, 0, 0, MAP_LOC_PRIO_HIGH)
	call SetStartLocPrio(7, 1, 1, MAP_LOC_PRIO_HIGH)
	call SetStartLocPrio(7, 2, 2, MAP_LOC_PRIO_HIGH)
	call SetStartLocPrio(7, 3, 3, MAP_LOC_PRIO_HIGH)
	call SetStartLocPrio(7, 4, 4, MAP_LOC_PRIO_HIGH)
	call SetStartLocPrio(7, 5, 5, MAP_LOC_PRIO_HIGH)
	call SetStartLocPrio(7, 6, 6, MAP_LOC_PRIO_HIGH)
	call SetStartLocPrio(7, 7, 8, MAP_LOC_PRIO_HIGH)
	call SetStartLocPrio(7, 8, 9, MAP_LOC_PRIO_HIGH)
	call SetStartLocPrio(7, 9, 10, MAP_LOC_PRIO_HIGH)
	call SetStartLocPrio(7, 10, 11, MAP_LOC_PRIO_HIGH)
	call SetStartLocPrioCount(8, 11)
	call SetStartLocPrio(8, 0, 0, MAP_LOC_PRIO_HIGH)
	call SetStartLocPrio(8, 1, 1, MAP_LOC_PRIO_HIGH)
	call SetStartLocPrio(8, 2, 2, MAP_LOC_PRIO_HIGH)
	call SetStartLocPrio(8, 3, 3, MAP_LOC_PRIO_HIGH)
	call SetStartLocPrio(8, 4, 4, MAP_LOC_PRIO_HIGH)
	call SetStartLocPrio(8, 5, 5, MAP_LOC_PRIO_HIGH)
	call SetStartLocPrio(8, 6, 6, MAP_LOC_PRIO_HIGH)
	call SetStartLocPrio(8, 7, 7, MAP_LOC_PRIO_HIGH)
	call SetStartLocPrio(8, 8, 9, MAP_LOC_PRIO_HIGH)
	call SetStartLocPrio(8, 9, 10, MAP_LOC_PRIO_HIGH)
	call SetStartLocPrio(8, 10, 11, MAP_LOC_PRIO_HIGH)
	call SetStartLocPrioCount(9, 11)
	call SetStartLocPrio(9, 0, 0, MAP_LOC_PRIO_HIGH)
	call SetStartLocPrio(9, 1, 1, MAP_LOC_PRIO_HIGH)
	call SetStartLocPrio(9, 2, 2, MAP_LOC_PRIO_HIGH)
	call SetStartLocPrio(9, 3, 3, MAP_LOC_PRIO_HIGH)
	call SetStartLocPrio(9, 4, 4, MAP_LOC_PRIO_HIGH)
	call SetStartLocPrio(9, 5, 5, MAP_LOC_PRIO_HIGH)
	call SetStartLocPrio(9, 6, 6, MAP_LOC_PRIO_HIGH)
	call SetStartLocPrio(9, 7, 7, MAP_LOC_PRIO_HIGH)
	call SetStartLocPrio(9, 8, 8, MAP_LOC_PRIO_HIGH)
	call SetStartLocPrio(9, 9, 10, MAP_LOC_PRIO_HIGH)
	call SetStartLocPrio(9, 10, 11, MAP_LOC_PRIO_HIGH)
	call SetStartLocPrioCount(10, 11)
	call SetStartLocPrio(10, 0, 0, MAP_LOC_PRIO_HIGH)
	call SetStartLocPrio(10, 1, 1, MAP_LOC_PRIO_HIGH)
	call SetStartLocPrio(10, 2, 2, MAP_LOC_PRIO_HIGH)
	call SetStartLocPrio(10, 3, 3, MAP_LOC_PRIO_HIGH)
	call SetStartLocPrio(10, 4, 4, MAP_LOC_PRIO_HIGH)
	call SetStartLocPrio(10, 5, 5, MAP_LOC_PRIO_HIGH)
	call SetStartLocPrio(10, 6, 6, MAP_LOC_PRIO_HIGH)
	call SetStartLocPrio(10, 7, 7, MAP_LOC_PRIO_HIGH)
	call SetStartLocPrio(10, 8, 8, MAP_LOC_PRIO_HIGH)
	call SetStartLocPrio(10, 9, 9, MAP_LOC_PRIO_HIGH)
	call SetStartLocPrio(10, 10, 11, MAP_LOC_PRIO_HIGH)
	call SetStartLocPrioCount(11, 11)
	call SetStartLocPrio(11, 0, 0, MAP_LOC_PRIO_HIGH)
	call SetStartLocPrio(11, 1, 1, MAP_LOC_PRIO_HIGH)
	call SetStartLocPrio(11, 2, 2, MAP_LOC_PRIO_HIGH)
	call SetStartLocPrio(11, 3, 3, MAP_LOC_PRIO_HIGH)
	call SetStartLocPrio(11, 4, 4, MAP_LOC_PRIO_HIGH)
	call SetStartLocPrio(11, 5, 5, MAP_LOC_PRIO_HIGH)
	call SetStartLocPrio(11, 6, 6, MAP_LOC_PRIO_HIGH)
	call SetStartLocPrio(11, 7, 7, MAP_LOC_PRIO_HIGH)
	call SetStartLocPrio(11, 8, 8, MAP_LOC_PRIO_HIGH)
	call SetStartLocPrio(11, 9, 9, MAP_LOC_PRIO_HIGH)
	call SetStartLocPrio(11, 10, 10, MAP_LOC_PRIO_HIGH)
endfunction

function InitCustomPlayerSlots takes nothing returns nothing
	call SetPlayerStartLocation(Player(0), 0)
	call ForcePlayerStartLocation(Player(0), 0)
	call SetPlayerColor(Player(0), ConvertPlayerColor(0))
	call SetPlayerRacePreference(Player(0), RACE_PREF_HUMAN)
	call SetPlayerRaceSelectable(Player(0), false)
	call SetPlayerController(Player(0), MAP_CONTROL_USER)
	call SetPlayerStartLocation(Player(1), 1)
	call ForcePlayerStartLocation(Player(1), 1)
	call SetPlayerColor(Player(1), ConvertPlayerColor(1))
	call SetPlayerRacePreference(Player(1), RACE_PREF_HUMAN)
	call SetPlayerRaceSelectable(Player(1), false)
	call SetPlayerController(Player(1), MAP_CONTROL_USER)
	call SetPlayerStartLocation(Player(2), 2)
	call ForcePlayerStartLocation(Player(2), 2)
	call SetPlayerColor(Player(2), ConvertPlayerColor(2))
	call SetPlayerRacePreference(Player(2), RACE_PREF_HUMAN)
	call SetPlayerRaceSelectable(Player(2), false)
	call SetPlayerController(Player(2), MAP_CONTROL_USER)
	call SetPlayerStartLocation(Player(3), 3)
	call ForcePlayerStartLocation(Player(3), 3)
	call SetPlayerColor(Player(3), ConvertPlayerColor(3))
	call SetPlayerRacePreference(Player(3), RACE_PREF_HUMAN)
	call SetPlayerRaceSelectable(Player(3), false)
	call SetPlayerController(Player(3), MAP_CONTROL_USER)
	call SetPlayerStartLocation(Player(4), 4)
	call ForcePlayerStartLocation(Player(4), 4)
	call SetPlayerColor(Player(4), ConvertPlayerColor(4))
	call SetPlayerRacePreference(Player(4), RACE_PREF_HUMAN)
	call SetPlayerRaceSelectable(Player(4), false)
	call SetPlayerController(Player(4), MAP_CONTROL_USER)
	call SetPlayerStartLocation(Player(5), 5)
	call ForcePlayerStartLocation(Player(5), 5)
	call SetPlayerColor(Player(5), ConvertPlayerColor(5))
	call SetPlayerRacePreference(Player(5), RACE_PREF_HUMAN)
	call SetPlayerRaceSelectable(Player(5), false)
	call SetPlayerController(Player(5), MAP_CONTROL_USER)
	call SetPlayerStartLocation(Player(6), 6)
	call ForcePlayerStartLocation(Player(6), 6)
	call SetPlayerColor(Player(6), ConvertPlayerColor(6))
	call SetPlayerRacePreference(Player(6), RACE_PREF_HUMAN)
	call SetPlayerRaceSelectable(Player(6), false)
	call SetPlayerController(Player(6), MAP_CONTROL_USER)
	call SetPlayerStartLocation(Player(7), 7)
	call ForcePlayerStartLocation(Player(7), 7)
	call SetPlayerColor(Player(7), ConvertPlayerColor(7))
	call SetPlayerRacePreference(Player(7), RACE_PREF_HUMAN)
	call SetPlayerRaceSelectable(Player(7), false)
	call SetPlayerController(Player(7), MAP_CONTROL_USER)
	call SetPlayerStartLocation(Player(8), 8)
	call ForcePlayerStartLocation(Player(8), 8)
	call SetPlayerColor(Player(8), ConvertPlayerColor(8))
	call SetPlayerRacePreference(Player(8), RACE_PREF_HUMAN)
	call SetPlayerRaceSelectable(Player(8), false)
	call SetPlayerController(Player(8), MAP_CONTROL_USER)
	call SetPlayerStartLocation(Player(9), 9)
	call ForcePlayerStartLocation(Player(9), 9)
	call SetPlayerColor(Player(9), ConvertPlayerColor(9))
	call SetPlayerRacePreference(Player(9), RACE_PREF_HUMAN)
	call SetPlayerRaceSelectable(Player(9), false)
	call SetPlayerController(Player(9), MAP_CONTROL_USER)
	call SetPlayerStartLocation(Player(10), 10)
	call ForcePlayerStartLocation(Player(10), 10)
	call SetPlayerColor(Player(10), ConvertPlayerColor(10))
	call SetPlayerRacePreference(Player(10), RACE_PREF_HUMAN)
	call SetPlayerRaceSelectable(Player(10), false)
	call SetPlayerController(Player(10), MAP_CONTROL_USER)
	call SetPlayerStartLocation(Player(11), 11)
	call ForcePlayerStartLocation(Player(11), 11)
	call SetPlayerColor(Player(11), ConvertPlayerColor(11))
	call SetPlayerRacePreference(Player(11), RACE_PREF_HUMAN)
	call SetPlayerRaceSelectable(Player(11), false)
	call SetPlayerController(Player(11), MAP_CONTROL_USER)
endfunction

function InitCustomTeams takes nothing returns nothing
	call SetPlayerTeam(Player(0), 0)
	call SetPlayerState(Player(0), PLAYER_STATE_ALLIED_VICTORY, 1)
	call SetPlayerTeam(Player(1), 0)
	call SetPlayerState(Player(1), PLAYER_STATE_ALLIED_VICTORY, 1)
	call SetPlayerTeam(Player(2), 0)
	call SetPlayerState(Player(2), PLAYER_STATE_ALLIED_VICTORY, 1)
	call SetPlayerTeam(Player(3), 0)
	call SetPlayerState(Player(3), PLAYER_STATE_ALLIED_VICTORY, 1)
	call SetPlayerTeam(Player(4), 0)
	call SetPlayerState(Player(4), PLAYER_STATE_ALLIED_VICTORY, 1)
	call SetPlayerTeam(Player(5), 0)
	call SetPlayerState(Player(5), PLAYER_STATE_ALLIED_VICTORY, 1)
	call SetPlayerTeam(Player(6), 0)
	call SetPlayerState(Player(6), PLAYER_STATE_ALLIED_VICTORY, 1)
	call SetPlayerTeam(Player(7), 0)
	call SetPlayerState(Player(7), PLAYER_STATE_ALLIED_VICTORY, 1)
	call SetPlayerAllianceStateAllyBJ(Player(0), Player(1), true)
	call SetPlayerAllianceStateAllyBJ(Player(0), Player(2), true)
	call SetPlayerAllianceStateAllyBJ(Player(0), Player(3), true)
	call SetPlayerAllianceStateAllyBJ(Player(0), Player(4), true)
	call SetPlayerAllianceStateAllyBJ(Player(0), Player(5), true)
	call SetPlayerAllianceStateAllyBJ(Player(0), Player(6), true)
	call SetPlayerAllianceStateAllyBJ(Player(0), Player(7), true)
	call SetPlayerAllianceStateAllyBJ(Player(1), Player(0), true)
	call SetPlayerAllianceStateAllyBJ(Player(1), Player(2), true)
	call SetPlayerAllianceStateAllyBJ(Player(1), Player(3), true)
	call SetPlayerAllianceStateAllyBJ(Player(1), Player(4), true)
	call SetPlayerAllianceStateAllyBJ(Player(1), Player(5), true)
	call SetPlayerAllianceStateAllyBJ(Player(1), Player(6), true)
	call SetPlayerAllianceStateAllyBJ(Player(1), Player(7), true)
	call SetPlayerAllianceStateAllyBJ(Player(2), Player(0), true)
	call SetPlayerAllianceStateAllyBJ(Player(2), Player(1), true)
	call SetPlayerAllianceStateAllyBJ(Player(2), Player(3), true)
	call SetPlayerAllianceStateAllyBJ(Player(2), Player(4), true)
	call SetPlayerAllianceStateAllyBJ(Player(2), Player(5), true)
	call SetPlayerAllianceStateAllyBJ(Player(2), Player(6), true)
	call SetPlayerAllianceStateAllyBJ(Player(2), Player(7), true)
	call SetPlayerAllianceStateAllyBJ(Player(3), Player(0), true)
	call SetPlayerAllianceStateAllyBJ(Player(3), Player(1), true)
	call SetPlayerAllianceStateAllyBJ(Player(3), Player(2), true)
	call SetPlayerAllianceStateAllyBJ(Player(3), Player(4), true)
	call SetPlayerAllianceStateAllyBJ(Player(3), Player(5), true)
	call SetPlayerAllianceStateAllyBJ(Player(3), Player(6), true)
	call SetPlayerAllianceStateAllyBJ(Player(3), Player(7), true)
	call SetPlayerAllianceStateAllyBJ(Player(4), Player(0), true)
	call SetPlayerAllianceStateAllyBJ(Player(4), Player(1), true)
	call SetPlayerAllianceStateAllyBJ(Player(4), Player(2), true)
	call SetPlayerAllianceStateAllyBJ(Player(4), Player(3), true)
	call SetPlayerAllianceStateAllyBJ(Player(4), Player(5), true)
	call SetPlayerAllianceStateAllyBJ(Player(4), Player(6), true)
	call SetPlayerAllianceStateAllyBJ(Player(4), Player(7), true)
	call SetPlayerAllianceStateAllyBJ(Player(5), Player(0), true)
	call SetPlayerAllianceStateAllyBJ(Player(5), Player(1), true)
	call SetPlayerAllianceStateAllyBJ(Player(5), Player(2), true)
	call SetPlayerAllianceStateAllyBJ(Player(5), Player(3), true)
	call SetPlayerAllianceStateAllyBJ(Player(5), Player(4), true)
	call SetPlayerAllianceStateAllyBJ(Player(5), Player(6), true)
	call SetPlayerAllianceStateAllyBJ(Player(5), Player(7), true)
	call SetPlayerAllianceStateAllyBJ(Player(6), Player(0), true)
	call SetPlayerAllianceStateAllyBJ(Player(6), Player(1), true)
	call SetPlayerAllianceStateAllyBJ(Player(6), Player(2), true)
	call SetPlayerAllianceStateAllyBJ(Player(6), Player(3), true)
	call SetPlayerAllianceStateAllyBJ(Player(6), Player(4), true)
	call SetPlayerAllianceStateAllyBJ(Player(6), Player(5), true)
	call SetPlayerAllianceStateAllyBJ(Player(6), Player(7), true)
	call SetPlayerAllianceStateAllyBJ(Player(7), Player(0), true)
	call SetPlayerAllianceStateAllyBJ(Player(7), Player(1), true)
	call SetPlayerAllianceStateAllyBJ(Player(7), Player(2), true)
	call SetPlayerAllianceStateAllyBJ(Player(7), Player(3), true)
	call SetPlayerAllianceStateAllyBJ(Player(7), Player(4), true)
	call SetPlayerAllianceStateAllyBJ(Player(7), Player(5), true)
	call SetPlayerAllianceStateAllyBJ(Player(7), Player(6), true)
	call SetPlayerAllianceStateVisionBJ(Player(0), Player(1), true)
	call SetPlayerAllianceStateVisionBJ(Player(0), Player(2), true)
	call SetPlayerAllianceStateVisionBJ(Player(0), Player(3), true)
	call SetPlayerAllianceStateVisionBJ(Player(0), Player(4), true)
	call SetPlayerAllianceStateVisionBJ(Player(0), Player(5), true)
	call SetPlayerAllianceStateVisionBJ(Player(0), Player(6), true)
	call SetPlayerAllianceStateVisionBJ(Player(0), Player(7), true)
	call SetPlayerAllianceStateVisionBJ(Player(1), Player(0), true)
	call SetPlayerAllianceStateVisionBJ(Player(1), Player(2), true)
	call SetPlayerAllianceStateVisionBJ(Player(1), Player(3), true)
	call SetPlayerAllianceStateVisionBJ(Player(1), Player(4), true)
	call SetPlayerAllianceStateVisionBJ(Player(1), Player(5), true)
	call SetPlayerAllianceStateVisionBJ(Player(1), Player(6), true)
	call SetPlayerAllianceStateVisionBJ(Player(1), Player(7), true)
	call SetPlayerAllianceStateVisionBJ(Player(2), Player(0), true)
	call SetPlayerAllianceStateVisionBJ(Player(2), Player(1), true)
	call SetPlayerAllianceStateVisionBJ(Player(2), Player(3), true)
	call SetPlayerAllianceStateVisionBJ(Player(2), Player(4), true)
	call SetPlayerAllianceStateVisionBJ(Player(2), Player(5), true)
	call SetPlayerAllianceStateVisionBJ(Player(2), Player(6), true)
	call SetPlayerAllianceStateVisionBJ(Player(2), Player(7), true)
	call SetPlayerAllianceStateVisionBJ(Player(3), Player(0), true)
	call SetPlayerAllianceStateVisionBJ(Player(3), Player(1), true)
	call SetPlayerAllianceStateVisionBJ(Player(3), Player(2), true)
	call SetPlayerAllianceStateVisionBJ(Player(3), Player(4), true)
	call SetPlayerAllianceStateVisionBJ(Player(3), Player(5), true)
	call SetPlayerAllianceStateVisionBJ(Player(3), Player(6), true)
	call SetPlayerAllianceStateVisionBJ(Player(3), Player(7), true)
	call SetPlayerAllianceStateVisionBJ(Player(4), Player(0), true)
	call SetPlayerAllianceStateVisionBJ(Player(4), Player(1), true)
	call SetPlayerAllianceStateVisionBJ(Player(4), Player(2), true)
	call SetPlayerAllianceStateVisionBJ(Player(4), Player(3), true)
	call SetPlayerAllianceStateVisionBJ(Player(4), Player(5), true)
	call SetPlayerAllianceStateVisionBJ(Player(4), Player(6), true)
	call SetPlayerAllianceStateVisionBJ(Player(4), Player(7), true)
	call SetPlayerAllianceStateVisionBJ(Player(5), Player(0), true)
	call SetPlayerAllianceStateVisionBJ(Player(5), Player(1), true)
	call SetPlayerAllianceStateVisionBJ(Player(5), Player(2), true)
	call SetPlayerAllianceStateVisionBJ(Player(5), Player(3), true)
	call SetPlayerAllianceStateVisionBJ(Player(5), Player(4), true)
	call SetPlayerAllianceStateVisionBJ(Player(5), Player(6), true)
	call SetPlayerAllianceStateVisionBJ(Player(5), Player(7), true)
	call SetPlayerAllianceStateVisionBJ(Player(6), Player(0), true)
	call SetPlayerAllianceStateVisionBJ(Player(6), Player(1), true)
	call SetPlayerAllianceStateVisionBJ(Player(6), Player(2), true)
	call SetPlayerAllianceStateVisionBJ(Player(6), Player(3), true)
	call SetPlayerAllianceStateVisionBJ(Player(6), Player(4), true)
	call SetPlayerAllianceStateVisionBJ(Player(6), Player(5), true)
	call SetPlayerAllianceStateVisionBJ(Player(6), Player(7), true)
	call SetPlayerAllianceStateVisionBJ(Player(7), Player(0), true)
	call SetPlayerAllianceStateVisionBJ(Player(7), Player(1), true)
	call SetPlayerAllianceStateVisionBJ(Player(7), Player(2), true)
	call SetPlayerAllianceStateVisionBJ(Player(7), Player(3), true)
	call SetPlayerAllianceStateVisionBJ(Player(7), Player(4), true)
	call SetPlayerAllianceStateVisionBJ(Player(7), Player(5), true)
	call SetPlayerAllianceStateVisionBJ(Player(7), Player(6), true)
	call SetPlayerTeam(Player(8), 1)
	call SetPlayerState(Player(8), PLAYER_STATE_ALLIED_VICTORY, 1)
	call SetPlayerTeam(Player(9), 1)
	call SetPlayerState(Player(9), PLAYER_STATE_ALLIED_VICTORY, 1)
	call SetPlayerTeam(Player(10), 1)
	call SetPlayerState(Player(10), PLAYER_STATE_ALLIED_VICTORY, 1)
	call SetPlayerTeam(Player(11), 1)
	call SetPlayerState(Player(11), PLAYER_STATE_ALLIED_VICTORY, 1)
	call SetPlayerAllianceStateAllyBJ(Player(8), Player(9), true)
	call SetPlayerAllianceStateAllyBJ(Player(8), Player(10), true)
	call SetPlayerAllianceStateAllyBJ(Player(8), Player(11), true)
	call SetPlayerAllianceStateAllyBJ(Player(9), Player(8), true)
	call SetPlayerAllianceStateAllyBJ(Player(9), Player(10), true)
	call SetPlayerAllianceStateAllyBJ(Player(9), Player(11), true)
	call SetPlayerAllianceStateAllyBJ(Player(10), Player(8), true)
	call SetPlayerAllianceStateAllyBJ(Player(10), Player(9), true)
	call SetPlayerAllianceStateAllyBJ(Player(10), Player(11), true)
	call SetPlayerAllianceStateAllyBJ(Player(11), Player(8), true)
	call SetPlayerAllianceStateAllyBJ(Player(11), Player(9), true)
	call SetPlayerAllianceStateAllyBJ(Player(11), Player(10), true)
endfunction

function config takes nothing returns nothing
	call SetMapName("TRIGSTR_4723")
	call SetMapDescription("")
	call SetPlayers(12)
	call SetTeams(12)
	call SetGamePlacement(MAP_PLACEMENT_TEAMS_TOGETHER)
	call DefineStartLocation(0,  - 128.0,  - 64.0)
	call DefineStartLocation(1,  - 128.0,  - 64.0)
	call DefineStartLocation(2,  - 128.0,  - 64.0)
	call DefineStartLocation(3,  - 128.0,  - 64.0)
	call DefineStartLocation(4,  - 128.0,  - 64.0)
	call DefineStartLocation(5,  - 128.0,  - 64.0)
	call DefineStartLocation(6,  - 128.0,  - 64.0)
	call DefineStartLocation(7,  - 128.0,  - 64.0)
	call DefineStartLocation(8,  - 128.0,  - 64.0)
	call DefineStartLocation(9,  - 128.0,  - 64.0)
	call DefineStartLocation(10,  - 128.0,  - 64.0)
	call DefineStartLocation(11,  - 128.0,  - 64.0)
	call InitCustomPlayerSlots()
	call InitCustomTeams()
	call InitAllyPriorities()
endfunction

